• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

wcharczuk/go-chart图表上使用中文字体

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

https://github.com/wcharczuk/go-chart/ 默认使用的字体是 roboto.Roboto,不支持中文。 


// GetDefaultFont returns the default font (Roboto-Medium).
func GetDefaultFont() (*truetype.Font, error) {
    if _defaultFont == nil {
        _defaultFontLock.Lock()
        defer _defaultFontLock.Unlock()
        if _defaultFont == nil {
            font, err := truetype.Parse(roboto.Roboto)
            if err != nil {
                return nil, err
            }
            _defaultFont = font
        }
    }
    return _defaultFont, nil
}

 

当图表上需要显示中文字体时就会显示成 X 。 如下图

这时候就要中自己的中文字体了。 下面是使用的一个简单例子。

package main

import (
    "bytes"
    "io/ioutil"
    "log"
    "os"

    "github.com/golang/freetype/truetype"
    "github.com/wcharczuk/go-chart"
    "github.com/wcharczuk/go-chart/drawing"
)

// getZWFont 加载字体
func getZWFont() *truetype.Font {

    fontFile := "/Library/Fonts/Microsoft-YaHei.ttf"
    //fontFile := "/Library/Fonts/AppleMyungjo.ttf"

    // 读字体数据
    fontBytes, err := ioutil.ReadFile(fontFile)
    if err != nil {
        log.Println(err)
        return nil
    }
    font, err := truetype.Parse(fontBytes)
    if err != nil {
        log.Println(err)
        return nil
    }
    return font
}

func drawChart() {
    //f, _ := chart.GetDefaultFont() // 自带默认字体
    f := getZWFont() // 用自己的字体
    r, _ := chart.PNG(1024, 1024)

    chart.Draw.Text(r, "Te郭红俊多多岛ddd", 64, 64, chart.Style{
        FontColor: drawing.ColorBlack,
        FontSize: 18,
        Font: f,
    })

    buffer := bytes.NewBuffer([]byte{})
    r.Save(buffer)

    fo, err := os.Create("o1.png")
    if err != nil {
        panic(err)
    }

    if _, err := fo.Write(buffer.Bytes()); err != nil {
        panic(err)
    }
}

func main() {
    drawChart()
}

 

执行生成的图片效果如下:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap