2016-12-02 51 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