首页 > 解决方案 > 有没有办法在 GTK 中获取系统中所有已安装字体的列表

问题描述

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

标签: pythongtkpygobjectgobject

解决方案


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

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']

奖金:

有关PangoPango 上下文的更多信息。


推荐阅读