在Flet应用中使用自定义字体
· 阅读需 3 分钟
现在您可以在Flet应用中使用自己的字体了!
支持以下字体格式:
.ttc
.ttf
.otf
使用page.fonts
属性导入字体。
将page.fonts
属性设置为一个字典,其中键是字体系列名称,用于引用该字体,值是要导入的字体文件的URL:
def main(page: ft.Page):
page.fonts = {
"Kanit": "https://raw.githubusercontent.com/google/fonts/master/ofl/kanit/Kanit-Bold.ttf",
"Aleo Bold Italic": "https://raw.githubusercontent.com/google/fonts/master/ofl/aleo/Aleo-BoldItalic.ttf"
}
page.update()
# ...
可以通过提供绝对URL从外部资源导入字体,或者通过提供相对URL和assets_dir
从应用程序资源导入字体。
在flet.app()
调用中指定assets_dir
以设置应用程序可用的资源位置。assets_dir
可以是相对于main.py
目录的路径或绝对路径。例如,考虑以下程序结构:
/assets
/fonts
/OpenSans-Regular.ttf
main.py
代码示例
以下程序从GitHub加载"Kanit"字体,并从资源中加载"Open Sans"字体。"Kanit"被设置为默认应用程序字体 ,"Open Sans"用于特定的Text控件:
import flet as ft
def main(page: ft.Page):
page.title = "Custom fonts"
page.fonts = {
"Kanit": "https://raw.githubusercontent.com/google/fonts/master/ofl/kanit/Kanit-Bold.ttf",
"Open Sans": "fonts/OpenSans-Regular.ttf",
}
page.theme = Theme(font_family="Kanit")
page.add(
ft.Text("This is rendered with Kanit font"),
ft.Text("This is Open Sans font example", font_family="Open Sans"),
)
ft.app(target=main, assets_dir="assets")
静态字体与可变字体
目前只支持静态字体,即仅包含一个具体宽度/粗细/样式组合的字体,例如"Open Sans Regular"或"Roboto Bold Italic"。
但是,如果您需要在应用程序中使用可变字体,可以使用fonttools在特定权重下创建静态的"实例",然后使用这些实例:
fonttools varLib.mutator ./YourVariableFont-VF.ttf wght=140 wdth=85
使用Wakamai Fondue在线工具来探索可用的字体特性(例如wght
的可能选项)。