[use] Reintroduce the HVM class for U+0DCA

This commit is contained in:
David Corbett 2022-06-25 11:33:44 -04:00
parent 1555b30081
commit 6059828769
5 changed files with 538 additions and 448 deletions

View File

@ -221,7 +221,10 @@ def is_CONS_SUB(U, UISC, UDI, UGC, AJT):
def is_CONS_WITH_STACKER(U, UISC, UDI, UGC, AJT): def is_CONS_WITH_STACKER(U, UISC, UDI, UGC, AJT):
return UISC == Consonant_With_Stacker return UISC == Consonant_With_Stacker
def is_HALANT(U, UISC, UDI, UGC, AJT): def is_HALANT(U, UISC, UDI, UGC, AJT):
return UISC == Virama return UISC == Virama and not is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UDI, UGC, AJT)
def is_HALANT_OR_VOWEL_MODIFIER(U, UISC, UDI, UGC, AJT):
# Split off of HALANT
return U == 0x0DCA
def is_HALANT_NUM(U, UISC, UDI, UGC, AJT): def is_HALANT_NUM(U, UISC, UDI, UGC, AJT):
return UISC == Number_Joiner return UISC == Number_Joiner
def is_HIEROGLYPH(U, UISC, UDI, UGC, AJT): def is_HIEROGLYPH(U, UISC, UDI, UGC, AJT):
@ -280,6 +283,7 @@ use_mapping = {
'SUB': is_CONS_SUB, 'SUB': is_CONS_SUB,
'CS': is_CONS_WITH_STACKER, 'CS': is_CONS_WITH_STACKER,
'H': is_HALANT, 'H': is_HALANT,
'HVM': is_HALANT_OR_VOWEL_MODIFIER,
'HN': is_HALANT_NUM, 'HN': is_HALANT_NUM,
'IS': is_INVISIBLE_STACKER, 'IS': is_INVISIBLE_STACKER,
'G': is_HIEROGLYPH, 'G': is_HIEROGLYPH,
@ -329,6 +333,7 @@ use_positions = {
'Blw': [Bottom], 'Blw': [Bottom],
}, },
'H': None, 'H': None,
'HVM': None,
'IS': None, 'IS': None,
'B': None, 'B': None,
'FM': { 'FM': {

File diff suppressed because it is too large Load Diff

View File

@ -82,6 +82,7 @@ export G = 49; # HIEROGLYPH
export J = 50; # HIEROGLYPH_JOINER export J = 50; # HIEROGLYPH_JOINER
export SB = 51; # HIEROGLYPH_SEGMENT_BEGIN export SB = 51; # HIEROGLYPH_SEGMENT_BEGIN
export SE = 52; # HIEROGLYPH_SEGMENT_END export SE = 52; # HIEROGLYPH_SEGMENT_END
export HVM = 53; # HALANT_OR_VOWEL_MODIFIER
export FAbv = 24; # CONS_FINAL_ABOVE export FAbv = 24; # CONS_FINAL_ABOVE
export FBlw = 25; # CONS_FINAL_BELOW export FBlw = 25; # CONS_FINAL_BELOW
@ -107,12 +108,12 @@ export FMBlw = 46; # CONS_FINAL_MOD UIPC = Bottom
export FMPst = 47; # CONS_FINAL_MOD UIPC = Not_Applicable export FMPst = 47; # CONS_FINAL_MOD UIPC = Not_Applicable
h = H | IS | Sk; h = H | HVM | IS | Sk;
consonant_modifiers = CMAbv* CMBlw* ((h B | SUB) CMAbv? CMBlw*)*; consonant_modifiers = CMAbv* CMBlw* ((h B | SUB) CMAbv? CMBlw*)*;
medial_consonants = MPre? MAbv? MBlw? MPst?; medial_consonants = MPre? MAbv? MBlw? MPst?;
dependent_vowels = VPre* VAbv* VBlw* VPst* | H; dependent_vowels = VPre* VAbv* VBlw* VPst* | H;
vowel_modifiers = VMPre* VMAbv* VMBlw* VMPst*; vowel_modifiers = HVM? VMPre* VMAbv* VMBlw* VMPst*;
final_consonants = FAbv* FBlw* FPst*; final_consonants = FAbv* FBlw* FPst*;
final_modifiers = FMAbv* FMBlw* | FMPst?; final_modifiers = FMAbv* FMBlw* | FMPst?;

View File

@ -53,6 +53,7 @@
#define GB USE(GB) /* BASE_OTHER */ #define GB USE(GB) /* BASE_OTHER */
#define H USE(H) /* HALANT */ #define H USE(H) /* HALANT */
#define HN USE(HN) /* HALANT_NUM */ #define HN USE(HN) /* HALANT_NUM */
#define HVM USE(HVM) /* HALANT_OR_VOWEL_MODIFIER */
#define IS USE(IS) /* INVISIBLE_STACKER */ #define IS USE(IS) /* INVISIBLE_STACKER */
#define J USE(J) /* HIEROGLYPH_JOINER */ #define J USE(J) /* HIEROGLYPH_JOINER */
#define N USE(N) /* BASE_NUM */ #define N USE(N) /* BASE_NUM */
@ -246,7 +247,7 @@ static const uint8_t use_table[] = {
/* 0D90 */ B, B, B, B, B, B, B, WJ, WJ, WJ, B, B, B, B, B, B, /* 0D90 */ B, B, B, B, B, B, B, WJ, WJ, WJ, B, B, B, B, B, B,
/* 0DA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, /* 0DA0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 0DB0 */ B, B, WJ, B, B, B, B, B, B, B, B, B, WJ, B, WJ, WJ, /* 0DB0 */ B, B, WJ, B, B, B, B, B, B, B, B, B, WJ, B, WJ, WJ,
/* 0DC0 */ B, B, B, B, B, B, B, WJ, WJ, WJ, H, WJ, WJ, WJ, WJ, VPst, /* 0DC0 */ B, B, B, B, B, B, B, WJ, WJ, WJ, HVM, WJ, WJ, WJ, WJ, VPst,
/* 0DD0 */ VPst, VPst, VAbv, VAbv, VBlw, WJ, VBlw, WJ, VPst, VPre, VPre, VPre, VPre, VPre, VPre, VPst, /* 0DD0 */ VPst, VPst, VAbv, VAbv, VBlw, WJ, VBlw, WJ, VPst, VPre, VPre, VPre, VPre, VPre, VPre, VPst,
/* 0DE0 */ WJ, WJ, WJ, WJ, WJ, WJ, B, B, B, B, B, B, B, B, B, B, /* 0DE0 */ WJ, WJ, WJ, WJ, WJ, WJ, B, B, B, B, B, B, B, B, B, B,
/* 0DF0 */ WJ, WJ, VPst, VPst, O, WJ, WJ, WJ, /* 0DF0 */ WJ, WJ, VPst, VPst, O, WJ, WJ, WJ,
@ -1531,6 +1532,7 @@ hb_use_get_category (hb_glyph_info_t info)
#undef GB #undef GB
#undef H #undef H
#undef HN #undef HN
#undef HVM
#undef IS #undef IS
#undef J #undef J
#undef N #undef N

View File

@ -351,7 +351,7 @@ record_pref_use (const hb_ot_shape_plan_t *plan HB_UNUSED,
static inline bool static inline bool
is_halant_use (const hb_glyph_info_t &info) is_halant_use (const hb_glyph_info_t &info)
{ {
return (info.use_category() == USE(H) || info.use_category() == USE(IS)) && return (info.use_category() == USE(H) || info.use_category() == USE(HVM) || info.use_category() == USE(IS)) &&
!_hb_glyph_info_ligated (&info); !_hb_glyph_info_ligated (&info);
} }