[style] Adjust font slant angle for synthetic slant value

Part of https://github.com/harfbuzz/harfbuzz/pull/3338
This commit is contained in:
Behdad Esfahbod 2021-12-19 21:40:25 -08:00
parent ff697debd8
commit 602bd39680
1 changed files with 11 additions and 4 deletions

View File

@ -48,13 +48,12 @@ _hb_angle_to_ratio (float a)
{
return tanf (a * float (M_PI / 180.));
}
#if 0
static inline float
_hb_ratio_to_angle (float r)
{
return atanf (r) * float (180. / M_PI);
}
#endif
/**
* hb_style_get_value:
@ -73,7 +72,8 @@ float
hb_style_get_value (hb_font_t *font, hb_style_tag_t style_tag)
{
if (unlikely (style_tag == HB_STYLE_TAG_SLANT_RATIO))
return _hb_angle_to_ratio (hb_style_get_value (font, HB_STYLE_TAG_SLANT_ANGLE));
return _hb_angle_to_ratio (hb_style_get_value (font, HB_STYLE_TAG_SLANT_ANGLE))
+ font->slant;
hb_face_t *face = font->face;
@ -109,7 +109,14 @@ hb_style_get_value (hb_font_t *font, hb_style_tag_t style_tag)
: 12.f;
}
case HB_STYLE_TAG_SLANT_ANGLE:
return face->table.post->table->italicAngle.to_float ();
{
float angle = face->table.post->table->italicAngle.to_float ();
if (font->slant)
angle = _hb_ratio_to_angle (font->slant + _hb_angle_to_ratio (angle));
return angle;
}
case HB_STYLE_TAG_WIDTH:
return face->table.OS2->has_data ()
? face->table.OS2->get_width ()