Add Thai and Korean character image displays with scrolling grids
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
|
||||
"github.com/gen2brain/raylib-go/raylib"
|
||||
)
|
||||
|
||||
// Thai consonants (44 characters)
|
||||
var thaiConsonants = []struct {
|
||||
character string
|
||||
name string
|
||||
}{
|
||||
{"ก", "Ko Kai"}, {"ข", "Kho Khai"}, {"ฃ", "Kho Khuat"}, {"ค", "Kho Khwai"}, {"ฅ", "Kho Khon"},
|
||||
{"ฆ", "Kho Rakhang"}, {"ง", "Ngo Ngai"}, {"จ", "Cho Chan"}, {"ฉ", "Cho Ching"}, {"ช", "Cho Chang"},
|
||||
{"ซ", "So So"}, {"ฌ", "Cho Che"}, {"ญ", "Yo Ying"}, {"ฎ", "Do Dek"}, {"ฏ", "To Tao"},
|
||||
{"ฐ", "To Thong"}, {"ฑ", "To Thung"}, {"ฒ", "To Thahan"}, {"ณ", "No Nen"}, {"ด", "Do Dek"},
|
||||
{"ต", "To Tao"}, {"ถ", "To Thung"}, {"ท", "To Thahan"}, {"ธ", "Tho Thong"}, {"น", "No Nu"},
|
||||
{"บ", "Bo Baimai"}, {"ป", "Po Pla"}, {"ผ", "Pho Phung"}, {"ฝ", "Fo Fa"}, {"พ", "Pho Phan"},
|
||||
{"ฟ", "Fo Fan"}, {"ภ", "Pho Samphao"}, {"ม", "Mo Ma"}, {"ย", "Yo Yak"}, {"ร", "Ro Rua"},
|
||||
{"ล", "Lo Ling"}, {"ว", "Wo Waen"}, {"ศ", "So Sala"}, {"ษ", "So Ruezi"}, {"ส", "So Suan"},
|
||||
{"ห", "Ho Hip"}, {"ฬ", "Lo Chula"}, {"อ", "O Ang"}, {"ฮ", "Ho Nokhuk"},
|
||||
}
|
||||
|
||||
// Thai vowels (32 characters)
|
||||
var thaiVowels = []struct {
|
||||
character string
|
||||
name string
|
||||
}{
|
||||
{"ะ", "Sara A"}, {"ั", "Sara Aa"}, {"า", "Sara Aa"}, {"ำ", "Sara Am"}, {"ิ", "Sara I"},
|
||||
{"ี", "Sara Ii"}, {"ึ", "Sara Ue"}, {"ื", "Sara Uee"}, {"ุ", "Sara U"}, {"ู", "Sara Uu"},
|
||||
{"เ", "Sara E"}, {"แ", "Sara Ae"}, {"โ", "Sara O"}, {"ใ", "Sara Ai Mai Malai"}, {"ไ", "Sara Ai Mai Muang"},
|
||||
{"ๅ", "Sara Ue"}, {"ๆ", "Sara Uee"},
|
||||
}
|
||||
|
||||
// Thai numbers
|
||||
var thaiNumbers = []struct {
|
||||
character string
|
||||
name string
|
||||
}{
|
||||
{"๐", "Zero"}, {"๑", "One"}, {"๒", "Two"}, {"๓", "Three"}, {"๔", "Four"},
|
||||
{"๕", "Five"}, {"๖", "Six"}, {"๗", "Seven"}, {"๘", "Eight"}, {"๙", "Nine"},
|
||||
}
|
||||
|
||||
func main() {
|
||||
// Initialize raylib for font rendering
|
||||
runtime.LockOSThread()
|
||||
rl.InitWindow(1, 1, "Thai Generator")
|
||||
defer rl.CloseWindow()
|
||||
|
||||
// Create directory for images
|
||||
if err := os.MkdirAll("images", 0755); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// Load a font that supports Thai
|
||||
font := rl.GetFontDefault()
|
||||
|
||||
fontPaths := []string{
|
||||
"/System/Library/Fonts/Ayuthaya.ttc",
|
||||
"/System/Library/Fonts/Thonburi.ttc",
|
||||
"/Library/Fonts/Ayuthaya.ttc",
|
||||
"/usr/share/fonts/truetype/noto/NotoSansThai-Regular.ttf",
|
||||
"/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
|
||||
}
|
||||
|
||||
for _, path := range fontPaths {
|
||||
if _, err := os.Stat(path); err == nil {
|
||||
font = rl.LoadFont(path)
|
||||
if font != (rl.Font{}) {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if font == (rl.Font{}) {
|
||||
font = rl.GetFontDefault()
|
||||
fmt.Println("Using default font")
|
||||
} else {
|
||||
fmt.Println("Loaded Thai font")
|
||||
}
|
||||
|
||||
// All Thai characters
|
||||
allThai := append(thaiConsonants, thaiVowels...)
|
||||
allThai = append(allThai, thaiNumbers...)
|
||||
|
||||
// Create image for each character
|
||||
for _, t := range allThai {
|
||||
// Create a render texture
|
||||
texture := rl.LoadRenderTexture(256, 256)
|
||||
|
||||
rl.BeginTextureMode(texture)
|
||||
rl.ClearBackground(rl.White)
|
||||
|
||||
// Draw the Thai character
|
||||
charWidth := rl.MeasureText(t.character, 128)
|
||||
charX := int32((256 - charWidth) / 2)
|
||||
charY := int32(80)
|
||||
rl.DrawText(t.character, charX, charY, 128, rl.Black)
|
||||
|
||||
// Draw name at the bottom
|
||||
nameWidth := rl.MeasureText(t.name, 24)
|
||||
nameX := int32((256 - nameWidth) / 2)
|
||||
nameY := int32(200)
|
||||
rl.DrawText(t.name, nameX, nameY, 24, rl.Blue)
|
||||
|
||||
rl.EndTextureMode()
|
||||
|
||||
// Convert render texture to image
|
||||
img := rl.LoadImageFromTexture(texture.Texture)
|
||||
|
||||
// Save as PNG
|
||||
filename := "images/" + t.character + "_" + t.name + ".png"
|
||||
rl.ExportImage(*img, filename)
|
||||
|
||||
// Cleanup
|
||||
rl.UnloadImage(img)
|
||||
rl.UnloadRenderTexture(texture)
|
||||
|
||||
fmt.Println("Generated:", filename)
|
||||
}
|
||||
|
||||
fmt.Println("Finished generating all Thai images!")
|
||||
}
|
||||
Reference in New Issue
Block a user