High chance of font family conflicts with bundled fonts
See original GitHub issueHi,
For some fonts that qtawesome has, family remains the default. This may break the user application or qtawesome if the user adds a different version of the font.
For example, in the following code, if the different version of “Material Design Icon” by QtGui.QFontDatabase.addApplicationFont("materialdesignicons-webfont.ttf")
is added, qtawesome icon disappers.
QtGui.QFontDatabase.addApplicationFont
affects application-wide, so qtawesome’s internal “Materinal Design Icon” seems to be overwritten by user’s one.
I think it’s a good idea to add a unique string (e.g “(qtawesome)”) to all families of qtawesome’s internal icons to avoid the confliction.
# -*- coding: utf-8 -*-
import sys
from qtpy import QtCore, QtWidgets, QtGui
import qtawesome as qta
class AwesomeExample(QtWidgets.QDialog):
def __init__(self):
super().__init__()
# Get Material Design icons by name
mdi6_icon = qta.icon('mdi6.account-wrench')
mdi6_button = QtWidgets.QPushButton(mdi6_icon, 'Material Design Icon # Version 6.3.95, ch=F189A')
#
# Add different version of 'Material Design Icon' from qtawesome's internal
# For example, if version 6.2.95 is added, mdi6.account-wrench (ch=F1809A) disappers
#
QtGui.QFontDatabase.addApplicationFont("materialdesignicons-webfont.ttf")
font = QtGui.QFont("Material Design Icon")
fontMetrics = QtGui.QFontMetrics(font)
print(f"font.key() : {font.key()}")
print(f"fontMetrics.inFontUcs4(0xF189A) : {fontMetrics.inFontUcs4(0xF189A)}")
grid = QtWidgets.QGridLayout()
grid.addWidget(mdi6_button, 0, 0)
self.setLayout(grid)
self.setWindowTitle('Awesome')
self.show()
def main():
app = QtWidgets.QApplication(sys.argv)
if hasattr(QtCore.Qt, 'AA_UseHighDpiPixmaps'):
app.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps)
QtCore.QTimer.singleShot(10000, app.exit)
_ = AwesomeExample()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
-
QtGui.QFontDatabase.addApplicationFont("materialdesignicons-webfont.ttf")
is not executed -
QtGui.QFontDatabase.addApplicationFont("materialdesignicons-webfont.ttf")
is executed
Issue Analytics
- State:
- Created 2 years ago
- Comments:12 (12 by maintainers)
Top GitHub Comments
Yes, I will try it soon.
I think it’s fine as long as updating to new font versions remains easy.