mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-07 16:18:52 +00:00
Update vendor:kb_text_shape to v1.03
This commit is contained in:
+29
-3
@@ -14,6 +14,12 @@ import "core:mem"
|
|||||||
|
|
||||||
@(default_calling_convention="c", link_prefix="kbts_", require_results)
|
@(default_calling_convention="c", link_prefix="kbts_", require_results)
|
||||||
foreign lib {
|
foreign lib {
|
||||||
|
FeatureTagToId :: proc(Tag: feature_tag) -> feature_id ---
|
||||||
|
FeatureOverride :: proc(Id: feature_id, Alternate: b32, Value: u32) -> feature_override ---
|
||||||
|
FeatureOverrideFromTag :: proc(Tag: feature_tag, Alternate: b32, Value: u32) -> feature_override ---
|
||||||
|
GlyphConfigOverrideFeature :: proc(Config: ^glyph_config, Id: feature_id, Alternate: b32, Value: u32) -> b32 ---
|
||||||
|
GlyphConfigOverrideFeatureFromTag :: proc(Config: ^glyph_config, Tag: feature_tag, Alternate: b32, Value: u32) -> b32 ---
|
||||||
|
|
||||||
FontIsValid :: proc(Font: ^font) -> b32 ---
|
FontIsValid :: proc(Font: ^font) -> b32 ---
|
||||||
SizeOfShapeState :: proc(Font: ^font) -> un ---
|
SizeOfShapeState :: proc(Font: ^font) -> un ---
|
||||||
|
|
||||||
@@ -21,7 +27,7 @@ foreign lib {
|
|||||||
|
|
||||||
ShapeConfig :: proc(Font: ^font, Script: script, Language: language) -> shape_config ---
|
ShapeConfig :: proc(Font: ^font, Script: script, Language: language) -> shape_config ---
|
||||||
ShaperIsComplex :: proc(Shaper: shaper) -> b32 ---
|
ShaperIsComplex :: proc(Shaper: shaper) -> b32 ---
|
||||||
ScriptIsComplex :: proc(Script: script) -> b32 ---
|
ScriptTagToScript :: proc(Tag: script_tag) -> script ---
|
||||||
|
|
||||||
Shape :: proc(State: ^shape_state, Config: ^shape_config,
|
Shape :: proc(State: ^shape_state, Config: ^shape_config,
|
||||||
MainDirection, RunDirection: direction,
|
MainDirection, RunDirection: direction,
|
||||||
@@ -37,6 +43,26 @@ foreign lib {
|
|||||||
InferScript :: proc(Direction: ^direction, Script: ^script, GlyphScript: script) ---
|
InferScript :: proc(Direction: ^direction, Script: ^script, GlyphScript: script) ---
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@(require_results)
|
||||||
|
GlyphConfig :: proc "c" (FeatureOverrides: []feature_override) -> glyph_config {
|
||||||
|
@(default_calling_convention="c", require_results)
|
||||||
|
foreign lib {
|
||||||
|
kbts_GlyphConfig :: proc(FeatureOverrides: [^]feature_override, FeatureOverrideCount: u32) -> glyph_config ---
|
||||||
|
}
|
||||||
|
return kbts_GlyphConfig(raw_data(FeatureOverrides), u32(len(FeatureOverrides)))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@(require_results)
|
||||||
|
EmptyGlyphConfig :: proc(FeatureOverrides: []feature_override) -> glyph_config {
|
||||||
|
@(default_calling_convention="c", require_results)
|
||||||
|
foreign lib {
|
||||||
|
kbts_EmptyGlyphConfig :: proc(FeatureOverrides: [^]feature_override, FeatureOverrideCapacity: u32) -> glyph_config ---
|
||||||
|
}
|
||||||
|
return kbts_EmptyGlyphConfig(raw_data(FeatureOverrides), u32(len(FeatureOverrides)))
|
||||||
|
}
|
||||||
|
|
||||||
@(require_results)
|
@(require_results)
|
||||||
PlaceShapeState :: proc "c" (Memory: []byte) -> ^shape_state {
|
PlaceShapeState :: proc "c" (Memory: []byte) -> ^shape_state {
|
||||||
@(default_calling_convention="c", require_results)
|
@(default_calling_convention="c", require_results)
|
||||||
@@ -58,10 +84,10 @@ DecodeUtf8 :: proc "contextless" (String: string) -> (Codepoint: rune, SourceCha
|
|||||||
|
|
||||||
@(default_calling_convention="c", require_results)
|
@(default_calling_convention="c", require_results)
|
||||||
foreign lib {
|
foreign lib {
|
||||||
kbts_DecodeUtf8 :: proc(Utf8: [^]byte, Length: uint) -> decode ---
|
kbts_DecodeUtf8 :: proc(Utf8: [^]byte, Length: un) -> decode ---
|
||||||
}
|
}
|
||||||
|
|
||||||
Decode := kbts_DecodeUtf8(raw_data(String), len(String))
|
Decode := kbts_DecodeUtf8(raw_data(String), un(len(String)))
|
||||||
return Decode.Codepoint, Decode.SourceCharactersConsumed, bool(Decode.Valid)
|
return Decode.Codepoint, Decode.SourceCharactersConsumed, bool(Decode.Valid)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+211
-5
@@ -801,6 +801,7 @@ op_kind :: enum u8 {
|
|||||||
NORMALIZE_HANGUL,
|
NORMALIZE_HANGUL,
|
||||||
FLAG_JOINING_LETTERS,
|
FLAG_JOINING_LETTERS,
|
||||||
GSUB_FEATURES,
|
GSUB_FEATURES,
|
||||||
|
GSUB_FEATURES_WITH_USER,
|
||||||
|
|
||||||
// Positioning ops.
|
// Positioning ops.
|
||||||
GPOS_METRICS,
|
GPOS_METRICS,
|
||||||
@@ -1067,6 +1068,179 @@ shaper :: enum u32 {
|
|||||||
USE,
|
USE,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
script_tag :: enum u32 {
|
||||||
|
DONT_KNOW = (' ' | ' '<<8 | ' '<<16 | ' '<<24),
|
||||||
|
ADLAM = ('a' | 'd'<<8 | 'l'<<16 | 'm'<<24),
|
||||||
|
AHOM = ('a' | 'h'<<8 | 'o'<<16 | 'm'<<24),
|
||||||
|
ANATOLIAN_HIEROGLYPHS = ('h' | 'l'<<8 | 'u'<<16 | 'w'<<24),
|
||||||
|
ARABIC = ('a' | 'r'<<8 | 'a'<<16 | 'b'<<24),
|
||||||
|
ARMENIAN = ('a' | 'r'<<8 | 'm'<<16 | 'n'<<24),
|
||||||
|
AVESTAN = ('a' | 'v'<<8 | 's'<<16 | 't'<<24),
|
||||||
|
BALINESE = ('b' | 'a'<<8 | 'l'<<16 | 'i'<<24),
|
||||||
|
BAMUM = ('b' | 'a'<<8 | 'm'<<16 | 'u'<<24),
|
||||||
|
BASSA_VAH = ('b' | 'a'<<8 | 's'<<16 | 's'<<24),
|
||||||
|
BATAK = ('b' | 'a'<<8 | 't'<<16 | 'k'<<24),
|
||||||
|
BENGALI = ('b' | 'n'<<8 | 'g'<<16 | '2'<<24),
|
||||||
|
BHAIKSUKI = ('b' | 'h'<<8 | 'k'<<16 | 's'<<24),
|
||||||
|
BOPOMOFO = ('b' | 'o'<<8 | 'p'<<16 | 'o'<<24),
|
||||||
|
BRAHMI = ('b' | 'r'<<8 | 'a'<<16 | 'h'<<24),
|
||||||
|
BUGINESE = ('b' | 'u'<<8 | 'g'<<16 | 'i'<<24),
|
||||||
|
BUHID = ('b' | 'u'<<8 | 'h'<<16 | 'd'<<24),
|
||||||
|
CANADIAN_SYLLABICS = ('c' | 'a'<<8 | 'n'<<16 | 's'<<24),
|
||||||
|
CARIAN = ('c' | 'a'<<8 | 'r'<<16 | 'i'<<24),
|
||||||
|
CAUCASIAN_ALBANIAN = ('a' | 'g'<<8 | 'h'<<16 | 'b'<<24),
|
||||||
|
CHAKMA = ('c' | 'a'<<8 | 'k'<<16 | 'm'<<24),
|
||||||
|
CHAM = ('c' | 'h'<<8 | 'a'<<16 | 'm'<<24),
|
||||||
|
CHEROKEE = ('c' | 'h'<<8 | 'e'<<16 | 'r'<<24),
|
||||||
|
CHORASMIAN = ('c' | 'h'<<8 | 'r'<<16 | 's'<<24),
|
||||||
|
CJK_IDEOGRAPHIC = ('h' | 'a'<<8 | 'n'<<16 | 'i'<<24),
|
||||||
|
COPTIC = ('c' | 'o'<<8 | 'p'<<16 | 't'<<24),
|
||||||
|
CYPRIOT_SYLLABARY = ('c' | 'p'<<8 | 'r'<<16 | 't'<<24),
|
||||||
|
CYPRO_MINOAN = ('c' | 'p'<<8 | 'm'<<16 | 'n'<<24),
|
||||||
|
CYRILLIC = ('c' | 'y'<<8 | 'r'<<16 | 'l'<<24),
|
||||||
|
DEFAULT = ('D' | 'F'<<8 | 'L'<<16 | 'T'<<24),
|
||||||
|
DEFAULT2 = ('D' | 'F'<<8 | 'L'<<16 | 'T'<<24),
|
||||||
|
DESERET = ('d' | 's'<<8 | 'r'<<16 | 't'<<24),
|
||||||
|
DEVANAGARI = ('d' | 'e'<<8 | 'v'<<16 | '2'<<24),
|
||||||
|
DIVES_AKURU = ('d' | 'i'<<8 | 'a'<<16 | 'k'<<24),
|
||||||
|
DOGRA = ('d' | 'o'<<8 | 'g'<<16 | 'r'<<24),
|
||||||
|
DUPLOYAN = ('d' | 'u'<<8 | 'p'<<16 | 'l'<<24),
|
||||||
|
EGYPTIAN_HIEROGLYPHS = ('e' | 'g'<<8 | 'y'<<16 | 'p'<<24),
|
||||||
|
ELBASAN = ('e' | 'l'<<8 | 'b'<<16 | 'a'<<24),
|
||||||
|
ELYMAIC = ('e' | 'l'<<8 | 'y'<<16 | 'm'<<24),
|
||||||
|
ETHIOPIC = ('e' | 't'<<8 | 'h'<<16 | 'i'<<24),
|
||||||
|
GARAY = ('g' | 'a'<<8 | 'r'<<16 | 'a'<<24),
|
||||||
|
GEORGIAN = ('g' | 'e'<<8 | 'o'<<16 | 'r'<<24),
|
||||||
|
GLAGOLITIC = ('g' | 'l'<<8 | 'a'<<16 | 'g'<<24),
|
||||||
|
GOTHIC = ('g' | 'o'<<8 | 't'<<16 | 'h'<<24),
|
||||||
|
GRANTHA = ('g' | 'r'<<8 | 'a'<<16 | 'n'<<24),
|
||||||
|
GREEK = ('g' | 'r'<<8 | 'e'<<16 | 'k'<<24),
|
||||||
|
GUJARATI = ('g' | 'j'<<8 | 'r'<<16 | '2'<<24),
|
||||||
|
GUNJALA_GONDI = ('g' | 'o'<<8 | 'n'<<16 | 'g'<<24),
|
||||||
|
GURMUKHI = ('g' | 'u'<<8 | 'r'<<16 | '2'<<24),
|
||||||
|
GURUNG_KHEMA = ('g' | 'u'<<8 | 'k'<<16 | 'h'<<24),
|
||||||
|
HANGUL = ('h' | 'a'<<8 | 'n'<<16 | 'g'<<24),
|
||||||
|
HANIFI_ROHINGYA = ('r' | 'o'<<8 | 'h'<<16 | 'g'<<24),
|
||||||
|
HANUNOO = ('h' | 'a'<<8 | 'n'<<16 | 'o'<<24),
|
||||||
|
HATRAN = ('h' | 'a'<<8 | 't'<<16 | 'r'<<24),
|
||||||
|
HEBREW = ('h' | 'e'<<8 | 'b'<<16 | 'r'<<24),
|
||||||
|
HIRAGANA = ('k' | 'a'<<8 | 'n'<<16 | 'a'<<24),
|
||||||
|
IMPERIAL_ARAMAIC = ('a' | 'r'<<8 | 'm'<<16 | 'i'<<24),
|
||||||
|
INSCRIPTIONAL_PAHLAVI = ('p' | 'h'<<8 | 'l'<<16 | 'i'<<24),
|
||||||
|
INSCRIPTIONAL_PARTHIAN = ('p' | 'r'<<8 | 't'<<16 | 'i'<<24),
|
||||||
|
JAVANESE = ('j' | 'a'<<8 | 'v'<<16 | 'a'<<24),
|
||||||
|
KAITHI = ('k' | 't'<<8 | 'h'<<16 | 'i'<<24),
|
||||||
|
KANNADA = ('k' | 'n'<<8 | 'd'<<16 | '2'<<24),
|
||||||
|
KATAKANA = ('k' | 'a'<<8 | 'n'<<16 | 'a'<<24),
|
||||||
|
KAWI = ('k' | 'a'<<8 | 'w'<<16 | 'i'<<24),
|
||||||
|
KAYAH_LI = ('k' | 'a'<<8 | 'l'<<16 | 'i'<<24),
|
||||||
|
KHAROSHTHI = ('k' | 'h'<<8 | 'a'<<16 | 'r'<<24),
|
||||||
|
KHITAN_SMALL_SCRIPT = ('k' | 'i'<<8 | 't'<<16 | 's'<<24),
|
||||||
|
KHMER = ('k' | 'h'<<8 | 'm'<<16 | 'r'<<24),
|
||||||
|
KHOJKI = ('k' | 'h'<<8 | 'o'<<16 | 'j'<<24),
|
||||||
|
KHUDAWADI = ('s' | 'i'<<8 | 'n'<<16 | 'd'<<24),
|
||||||
|
KIRAT_RAI = ('k' | 'r'<<8 | 'a'<<16 | 'i'<<24),
|
||||||
|
LAO = ('l' | 'a'<<8 | 'o'<<16 | ' '<<24),
|
||||||
|
LATIN = ('l' | 'a'<<8 | 't'<<16 | 'n'<<24),
|
||||||
|
LEPCHA = ('l' | 'e'<<8 | 'p'<<16 | 'c'<<24),
|
||||||
|
LIMBU = ('l' | 'i'<<8 | 'm'<<16 | 'b'<<24),
|
||||||
|
LINEAR_A = ('l' | 'i'<<8 | 'n'<<16 | 'a'<<24),
|
||||||
|
LINEAR_B = ('l' | 'i'<<8 | 'n'<<16 | 'b'<<24),
|
||||||
|
LISU = ('l' | 'i'<<8 | 's'<<16 | 'u'<<24),
|
||||||
|
LYCIAN = ('l' | 'y'<<8 | 'c'<<16 | 'i'<<24),
|
||||||
|
LYDIAN = ('l' | 'y'<<8 | 'd'<<16 | 'i'<<24),
|
||||||
|
MAHAJANI = ('m' | 'a'<<8 | 'h'<<16 | 'j'<<24),
|
||||||
|
MAKASAR = ('m' | 'a'<<8 | 'k'<<16 | 'a'<<24),
|
||||||
|
MALAYALAM = ('m' | 'l'<<8 | 'm'<<16 | '2'<<24),
|
||||||
|
MANDAIC = ('m' | 'a'<<8 | 'n'<<16 | 'd'<<24),
|
||||||
|
MANICHAEAN = ('m' | 'a'<<8 | 'n'<<16 | 'i'<<24),
|
||||||
|
MARCHEN = ('m' | 'a'<<8 | 'r'<<16 | 'c'<<24),
|
||||||
|
MASARAM_GONDI = ('g' | 'o'<<8 | 'n'<<16 | 'm'<<24),
|
||||||
|
MEDEFAIDRIN = ('m' | 'e'<<8 | 'd'<<16 | 'f'<<24),
|
||||||
|
MEETEI_MAYEK = ('m' | 't'<<8 | 'e'<<16 | 'i'<<24),
|
||||||
|
MENDE_KIKAKUI = ('m' | 'e'<<8 | 'n'<<16 | 'd'<<24),
|
||||||
|
MEROITIC_CURSIVE = ('m' | 'e'<<8 | 'r'<<16 | 'c'<<24),
|
||||||
|
MEROITIC_HIEROGLYPHS = ('m' | 'e'<<8 | 'r'<<16 | 'o'<<24),
|
||||||
|
MIAO = ('p' | 'l'<<8 | 'r'<<16 | 'd'<<24),
|
||||||
|
MODI = ('m' | 'o'<<8 | 'd'<<16 | 'i'<<24),
|
||||||
|
MONGOLIAN = ('m' | 'o'<<8 | 'n'<<16 | 'g'<<24),
|
||||||
|
MRO = ('m' | 'r'<<8 | 'o'<<16 | 'o'<<24),
|
||||||
|
MULTANI = ('m' | 'u'<<8 | 'l'<<16 | 't'<<24),
|
||||||
|
MYANMAR = ('m' | 'y'<<8 | 'm'<<16 | '2'<<24),
|
||||||
|
NABATAEAN = ('n' | 'b'<<8 | 'a'<<16 | 't'<<24),
|
||||||
|
NAG_MUNDARI = ('n' | 'a'<<8 | 'g'<<16 | 'm'<<24),
|
||||||
|
NANDINAGARI = ('n' | 'a'<<8 | 'n'<<16 | 'd'<<24),
|
||||||
|
NEWA = ('n' | 'e'<<8 | 'w'<<16 | 'a'<<24),
|
||||||
|
NEW_TAI_LUE = ('t' | 'a'<<8 | 'l'<<16 | 'u'<<24),
|
||||||
|
NKO = ('n' | 'k'<<8 | 'o'<<16 | ' '<<24),
|
||||||
|
NUSHU = ('n' | 's'<<8 | 'h'<<16 | 'u'<<24),
|
||||||
|
NYIAKENG_PUACHUE_HMONG = ('h' | 'm'<<8 | 'n'<<16 | 'p'<<24),
|
||||||
|
OGHAM = ('o' | 'g'<<8 | 'a'<<16 | 'm'<<24),
|
||||||
|
OL_CHIKI = ('o' | 'l'<<8 | 'c'<<16 | 'k'<<24),
|
||||||
|
OL_ONAL = ('o' | 'n'<<8 | 'a'<<16 | 'o'<<24),
|
||||||
|
OLD_ITALIC = ('i' | 't'<<8 | 'a'<<16 | 'l'<<24),
|
||||||
|
OLD_HUNGARIAN = ('h' | 'u'<<8 | 'n'<<16 | 'g'<<24),
|
||||||
|
OLD_NORTH_ARABIAN = ('n' | 'a'<<8 | 'r'<<16 | 'b'<<24),
|
||||||
|
OLD_PERMIC = ('p' | 'e'<<8 | 'r'<<16 | 'm'<<24),
|
||||||
|
OLD_PERSIAN_CUNEIFORM = ('x' | 'p'<<8 | 'e'<<16 | 'o'<<24),
|
||||||
|
OLD_SOGDIAN = ('s' | 'o'<<8 | 'g'<<16 | 'o'<<24),
|
||||||
|
OLD_SOUTH_ARABIAN = ('s' | 'a'<<8 | 'r'<<16 | 'b'<<24),
|
||||||
|
OLD_TURKIC = ('o' | 'r'<<8 | 'k'<<16 | 'h'<<24),
|
||||||
|
OLD_UYGHUR = ('o' | 'u'<<8 | 'g'<<16 | 'r'<<24),
|
||||||
|
ODIA = ('o' | 'r'<<8 | 'y'<<16 | '2'<<24),
|
||||||
|
OSAGE = ('o' | 's'<<8 | 'g'<<16 | 'e'<<24),
|
||||||
|
OSMANYA = ('o' | 's'<<8 | 'm'<<16 | 'a'<<24),
|
||||||
|
PAHAWH_HMONG = ('h' | 'm'<<8 | 'n'<<16 | 'g'<<24),
|
||||||
|
PALMYRENE = ('p' | 'a'<<8 | 'l'<<16 | 'm'<<24),
|
||||||
|
PAU_CIN_HAU = ('p' | 'a'<<8 | 'u'<<16 | 'c'<<24),
|
||||||
|
PHAGS_PA = ('p' | 'h'<<8 | 'a'<<16 | 'g'<<24),
|
||||||
|
PHOENICIAN = ('p' | 'h'<<8 | 'n'<<16 | 'x'<<24),
|
||||||
|
PSALTER_PAHLAVI = ('p' | 'h'<<8 | 'l'<<16 | 'p'<<24),
|
||||||
|
REJANG = ('r' | 'j'<<8 | 'n'<<16 | 'g'<<24),
|
||||||
|
RUNIC = ('r' | 'u'<<8 | 'n'<<16 | 'r'<<24),
|
||||||
|
SAMARITAN = ('s' | 'a'<<8 | 'm'<<16 | 'r'<<24),
|
||||||
|
SAURASHTRA = ('s' | 'a'<<8 | 'u'<<16 | 'r'<<24),
|
||||||
|
SHARADA = ('s' | 'h'<<8 | 'r'<<16 | 'd'<<24),
|
||||||
|
SHAVIAN = ('s' | 'h'<<8 | 'a'<<16 | 'w'<<24),
|
||||||
|
SIDDHAM = ('s' | 'i'<<8 | 'd'<<16 | 'd'<<24),
|
||||||
|
SIGN_WRITING = ('s' | 'g'<<8 | 'n'<<16 | 'w'<<24),
|
||||||
|
SOGDIAN = ('s' | 'o'<<8 | 'g'<<16 | 'd'<<24),
|
||||||
|
SINHALA = ('s' | 'i'<<8 | 'n'<<16 | 'h'<<24),
|
||||||
|
SORA_SOMPENG = ('s' | 'o'<<8 | 'r'<<16 | 'a'<<24),
|
||||||
|
SOYOMBO = ('s' | 'o'<<8 | 'y'<<16 | 'o'<<24),
|
||||||
|
SUMERO_AKKADIAN_CUNEIFORM = ('x' | 's'<<8 | 'u'<<16 | 'x'<<24),
|
||||||
|
SUNDANESE = ('s' | 'u'<<8 | 'n'<<16 | 'd'<<24),
|
||||||
|
SUNUWAR = ('s' | 'u'<<8 | 'n'<<16 | 'u'<<24),
|
||||||
|
SYLOTI_NAGRI = ('s' | 'y'<<8 | 'l'<<16 | 'o'<<24),
|
||||||
|
SYRIAC = ('s' | 'y'<<8 | 'r'<<16 | 'c'<<24),
|
||||||
|
TAGALOG = ('t' | 'g'<<8 | 'l'<<16 | 'g'<<24),
|
||||||
|
TAGBANWA = ('t' | 'a'<<8 | 'g'<<16 | 'b'<<24),
|
||||||
|
TAI_LE = ('t' | 'a'<<8 | 'l'<<16 | 'e'<<24),
|
||||||
|
TAI_THAM = ('l' | 'a'<<8 | 'n'<<16 | 'a'<<24),
|
||||||
|
TAI_VIET = ('t' | 'a'<<8 | 'v'<<16 | 't'<<24),
|
||||||
|
TAKRI = ('t' | 'a'<<8 | 'k'<<16 | 'r'<<24),
|
||||||
|
TAMIL = ('t' | 'm'<<8 | 'l'<<16 | '2'<<24),
|
||||||
|
TANGSA = ('t' | 'n'<<8 | 's'<<16 | 'a'<<24),
|
||||||
|
TANGUT = ('t' | 'a'<<8 | 'n'<<16 | 'g'<<24),
|
||||||
|
TELUGU = ('t' | 'e'<<8 | 'l'<<16 | '2'<<24),
|
||||||
|
THAANA = ('t' | 'h'<<8 | 'a'<<16 | 'a'<<24),
|
||||||
|
THAI = ('t' | 'h'<<8 | 'a'<<16 | 'i'<<24),
|
||||||
|
TIBETAN = ('t' | 'i'<<8 | 'b'<<16 | 't'<<24),
|
||||||
|
TIFINAGH = ('t' | 'f'<<8 | 'n'<<16 | 'g'<<24),
|
||||||
|
TIRHUTA = ('t' | 'i'<<8 | 'r'<<16 | 'h'<<24),
|
||||||
|
TODHRI = ('t' | 'o'<<8 | 'd'<<16 | 'r'<<24),
|
||||||
|
TOTO = ('t' | 'o'<<8 | 't'<<16 | 'o'<<24),
|
||||||
|
TULU_TIGALARI = ('t' | 'u'<<8 | 't'<<16 | 'g'<<24),
|
||||||
|
UGARITIC_CUNEIFORM = ('u' | 'g'<<8 | 'a'<<16 | 'r'<<24),
|
||||||
|
VAI = ('v' | 'a'<<8 | 'i'<<16 | ' '<<24),
|
||||||
|
VITHKUQI = ('v' | 'i'<<8 | 't'<<16 | 'h'<<24),
|
||||||
|
WANCHO = ('w' | 'c'<<8 | 'h'<<16 | 'o'<<24),
|
||||||
|
WARANG_CITI = ('w' | 'a'<<8 | 'r'<<16 | 'a'<<24),
|
||||||
|
YEZIDI = ('y' | 'e'<<8 | 'z'<<16 | 'i'<<24),
|
||||||
|
YI = ('y' | 'i'<<8 | ' '<<16 | ' '<<24),
|
||||||
|
ZANABAZAR_SQUARE = ('z' | 'a'<<8 | 'n'<<16 | 'b'<<24),
|
||||||
|
}
|
||||||
|
|
||||||
script :: enum u32 {
|
script :: enum u32 {
|
||||||
DONT_KNOW,
|
DONT_KNOW,
|
||||||
ADLAM,
|
ADLAM,
|
||||||
@@ -1241,6 +1415,7 @@ script :: enum u32 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
feature_tag :: enum u32 {
|
feature_tag :: enum u32 {
|
||||||
|
UNREGISTERED = 0,
|
||||||
isol = ('i' | 's'<<8 | 'o'<<16 | 'l'<<24), /* Isolated Forms */
|
isol = ('i' | 's'<<8 | 'o'<<16 | 'l'<<24), /* Isolated Forms */
|
||||||
fina = ('f' | 'i'<<8 | 'n'<<16 | 'a'<<24), /* Terminal Forms */
|
fina = ('f' | 'i'<<8 | 'n'<<16 | 'a'<<24), /* Terminal Forms */
|
||||||
fin2 = ('f' | 'i'<<8 | 'n'<<16 | '2'<<24), /* Terminal Forms #2 */
|
fin2 = ('f' | 'i'<<8 | 'n'<<16 | '2'<<24), /* Terminal Forms #2 */
|
||||||
@@ -1371,6 +1546,7 @@ feature_tag :: enum u32 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
feature_id :: enum u32 {
|
feature_id :: enum u32 {
|
||||||
|
UNREGISTERED = 0,
|
||||||
isol, /* Isolated Forms */
|
isol, /* Isolated Forms */
|
||||||
fina, /* Terminal Forms */
|
fina, /* Terminal Forms */
|
||||||
fin2, /* Terminal Forms #2 */
|
fin2, /* Terminal Forms #2 */
|
||||||
@@ -1531,6 +1707,7 @@ lookup_subtable_info :: struct {
|
|||||||
|
|
||||||
font :: struct {
|
font :: struct {
|
||||||
FileBase: [^]byte,
|
FileBase: [^]byte,
|
||||||
|
FileSize: un,
|
||||||
Head: ^head,
|
Head: ^head,
|
||||||
Cmap: ^u16,
|
Cmap: ^u16,
|
||||||
Gdef: ^gdef,
|
Gdef: ^gdef,
|
||||||
@@ -1563,16 +1740,30 @@ glyph_classes :: struct {
|
|||||||
MarkAttachmentClass: u16,
|
MarkAttachmentClass: u16,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glyph_config :: struct {
|
||||||
|
EnabledFeatures: feature_set,
|
||||||
|
DisabledFeatures: feature_set,
|
||||||
|
FeatureOverrideCount: u32,
|
||||||
|
FeatureOverrideCapacity: u32,
|
||||||
|
RequiredFeatureOverrideCapacity: u32,
|
||||||
|
FeatureOverrides: [^]feature_override `fmt:"v,FeatureOverrideCount"`,
|
||||||
|
}
|
||||||
|
|
||||||
glyph :: struct {
|
glyph :: struct {
|
||||||
Codepoint: rune,
|
Codepoint: rune,
|
||||||
Id: u16,
|
Id: u16, // Glyph index. This is what you want to use to query outline data.
|
||||||
Uid: u16,
|
Uid: u16,
|
||||||
Classes: glyph_classes,
|
Classes: glyph_classes,
|
||||||
|
|
||||||
Decomposition: u64,
|
Decomposition: u64,
|
||||||
|
|
||||||
|
Config: ^glyph_config,
|
||||||
|
|
||||||
Flags: glyph_flags,
|
Flags: glyph_flags,
|
||||||
|
|
||||||
|
// These fields are the glyph's final positioning data.
|
||||||
|
// For normal usage, you should not have to use these directly yourself.
|
||||||
|
// In case you are curious or have a specific need, see kbts_PositionGlyph() to see how these are used.
|
||||||
OffsetX: i32,
|
OffsetX: i32,
|
||||||
OffsetY: i32,
|
OffsetY: i32,
|
||||||
AdvanceX: i32,
|
AdvanceX: i32,
|
||||||
@@ -1644,9 +1835,10 @@ skip_flag :: enum u32 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
op_state_gsub :: struct {
|
op_state_gsub :: struct {
|
||||||
LookupIndex: un,
|
LookupFeatures: feature_set,
|
||||||
GlyphFilter: glyph_flags,
|
LookupIndex: un,
|
||||||
SkipFlags: skip_flags,
|
GlyphFilter: glyph_flags,
|
||||||
|
SkipFlags: skip_flags,
|
||||||
}
|
}
|
||||||
|
|
||||||
op_state_normalize_hangul :: struct {
|
op_state_normalize_hangul :: struct {
|
||||||
@@ -1661,6 +1853,7 @@ op_state_op_specific :: struct #raw_union {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lookup_indices :: struct {
|
lookup_indices :: struct {
|
||||||
|
FeatureTag: feature_tag,
|
||||||
FeatureId: feature_id,
|
FeatureId: feature_id,
|
||||||
SkipFlags: skip_flags,
|
SkipFlags: skip_flags,
|
||||||
GlyphFilter: glyph_flags,
|
GlyphFilter: glyph_flags,
|
||||||
@@ -1672,6 +1865,12 @@ feature_set :: struct {
|
|||||||
Flags: [(uint(len(feature_id)) + 63) / 64]u64,
|
Flags: [(uint(len(feature_id)) + 63) / 64]u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
feature_override :: struct {
|
||||||
|
Id: feature_id,
|
||||||
|
Tag: feature_tag,
|
||||||
|
EnabledOrAlternatePlusOne: u32,
|
||||||
|
}
|
||||||
|
|
||||||
op :: struct {
|
op :: struct {
|
||||||
Kind: op_kind,
|
Kind: op_kind,
|
||||||
Features: feature_set,
|
Features: feature_set,
|
||||||
@@ -1686,7 +1885,10 @@ op_state :: struct {
|
|||||||
ResumePoint: u32,
|
ResumePoint: u32,
|
||||||
|
|
||||||
FeatureCount: u32,
|
FeatureCount: u32,
|
||||||
FeatureLookupIndices: [MAX_SIMULTANEOUS_FEATURES]lookup_indices,
|
FeatureLookupIndices: [MAX_SIMULTANEOUS_FEATURES]lookup_indices `fmt:"v,FeatureCount"`,
|
||||||
|
|
||||||
|
UnregisteredFeatureCount: u32,
|
||||||
|
UnregisteredFeatureTags: [MAX_SIMULTANEOUS_FEATURES]feature_tag `fmt:"v,UnregisteredFeatureCount"`,
|
||||||
|
|
||||||
OpSpecific: op_state_op_specific,
|
OpSpecific: op_state_op_specific,
|
||||||
|
|
||||||
@@ -1718,6 +1920,8 @@ shape_config :: struct {
|
|||||||
Langsys: [shaping_table]^langsys,
|
Langsys: [shaping_table]^langsys,
|
||||||
OpLists: [4]op_list,
|
OpLists: [4]op_list,
|
||||||
|
|
||||||
|
Features: ^feature_set,
|
||||||
|
|
||||||
Shaper: shaper,
|
Shaper: shaper,
|
||||||
ShaperProperties: ^shaper_properties,
|
ShaperProperties: ^shaper_properties,
|
||||||
|
|
||||||
@@ -1747,6 +1951,8 @@ shape_state :: struct {
|
|||||||
MainDirection: direction,
|
MainDirection: direction,
|
||||||
RunDirection: direction,
|
RunDirection: direction,
|
||||||
|
|
||||||
|
UserFeatures: feature_set,
|
||||||
|
|
||||||
GlyphArray: glyph_array,
|
GlyphArray: glyph_array,
|
||||||
ClusterGlyphArray: glyph_array,
|
ClusterGlyphArray: glyph_array,
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
+2939
-1285
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user