Kivy Labels具有出色的属性markup,该属性允许自定义字体属性,例如字体大小,粗体度等。所有这些仅在字体正式支持时才有效。但是,如果我没有的字体该怎么办?
因此,也许我不了解.ttf字体如何工作。对于所有需要的文本类型,我都有几个.ttf文件,但是我不知道如何将它们放在一起。
在这种情况下使用Google搜索时,大多数人会引起我对CSS的疑问,该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]'))


运行此代码,我得到以下输出:
python - 自定义字体的Kivy标签标记-LMLPHP

因此,这些标记标签没有任何作用。但是,例如,文本着色标签确实可以工作,所以我很确定这是字体问题。

有没有一种方法可以通过编程方式更改,哪种字体将用于呈现粗体文本?如果没有,我可以采取什么步骤来更改字体?如何合并仅在文本样式上不同的两种字体?

This是我使用的字体(普通版,重命名为my_font.ttf

最佳答案

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

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等。因此,请尝试使其以类似的方式,也许它只是通过后缀识别斜体/粗体部分。

09-04 21:22
查看更多