[font] Remove non-float scaling remnants
diff --git a/src/OT/Var/VARC/VARC.cc b/src/OT/Var/VARC/VARC.cc
index 8c93fcf..c6222b4 100644
--- a/src/OT/Var/VARC/VARC.cc
+++ b/src/OT/Var/VARC/VARC.cc
@@ -312,8 +312,8 @@
transform.scaleY = transform.scaleX;
total_transform.transform (transform.to_transform ());
- total_transform.scale (c.font->x_mult ? 1.f / c.font->x_multf : 0.f,
- c.font->y_mult ? 1.f / c.font->y_multf : 0.f);
+ total_transform.scale (c.font->x_multf ? 1.f / c.font->x_multf : 0.f,
+ c.font->y_multf ? 1.f / c.font->y_multf : 0.f);
bool same_coords = component_coords.length == coords.length &&
component_coords.arrayZ == coords.arrayZ;
diff --git a/src/hb-font.cc b/src/hb-font.cc
index fe94e2e..70cfcb1 100644
--- a/src/hb-font.cc
+++ b/src/hb-font.cc
@@ -2054,8 +2054,6 @@
0.f, /* slant_xy; */
1.f, /* x_multf */
1.f, /* y_multf */
- 1<<16, /* x_mult */
- 1<<16, /* y_mult */
0, /* x_ppem */
0, /* y_ppem */
@@ -2092,7 +2090,6 @@
font->x_scale = font->y_scale = face->get_upem ();
font->embolden_in_place = true;
font->x_multf = font->y_multf = 1.f;
- font->x_mult = font->y_mult = 1 << 16;
font->instance_index = HB_FONT_NO_VAR_NAMED_INSTANCE;
return font;
diff --git a/src/hb-font.hh b/src/hb-font.hh
index 51448c3..6903301 100644
--- a/src/hb-font.hh
+++ b/src/hb-font.hh
@@ -133,8 +133,6 @@
float x_multf;
float y_multf;
- int64_t x_mult;
- int64_t y_mult;
unsigned int x_ppem;
unsigned int y_ppem;
@@ -156,8 +154,8 @@
/* Convert from font-space to user-space */
- int64_t dir_mult (hb_direction_t direction)
- { return HB_DIRECTION_IS_VERTICAL(direction) ? y_mult : x_mult; }
+ float dir_multf (hb_direction_t direction)
+ { return HB_DIRECTION_IS_VERTICAL(direction) ? y_multf : x_multf; }
hb_position_t em_scale_x (int32_t v) { return em_multf (v, x_multf); }
hb_position_t em_scale_y (int32_t v) { return em_multf (v, y_multf); }
hb_position_t em_scalef_x (float v) { return em_multf (v, x_multf); }
@@ -166,8 +164,8 @@
float em_fscale_y (int16_t v) { return em_fmult (v, y_multf); }
float em_fscalef_x (float v) { return em_fmultf (v, x_multf); }
float em_fscalef_y (float v) { return em_fmultf (v, y_multf); }
- hb_position_t em_scale_dir (int16_t v, hb_direction_t direction)
- { return em_mult (v, dir_mult (direction)); }
+ hb_position_t em_scale_dir (int32_t v, hb_direction_t direction)
+ { return em_multf (v, dir_multf (direction)); }
/* Convert from parent-font user-space to our user-space */
hb_position_t parent_scale_x_distance (hb_position_t v)
@@ -1152,10 +1150,6 @@
x_multf = x_scale / upem;
y_multf = y_scale / upem;
- bool x_neg = x_scale < 0;
- x_mult = (x_neg ? -((int64_t) -x_scale << 16) : ((int64_t) x_scale << 16)) / upem;
- bool y_neg = y_scale < 0;
- y_mult = (y_neg ? -((int64_t) -y_scale << 16) : ((int64_t) y_scale << 16)) / upem;
is_synthetic = x_embolden || y_embolden || slant;
@@ -1169,8 +1163,6 @@
serial++;
}
- hb_position_t em_mult (int16_t v, int64_t mult)
- { return (hb_position_t) ((v * mult + 32768) >> 16); }
hb_position_t em_multf (float v, float mult)
{ return (hb_position_t) roundf (em_fmultf (v, mult)); }
float em_fmultf (float v, float mult)
diff --git a/src/hb-ot-math-table.hh b/src/hb-ot-math-table.hh
index c702e42..9a511fb 100644
--- a/src/hb-ot-math-table.hh
+++ b/src/hb-ot-math-table.hh
@@ -704,14 +704,14 @@
}
void extract (hb_ot_math_glyph_part_t &out,
- int64_t mult,
+ float multf,
hb_font_t *font) const
{
out.glyph = glyph;
- out.start_connector_length = font->em_mult (startConnectorLength, mult);
- out.end_connector_length = font->em_mult (endConnectorLength, mult);
- out.full_advance = font->em_mult (fullAdvance, mult);
+ out.start_connector_length = font->em_multf (startConnectorLength, multf);
+ out.end_connector_length = font->em_multf (endConnectorLength, multf);
+ out.full_advance = font->em_multf (fullAdvance, multf);
static_assert ((unsigned int) HB_OT_MATH_GLYPH_PART_FLAG_EXTENDER ==
(unsigned int) PartFlags::Extender, "");
@@ -776,7 +776,7 @@
{
if (parts_count)
{
- int64_t mult = font->dir_mult (direction);
+ float mult = font->dir_multf (direction);
for (auto _ : hb_zip (partRecords.as_array ().sub_array (start_offset, parts_count),
hb_array (parts, *parts_count)))
_.first.extract (_.second, mult, font);
@@ -845,10 +845,10 @@
{
if (variants_count)
{
- int64_t mult = font->dir_mult (direction);
+ float mult = font->dir_multf (direction);
for (auto _ : hb_zip (mathGlyphVariantRecord.as_array ().sub_array (start_offset, variants_count),
hb_array (variants, *variants_count)))
- _.second = {_.first.variantGlyph, font->em_mult (_.first.advanceMeasurement, mult)};
+ _.second = {_.first.variantGlyph, font->em_multf (_.first.advanceMeasurement, mult)};
}
return mathGlyphVariantRecord.len;
}