mirror of
https://github.com/bloeys/nterm.git
synced 2025-12-29 06:28:20 +00:00
Detect script of runes
This commit is contained in:
@ -141,6 +141,18 @@ func (gr *GlyphRend) DrawTextOpenGLAbs(text string, screenPos *gglm.Vec3, color
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (gr *GlyphRend) GetTextRuns(t string) [][]rune {
|
||||||
|
|
||||||
|
// rs := []rune(t)
|
||||||
|
// runScript := unicode.Arabic
|
||||||
|
// runStartIndex := 0
|
||||||
|
// runs := make([][]rune, 0)
|
||||||
|
// for i := 0; i < len(rs); i++ {
|
||||||
|
|
||||||
|
// }
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (gr *GlyphRend) glyphFromRunes(curr, prev, next rune) *FontAtlasGlyph {
|
func (gr *GlyphRend) glyphFromRunes(curr, prev, next rune) *FontAtlasGlyph {
|
||||||
|
|
||||||
type PosCtx int
|
type PosCtx int
|
||||||
@ -375,7 +387,7 @@ func NewGlyphRend(fontFile string, fontOptions *truetype.Options, screenWidth, s
|
|||||||
|
|
||||||
gr.SetScreenSize(screenWidth, screenHeight)
|
gr.SetScreenSize(screenWidth, screenHeight)
|
||||||
|
|
||||||
RuneInfos, err = ParseUnicodeData("./unicode-data.txt")
|
RuneInfos, err = ParseUnicodeData("./unicode-data-13.txt")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,8 @@ import (
|
|||||||
"unicode"
|
"unicode"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const UnicodeVersion = "13.0.0"
|
||||||
|
|
||||||
type Category uint8
|
type Category uint8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -155,13 +157,17 @@ type RuneInfo struct {
|
|||||||
|
|
||||||
//EquivalentRunes are runes that are canonically or compatiability equivalent to this rune
|
//EquivalentRunes are runes that are canonically or compatiability equivalent to this rune
|
||||||
EquivalentRunes []rune
|
EquivalentRunes []rune
|
||||||
|
|
||||||
|
//ScriptTable is one of the script tables in the unicode package such as unicode.Arabic
|
||||||
|
//and is guaranteed to not be nil.
|
||||||
|
ScriptTable *unicode.RangeTable
|
||||||
}
|
}
|
||||||
|
|
||||||
//ParseUnicodeData decodes a 'UnicodeData' file according
|
// ParseUnicodeData decodes a 'UnicodeData' file according
|
||||||
//to http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html and returns a map containing information
|
// to http://www.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html and returns a map containing information
|
||||||
//on all runes within the passed ranges.
|
// on all runes within the passed ranges. If no ranges are passed then the full unicode data file will be decoded.
|
||||||
//
|
//
|
||||||
//If no ranges are passed then the full unicode data file will be decoded
|
// Any runes that don't fall in a script range are ignored (usually only a handful).
|
||||||
//
|
//
|
||||||
//The latest file can be found at https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
|
//The latest file can be found at https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
|
||||||
func ParseUnicodeData(unicodeFile string, rangesToLoad ...*unicode.RangeTable) (map[rune]RuneInfo, error) {
|
func ParseUnicodeData(unicodeFile string, rangesToLoad ...*unicode.RangeTable) (map[rune]RuneInfo, error) {
|
||||||
@ -200,6 +206,11 @@ func ParseUnicodeData(unicodeFile string, rangesToLoad ...*unicode.RangeTable) (
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scriptTable := ScriptTableFromRune(r)
|
||||||
|
if scriptTable == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
ri := ris[r]
|
ri := ris[r]
|
||||||
ri = RuneInfo{
|
ri = RuneInfo{
|
||||||
Name: fields[field_charName],
|
Name: fields[field_charName],
|
||||||
@ -209,6 +220,7 @@ func ParseUnicodeData(unicodeFile string, rangesToLoad ...*unicode.RangeTable) (
|
|||||||
|
|
||||||
//NOTE: This is not perfect (NamesList.txt notes some additional ligatures), but good enough :)
|
//NOTE: This is not perfect (NamesList.txt notes some additional ligatures), but good enough :)
|
||||||
IsLigature: strings.Contains(fields[field_charName], "LIGATURE"),
|
IsLigature: strings.Contains(fields[field_charName], "LIGATURE"),
|
||||||
|
ScriptTable: scriptTable,
|
||||||
}
|
}
|
||||||
|
|
||||||
//This might already be created for us by a previous ruen
|
//This might already be created for us by a previous ruen
|
||||||
@ -266,6 +278,401 @@ func runeFromHexCodeString(c string) rune {
|
|||||||
return rune(codepointU64)
|
return rune(codepointU64)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ScriptTableFromRune(r rune) *unicode.RangeTable {
|
||||||
|
|
||||||
|
if unicode.In(r, unicode.Adlam) {
|
||||||
|
return unicode.Adlam
|
||||||
|
} else if unicode.In(r, unicode.Ahom) {
|
||||||
|
return unicode.Ahom
|
||||||
|
} else if unicode.In(r, unicode.Anatolian_Hieroglyphs) {
|
||||||
|
return unicode.Anatolian_Hieroglyphs
|
||||||
|
} else if unicode.In(r, unicode.Arabic) {
|
||||||
|
return unicode.Arabic
|
||||||
|
} else if unicode.In(r, unicode.Armenian) {
|
||||||
|
return unicode.Armenian
|
||||||
|
} else if unicode.In(r, unicode.Avestan) {
|
||||||
|
return unicode.Avestan
|
||||||
|
} else if unicode.In(r, unicode.Balinese) {
|
||||||
|
return unicode.Balinese
|
||||||
|
} else if unicode.In(r, unicode.Bamum) {
|
||||||
|
return unicode.Bamum
|
||||||
|
} else if unicode.In(r, unicode.Bassa_Vah) {
|
||||||
|
return unicode.Bassa_Vah
|
||||||
|
} else if unicode.In(r, unicode.Batak) {
|
||||||
|
return unicode.Batak
|
||||||
|
} else if unicode.In(r, unicode.Bengali) {
|
||||||
|
return unicode.Bengali
|
||||||
|
} else if unicode.In(r, unicode.Bhaiksuki) {
|
||||||
|
return unicode.Bhaiksuki
|
||||||
|
} else if unicode.In(r, unicode.Bopomofo) {
|
||||||
|
return unicode.Bopomofo
|
||||||
|
} else if unicode.In(r, unicode.Brahmi) {
|
||||||
|
return unicode.Brahmi
|
||||||
|
} else if unicode.In(r, unicode.Braille) {
|
||||||
|
return unicode.Braille
|
||||||
|
} else if unicode.In(r, unicode.Buginese) {
|
||||||
|
return unicode.Buginese
|
||||||
|
} else if unicode.In(r, unicode.Buhid) {
|
||||||
|
return unicode.Buhid
|
||||||
|
} else if unicode.In(r, unicode.Canadian_Aboriginal) {
|
||||||
|
return unicode.Canadian_Aboriginal
|
||||||
|
} else if unicode.In(r, unicode.Carian) {
|
||||||
|
return unicode.Carian
|
||||||
|
} else if unicode.In(r, unicode.Caucasian_Albanian) {
|
||||||
|
return unicode.Caucasian_Albanian
|
||||||
|
} else if unicode.In(r, unicode.Chakma) {
|
||||||
|
return unicode.Chakma
|
||||||
|
} else if unicode.In(r, unicode.Cham) {
|
||||||
|
return unicode.Cham
|
||||||
|
} else if unicode.In(r, unicode.Cherokee) {
|
||||||
|
return unicode.Cherokee
|
||||||
|
} else if unicode.In(r, unicode.Chorasmian) {
|
||||||
|
return unicode.Chorasmian
|
||||||
|
} else if unicode.In(r, unicode.Common) {
|
||||||
|
return unicode.Common
|
||||||
|
} else if unicode.In(r, unicode.Coptic) {
|
||||||
|
return unicode.Coptic
|
||||||
|
} else if unicode.In(r, unicode.Cuneiform) {
|
||||||
|
return unicode.Cuneiform
|
||||||
|
} else if unicode.In(r, unicode.Cypriot) {
|
||||||
|
return unicode.Cypriot
|
||||||
|
} else if unicode.In(r, unicode.Cyrillic) {
|
||||||
|
return unicode.Cyrillic
|
||||||
|
} else if unicode.In(r, unicode.Deseret) {
|
||||||
|
return unicode.Deseret
|
||||||
|
} else if unicode.In(r, unicode.Devanagari) {
|
||||||
|
return unicode.Devanagari
|
||||||
|
} else if unicode.In(r, unicode.Dives_Akuru) {
|
||||||
|
return unicode.Dives_Akuru
|
||||||
|
} else if unicode.In(r, unicode.Dogra) {
|
||||||
|
return unicode.Dogra
|
||||||
|
} else if unicode.In(r, unicode.Duployan) {
|
||||||
|
return unicode.Duployan
|
||||||
|
} else if unicode.In(r, unicode.Egyptian_Hieroglyphs) {
|
||||||
|
return unicode.Egyptian_Hieroglyphs
|
||||||
|
} else if unicode.In(r, unicode.Elbasan) {
|
||||||
|
return unicode.Elbasan
|
||||||
|
} else if unicode.In(r, unicode.Elymaic) {
|
||||||
|
return unicode.Elymaic
|
||||||
|
} else if unicode.In(r, unicode.Ethiopic) {
|
||||||
|
return unicode.Ethiopic
|
||||||
|
} else if unicode.In(r, unicode.Georgian) {
|
||||||
|
return unicode.Georgian
|
||||||
|
} else if unicode.In(r, unicode.Glagolitic) {
|
||||||
|
return unicode.Glagolitic
|
||||||
|
} else if unicode.In(r, unicode.Gothic) {
|
||||||
|
return unicode.Gothic
|
||||||
|
} else if unicode.In(r, unicode.Grantha) {
|
||||||
|
return unicode.Grantha
|
||||||
|
} else if unicode.In(r, unicode.Greek) {
|
||||||
|
return unicode.Greek
|
||||||
|
} else if unicode.In(r, unicode.Gujarati) {
|
||||||
|
return unicode.Gujarati
|
||||||
|
} else if unicode.In(r, unicode.Gunjala_Gondi) {
|
||||||
|
return unicode.Gunjala_Gondi
|
||||||
|
} else if unicode.In(r, unicode.Gurmukhi) {
|
||||||
|
return unicode.Gurmukhi
|
||||||
|
} else if unicode.In(r, unicode.Han) {
|
||||||
|
return unicode.Han
|
||||||
|
} else if unicode.In(r, unicode.Hangul) {
|
||||||
|
return unicode.Hangul
|
||||||
|
} else if unicode.In(r, unicode.Hanifi_Rohingya) {
|
||||||
|
return unicode.Hanifi_Rohingya
|
||||||
|
} else if unicode.In(r, unicode.Hanunoo) {
|
||||||
|
return unicode.Hanunoo
|
||||||
|
} else if unicode.In(r, unicode.Hatran) {
|
||||||
|
return unicode.Hatran
|
||||||
|
} else if unicode.In(r, unicode.Hebrew) {
|
||||||
|
return unicode.Hebrew
|
||||||
|
} else if unicode.In(r, unicode.Hiragana) {
|
||||||
|
return unicode.Hiragana
|
||||||
|
} else if unicode.In(r, unicode.Imperial_Aramaic) {
|
||||||
|
return unicode.Imperial_Aramaic
|
||||||
|
} else if unicode.In(r, unicode.Inherited) {
|
||||||
|
return unicode.Inherited
|
||||||
|
} else if unicode.In(r, unicode.Inscriptional_Pahlavi) {
|
||||||
|
return unicode.Inscriptional_Pahlavi
|
||||||
|
} else if unicode.In(r, unicode.Inscriptional_Parthian) {
|
||||||
|
return unicode.Inscriptional_Parthian
|
||||||
|
} else if unicode.In(r, unicode.Javanese) {
|
||||||
|
return unicode.Javanese
|
||||||
|
} else if unicode.In(r, unicode.Kaithi) {
|
||||||
|
return unicode.Kaithi
|
||||||
|
} else if unicode.In(r, unicode.Kannada) {
|
||||||
|
return unicode.Kannada
|
||||||
|
} else if unicode.In(r, unicode.Katakana) {
|
||||||
|
return unicode.Katakana
|
||||||
|
} else if unicode.In(r, unicode.Kayah_Li) {
|
||||||
|
return unicode.Kayah_Li
|
||||||
|
} else if unicode.In(r, unicode.Kharoshthi) {
|
||||||
|
return unicode.Kharoshthi
|
||||||
|
} else if unicode.In(r, unicode.Khitan_Small_Script) {
|
||||||
|
return unicode.Khitan_Small_Script
|
||||||
|
} else if unicode.In(r, unicode.Khmer) {
|
||||||
|
return unicode.Khmer
|
||||||
|
} else if unicode.In(r, unicode.Khojki) {
|
||||||
|
return unicode.Khojki
|
||||||
|
} else if unicode.In(r, unicode.Khudawadi) {
|
||||||
|
return unicode.Khudawadi
|
||||||
|
} else if unicode.In(r, unicode.Lao) {
|
||||||
|
return unicode.Lao
|
||||||
|
} else if unicode.In(r, unicode.Latin) {
|
||||||
|
return unicode.Latin
|
||||||
|
} else if unicode.In(r, unicode.Lepcha) {
|
||||||
|
return unicode.Lepcha
|
||||||
|
} else if unicode.In(r, unicode.Limbu) {
|
||||||
|
return unicode.Limbu
|
||||||
|
} else if unicode.In(r, unicode.Linear_A) {
|
||||||
|
return unicode.Linear_A
|
||||||
|
} else if unicode.In(r, unicode.Linear_B) {
|
||||||
|
return unicode.Linear_B
|
||||||
|
} else if unicode.In(r, unicode.Lisu) {
|
||||||
|
return unicode.Lisu
|
||||||
|
} else if unicode.In(r, unicode.Lycian) {
|
||||||
|
return unicode.Lycian
|
||||||
|
} else if unicode.In(r, unicode.Lydian) {
|
||||||
|
return unicode.Lydian
|
||||||
|
} else if unicode.In(r, unicode.Mahajani) {
|
||||||
|
return unicode.Mahajani
|
||||||
|
} else if unicode.In(r, unicode.Makasar) {
|
||||||
|
return unicode.Makasar
|
||||||
|
} else if unicode.In(r, unicode.Malayalam) {
|
||||||
|
return unicode.Malayalam
|
||||||
|
} else if unicode.In(r, unicode.Mandaic) {
|
||||||
|
return unicode.Mandaic
|
||||||
|
} else if unicode.In(r, unicode.Manichaean) {
|
||||||
|
return unicode.Manichaean
|
||||||
|
} else if unicode.In(r, unicode.Marchen) {
|
||||||
|
return unicode.Marchen
|
||||||
|
} else if unicode.In(r, unicode.Masaram_Gondi) {
|
||||||
|
return unicode.Masaram_Gondi
|
||||||
|
} else if unicode.In(r, unicode.Medefaidrin) {
|
||||||
|
return unicode.Medefaidrin
|
||||||
|
} else if unicode.In(r, unicode.Meetei_Mayek) {
|
||||||
|
return unicode.Meetei_Mayek
|
||||||
|
} else if unicode.In(r, unicode.Mende_Kikakui) {
|
||||||
|
return unicode.Mende_Kikakui
|
||||||
|
} else if unicode.In(r, unicode.Meroitic_Cursive) {
|
||||||
|
return unicode.Meroitic_Cursive
|
||||||
|
} else if unicode.In(r, unicode.Meroitic_Hieroglyphs) {
|
||||||
|
return unicode.Meroitic_Hieroglyphs
|
||||||
|
} else if unicode.In(r, unicode.Miao) {
|
||||||
|
return unicode.Miao
|
||||||
|
} else if unicode.In(r, unicode.Modi) {
|
||||||
|
return unicode.Modi
|
||||||
|
} else if unicode.In(r, unicode.Mongolian) {
|
||||||
|
return unicode.Mongolian
|
||||||
|
} else if unicode.In(r, unicode.Mro) {
|
||||||
|
return unicode.Mro
|
||||||
|
} else if unicode.In(r, unicode.Multani) {
|
||||||
|
return unicode.Multani
|
||||||
|
} else if unicode.In(r, unicode.Myanmar) {
|
||||||
|
return unicode.Myanmar
|
||||||
|
} else if unicode.In(r, unicode.Nabataean) {
|
||||||
|
return unicode.Nabataean
|
||||||
|
} else if unicode.In(r, unicode.Nandinagari) {
|
||||||
|
return unicode.Nandinagari
|
||||||
|
} else if unicode.In(r, unicode.New_Tai_Lue) {
|
||||||
|
return unicode.New_Tai_Lue
|
||||||
|
} else if unicode.In(r, unicode.Newa) {
|
||||||
|
return unicode.Newa
|
||||||
|
} else if unicode.In(r, unicode.Nko) {
|
||||||
|
return unicode.Nko
|
||||||
|
} else if unicode.In(r, unicode.Nushu) {
|
||||||
|
return unicode.Nushu
|
||||||
|
} else if unicode.In(r, unicode.Nyiakeng_Puachue_Hmong) {
|
||||||
|
return unicode.Nyiakeng_Puachue_Hmong
|
||||||
|
} else if unicode.In(r, unicode.Ogham) {
|
||||||
|
return unicode.Ogham
|
||||||
|
} else if unicode.In(r, unicode.Ol_Chiki) {
|
||||||
|
return unicode.Ol_Chiki
|
||||||
|
} else if unicode.In(r, unicode.Old_Hungarian) {
|
||||||
|
return unicode.Old_Hungarian
|
||||||
|
} else if unicode.In(r, unicode.Old_Italic) {
|
||||||
|
return unicode.Old_Italic
|
||||||
|
} else if unicode.In(r, unicode.Old_North_Arabian) {
|
||||||
|
return unicode.Old_North_Arabian
|
||||||
|
} else if unicode.In(r, unicode.Old_Permic) {
|
||||||
|
return unicode.Old_Permic
|
||||||
|
} else if unicode.In(r, unicode.Old_Persian) {
|
||||||
|
return unicode.Old_Persian
|
||||||
|
} else if unicode.In(r, unicode.Old_Sogdian) {
|
||||||
|
return unicode.Old_Sogdian
|
||||||
|
} else if unicode.In(r, unicode.Old_South_Arabian) {
|
||||||
|
return unicode.Old_South_Arabian
|
||||||
|
} else if unicode.In(r, unicode.Old_Turkic) {
|
||||||
|
return unicode.Old_Turkic
|
||||||
|
} else if unicode.In(r, unicode.Oriya) {
|
||||||
|
return unicode.Oriya
|
||||||
|
} else if unicode.In(r, unicode.Osage) {
|
||||||
|
return unicode.Osage
|
||||||
|
} else if unicode.In(r, unicode.Osmanya) {
|
||||||
|
return unicode.Osmanya
|
||||||
|
} else if unicode.In(r, unicode.Pahawh_Hmong) {
|
||||||
|
return unicode.Pahawh_Hmong
|
||||||
|
} else if unicode.In(r, unicode.Palmyrene) {
|
||||||
|
return unicode.Palmyrene
|
||||||
|
} else if unicode.In(r, unicode.Pau_Cin_Hau) {
|
||||||
|
return unicode.Pau_Cin_Hau
|
||||||
|
} else if unicode.In(r, unicode.Phags_Pa) {
|
||||||
|
return unicode.Phags_Pa
|
||||||
|
} else if unicode.In(r, unicode.Phoenician) {
|
||||||
|
return unicode.Phoenician
|
||||||
|
} else if unicode.In(r, unicode.Psalter_Pahlavi) {
|
||||||
|
return unicode.Psalter_Pahlavi
|
||||||
|
} else if unicode.In(r, unicode.Rejang) {
|
||||||
|
return unicode.Rejang
|
||||||
|
} else if unicode.In(r, unicode.Runic) {
|
||||||
|
return unicode.Runic
|
||||||
|
} else if unicode.In(r, unicode.Samaritan) {
|
||||||
|
return unicode.Samaritan
|
||||||
|
} else if unicode.In(r, unicode.Saurashtra) {
|
||||||
|
return unicode.Saurashtra
|
||||||
|
} else if unicode.In(r, unicode.Sharada) {
|
||||||
|
return unicode.Sharada
|
||||||
|
} else if unicode.In(r, unicode.Shavian) {
|
||||||
|
return unicode.Shavian
|
||||||
|
} else if unicode.In(r, unicode.Siddham) {
|
||||||
|
return unicode.Siddham
|
||||||
|
} else if unicode.In(r, unicode.SignWriting) {
|
||||||
|
return unicode.SignWriting
|
||||||
|
} else if unicode.In(r, unicode.Sinhala) {
|
||||||
|
return unicode.Sinhala
|
||||||
|
} else if unicode.In(r, unicode.Sogdian) {
|
||||||
|
return unicode.Sogdian
|
||||||
|
} else if unicode.In(r, unicode.Sora_Sompeng) {
|
||||||
|
return unicode.Sora_Sompeng
|
||||||
|
} else if unicode.In(r, unicode.Soyombo) {
|
||||||
|
return unicode.Soyombo
|
||||||
|
} else if unicode.In(r, unicode.Sundanese) {
|
||||||
|
return unicode.Sundanese
|
||||||
|
} else if unicode.In(r, unicode.Syloti_Nagri) {
|
||||||
|
return unicode.Syloti_Nagri
|
||||||
|
} else if unicode.In(r, unicode.Syriac) {
|
||||||
|
return unicode.Syriac
|
||||||
|
} else if unicode.In(r, unicode.Tagalog) {
|
||||||
|
return unicode.Tagalog
|
||||||
|
} else if unicode.In(r, unicode.Tagbanwa) {
|
||||||
|
return unicode.Tagbanwa
|
||||||
|
} else if unicode.In(r, unicode.Tai_Le) {
|
||||||
|
return unicode.Tai_Le
|
||||||
|
} else if unicode.In(r, unicode.Tai_Tham) {
|
||||||
|
return unicode.Tai_Tham
|
||||||
|
} else if unicode.In(r, unicode.Tai_Viet) {
|
||||||
|
return unicode.Tai_Viet
|
||||||
|
} else if unicode.In(r, unicode.Takri) {
|
||||||
|
return unicode.Takri
|
||||||
|
} else if unicode.In(r, unicode.Tamil) {
|
||||||
|
return unicode.Tamil
|
||||||
|
} else if unicode.In(r, unicode.Tangut) {
|
||||||
|
return unicode.Tangut
|
||||||
|
} else if unicode.In(r, unicode.Telugu) {
|
||||||
|
return unicode.Telugu
|
||||||
|
} else if unicode.In(r, unicode.Thaana) {
|
||||||
|
return unicode.Thaana
|
||||||
|
} else if unicode.In(r, unicode.Thai) {
|
||||||
|
return unicode.Thai
|
||||||
|
} else if unicode.In(r, unicode.Tibetan) {
|
||||||
|
return unicode.Tibetan
|
||||||
|
} else if unicode.In(r, unicode.Tifinagh) {
|
||||||
|
return unicode.Tifinagh
|
||||||
|
} else if unicode.In(r, unicode.Tirhuta) {
|
||||||
|
return unicode.Tirhuta
|
||||||
|
} else if unicode.In(r, unicode.Ugaritic) {
|
||||||
|
return unicode.Ugaritic
|
||||||
|
} else if unicode.In(r, unicode.Vai) {
|
||||||
|
return unicode.Vai
|
||||||
|
} else if unicode.In(r, unicode.Wancho) {
|
||||||
|
return unicode.Wancho
|
||||||
|
} else if unicode.In(r, unicode.Warang_Citi) {
|
||||||
|
return unicode.Warang_Citi
|
||||||
|
} else if unicode.In(r, unicode.Yezidi) {
|
||||||
|
return unicode.Yezidi
|
||||||
|
} else if unicode.In(r, unicode.Yi) {
|
||||||
|
return unicode.Yi
|
||||||
|
} else if unicode.In(r, unicode.Zanabazar_Square) {
|
||||||
|
return unicode.Zanabazar_Square
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func PropertyTableFromRune(r rune) *unicode.RangeTable {
|
||||||
|
if unicode.In(r, unicode.ASCII_Hex_Digit) {
|
||||||
|
return unicode.ASCII_Hex_Digit
|
||||||
|
} else if unicode.In(r, unicode.Bidi_Control) {
|
||||||
|
return unicode.Bidi_Control
|
||||||
|
} else if unicode.In(r, unicode.Dash) {
|
||||||
|
return unicode.Dash
|
||||||
|
} else if unicode.In(r, unicode.Deprecated) {
|
||||||
|
return unicode.Deprecated
|
||||||
|
} else if unicode.In(r, unicode.Diacritic) {
|
||||||
|
return unicode.Diacritic
|
||||||
|
} else if unicode.In(r, unicode.Extender) {
|
||||||
|
return unicode.Extender
|
||||||
|
} else if unicode.In(r, unicode.Hex_Digit) {
|
||||||
|
return unicode.Hex_Digit
|
||||||
|
} else if unicode.In(r, unicode.Hyphen) {
|
||||||
|
return unicode.Hyphen
|
||||||
|
} else if unicode.In(r, unicode.IDS_Binary_Operator) {
|
||||||
|
return unicode.IDS_Binary_Operator
|
||||||
|
} else if unicode.In(r, unicode.IDS_Trinary_Operator) {
|
||||||
|
return unicode.IDS_Trinary_Operator
|
||||||
|
} else if unicode.In(r, unicode.Ideographic) {
|
||||||
|
return unicode.Ideographic
|
||||||
|
} else if unicode.In(r, unicode.Join_Control) {
|
||||||
|
return unicode.Join_Control
|
||||||
|
} else if unicode.In(r, unicode.Logical_Order_Exception) {
|
||||||
|
return unicode.Logical_Order_Exception
|
||||||
|
} else if unicode.In(r, unicode.Noncharacter_Code_Point) {
|
||||||
|
return unicode.Noncharacter_Code_Point
|
||||||
|
} else if unicode.In(r, unicode.Other_Alphabetic) {
|
||||||
|
return unicode.Other_Alphabetic
|
||||||
|
} else if unicode.In(r, unicode.Other_Default_Ignorable_Code_Point) {
|
||||||
|
return unicode.Other_Default_Ignorable_Code_Point
|
||||||
|
} else if unicode.In(r, unicode.Other_Grapheme_Extend) {
|
||||||
|
return unicode.Other_Grapheme_Extend
|
||||||
|
} else if unicode.In(r, unicode.Other_ID_Continue) {
|
||||||
|
return unicode.Other_ID_Continue
|
||||||
|
} else if unicode.In(r, unicode.Other_ID_Start) {
|
||||||
|
return unicode.Other_ID_Start
|
||||||
|
} else if unicode.In(r, unicode.Other_Lowercase) {
|
||||||
|
return unicode.Other_Lowercase
|
||||||
|
} else if unicode.In(r, unicode.Other_Math) {
|
||||||
|
return unicode.Other_Math
|
||||||
|
} else if unicode.In(r, unicode.Other_Uppercase) {
|
||||||
|
return unicode.Other_Uppercase
|
||||||
|
} else if unicode.In(r, unicode.Pattern_Syntax) {
|
||||||
|
return unicode.Pattern_Syntax
|
||||||
|
} else if unicode.In(r, unicode.Pattern_White_Space) {
|
||||||
|
return unicode.Pattern_White_Space
|
||||||
|
} else if unicode.In(r, unicode.Prepended_Concatenation_Mark) {
|
||||||
|
return unicode.Prepended_Concatenation_Mark
|
||||||
|
} else if unicode.In(r, unicode.Quotation_Mark) {
|
||||||
|
return unicode.Quotation_Mark
|
||||||
|
} else if unicode.In(r, unicode.Radical) {
|
||||||
|
return unicode.Radical
|
||||||
|
} else if unicode.In(r, unicode.Regional_Indicator) {
|
||||||
|
return unicode.Regional_Indicator
|
||||||
|
} else if unicode.In(r, unicode.STerm) {
|
||||||
|
return unicode.STerm
|
||||||
|
} else if unicode.In(r, unicode.Sentence_Terminal) {
|
||||||
|
return unicode.Sentence_Terminal
|
||||||
|
} else if unicode.In(r, unicode.Soft_Dotted) {
|
||||||
|
return unicode.Soft_Dotted
|
||||||
|
} else if unicode.In(r, unicode.Terminal_Punctuation) {
|
||||||
|
return unicode.Terminal_Punctuation
|
||||||
|
} else if unicode.In(r, unicode.Unified_Ideograph) {
|
||||||
|
return unicode.Unified_Ideograph
|
||||||
|
} else if unicode.In(r, unicode.Variation_Selector) {
|
||||||
|
return unicode.Variation_Selector
|
||||||
|
} else if unicode.In(r, unicode.White_Space) {
|
||||||
|
return unicode.White_Space
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func categoryStringToCategory(c string) Category {
|
func categoryStringToCategory(c string) Category {
|
||||||
|
|
||||||
switch c {
|
switch c {
|
||||||
|
|||||||
1
go.mod
1
go.mod
@ -14,5 +14,4 @@ require (
|
|||||||
require (
|
require (
|
||||||
github.com/bloeys/assimp-go v0.4.2 // indirect
|
github.com/bloeys/assimp-go v0.4.2 // indirect
|
||||||
github.com/inkyblackness/imgui-go/v4 v4.3.0 // indirect
|
github.com/inkyblackness/imgui-go/v4 v4.3.0 // indirect
|
||||||
golang.org/x/text v0.3.7 // indirect
|
|
||||||
)
|
)
|
||||||
|
|||||||
3
go.sum
3
go.sum
@ -2,8 +2,6 @@ github.com/bloeys/assimp-go v0.4.2 h1:ArVK74BCFcTO/rCGj2NgZG9xtbjnJdEn5npIeJx1Z0
|
|||||||
github.com/bloeys/assimp-go v0.4.2/go.mod h1:my3yRxT7CfOztmvi+0svmwbaqw0KFrxaHxncoyaEIP0=
|
github.com/bloeys/assimp-go v0.4.2/go.mod h1:my3yRxT7CfOztmvi+0svmwbaqw0KFrxaHxncoyaEIP0=
|
||||||
github.com/bloeys/gglm v0.41.10 h1:R9FMiI+VQVXAI+vDwCB7z9xqzy5VAR1657u8TQTDNKA=
|
github.com/bloeys/gglm v0.41.10 h1:R9FMiI+VQVXAI+vDwCB7z9xqzy5VAR1657u8TQTDNKA=
|
||||||
github.com/bloeys/gglm v0.41.10/go.mod h1:qwJQ0WzV191wAMwlGicbfbChbKoSedMk7gFFX6GnyOk=
|
github.com/bloeys/gglm v0.41.10/go.mod h1:qwJQ0WzV191wAMwlGicbfbChbKoSedMk7gFFX6GnyOk=
|
||||||
github.com/bloeys/nmage v0.12.12 h1:LeMR6NI+yMqxAZecdz7lOT1re4CWAVd1wDeJFK77+pI=
|
|
||||||
github.com/bloeys/nmage v0.12.12/go.mod h1:chDDenktiDvAG4BoFYNq1n8nACpbQ6/RFuCgCGmDxh4=
|
|
||||||
github.com/bloeys/nmage v0.12.13 h1:xvoaMAdHNnVif7LCaQkYR7jewXDZa9B1iV7IdG39dgc=
|
github.com/bloeys/nmage v0.12.13 h1:xvoaMAdHNnVif7LCaQkYR7jewXDZa9B1iV7IdG39dgc=
|
||||||
github.com/bloeys/nmage v0.12.13/go.mod h1:chDDenktiDvAG4BoFYNq1n8nACpbQ6/RFuCgCGmDxh4=
|
github.com/bloeys/nmage v0.12.13/go.mod h1:chDDenktiDvAG4BoFYNq1n8nACpbQ6/RFuCgCGmDxh4=
|
||||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
@ -23,6 +21,5 @@ github.com/veandco/go-sdl2 v0.4.10 h1:8QoD2bhWl7SbQDflIAUYWfl9Vq+mT8/boJFAUzAScg
|
|||||||
github.com/veandco/go-sdl2 v0.4.10/go.mod h1:OROqMhHD43nT4/i9crJukyVecjPNYYuCofep6SNiAjY=
|
github.com/veandco/go-sdl2 v0.4.10/go.mod h1:OROqMhHD43nT4/i9crJukyVecjPNYYuCofep6SNiAjY=
|
||||||
golang.org/x/image v0.0.0-20220617043117-41969df76e82 h1:KpZB5pUSBvrHltNEdK/tw0xlPeD13M6M6aGP32gKqiw=
|
golang.org/x/image v0.0.0-20220617043117-41969df76e82 h1:KpZB5pUSBvrHltNEdK/tw0xlPeD13M6M6aGP32gKqiw=
|
||||||
golang.org/x/image v0.0.0-20220617043117-41969df76e82/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY=
|
golang.org/x/image v0.0.0-20220617043117-41969df76e82/go.mod h1:doUCurBvlfPMKfmIpRIywoHmhN3VyhnoFDbvIEWF4hY=
|
||||||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
|
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
|||||||
3
main.go
3
main.go
@ -100,9 +100,6 @@ func (p *program) Init() {
|
|||||||
|
|
||||||
p.gridMat = materials.NewMaterial("grid", "./res/shaders/grid.glsl")
|
p.gridMat = materials.NewMaterial("grid", "./res/shaders/grid.glsl")
|
||||||
p.handleWindowResize()
|
p.handleWindowResize()
|
||||||
|
|
||||||
fmt.Printf("Beh equivalents: %v\n", string(glyphs.RuneInfos['ب'].EquivalentRunes))
|
|
||||||
// engine.Quit()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *program) Update() {
|
func (p *program) Update() {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user