examples/texti18n: add Burmese

This commit is contained in:
Hajime Hoshi 2023-12-20 12:29:34 +09:00
parent 037a818601
commit 08b7f1ff9d
2 changed files with 30 additions and 3 deletions

Binary file not shown.

View File

@ -70,6 +70,19 @@ func init() {
thaiFaceSource = s thaiFaceSource = s
} }
//go:embed NotoSansMyanmar-Regular.ttf
var myanmarTTF []byte
var myanmarFaceSource *text.GoTextFaceSource
func init() {
s, err := text.NewGoTextFaceSource(bytes.NewReader(myanmarTTF))
if err != nil {
log.Fatal(err)
}
myanmarFaceSource = s
}
var japaneseFaceSource *text.GoTextFaceSource var japaneseFaceSource *text.GoTextFaceSource
func init() { func init() {
@ -82,7 +95,7 @@ func init() {
const ( const (
screenWidth = 640 screenWidth = 640
screenHeight = 480 screenHeight = 640
) )
type Game struct { type Game struct {
@ -126,7 +139,7 @@ func (g *Game) Draw(screen *ebiten.Image) {
text.Draw(screen, hindiText, f, op) text.Draw(screen, hindiText, f, op)
} }
{ {
const thaiText = "โดยที่การไม่นำพาและการหมิ่นในคุณค่าของสิทธิมนุษยชน" const thaiText = "โดยที่การยอมรับนับถือเกียรติศักดิ์ประจำตัว"
f := &text.GoTextFace{ f := &text.GoTextFace{
Source: thaiFaceSource, Source: thaiFaceSource,
Size: 24, Size: 24,
@ -139,6 +152,20 @@ func (g *Game) Draw(screen *ebiten.Image) {
op.GeoM.Translate(float64(x), float64(y)) op.GeoM.Translate(float64(x), float64(y))
text.Draw(screen, thaiText, f, op) text.Draw(screen, thaiText, f, op)
} }
{
const myanmarText = "လူခပ်သိမ်း၏ မျိုးရိုးဂုဏ်သိက္ခာနှင့်တကွ"
f := &text.GoTextFace{
Source: myanmarFaceSource,
Size: 24,
Language: language.Burmese,
}
x, y := 20, 210
w, h := text.Measure(myanmarText, f, 0)
vector.DrawFilledRect(screen, float32(x), float32(y), float32(w), float32(h), gray, false)
op := &text.DrawOptions{}
op.GeoM.Translate(float64(x), float64(y))
text.Draw(screen, myanmarText, f, op)
}
{ {
const japaneseText = "あのイーハトーヴォの\nすきとおった風、\n夏でも底に冷たさを\nもつ青いそら…" const japaneseText = "あのイーハトーヴォの\nすきとおった風、\n夏でも底に冷たさを\nもつ青いそら…"
f := &text.GoTextFace{ f := &text.GoTextFace{
@ -148,7 +175,7 @@ func (g *Game) Draw(screen *ebiten.Image) {
Language: language.Japanese, Language: language.Japanese,
} }
const lineSpacing = 48 const lineSpacing = 48
x, y := screenWidth-20, 210 x, y := screenWidth-20, 300
w, h := text.Measure(japaneseText, f, lineSpacing) w, h := text.Measure(japaneseText, f, lineSpacing)
// The left upper point is not x but x-w, since the text runs in the rigth-to-left direction as the secondary direction. // The left upper point is not x but x-w, since the text runs in the rigth-to-left direction as the secondary direction.
vector.DrawFilledRect(screen, float32(x)-float32(w), float32(y), float32(w), float32(h), gray, false) vector.DrawFilledRect(screen, float32(x)-float32(w), float32(y), float32(w), float32(h), gray, false)