• 在使用fyne开发的时候, 中文的显示不太正常

image.png

按以下步骤操作, 绝对没问题

1. 下载一个字体

我这里下载的是阿里巴巴普惠字体

2. 工程中创建一个theme.go文件

  1. package theme
  2. import (
  3. "fyne.io/fyne/v2"
  4. "fyne.io/fyne/v2/theme"
  5. "image/color"
  6. )
  7. type MyTheme struct{}
  8. var _ fyne.Theme = (*MyTheme)(nil)
  9. // return bundled font resource
  10. // ResourceSourceHanSansTtf 即是 bundle.go 文件中 var 的变量名
  11. func (m MyTheme) Font(s fyne.TextStyle) fyne.Resource {
  12. return resourceAlibabaPuHuiTiMediumTtf //todo 这里可能会改
  13. }
  14. func (*MyTheme) Color(n fyne.ThemeColorName, v fyne.ThemeVariant) color.Color {
  15. return theme.DefaultTheme().Color(n, v)
  16. }
  17. func (*MyTheme) Icon(n fyne.ThemeIconName) fyne.Resource {
  18. return theme.DefaultTheme().Icon(n)
  19. }
  20. func (*MyTheme) Size(n fyne.ThemeSizeName) float32 {
  21. return theme.DefaultTheme().Size(n)
  22. }
  • 直接复制我的示例代码
  • 注意Font()函数的返回值目前还未确定, 一会儿要修改

3. 导入字体

3.1 安装fyne命令行工具

https://developer.fyne.io/started/packaging

  1. go install fyne.io/fyne/v2/cmd/fyne@latest

3.2 转换字体文件

  • 使用fyne命令行工具, 将字体.ttf文件转换成go源码文件

    1. fyne bundle --pkg theme Alibaba-PuHuiTi-Medium.ttf >> bundle.go
  • 我的theme.go包名是theme 这里生成 bundle.go文件的时候保持一致

3.3 bundle.go 移动到 theme.go 同目录

image.png

3.4 查看字体对象的变量名

  1. head -10 bundle.go

image.png
记住这个变量名

3.5 修改theme.go中的变量名

image.png

  • 这里IDE报红不用管, 不影响正常编译执行

3.6 代码中设置主题

image.png

4. 完成

  • 这时候启动程序字体就已经正常了

image.png