1. 首先安装官方的cmd工具
go get fyne.io/fyne/cmd/fyne
验证:
fyne
2. 准备好有效的字体文件(.ttf)
3.将字体文件转为go文件
fyne bundle Alibaba-PuHuiTi-Medium.ttf > bundle.go
4. 自动写入头
(head 命令是linux命令,win下需要在git bash中调用)
head -n 9 bundle.go
//文件 bundle.go (文件中无此句)
// auto-generated
// Code generated by '$ fyne bundle'. DO NOT EDIT.
package theme
import "fyne.io/fyne/v2"
var ResourceSourceHanSansTtf = &fyne.StaticResource{
StaticName: "SourceHanSans.ttf",
StaticContent: []byte(
打开文件会有一个警告 Warning: the file size is very large文件太大了 不过不用理会
5.创建一个自己的theme (也就是重写theme)
// theme.go
package theme
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/theme"
"image/color"
)
type MyTheme struct{}
var _ fyne.Theme = (*MyTheme)(nil)
// return bundled font resource
// ResourceSourceHanSansTtf 即是 bundle.go 文件中 var 的变量名
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)
}
设置一致后 字体文件 可移除。theme.go 中ResourceSourceHanSansTtf名字会报红 不必理会
6.目录结构
├── theme
│ │── bundle.go # 字体转换后的go文件
│ └── theme.go # 自定义主题文件
├── main.go # 程序主入口
有疑问加站长微信联系(非本文作者)