linuxwps字体删除
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linuxwps字体删除相关的知识,希望对你有一定的参考价值。
参考技术A linuxwps字体删除可能是版权问题。运行fc-cache命令更新字体缓存。 sudo fc-cache 重启wps即可,字体缺失的提示不再出现
如何从 QFontDatabase 中删除某些字体?
【中文标题】如何从 QFontDatabase 中删除某些字体?【英文标题】:How can i remove certain fonts from QFontDatabase? 【发布时间】:2019-10-31 07:44:47 【问题描述】:我有一个程序以从 QFontDatabase 中随机选择的字体显示我的消息:
import sys
from PyQt5 import uic
from PyQt5.QtGui import QFont, QFontDatabase
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
class MyWidget(QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi("main1.ui", self)
db = QFontDatabase()
family = random.choice(db.families())
print(family)
font = db.font(family, "", 72)
self.label.setFont(font)
self.run()
def run(self):
self.label.setText("message")
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = MyWidget()
ex.show()
sys.exit(app.exec_())
问题如下:我意识到由于某些原因,我需要从数据库中删除大部分标准字体。 我已经阅读了 QFont 的文档,但找不到方法,可能错过了一些东西。也许从具有选定字体的文件夹中实现选择会更容易? 我该怎么做?
【问题讨论】:
【参考方案1】:什么是标准字体?由于没有分类,所以很难知道。因此,正如您所说,最好有一个字体所在的文件夹,然后随机选择其中一个,然后我们使用QFontDatabase::addApplicationFont()
注册它,使用QFontDatabase::applicationFontFamilies()
获取系列:
├── fonts
│ ├── A.ttf
│ .
| .
| .
│ ├── ...
│ └── Z.ttf
├── main1.ui
└── main.py
main.py
import os
import random
import sys
from PyQt5 import uic
from PyQt5.QtGui import QFont, QFontDatabase
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
class MyWidget(QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi("main1.ui", self)
current_dir = os.path.dirname(os.path.realpath(__file__))
font_dir = os.path.join(current_dir, "fonts")
files = os.listdir(font_dir)
file = random.choice(files)
print(file)
id_ = QFontDatabase.addApplicationFont(os.path.join(font_dir, file))
families = QFontDatabase.applicationFontFamilies(id_)
family = random.choice(families)
font = QFont(family, 72)
self.label.setFont(font)
self.run()
def run(self):
self.label.setText("message")
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = MyWidget()
ex.show()
sys.exit(app.exec_())
【讨论】:
【参考方案2】:创建一个字体系列列表并选择:
import sys
import random
from PyQt5 import uic
from PyQt5.QtGui import QFont, QFontDatabase
from PyQt5.QtWidgets import (QApplication, QWidget, QMainWindow,
QLabel, QGridLayout, QPushButton)
class MyWidget(QMainWindow):
def __init__(self):
super().__init__()
self.dbFamilies = ['Algerian', 'Arial Narrow', 'Consolas', 'Georgia',
'Times', 'Helvetica', 'SansSerif', 'Comic Sans MS',]
# uic.loadUi("main1.ui", self)
centralWidget = QWidget()
self.setCentralWidget(centralWidget)
self.label = QLabel()
button = QPushButton("Choose a different font-family", clicked=self.run)
grid = QGridLayout(centralWidget)
grid.addWidget(self.label)
grid.addWidget(button)
self.run()
def run(self):
family = random.choice(self.dbFamilies)
self.label.setFont(QFont("".format(family), 72))
self.label.setText(family)
self.label.adjustSize()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = MyWidget()
ex.show()
sys.exit(app.exec_())
【讨论】:
以上是关于linuxwps字体删除的主要内容,如果未能解决你的问题,请参考以下文章