fyne 解决 无法支持中文字体解决方法 - 前端笔记-1. 设置环境变量 设置环境变量的方式只支持 ttf 格式的字体 以下是通过go-findfont 库 查询本地的simkai.ttf 进行环境变量的设置 (环境变量的key 设...

学习笔记

点滴记忆
回忆过往
首页>> web后端 >>fyne 解决 无法支持中文字体解决方法 - 前端笔记
1. 设置环境变量
设置环境变量的方式只支持  ttf 格式的字体
以下是通过go-findfont 库  查询本地的simkai.ttf 进行环境变量的设置    (环境变量的key 设置为 FYNE_FONT)

可以直接复制以下代码  实现支持中文  (记得下载类库)
package main

import (
    "fmt"
    "fyne.io/fyne/v2"
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/widget"
    "github.com/flopp/go-findfont"
    "os"
    "strings"
)

// 方式一  设置环境变量   通过go-findfont 寻找simkai.ttf 字体
func init() {
    fontPaths := findfont.List()
    for _path := range fontPaths {
        //fmt.Println(path)
        //楷体:simkai.ttf
        //黑体:simhei.ttf
        if strings.Contains(path, "simkai.ttf") {
            fmt.Println(path)
            os.Setenv("FYNE_FONT", path) // 设置环境变量  // 取消环境变量 os.Unsetenv("FYNE_FONT")
            break
        }
    }
    fmt.Println("=============")
}

func main() {
    MyApp := app.New()
    c := MyApp.NewWindow("解决fyne支持中文")

    labels := widget.NewLabel("支持中文")

    c.SetContent(labels)
    c.Resize(fyne.NewSize(600600))
    c.ShowAndRun()
}




2. 通过字体打包成二进制方式

① 安装官方的cmd工具
go get fyne.io/fyne/cmd/fyne

② 准备好字体 一般是simkai.ttf  (最好使用ttf字体格式)

③ 将字体文件转为go 文件
fyne bundle simkai.ttf > bundle.go

④ 需要创建一个 theme文件夹 把bundle.go放入其中 同事修改 bundle.go中的  引入的 fyne是1.0版本的  你需要修改到v2版本和 包名

⑤在theme文件夹里面  创建一个 theme.go    return的resourceSimkaiTtf 要和 bundle.go var定义的变量名相同
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 resourceSimkaiTtf
}
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 主题就行
package main

import (
    "fyne.io/fyne/v2"
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/widget"
    "fyne/9-3/theme"
)

func main() {
    MyApp := app.New()
    MyApp.Settings().SetTheme(&theme.MyTheme{}) // 设置主题
    c := MyApp.NewWindow("解决fyne支持中文")

    labels := widget.NewLabel("支持中文")

    c.SetContent(labels)
    c.Resize(fyne.NewSize(600600))
    c.ShowAndRun()
}






×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » fyne 解决 无法支持中文字体解决方法

网友评论(0)