Reputation: 4043
Kivy Labels have a great property markup
that allows to customize the font properties like font size, boldness, etc. All of that works only when the font acutally supports it. But what should I do if I've got a font that doesn't?
So, maybe I'm not understanding how .ttf
fonts work. I've got a few .ttf
files for all the needed text types, but I have no idea how to put them together.
Googling on this case mostly led me to questions about CSS, where it is nicely customizable, which font to treat as bold, italics.
Some more info. This is what I'm talking about:
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]'))
Running this code, I get the following output:
So there was no effect from those markup tags. However, text coloring tags do work, for example, so I'm pretty sure it's a font problem.
Is there a way to programmatically change, which font will be used to render bold text? And if not, what steps could I take to change the font? How to merge two fonts that only differ in text style?
This is the font I've used (Regular version, renamed to my_font.ttf
)
Upvotes: 3
Views: 3528
Reputation: 12169
There's a [font=<font .ttf file>]
tag in markup. Basically, everything that is here should be usable. I copied Arial
and Times New Roman
to my desktop where I had this piece of code and it successfully changed the font. In a similar way I'm sure you can even try to use [i]
or [b]
inside the [font]
tag.
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())
However I'm not sure how to merge fonts. I even found multiple Times New Roman
or Arial
files e.g. one for normal, one for bold, etc and the only difference was with a suffix - arial.ttf
, ariali.ttf
, arialb.ttf
, arialbi.ttf
, times.ttf
, timesi.ttf
, etc. So, try to make it the similar way and maybe it'll just recognize the italic/bold part via the suffix.
Upvotes: 5