PySimpleGUI:字体渲染问题

PySimpleGUI: Font rendering issue

我在我的开发机器上使用了一种字体,但是当我将应用程序捆绑为一个 exe 并将其部署到另一台没有安装该字体的机器上时,字体呈现变为默认。有没有一种方法可以将字体与 exe 捆绑在一起并让 PySimpleGUI 使用它而不是尝试在系统中找到字体(暗示它需要先安装)?有什么解决方法吗?

import PySimpleGUI as sg    
sg.set_options(font=['Inder',10]) 

您可以使用库 pyglet 添加字体文件,并使用 PyInstaller 的选项 --add-data <SRC;DEST or SRC:DEST> 来捆绑字体文件。

Additional non-binary files or folders to be added to the executable. The path separator is platform specific, os.pathsep (which is ; on Windows and : on most unix systems) is used. This option can be used multiple times.

演示代码

import pyglet
import PySimpleGUI as sg

# pyglet.font.add_file(r".\MerryChristmasFlake.ttf")
# pyglet.font.add_file(r".\MerryChristmasStar.ttf")

sg.theme("DarkBlue3")
font1 = ("Merry Christmas Flake", 40)
font2 = ("Merry Christmas Star", 40)

layout = [
    [sg.Text("Merry Christmas Flake", font=font1)],
    [sg.Text("Merry Christmas Star",  font=font2)],
]

window = sg.Window('Title', layout, finalize=True)

while True:

    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    print(event, values)

window.close()

两行注释后未标记,

注意:从https://www.1001freefonts.com/d/17982/merry-christmas.zip下载的字体文件,并将这两个字体文件放在与主脚本相同的路径中。