[OT] Fallback-position ccc=0 Thai / Lao marks
Not perfect, but so is fallback positioning in 2012...
This commit is contained in:
parent
3992b5ec4c
commit
1d581ec384
|
@ -28,14 +28,53 @@
|
||||||
|
|
||||||
static unsigned int
|
static unsigned int
|
||||||
recategorize_combining_class (hb_codepoint_t u,
|
recategorize_combining_class (hb_codepoint_t u,
|
||||||
unsigned int modified_combining_class)
|
unsigned int klass)
|
||||||
{
|
{
|
||||||
if (modified_combining_class >= 200)
|
if (klass >= 200)
|
||||||
return modified_combining_class;
|
return klass;
|
||||||
|
|
||||||
/* This should be kept in sync with modified combining class mapping
|
/* Thai / Lao need some per-character work. */
|
||||||
* from hb-unicode.cc. */
|
if ((u & ~0xFF) == 0x0E00)
|
||||||
switch (modified_combining_class)
|
{
|
||||||
|
if (unlikely (klass == 0))
|
||||||
|
{
|
||||||
|
switch (u)
|
||||||
|
{
|
||||||
|
case 0x0E31:
|
||||||
|
case 0x0E34:
|
||||||
|
case 0x0E35:
|
||||||
|
case 0x0E36:
|
||||||
|
case 0x0E37:
|
||||||
|
case 0x0E47:
|
||||||
|
case 0x0E4C:
|
||||||
|
case 0x0E4D:
|
||||||
|
case 0x0E4E:
|
||||||
|
klass = HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x0EB1:
|
||||||
|
case 0x0EB4:
|
||||||
|
case 0x0EB5:
|
||||||
|
case 0x0EB6:
|
||||||
|
case 0x0EB7:
|
||||||
|
case 0x0EBB:
|
||||||
|
case 0x0ECC:
|
||||||
|
case 0x0ECD:
|
||||||
|
klass = HB_UNICODE_COMBINING_CLASS_ABOVE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x0EBC:
|
||||||
|
klass = HB_UNICODE_COMBINING_CLASS_BELOW;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* Thai virama is below-right */
|
||||||
|
if (u == 0x0E3A)
|
||||||
|
klass = HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (klass)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* Hebrew */
|
/* Hebrew */
|
||||||
|
@ -89,9 +128,6 @@ recategorize_combining_class (hb_codepoint_t u,
|
||||||
|
|
||||||
/* Thai */
|
/* Thai */
|
||||||
|
|
||||||
/* Note: to be useful we also need to position U+0E3A that has ccc=9 (virama).
|
|
||||||
* But viramas can be both above and below based on the codepoint / script. */
|
|
||||||
|
|
||||||
case HB_MODIFIED_COMBINING_CLASS_CCC103: /* sara u / sara uu */
|
case HB_MODIFIED_COMBINING_CLASS_CCC103: /* sara u / sara uu */
|
||||||
return HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT;
|
return HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT;
|
||||||
|
|
||||||
|
@ -121,7 +157,7 @@ recategorize_combining_class (hb_codepoint_t u,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return modified_combining_class;
|
return klass;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in New Issue