|
|
|
@ -226,7 +226,9 @@ _next_syllable (hb_buffer_t *buffer, unsigned int start) |
|
|
|
|
* - General_Category: 5 bits. |
|
|
|
|
* - A bit each for: |
|
|
|
|
* * Is it Default_Ignorable(); we have a modified Default_Ignorable(). |
|
|
|
|
* * Whether it's one of the three Mongolian Free Variation Selectors. |
|
|
|
|
* * Whether it's one of the three Mongolian Free Variation Selectors, |
|
|
|
|
* CGJ, or other characters that are hidden but should not be ignored |
|
|
|
|
* like most other Default_Ignorable()s do during matching. |
|
|
|
|
* * One free bit right now. |
|
|
|
|
* |
|
|
|
|
* The high-byte has different meanings, switched by the Gen-Cat: |
|
|
|
@ -264,20 +266,21 @@ _hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_buffer_t *buffer) |
|
|
|
|
buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_DEFAULT_IGNORABLES; |
|
|
|
|
props |= UPROPS_MASK_IGNORABLE; |
|
|
|
|
if (u == 0x200Cu) props |= UPROPS_MASK_Cf_ZWNJ; |
|
|
|
|
if (u == 0x200Du) props |= UPROPS_MASK_Cf_ZWJ; |
|
|
|
|
else if (u == 0x200Du) props |= UPROPS_MASK_Cf_ZWJ; |
|
|
|
|
/* Mongolian Free Variation Selectors need to be remembered
|
|
|
|
|
* because although we need to hide them like default-ignorables, |
|
|
|
|
* they need to non-ignorable during shaping. This is similar to |
|
|
|
|
* what we do for joiners in Indic-like shapers, but since the |
|
|
|
|
* FVSes are GC=Mn, we have use a separate bit to remember them. |
|
|
|
|
* Fixes: |
|
|
|
|
* https://github.com/behdad/harfbuzz/issues/234
|
|
|
|
|
*/ |
|
|
|
|
if (unlikely (hb_in_range (u, 0x180Bu, 0x180Du))) props |= UPROPS_MASK_HIDDEN; |
|
|
|
|
* https://github.com/behdad/harfbuzz/issues/234 */
|
|
|
|
|
else if (unlikely (hb_in_range (u, 0x180Bu, 0x180Du))) props |= UPROPS_MASK_HIDDEN; |
|
|
|
|
/* TAG characters need similar treatment. Fixes:
|
|
|
|
|
* https://github.com/behdad/harfbuzz/issues/463
|
|
|
|
|
*/ |
|
|
|
|
if (unlikely (hb_in_range (u, 0xE0020u, 0xE007Fu))) props |= UPROPS_MASK_HIDDEN; |
|
|
|
|
* https://github.com/behdad/harfbuzz/issues/463 */
|
|
|
|
|
else if (unlikely (hb_in_range (u, 0xE0020u, 0xE007Fu))) props |= UPROPS_MASK_HIDDEN; |
|
|
|
|
/* COMBINING GRAPHEME JOINER should not be skipped; at least some times.
|
|
|
|
|
* https://github.com/behdad/harfbuzz/issues/554 */
|
|
|
|
|
else if (unlikely (u == 0x034Fu)) props |= UPROPS_MASK_HIDDEN; |
|
|
|
|
} |
|
|
|
|
else if (unlikely (HB_UNICODE_GENERAL_CATEGORY_IS_NON_ENCLOSING_MARK_OR_MODIFIER_SYMBOL (gen_cat))) |
|
|
|
|
{ |
|
|
|
|