iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
SideProject30

HOW TO GO系列 第 20

20. ebiten (4)

  • 分享至 

  • xImage
  •  

中文顯示

如果只是要簡單顯示文字時,通常會使用 ebitenutil.DebugPrintAt(),但是就會遇到中文無法顯示的問題。問題應該是預設使用的字體不包含中文的字型。

ebitenutil.DebugPrintAt(screen, "hello world", 0, 20)

因此解決辦法就是改成包含中文的字體

解決方式

這邊找到幾個開源的中文字體:

go get golang.org/x/image/font/sfnt

範例程式碼

import (
	"log"
	
	_ "embed"
	"image"
	"image/color"
	_ "image/png"

	"github.com/hajimehoshi/ebiten/v2"
	"github.com/hajimehoshi/ebiten/v2/ebitenutil"
	"github.com/hajimehoshi/ebiten/v2/inpututil"
	"github.com/hajimehoshi/ebiten/v2/text"
	"golang.org/x/image/font"
	"golang.org/x/image/font/opentype"
)

//go:embed Cubic_11_1.013_R.ttf
cubicFont []byte

var font font.Face

func init() {
    // 讀取字體
    tt, err := opentype.Parse(cubicFont)
	if err != nil {
		log.Fatal(err)
	}

	font, err = opentype.NewFace(tt, nil)
	if err != nil {
		log.Fatal(err)
	}
}

// ...略

func (g *App) Draw(screen *ebiten.Image) {
	text.Draw(screen, "hello 123 中文測試", g.font, 0, 30, color.White)
}


上一篇
19. 中場檢討
下一篇
21. ebiten (5)
系列文
HOW TO GO30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言