2016-12-02 91 views
2

Kivy标签有一个很好的属性markup,它允许自定义字体大小,粗体等字体属性。所有这些仅在字体支持时才起作用。但是如果我的字体不对,我该怎么办?
所以,也许我不知道如何.ttf字体的工作。对于所有需要的文本类型,我有几个.ttf文件,但我不知道如何将它们放在一起。
在这个案例上用谷歌搜索主要引起我对CSS的问题,它很好地定制,哪种字体可以视为粗体,斜体。Kivy自定义字体的标签标记

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

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

运行这段代码,我得到以下输出:
enter image description here

所以没有从这些标记标签效应。但是,例如,文本着色标记确实有用,所以我很确定这是一个字体问题。

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

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

回答

1

有一个在标记一个[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.ttf,times.ttf, timesi.ttf等等。所以,试着让它类似的方法,也许它会认出斜体/粗体部分通过后缀。

+0

果然,后缀部分不起作用:p。但'font'标签看起来像是要走的路,感谢 – Leva7

+0

@ Leva7悲哀地:/也许在某种字体创建应用程序中,有一种方法可以将字体链接在一起或其他东西。不幸的是,我不知道该部分是如何工作的。 – KeyWeeUsr