def refresh_font_db() -> None: # XXX: # Qt doesn't expose API to refresh the fonts, so we try to trick it into # invalidating its internal database by adding a dummy application font. # On Linux, this works with `fc-cache -r`. font_db = QFontDatabase() font_db.addApplicationFont(str(ASSETS_DIR / "AdobeBlank.ttf")) font_db.removeAllApplicationFonts()
def set_font(self, family_name): font_db = QFontDatabase() font_db.removeAllApplicationFonts() font_archive = ZipFile(f'static/fonts/{family_name}.zip') for font_name in font_archive.namelist(): with font_archive.open(font_name) as font_file: font_data = font_file.read() font_data_as_bytearray = QByteArray(font_data) font_db.addApplicationFontFromData(font_data_as_bytearray) family_name = family_name.replace('_', ' ') self.setFont(QFont(family_name, 12))
def setTextFont(self, fileName, size=92): print(size) bin = self.readFontFileAsBinary(fileName) QFontDatabase.removeAllApplicationFonts() #id = QFontDatabase.addApplicationFont(fileName) id = QFontDatabase.addApplicationFontFromData(bin) try: family = QFontDatabase.applicationFontFamilies(id)[0] except: return "Not found" font = QFontDatabase.font(self.fontsDB, family, 'bold', size) font.setStrikeOut(False) self.ui.textEdit.setFont(font) self.ui.textEdit.setCurrentFont(font) self.ui.chkObserve.setEnabled(True) self.ui.chkHB.setEnabled(True) return family