127 lines
3.7 KiB
Go
127 lines
3.7 KiB
Go
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!")
|
||
}
|