1. fyne官方工具
go get fyne.io/fyne/cmd/fyne
2. 将字体转换为go文件
fyne bundle Alibaba-PuHuiTi-Medium.ttf > bundle.go
3. 创建自定义theme
也就是自定义样式
// theme.go
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/theme"
"image/color"
)
type MyTheme struct{}
func (m MyTheme) Font(s fyne.TextStyle) fyne.Resource {
return ResourceSourceHanSansTtf
}
func (*MyTheme) Color(n fyne.ThemeColorName, v fyne.ThemeVariant) color.Color {
return theme.DefaultTheme().Color(n, v)
}
func (*MyTheme) Icon(n fyne.ThemeIconName) fyne.Resource {
return theme.DefaultTheme().Icon(n)
}
func (*MyTheme) Size(n fyne.ThemeSizeName) float32 {
return theme.DefaultTheme().Size(n)
}
而我并没有单独做一个包,依然放到main下,即 package main
这里的 ResourceSourceHanSansTtf即是 bundle.go 文件中 var 的变量名,根据你的字体不同,变量名是不同的。
4. 引用
app.Settings().SetTheme(&MyTheme{}) // 引用自已定义的样式
题外
如果你的程序是在Win中运行,可能查询Win自有的中文字体使用会更简单,尺寸更小。
"golang.org/x/sys/windows"
// windows字体目录
func Dir_Font() (ret string) {
path, err := windows.KnownFolderPath(windows.FOLDERID_Fonts, 0)
if err != nil {
return
}
ret = path
return
}