[otfallback] Never fallback-position a below-mark upwards

Test with WinXP times.ttf and U+05D9,U+05B5.
This commit is contained in:
Behdad Esfahbod 2013-10-18 15:57:36 +02:00
parent 8177da29ad
commit dba9580237
1 changed files with 6 additions and 0 deletions

View File

@ -261,6 +261,12 @@ position_mark (const hb_ot_shape_plan_t *plan,
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT:
case HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW:
pos.y_offset = base_extents.y_bearing + base_extents.height - mark_extents.y_bearing;
/* Never shift a "below" mark upwards. */
if ((y_gap > 0) == (pos.y_offset > 0))
{
base_extents.height -= pos.y_offset;
pos.y_offset = 0;
}
base_extents.height += mark_extents.height;
break;