美文网首页Golang 入门资料+笔记
golang fyne 使用中文并打包进二进制文件

golang fyne 使用中文并打包进二进制文件

作者: 余生社会 | 来源:发表于2021-02-21 09:24 被阅读0次

    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                 # 程序主入口
    

    相关文章

      网友评论

        本文标题:golang fyne 使用中文并打包进二进制文件

        本文链接:https://www.haomeiwen.com/subject/yuiffltx.html