fix: support chinese for axis, #4

This commit is contained in:
vicanso 2022-05-01 11:15:13 +08:00
parent a713c3023e
commit cad8296e28
4 changed files with 7 additions and 0 deletions

View file

@ -219,3 +219,5 @@ BenchmarkMultiChartSVGRender-8 367 3356325 ns/op
默认使用的字符为`roboto`为英文字体库,因此如果需要显示中文字符需要增加中文字体库,`InstallFont`函数可添加对应的字体库,成功添加之后则指定`title.textStyle.fontFamily`即可。
在浏览器中使用`svg`时,如果指定的`fontFamily`不支持中文字符,展示的中文并不会乱码,但是会导致在计算字符宽度等错误。
[中文字库noto-cjk](https://github.com/googlefonts/noto-cjk)

View file

@ -190,6 +190,7 @@ func (o *ChartOption) FillDefault(theme string) {
if o.XAxis.Theme == "" {
o.XAxis.Theme = theme
}
o.XAxis.Font = o.Font
}
func (o *ChartOption) getWidth() int {

View file

@ -23,10 +23,12 @@
package charts
import (
"github.com/golang/freetype/truetype"
"github.com/wcharczuk/go-chart/v2"
)
type XAxisOption struct {
Font *truetype.Font
// The boundary gap on both sides of a coordinate axis.
// Nil or *true means the center part of two axis ticks
BoundaryGap *bool
@ -66,6 +68,7 @@ func drawXAxis(p *Draw, opt *XAxisOption, yAxisCount int) (int, *Range, error) {
Right: right,
}),
)
dXAxis.Font = opt.Font
if err != nil {
return 0, nil, err
}

View file

@ -96,6 +96,7 @@ func drawYAxis(p *Draw, opt *ChartOption, axisIndex, xAxisHeight int, padding ch
if err != nil {
return nil, err
}
dYAxis.Font = opt.Font
NewAxis(dYAxis, data, style).Render()
yRange.Size = dYAxis.Box.Height()
return &yRange, nil