diff --git a/go.mod b/go.mod index 9dbbbc0..ad371ce 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,9 @@ require github.com/gen2brain/raylib-go/raylib v0.55.1 require ( github.com/ebitengine/purego v0.7.1 // indirect + github.com/fogleman/gg v1.3.0 // indirect + github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect + golang.org/x/image v0.40.0 // indirect golang.org/x/sys v0.20.0 // indirect ) diff --git a/go.sum b/go.sum index aa78a1e..0ea4f51 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,14 @@ github.com/ebitengine/purego v0.7.1 h1:6/55d26lG3o9VCZX8lping+bZcmShseiqlh2bnUDiPA= github.com/ebitengine/purego v0.7.1/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ= +github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/gen2brain/raylib-go/raylib v0.55.1 h1:1rdc10WvvYjtj7qijHnV9T38/WuvlT6IIL+PaZ6cNA8= github.com/gen2brain/raylib-go/raylib v0.55.1/go.mod h1:BaY76bZk7nw1/kVOSQObPY1v1iwVE1KHAGMfvI6oK1Q= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +golang.org/x/image v0.40.0 h1:Tw4GyDXMo+daZN1znreBRC3VayR1aLFUyUEOLUdW1a8= +golang.org/x/image v0.40.0/go.mod h1:uIc348UZMSvS5Z65CVZ7iDPaNobNFEPeJ4kbqTOszmA= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= diff --git a/japanese/generate_hiragana_raylib.go b/japanese/generate_hiragana_raylib.go new file mode 100644 index 0000000..bc449a7 --- /dev/null +++ b/japanese/generate_hiragana_raylib.go @@ -0,0 +1,126 @@ +package main + +import ( + "fmt" + "os" + "runtime" + + "github.com/gen2brain/raylib-go/raylib" +) + +// All Hiragana characters +var hiragana = []struct { + character rune + romaji string +}{ + // Basic vowels + {'あ', "a"}, {'い', "i"}, {'う', "u"}, {'え', "e"}, {'お', "o"}, + // K-row + {'か', "ka"}, {'き', "ki"}, {'く', "ku"}, {'け', "ke"}, {'こ', "ko"}, + // S-row + {'さ', "sa"}, {'し', "shi"}, {'す', "su"}, {'せ', "se"}, {'そ', "so"}, + // T-row + {'た', "ta"}, {'ち', "chi"}, {'つ', "tsu"}, {'て', "te"}, {'と', "to"}, + // N-row + {'な', "na"}, {'に', "ni"}, {'ぬ', "nu"}, {'ね', "ne"}, {'の', "no"}, + // H-row + {'は', "ha"}, {'ひ', "hi"}, {'ふ', "fu"}, {'へ', "he"}, {'ほ', "ho"}, + // M-row + {'ま', "ma"}, {'み', "mi"}, {'む', "mu"}, {'め', "me"}, {'も', "mo"}, + // Y-row + {'や', "ya"}, {'ゆ', "yu"}, {'よ', "yo"}, + // R-row + {'ら', "ra"}, {'り', "ri"}, {'る', "ru"}, {'れ', "re"}, {'ろ', "ro"}, + // W-row + {'わ', "wa"}, {'ゐ', "wi"}, {'ゑ', "we"}, {'を', "wo"}, + // N + {'ん', "n"}, + // Dakuten (voiced consonants) + {'が', "ga"}, {'ぎ', "gi"}, {'ぐ', "gu"}, {'げ', "ge"}, {'ご', "go"}, + {'ざ', "za"}, {'じ', "ji"}, {'ず', "zu"}, {'ぜ', "ze"}, {'ぞ', "zo"}, + {'だ', "da"}, {'ぢ', "di"}, {'づ', "du"}, {'で', "de"}, {'ど', "do"}, + {'ば', "ba"}, {'び', "bi"}, {'ぶ', "bu"}, {'べ', "be"}, {'ぼ', "bo"}, + // Handakuten (semi-voiced consonants) + {'ぱ', "pa"}, {'ぴ', "pi"}, {'ぷ', "pu"}, {'ぺ', "pe"}, {'ぽ', "po"}, + // Small y-characters (for combinations) + {'ゃ', "ya"}, {'ゅ', "yu"}, {'ょ', "yo"}, +} + +func main() { + // Initialize raylib for font rendering + runtime.LockOSThread() + rl.InitWindow(1, 1, "Hiragana Generator") + defer rl.CloseWindow() + + // Create directory for images + if err := os.MkdirAll("images", 0755); err != nil { + panic(err) + } + + // Load a font that supports Japanese + // Try to find a system font + font := rl.GetFontDefault() + + // Try to load a Japanese font + fontPaths := []string{ + "/System/Library/Fonts/Hiragino Sans GB.ttc", + "/System/Library/Fonts/Arial Unicode.ttf", + "/Library/Fonts/Arial Unicode.ttf", + "/usr/share/fonts/truetype/noto/NotoSansJP-Regular.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 Japanese font") + } + + // Create image for each hiragana + for _, h := range hiragana { + // Create a render texture + texture := rl.LoadRenderTexture(256, 256) + + rl.BeginTextureMode(texture) + rl.ClearBackground(rl.White) + + // Draw the hiragana character + char := string(h.character) + charWidth := rl.MeasureText(char, 128) + charX := int32((256 - charWidth) / 2) + charY := int32(80) + rl.DrawText(char, charX, charY, 128, rl.Black) + + // Draw romaji at the bottom + romajiWidth := rl.MeasureText(h.romaji, 32) + romajiX := int32((256 - romajiWidth) / 2) + romajiY := int32(200) + rl.DrawText(h.romaji, romajiX, romajiY, 32, rl.Blue) + + rl.EndTextureMode() + + // Convert render texture to image + img := rl.LoadImageFromTexture(texture.Texture) + + // Save as PNG + filename := "images/" + char + "_" + h.romaji + ".png" + rl.ExportImage(*img, filename) + + // Cleanup + rl.UnloadImage(img) + rl.UnloadRenderTexture(texture) + + fmt.Println("Generated:", filename) + } + + fmt.Println("Finished generating all hiragana images!") +} diff --git a/japanese/images/あ_a.png b/japanese/images/あ_a.png new file mode 100644 index 0000000..ef23ccc Binary files /dev/null and b/japanese/images/あ_a.png differ diff --git a/japanese/images/い_i.png b/japanese/images/い_i.png new file mode 100644 index 0000000..2b19b46 Binary files /dev/null and b/japanese/images/い_i.png differ diff --git a/japanese/images/う_u.png b/japanese/images/う_u.png new file mode 100644 index 0000000..ebc33ac Binary files /dev/null and b/japanese/images/う_u.png differ diff --git a/japanese/images/え_e.png b/japanese/images/え_e.png new file mode 100644 index 0000000..2f892fe Binary files /dev/null and b/japanese/images/え_e.png differ diff --git a/japanese/images/お_o.png b/japanese/images/お_o.png new file mode 100644 index 0000000..6ee816d Binary files /dev/null and b/japanese/images/お_o.png differ diff --git a/japanese/images/か_ka.png b/japanese/images/か_ka.png new file mode 100644 index 0000000..d9bebbc Binary files /dev/null and b/japanese/images/か_ka.png differ diff --git a/japanese/images/が_ga.png b/japanese/images/が_ga.png new file mode 100644 index 0000000..8d0f156 Binary files /dev/null and b/japanese/images/が_ga.png differ diff --git a/japanese/images/き_ki.png b/japanese/images/き_ki.png new file mode 100644 index 0000000..370ddc2 Binary files /dev/null and b/japanese/images/き_ki.png differ diff --git a/japanese/images/ぎ_gi.png b/japanese/images/ぎ_gi.png new file mode 100644 index 0000000..7e71788 Binary files /dev/null and b/japanese/images/ぎ_gi.png differ diff --git a/japanese/images/く_ku.png b/japanese/images/く_ku.png new file mode 100644 index 0000000..4de0e19 Binary files /dev/null and b/japanese/images/く_ku.png differ diff --git a/japanese/images/ぐ_gu.png b/japanese/images/ぐ_gu.png new file mode 100644 index 0000000..e2818e6 Binary files /dev/null and b/japanese/images/ぐ_gu.png differ diff --git a/japanese/images/け_ke.png b/japanese/images/け_ke.png new file mode 100644 index 0000000..90a75c2 Binary files /dev/null and b/japanese/images/け_ke.png differ diff --git a/japanese/images/げ_ge.png b/japanese/images/げ_ge.png new file mode 100644 index 0000000..8b6ad55 Binary files /dev/null and b/japanese/images/げ_ge.png differ diff --git a/japanese/images/こ_ko.png b/japanese/images/こ_ko.png new file mode 100644 index 0000000..7f791e5 Binary files /dev/null and b/japanese/images/こ_ko.png differ diff --git a/japanese/images/ご_go.png b/japanese/images/ご_go.png new file mode 100644 index 0000000..1a5bcf0 Binary files /dev/null and b/japanese/images/ご_go.png differ diff --git a/japanese/images/さ_sa.png b/japanese/images/さ_sa.png new file mode 100644 index 0000000..65e3863 Binary files /dev/null and b/japanese/images/さ_sa.png differ diff --git a/japanese/images/ざ_za.png b/japanese/images/ざ_za.png new file mode 100644 index 0000000..8b5db80 Binary files /dev/null and b/japanese/images/ざ_za.png differ diff --git a/japanese/images/し_shi.png b/japanese/images/し_shi.png new file mode 100644 index 0000000..94a60f8 Binary files /dev/null and b/japanese/images/し_shi.png differ diff --git a/japanese/images/じ_ji.png b/japanese/images/じ_ji.png new file mode 100644 index 0000000..3ca01dd Binary files /dev/null and b/japanese/images/じ_ji.png differ diff --git a/japanese/images/す_su.png b/japanese/images/す_su.png new file mode 100644 index 0000000..6f76fe8 Binary files /dev/null and b/japanese/images/す_su.png differ diff --git a/japanese/images/ず_zu.png b/japanese/images/ず_zu.png new file mode 100644 index 0000000..6b60ae2 Binary files /dev/null and b/japanese/images/ず_zu.png differ diff --git a/japanese/images/せ_se.png b/japanese/images/せ_se.png new file mode 100644 index 0000000..056c895 Binary files /dev/null and b/japanese/images/せ_se.png differ diff --git a/japanese/images/ぜ_ze.png b/japanese/images/ぜ_ze.png new file mode 100644 index 0000000..4bb6258 Binary files /dev/null and b/japanese/images/ぜ_ze.png differ diff --git a/japanese/images/そ_so.png b/japanese/images/そ_so.png new file mode 100644 index 0000000..48e7f93 Binary files /dev/null and b/japanese/images/そ_so.png differ diff --git a/japanese/images/ぞ_zo.png b/japanese/images/ぞ_zo.png new file mode 100644 index 0000000..5106d80 Binary files /dev/null and b/japanese/images/ぞ_zo.png differ diff --git a/japanese/images/た_ta.png b/japanese/images/た_ta.png new file mode 100644 index 0000000..8698481 Binary files /dev/null and b/japanese/images/た_ta.png differ diff --git a/japanese/images/だ_da.png b/japanese/images/だ_da.png new file mode 100644 index 0000000..94f287d Binary files /dev/null and b/japanese/images/だ_da.png differ diff --git a/japanese/images/ち_chi.png b/japanese/images/ち_chi.png new file mode 100644 index 0000000..a8939ee Binary files /dev/null and b/japanese/images/ち_chi.png differ diff --git a/japanese/images/ぢ_di.png b/japanese/images/ぢ_di.png new file mode 100644 index 0000000..5add5d4 Binary files /dev/null and b/japanese/images/ぢ_di.png differ diff --git a/japanese/images/つ_tsu.png b/japanese/images/つ_tsu.png new file mode 100644 index 0000000..3fbcd8f Binary files /dev/null and b/japanese/images/つ_tsu.png differ diff --git a/japanese/images/づ_du.png b/japanese/images/づ_du.png new file mode 100644 index 0000000..9f78d07 Binary files /dev/null and b/japanese/images/づ_du.png differ diff --git a/japanese/images/て_te.png b/japanese/images/て_te.png new file mode 100644 index 0000000..f1dc7fd Binary files /dev/null and b/japanese/images/て_te.png differ diff --git a/japanese/images/で_de.png b/japanese/images/で_de.png new file mode 100644 index 0000000..35ef52c Binary files /dev/null and b/japanese/images/で_de.png differ diff --git a/japanese/images/と_to.png b/japanese/images/と_to.png new file mode 100644 index 0000000..caf118a Binary files /dev/null and b/japanese/images/と_to.png differ diff --git a/japanese/images/ど_do.png b/japanese/images/ど_do.png new file mode 100644 index 0000000..96eb713 Binary files /dev/null and b/japanese/images/ど_do.png differ diff --git a/japanese/images/な_na.png b/japanese/images/な_na.png new file mode 100644 index 0000000..ce0c556 Binary files /dev/null and b/japanese/images/な_na.png differ diff --git a/japanese/images/に_ni.png b/japanese/images/に_ni.png new file mode 100644 index 0000000..e7df182 Binary files /dev/null and b/japanese/images/に_ni.png differ diff --git a/japanese/images/ぬ_nu.png b/japanese/images/ぬ_nu.png new file mode 100644 index 0000000..ab334cb Binary files /dev/null and b/japanese/images/ぬ_nu.png differ diff --git a/japanese/images/ね_ne.png b/japanese/images/ね_ne.png new file mode 100644 index 0000000..8a9eb14 Binary files /dev/null and b/japanese/images/ね_ne.png differ diff --git a/japanese/images/の_no.png b/japanese/images/の_no.png new file mode 100644 index 0000000..e2ae7c0 Binary files /dev/null and b/japanese/images/の_no.png differ diff --git a/japanese/images/は_ha.png b/japanese/images/は_ha.png new file mode 100644 index 0000000..2c42398 Binary files /dev/null and b/japanese/images/は_ha.png differ diff --git a/japanese/images/ば_ba.png b/japanese/images/ば_ba.png new file mode 100644 index 0000000..5331aa6 Binary files /dev/null and b/japanese/images/ば_ba.png differ diff --git a/japanese/images/ぱ_pa.png b/japanese/images/ぱ_pa.png new file mode 100644 index 0000000..f241b45 Binary files /dev/null and b/japanese/images/ぱ_pa.png differ diff --git a/japanese/images/ひ_hi.png b/japanese/images/ひ_hi.png new file mode 100644 index 0000000..1921045 Binary files /dev/null and b/japanese/images/ひ_hi.png differ diff --git a/japanese/images/び_bi.png b/japanese/images/び_bi.png new file mode 100644 index 0000000..711390c Binary files /dev/null and b/japanese/images/び_bi.png differ diff --git a/japanese/images/ぴ_pi.png b/japanese/images/ぴ_pi.png new file mode 100644 index 0000000..93e3c3a Binary files /dev/null and b/japanese/images/ぴ_pi.png differ diff --git a/japanese/images/ふ_fu.png b/japanese/images/ふ_fu.png new file mode 100644 index 0000000..05ac5c6 Binary files /dev/null and b/japanese/images/ふ_fu.png differ diff --git a/japanese/images/ぶ_bu.png b/japanese/images/ぶ_bu.png new file mode 100644 index 0000000..4fd3d4a Binary files /dev/null and b/japanese/images/ぶ_bu.png differ diff --git a/japanese/images/ぷ_pu.png b/japanese/images/ぷ_pu.png new file mode 100644 index 0000000..0ce50d5 Binary files /dev/null and b/japanese/images/ぷ_pu.png differ diff --git a/japanese/images/へ_he.png b/japanese/images/へ_he.png new file mode 100644 index 0000000..18a7ad5 Binary files /dev/null and b/japanese/images/へ_he.png differ diff --git a/japanese/images/べ_be.png b/japanese/images/べ_be.png new file mode 100644 index 0000000..70e2bf3 Binary files /dev/null and b/japanese/images/べ_be.png differ diff --git a/japanese/images/ぺ_pe.png b/japanese/images/ぺ_pe.png new file mode 100644 index 0000000..1a9e3bb Binary files /dev/null and b/japanese/images/ぺ_pe.png differ diff --git a/japanese/images/ほ_ho.png b/japanese/images/ほ_ho.png new file mode 100644 index 0000000..1326b11 Binary files /dev/null and b/japanese/images/ほ_ho.png differ diff --git a/japanese/images/ぼ_bo.png b/japanese/images/ぼ_bo.png new file mode 100644 index 0000000..06e623c Binary files /dev/null and b/japanese/images/ぼ_bo.png differ diff --git a/japanese/images/ぽ_po.png b/japanese/images/ぽ_po.png new file mode 100644 index 0000000..e47a535 Binary files /dev/null and b/japanese/images/ぽ_po.png differ diff --git a/japanese/images/ま_ma.png b/japanese/images/ま_ma.png new file mode 100644 index 0000000..ffa95b5 Binary files /dev/null and b/japanese/images/ま_ma.png differ diff --git a/japanese/images/み_mi.png b/japanese/images/み_mi.png new file mode 100644 index 0000000..4a772d3 Binary files /dev/null and b/japanese/images/み_mi.png differ diff --git a/japanese/images/む_mu.png b/japanese/images/む_mu.png new file mode 100644 index 0000000..62b3c61 Binary files /dev/null and b/japanese/images/む_mu.png differ diff --git a/japanese/images/め_me.png b/japanese/images/め_me.png new file mode 100644 index 0000000..762feef Binary files /dev/null and b/japanese/images/め_me.png differ diff --git a/japanese/images/も_mo.png b/japanese/images/も_mo.png new file mode 100644 index 0000000..0817fb6 Binary files /dev/null and b/japanese/images/も_mo.png differ diff --git a/japanese/images/や_ya.png b/japanese/images/や_ya.png new file mode 100644 index 0000000..6d2ff1b Binary files /dev/null and b/japanese/images/や_ya.png differ diff --git a/japanese/images/ゆ_yu.png b/japanese/images/ゆ_yu.png new file mode 100644 index 0000000..be5c7bc Binary files /dev/null and b/japanese/images/ゆ_yu.png differ diff --git a/japanese/images/よ_yo.png b/japanese/images/よ_yo.png new file mode 100644 index 0000000..55d17b3 Binary files /dev/null and b/japanese/images/よ_yo.png differ diff --git a/japanese/images/ら_ra.png b/japanese/images/ら_ra.png new file mode 100644 index 0000000..2672186 Binary files /dev/null and b/japanese/images/ら_ra.png differ diff --git a/japanese/images/り_ri.png b/japanese/images/り_ri.png new file mode 100644 index 0000000..3b0ae1d Binary files /dev/null and b/japanese/images/り_ri.png differ diff --git a/japanese/images/る_ru.png b/japanese/images/る_ru.png new file mode 100644 index 0000000..2275477 Binary files /dev/null and b/japanese/images/る_ru.png differ diff --git a/japanese/images/れ_re.png b/japanese/images/れ_re.png new file mode 100644 index 0000000..11e67cf Binary files /dev/null and b/japanese/images/れ_re.png differ diff --git a/japanese/images/ろ_ro.png b/japanese/images/ろ_ro.png new file mode 100644 index 0000000..5f061f5 Binary files /dev/null and b/japanese/images/ろ_ro.png differ diff --git a/japanese/images/わ_wa.png b/japanese/images/わ_wa.png new file mode 100644 index 0000000..7552e32 Binary files /dev/null and b/japanese/images/わ_wa.png differ diff --git a/japanese/images/ゐ_wi.png b/japanese/images/ゐ_wi.png new file mode 100644 index 0000000..fc93596 Binary files /dev/null and b/japanese/images/ゐ_wi.png differ diff --git a/japanese/images/ゑ_we.png b/japanese/images/ゑ_we.png new file mode 100644 index 0000000..45a0ce5 Binary files /dev/null and b/japanese/images/ゑ_we.png differ diff --git a/japanese/images/を_wo.png b/japanese/images/を_wo.png new file mode 100644 index 0000000..512dbe6 Binary files /dev/null and b/japanese/images/を_wo.png differ diff --git a/japanese/images/ん_n.png b/japanese/images/ん_n.png new file mode 100644 index 0000000..b173f72 Binary files /dev/null and b/japanese/images/ん_n.png differ