自定义字体的 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 的所有内容都应该可用。我将 Arial
和 Times 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 Roman
或 Arial
文件,例如一个用于正常,一个用于粗体等,唯一的区别是后缀 - arial.ttf
、ariali.ttf
、arialb.ttf
、arialbi.ttf
、times.ttf
、timesi.ttf
, 等等。所以,尝试以类似的方式制作它,也许它只会通过后缀识别 italic/bold 部分。
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 的所有内容都应该可用。我将 Arial
和 Times 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 Roman
或 Arial
文件,例如一个用于正常,一个用于粗体等,唯一的区别是后缀 - arial.ttf
、ariali.ttf
、arialb.ttf
、arialbi.ttf
、times.ttf
、timesi.ttf
, 等等。所以,尝试以类似的方式制作它,也许它只会通过后缀识别 italic/bold 部分。