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 

ma​​in.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字体删除的主要内容,如果未能解决你的问题,请参考以下文章

linuxwps怎么禁止更新

删除CreateFont创建的字体

win7 我直接把字体压缩包解压到font那里,要怎么删除啊

楷体GB2312如何下载,楷体安装或删除教程

文字排版--字体字号颜色粗体斜体下划线删除线

如何在Mac上识别和删除损坏的字体