自定义字体的 Kivy 标签标记

Kivy Label markup for custom fonts

Kivy Labels 有一个很棒的 属性 markup 允许自定义字体属性,如字体大小、粗体等。所有这些只有在字体完全支持时才有效。但是,如果我的字体没有,我该怎么办?
所以,也许我不了解 .ttf 字体的工作原理。我有几个 .ttf 文件用于所有需要的文本类型,但我不知道如何将它们放在一起。
谷歌搜索这个案例主要让我想到了关于 CSS 的问题,它可以很好地定制,哪种字体可以视为粗体、斜体。

更多信息。这就是我要说的:

from kivy.base import runTouchApp
from kivy.uix.label import Label

runTouchApp(Label(font_name = 'my_font.ttf',
                  markup = True,
                  text = '[b]Bold[/b] and [i]italics[/i]'))

运行 这段代码,我得到以下输出:

所以那些标记标签没有影响。但是,例如,文本着色标签确实有效,所以我很确定这是字体问题。

有没有办法以编程方式更改将使用哪种字体呈现粗体文本?如果没有,我可以采取哪些步骤来更改字体?如何合并两种仅文字样式不同的字体?

This是我用过的字体(普通版,改名为my_font.ttf

标记中有一个 [font=<font .ttf file>] 标记。基本上,here 的所有内容都应该可用。我将 ArialTimes New Roman 复制到我有这段代码的桌面上,它成功地更改了字体。以类似的方式,我相信您甚至可以尝试在 [font] 标签内使用 [i][b]

from kivy.lang import Builder
from kivy.base import runTouchApp
from kivy.uix.boxlayout import BoxLayout
Builder.load_string('''
<Test>:
    Label:
        markup: True
        text: "[font=Arial]test[/font][font=times]test[/font]"
''')
class Test(BoxLayout): pass
runTouchApp(Test())

但是我不确定如何合并字体。我什至发现了多个 Times New RomanArial 文件,例如一个用于正常,一个用于粗体等,唯一的区别是后缀 - arial.ttfariali.ttfarialb.ttfarialbi.ttftimes.ttftimesi.ttf, 等等。所以,尝试以类似的方式制作它,也许它只会通过后缀识别 italic/bold 部分。