Move code around
This commit is contained in:
parent
cad3821f3d
commit
2db2a56682
@ -98,59 +98,6 @@ is_variation_selector (hb_codepoint_t unicode)
|
||||
(unicode >= 0xE0100 && unicode <= 0xE01EF)); /* VARIATION SELECTOR-17..256 */
|
||||
}
|
||||
|
||||
static inline unsigned int
|
||||
_hb_unicode_modified_combining_class (hb_unicode_funcs_t *ufuncs,
|
||||
hb_codepoint_t unicode)
|
||||
{
|
||||
int c = hb_unicode_combining_class (ufuncs, unicode);
|
||||
|
||||
if (unlikely (hb_in_range<int> (c, 27, 33)))
|
||||
{
|
||||
/* Modify the combining-class to suit Arabic better. See:
|
||||
* http://unicode.org/faq/normalization.html#8
|
||||
* http://unicode.org/faq/normalization.html#9
|
||||
*/
|
||||
c = c == 33 ? 27 : c + 1;
|
||||
}
|
||||
else if (unlikely (hb_in_range<int> (c, 10, 25)))
|
||||
{
|
||||
/* The equivalent fix for Hebrew is more complex.
|
||||
*
|
||||
* We permute the "fixed-position" classes 10-25 into the order
|
||||
* described in the SBL Hebrew manual:
|
||||
*
|
||||
* http://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf
|
||||
*
|
||||
* (as recommended by:
|
||||
* http://forum.fontlab.com/archive-old-microsoft-volt-group/vista-and-diacritic-ordering-t6751.0.html)
|
||||
*
|
||||
* More details here:
|
||||
* https://bugzilla.mozilla.org/show_bug.cgi?id=662055
|
||||
*/
|
||||
static const int permuted_hebrew_classes[25 - 10 + 1] = {
|
||||
/* 10 sheva */ 22,
|
||||
/* 11 hataf segol */ 15,
|
||||
/* 12 hataf patah */ 16,
|
||||
/* 13 hataf qamats */ 17,
|
||||
/* 14 hiriq */ 23,
|
||||
/* 15 tsere */ 18,
|
||||
/* 16 segol */ 19,
|
||||
/* 17 patah */ 20,
|
||||
/* 18 qamats */ 21,
|
||||
/* 19 holam */ 14,
|
||||
/* 20 qubuts */ 24,
|
||||
/* 21 dagesh */ 12,
|
||||
/* 22 meteg */ 25,
|
||||
/* 23 rafe */ 13,
|
||||
/* 24 shin dot */ 10,
|
||||
/* 25 sin dot */ 11,
|
||||
};
|
||||
c = permuted_hebrew_classes[c - 10];
|
||||
}
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
static inline void
|
||||
hb_glyph_info_set_unicode_props (hb_glyph_info_t *info, hb_unicode_funcs_t *unicode)
|
||||
{
|
||||
|
@ -102,6 +102,9 @@ extern HB_INTERNAL hb_unicode_funcs_t _hb_unicode_funcs_nil;
|
||||
#endif
|
||||
|
||||
|
||||
HB_INTERNAL unsigned int
|
||||
_hb_unicode_modified_combining_class (hb_unicode_funcs_t *ufuncs,
|
||||
hb_codepoint_t unicode);
|
||||
|
||||
|
||||
#endif /* HB_UNICODE_PRIVATE_HH */
|
||||
|
@ -271,3 +271,58 @@ hb_unicode_decompose (hb_unicode_funcs_t *ufuncs,
|
||||
return ufuncs->func.decompose (ufuncs, ab, a, b, ufuncs->user_data.decompose);
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned int
|
||||
_hb_unicode_modified_combining_class (hb_unicode_funcs_t *ufuncs,
|
||||
hb_codepoint_t unicode)
|
||||
{
|
||||
int c = hb_unicode_combining_class (ufuncs, unicode);
|
||||
|
||||
if (unlikely (hb_in_range<int> (c, 27, 33)))
|
||||
{
|
||||
/* Modify the combining-class to suit Arabic better. See:
|
||||
* http://unicode.org/faq/normalization.html#8
|
||||
* http://unicode.org/faq/normalization.html#9
|
||||
*/
|
||||
c = c == 33 ? 27 : c + 1;
|
||||
}
|
||||
else if (unlikely (hb_in_range<int> (c, 10, 25)))
|
||||
{
|
||||
/* The equivalent fix for Hebrew is more complex.
|
||||
*
|
||||
* We permute the "fixed-position" classes 10-25 into the order
|
||||
* described in the SBL Hebrew manual:
|
||||
*
|
||||
* http://www.sbl-site.org/Fonts/SBLHebrewUserManual1.5x.pdf
|
||||
*
|
||||
* (as recommended by:
|
||||
* http://forum.fontlab.com/archive-old-microsoft-volt-group/vista-and-diacritic-ordering-t6751.0.html)
|
||||
*
|
||||
* More details here:
|
||||
* https://bugzilla.mozilla.org/show_bug.cgi?id=662055
|
||||
*/
|
||||
static const int permuted_hebrew_classes[25 - 10 + 1] = {
|
||||
/* 10 sheva */ 22,
|
||||
/* 11 hataf segol */ 15,
|
||||
/* 12 hataf patah */ 16,
|
||||
/* 13 hataf qamats */ 17,
|
||||
/* 14 hiriq */ 23,
|
||||
/* 15 tsere */ 18,
|
||||
/* 16 segol */ 19,
|
||||
/* 17 patah */ 20,
|
||||
/* 18 qamats */ 21,
|
||||
/* 19 holam */ 14,
|
||||
/* 20 qubuts */ 24,
|
||||
/* 21 dagesh */ 12,
|
||||
/* 22 meteg */ 25,
|
||||
/* 23 rafe */ 13,
|
||||
/* 24 shin dot */ 10,
|
||||
/* 25 sin dot */ 11,
|
||||
};
|
||||
c = permuted_hebrew_classes[c - 10];
|
||||
}
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user