有没有办法在GTK中获取系统中所有已安装字体的列表

Is there a way to get a list of all installed fonts in the system in GTK

你好,我正在制作一个 Gtk 应用程序,需要 运行 一个代码来获取我系统中所有已安装字体的列表,以使用它来创建类似于 Gtk.FontChooserWidget 的列表, Gtk 中是否有任何内置函数可以执行此操作?

这是一个使用 gi.repository 中的 Pango context 获取系统字体名称的示例。

PS:我假设您使用 Gtk3+ 绑定 Python

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk


class Example(Gtk.Window):
    """Using Pango to get system fonts names"""

    def list_system_fonts(self):
        """Yield system fonts families names using Pango"""
        context = self.create_pango_context()
        for fam in context.list_families():
            yield fam.get_name()


a = Example()
system_fonts = list(a.list_system_fonts())
print(system_fonts)

输出(取决于您机器中的字体,例如我的是):

['STIXIntegralsUp',
 'Noto Sans Gurmukhi',
 'Noto Serif Bengali',
 'Noto Sans Bengali',
 'Sharjah',
 'Noto Sans Mono CJK TC',
 'Noto Sans CJK TC',
 'Noto Sans Hebrew',
 'Lato',
 'Padauk',
 ...
'Rehan',
 'URW Bookman L',
 'FreeMono',
 'Ubuntu Mono',
 'STIXIntegralsSm',
 'Sans',
 'Serif',
 'Monospace']

奖金:

有关 Pango and about Pango context 的更多信息。