刚开始笔者也是采用了网上Kivy的修改方法:加字体、改.ini中的默认字体,后来发现还是不OK。
偶然间看到知名男性交友网站‘给他哈勃’上的一个方案: github.com/kivymd/Kivy…
您可以使用word查看您想要使用的字体。
另外,您可以使用kivy标签类注册新的字体源,也可以使用字体管理器创建新的字体主题。
阅读 kivy 的 Label 文档,了解如何更深入地注册他们的框架。
或者,如果您不想太深入,您可以阅读 kivymd 文档/教程,了解如何添加新的字体样式[https://kivymd.readthedocs.io/en/latest/themes/theming/# kivymd.theming.ThemeManager.font_styles](https://kivymd.readthedocs.io/en/latest/themes/theming/#kivymd.theming.ThemeManager.font_styles)
另外,您还需要研究字体的工作原理,因为您将使用与英语不同的字符(与正常代码不同的代码)
进入文档,查看到这个源代码
from kivy.core.text import LabelBase
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.font_definitions import theme_font_styles
KV = '''
MDScreen:
MDLabel:
text: "JetBrainsMono"
halign: "center"
font_style: "JetBrainsMono"
'''
class MainApp(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
LabelBase.register(
name="JetBrainsMono",
fn_regular="JetBrainsMono-Regular.ttf")
theme_font_styles.append('JetBrainsMono')
self.theme_cls.font_styles["JetBrainsMono"] = [
"JetBrainsMono",
16,
False,
0.15,
]
return Builder.load_string(KV)
MainApp().run()
解决了,okkk。也许会有更加根本性的方案解决,但是可能控制的default字体文档在kivyMD和Kivy中的不是同一个.ini,这个还需要后续做进一步确认。
附mycode:
from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
from kivy.core.text import LabelBase
from kivymd.font_definitions import theme_font_styles
class MainApp(MDApp):
def build(self):
LabelBase.register(name='chinese',fn_regular='data/fonts/AlibabaPuHuiTi-3-35-Thin.ttf')
theme_font_styles.append('chinese')
self.theme_cls.font_styles["chinese"] = [
"chinese",
50, #大小
False, #加粗
0.15,
]
return MDLabel(text="Hello, World,开心快乐每一天", halign="center",font_style='chinese')
MainApp().run()
方法二
找到kivymd中的font_definations.py文档,修改除了icon之外的fn_regular,完美解决
"""
Themes/Font Definitions
=======================
.. seealso::
`Material Design spec, The type system <https://material.io/design/typography/the-type-system.html>`_
"""
from kivy.core.text import LabelBase
from kivymd import fonts_path
fonts = [
{
"name": "Roboto",
"fn_regular": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
"fn_bold": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
"fn_italic": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
"fn_bolditalic": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
},
{
"name": "RobotoThin",
"fn_regular": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
"fn_italic": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
},
{
"name": "RobotoLight",
"fn_regular": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
"fn_italic": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
},
{
"name": "RobotoMedium",
"fn_regular": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
"fn_italic": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
},
{
"name": "RobotoBlack",
"fn_regular": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
"fn_italic": fonts_path + "AlibabaPuHuiTi-3-35-Thin.ttf",
},
{
"name": "Icons",
"fn_regular": fonts_path + "materialdesignicons-webfont.ttf",
},
]
# fonts = [
# {
# "name": "Roboto",
# "fn_regular": fonts_path + "Roboto-Regular.ttf",
# "fn_bold": fonts_path + "Roboto-Bold.ttf",
# "fn_italic": fonts_path + "Roboto-Italic.ttf",
# "fn_bolditalic": fonts_path + "Roboto-BoldItalic.ttf",
# },
# {
# "name": "RobotoThin",
# "fn_regular": fonts_path + "Roboto-Thin.ttf",
# "fn_italic": fonts_path + "Roboto-ThinItalic.ttf",
# },
# {
# "name": "RobotoLight",
# "fn_regular": fonts_path + "Roboto-Light.ttf",
# "fn_italic": fonts_path + "Roboto-LightItalic.ttf",
# },
# {
# "name": "RobotoMedium",
# "fn_regular": fonts_path + "Roboto-Medium.ttf",
# "fn_italic": fonts_path + "Roboto-MediumItalic.ttf",
# },
# {
# "name": "RobotoBlack",
# "fn_regular": fonts_path + "Roboto-Black.ttf",
# "fn_italic": fonts_path + "Roboto-BlackItalic.ttf",
# },
# {
# "name": "Icons",
# "fn_regular": fonts_path + "materialdesignicons-webfont.ttf",
# },
# ]
for font in fonts:
LabelBase.register(**font)
theme_font_styles = [
"H1",
"H2",
"H3",
"H4",
"H5",
"H6",
"Subtitle1",
"Subtitle2",
"Body1",
"Body2",
"Button",
"Caption",
"Overline",
"Icon",
]
"""
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/font-styles-2.png
"""