[ot-face] Simplify table access
Yoohoo!
diff --git a/src/hb-aat-layout.cc b/src/hb-aat-layout.cc
index 9e0eb92..4c4e294 100644
--- a/src/hb-aat-layout.cc
+++ b/src/hb-aat-layout.cc
@@ -172,88 +172,19 @@
* mort/morx/kerx/trak
*/
-static inline const AAT::mort&
-_get_mort (hb_face_t *face, hb_blob_t **blob = nullptr)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face)))
- {
- if (blob)
- *blob = hb_blob_get_empty ();
- return Null(AAT::mort);
- }
- const AAT::mort& mort = *(hb_ot_face_data (face)->mort);
- if (blob)
- *blob = hb_ot_face_data (face)->mort.get_blob ();
- return mort;
-}
-static inline const AAT::morx&
-_get_morx (hb_face_t *face, hb_blob_t **blob = nullptr)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face)))
- {
- if (blob)
- *blob = hb_blob_get_empty ();
- return Null(AAT::morx);
- }
- const AAT::morx& morx = *(hb_ot_face_data (face)->morx);
- if (blob)
- *blob = hb_ot_face_data (face)->morx.get_blob ();
- return morx;
-}
-static inline const AAT::kerx&
-_get_kerx (hb_face_t *face, hb_blob_t **blob = nullptr)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face)))
- {
- if (blob)
- *blob = hb_blob_get_empty ();
- return Null(AAT::kerx);
- }
- const AAT::kerx& kerx = *(hb_ot_face_data (face)->kerx);
- if (blob)
- *blob = hb_ot_face_data (face)->kerx.get_blob ();
- return kerx;
-}
-static inline const AAT::ankr&
-_get_ankr (hb_face_t *face, hb_blob_t **blob = nullptr)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face)))
- {
- if (blob)
- *blob = hb_blob_get_empty ();
- return Null(AAT::ankr);
- }
- const AAT::ankr& ankr = *(hb_ot_face_data (face)->ankr);
- if (blob)
- *blob = hb_ot_face_data (face)->ankr.get_blob ();
- return ankr;
-}
-static inline const AAT::trak&
-_get_trak (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(AAT::trak);
- return *(hb_ot_face_data (face)->trak);
-}
-static inline const AAT::ltag&
-_get_ltag (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(AAT::ltag);
- return *(hb_ot_face_data (face)->ltag);
-}
-
void
hb_aat_layout_compile_map (const hb_aat_map_builder_t *mapper,
hb_aat_map_t *map)
{
- const AAT::morx& morx = _get_morx (mapper->face, nullptr);
+ const AAT::morx& morx = *mapper->face->table.morx;
if (morx.has_data ())
{
morx.compile_flags (mapper, map);
return;
}
- const AAT::mort& mort = _get_mort (mapper->face, nullptr);
+ const AAT::mort& mort = *mapper->face->table.mort;
if (mort.has_data ())
{
mort.compile_flags (mapper, map);
@@ -265,8 +196,8 @@
hb_bool_t
hb_aat_layout_has_substitution (hb_face_t *face)
{
- return _get_morx (face).has_data () ||
- _get_mort (face).has_data ();
+ return face->table.morx->has_data ();
+ face->table.mort->has_data ();
}
void
@@ -274,20 +205,20 @@
hb_font_t *font,
hb_buffer_t *buffer)
{
- hb_blob_t *blob;
-
- const AAT::morx& morx = _get_morx (font->face, &blob);
+ hb_blob_t *morx_blob = font->face->table.morx.get_blob ();
+ const AAT::morx& morx = *font->face->table.morx;
if (morx.has_data ())
{
- AAT::hb_aat_apply_context_t c (plan, font, buffer, blob);
+ AAT::hb_aat_apply_context_t c (plan, font, buffer, morx_blob);
morx.apply (&c);
return;
}
- const AAT::mort& mort = _get_mort (font->face, &blob);
+ hb_blob_t *mort_blob = font->face->table.morx.get_blob ();
+ const AAT::mort& mort = *font->face->table.mort;
if (mort.has_data ())
{
- AAT::hb_aat_apply_context_t c (plan, font, buffer, blob);
+ AAT::hb_aat_apply_context_t c (plan, font, buffer, mort_blob);
mort.apply (&c);
return;
}
@@ -297,7 +228,7 @@
hb_bool_t
hb_aat_layout_has_positioning (hb_face_t *face)
{
- return _get_kerx (face).has_data ();
+ return face->table.kerx->has_data ();
}
void
@@ -305,21 +236,22 @@
hb_font_t *font,
hb_buffer_t *buffer)
{
- hb_blob_t *blob;
- const AAT::kerx& kerx = _get_kerx (font->face, &blob);
+ hb_blob_t *blob = font->face->table.kerx.get_blob ();
+ const AAT::kerx& kerx = *font->face->table.kerx;
- hb_blob_t *ankr_blob;
- const AAT::ankr& ankr = _get_ankr (font->face, &ankr_blob);
+ hb_blob_t *ankr_blob = font->face->table.ankr.get_blob ();;
+ const AAT::ankr& ankr = *font->face->table.ankr;
AAT::hb_aat_apply_context_t c (plan, font, buffer, blob);
c.set_ankr_table (&ankr, ankr_blob->data + ankr_blob->length);
kerx.apply (&c);
}
+
hb_bool_t
hb_aat_layout_has_tracking (hb_face_t *face)
{
- return _get_trak (face).has_data ();
+ return face->table.trak->has_data ();
}
void
@@ -327,15 +259,16 @@
hb_font_t *font,
hb_buffer_t *buffer)
{
- const AAT::trak& trak = _get_trak (font->face);
+ const AAT::trak& trak = *font->face->table.trak;
AAT::hb_aat_apply_context_t c (plan, font, buffer);
trak.apply (&c);
}
+
hb_language_t
_hb_aat_language_get (hb_face_t *face,
unsigned int i)
{
- return _get_ltag (face).get_language (i);
+ return face->table.ltag->get_language (i);
}
diff --git a/src/hb-ot-color.cc b/src/hb-ot-color.cc
index 853f65d..cac289b 100644
--- a/src/hb-ot-color.cc
+++ b/src/hb-ot-color.cc
@@ -50,42 +50,6 @@
**/
-static inline const OT::COLR&
-_get_colr (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::COLR);
- return *(hb_ot_face_data (face)->COLR);
-}
-
-static inline const OT::CBDT_accelerator_t&
-_get_cbdt (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::CBDT_accelerator_t);
- return *(hb_ot_face_data (face)->CBDT);
-}
-
-static inline const OT::CPAL&
-_get_cpal (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::CPAL);
- return *(hb_ot_face_data (face)->CPAL);
-}
-
-static inline const OT::sbix_accelerator_t&
-_get_sbix (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::sbix_accelerator_t);
- return *(hb_ot_face_data (face)->sbix);
-}
-
-static inline const OT::SVG_accelerator_t&
-_get_svg (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::SVG_accelerator_t);
- return *(hb_ot_face_data (face)->SVG);
-}
-
-
/*
* CPAL
*/
@@ -102,7 +66,7 @@
hb_bool_t
hb_ot_color_has_palettes (hb_face_t *face)
{
- return _get_cpal (face).has_data ();
+ return face->table.CPAL->has_data ();
}
/**
@@ -117,7 +81,7 @@
unsigned int
hb_ot_color_palette_get_count (hb_face_t *face)
{
- return _get_cpal (face).get_palette_count ();
+ return face->table.CPAL->get_palette_count ();
}
/**
@@ -137,7 +101,7 @@
hb_ot_color_palette_get_name_id (hb_face_t *face,
unsigned int palette_index)
{
- return _get_cpal (face).get_palette_name_id (palette_index);
+ return face->table.CPAL->get_palette_name_id (palette_index);
}
/**
@@ -153,7 +117,7 @@
hb_ot_color_palette_color_get_name_id (hb_face_t *face,
unsigned int color_index)
{
- return _get_cpal (face).get_color_name_id (color_index);
+ return face->table.CPAL->get_color_name_id (color_index);
}
/**
@@ -169,7 +133,7 @@
hb_ot_color_palette_get_flags (hb_face_t *face,
unsigned int palette_index)
{
- return _get_cpal(face).get_palette_flags (palette_index);
+ return face->table.CPAL->get_palette_flags (palette_index);
}
/**
@@ -203,7 +167,7 @@
unsigned int *colors_count /* IN/OUT. May be NULL. */,
hb_color_t *colors /* OUT. May be NULL. */)
{
- return _get_cpal (face).get_palette_colors (palette_index, start_offset, colors_count, colors);
+ return face->table.CPAL->get_palette_colors (palette_index, start_offset, colors_count, colors);
}
@@ -222,7 +186,7 @@
hb_bool_t
hb_ot_color_has_layers (hb_face_t *face)
{
- return _get_colr (face).has_data ();
+ return face->table.COLR->has_data ();
}
/**
@@ -245,7 +209,7 @@
unsigned int *count, /* IN/OUT. May be NULL. */
hb_ot_color_layer_t *layers /* OUT. May be NULL. */)
{
- return _get_colr (face).get_glyph_layers (glyph, start_offset, count, layers);
+ return face->table.COLR->get_glyph_layers (glyph, start_offset, count, layers);
}
@@ -266,7 +230,7 @@
hb_bool_t
hb_ot_color_has_svg (hb_face_t *face)
{
- return _get_svg (face).has_data ();
+ return face->table.SVG->has_data ();
}
/**
@@ -283,7 +247,7 @@
hb_blob_t *
hb_ot_color_glyph_reference_svg (hb_face_t *face, hb_codepoint_t glyph)
{
- return _get_svg (face).reference_blob_for_glyph (glyph);
+ return face->table.SVG->reference_blob_for_glyph (glyph);
}
@@ -304,7 +268,7 @@
hb_bool_t
hb_ot_color_has_png (hb_face_t *face)
{
- return _get_cbdt (face).has_data () || _get_sbix (face).has_data ();
+ return face->table.CBDT->has_data () || face->table.sbix->has_data ();
}
/**
@@ -325,11 +289,11 @@
{
hb_blob_t *blob = hb_blob_get_empty ();
- if (_get_sbix (font->face).has_data ())
- blob = _get_sbix (font->face).reference_png (font, glyph, nullptr, nullptr, nullptr);
+ if (font->face->table.sbix->has_data ())
+ blob = font->face->table.sbix->reference_png (font, glyph, nullptr, nullptr, nullptr);
- if (!blob->length && _get_cbdt (font->face).has_data ())
- blob = _get_cbdt (font->face).reference_png (font, glyph);
+ if (!blob->length && font->face->table.CBDT->has_data ())
+ blob = font->face->table.CBDT->reference_png (font, glyph);
return blob;
}
diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc
index fcdc79e..b3c6353 100644
--- a/src/hb-ot-layout.cc
+++ b/src/hb-ot-layout.cc
@@ -53,20 +53,6 @@
**/
-static inline const OT::kern&
-_get_kern (hb_face_t *face, hb_blob_t **blob = nullptr)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face)))
- {
- if (blob)
- *blob = hb_blob_get_empty ();
- return Null(OT::kern);
- }
- const OT::kern& kern = *(hb_ot_face_data (face)->kern);
- if (blob)
- *blob = hb_ot_face_data (face)->kern.get_blob ();
- return kern;
-}
const OT::GDEF& _get_gdef (hb_face_t *face)
{
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::GDEF);
@@ -109,7 +95,7 @@
hb_bool_t
hb_ot_layout_has_kerning (hb_face_t *face)
{
- return _get_kern (face).has_data ();
+ return face->table.kern->has_data ();
}
void
@@ -117,8 +103,8 @@
hb_font_t *font,
hb_buffer_t *buffer)
{
- hb_blob_t *blob;
- const AAT::kern& kern = _get_kern (font->face, &blob);
+ hb_blob_t *blob = font->face->table.kern.get_blob ();
+ const AAT::kern& kern = *font->face->table.kern;
AAT::hb_aat_apply_context_t c (plan, font, buffer, blob);
diff --git a/src/hb-ot-math.cc b/src/hb-ot-math.cc
index 594f63c..e1d26d3 100644
--- a/src/hb-ot-math.cc
+++ b/src/hb-ot-math.cc
@@ -40,13 +40,6 @@
**/
-static inline const OT::MATH&
-_get_math (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::MATH);
- return *(hb_ot_face_data (face)->MATH);
-}
-
/*
* OT::MATH
*/
@@ -65,7 +58,7 @@
hb_bool_t
hb_ot_math_has_data (hb_face_t *face)
{
- return _get_math (face).has_data ();
+ return face->table.MATH->has_data ();
}
/**
@@ -87,8 +80,7 @@
hb_ot_math_get_constant (hb_font_t *font,
hb_ot_math_constant_t constant)
{
- const OT::MATH &math = _get_math (font->face);
- return math.get_constant(constant, font);
+ return font->face->table.MATH->get_constant(constant, font);
}
/**
@@ -104,8 +96,7 @@
hb_ot_math_get_glyph_italics_correction (hb_font_t *font,
hb_codepoint_t glyph)
{
- const OT::MATH &math = _get_math (font->face);
- return math.get_math_glyph_info().get_italics_correction (glyph, font);
+ return font->face->table.MATH->get_math_glyph_info().get_italics_correction (glyph, font);
}
/**
@@ -121,8 +112,7 @@
hb_ot_math_get_glyph_top_accent_attachment (hb_font_t *font,
hb_codepoint_t glyph)
{
- const OT::MATH &math = _get_math (font->face);
- return math.get_math_glyph_info().get_top_accent_attachment (glyph, font);
+ return font->face->table.MATH->get_math_glyph_info().get_top_accent_attachment (glyph, font);
}
/**
@@ -138,8 +128,7 @@
hb_ot_math_is_glyph_extended_shape (hb_face_t *face,
hb_codepoint_t glyph)
{
- const OT::MATH &math = _get_math (face);
- return math.get_math_glyph_info().is_extended_shape (glyph);
+ return face->table.MATH->get_math_glyph_info().is_extended_shape (glyph);
}
/**
@@ -165,8 +154,7 @@
hb_ot_math_kern_t kern,
hb_position_t correction_height)
{
- const OT::MATH &math = _get_math (font->face);
- return math.get_math_glyph_info().get_kerning (glyph, kern, correction_height, font);
+ return font->face->table.MATH->get_math_glyph_info().get_kerning (glyph, kern, correction_height, font);
}
/**
@@ -196,11 +184,10 @@
unsigned int *variants_count, /* IN/OUT */
hb_ot_math_glyph_variant_t *variants /* OUT */)
{
- const OT::MATH &math = _get_math (font->face);
- return math.get_math_variants().get_glyph_variants (glyph, direction, font,
- start_offset,
- variants_count,
- variants);
+ return font->face->table.MATH->get_math_variants().get_glyph_variants (glyph, direction, font,
+ start_offset,
+ variants_count,
+ variants);
}
/**
@@ -221,8 +208,7 @@
hb_ot_math_get_min_connector_overlap (hb_font_t *font,
hb_direction_t direction)
{
- const OT::MATH &math = _get_math (font->face);
- return math.get_math_variants().get_min_connector_overlap (direction, font);
+ return font->face->table.MATH->get_math_variants().get_min_connector_overlap (direction, font);
}
/**
@@ -254,10 +240,9 @@
hb_ot_math_glyph_part_t *parts, /* OUT */
hb_position_t *italics_correction /* OUT */)
{
- const OT::MATH &math = _get_math (font->face);
- return math.get_math_variants().get_glyph_parts (glyph, direction, font,
- start_offset,
- parts_count,
- parts,
- italics_correction);
+ return font->face->table.MATH->get_math_variants().get_glyph_parts (glyph, direction, font,
+ start_offset,
+ parts_count,
+ parts,
+ italics_correction);
}
diff --git a/src/hb-ot-name.cc b/src/hb-ot-name.cc
index f2d1f0c..4c88660 100644
--- a/src/hb-ot-name.cc
+++ b/src/hb-ot-name.cc
@@ -42,13 +42,6 @@
**/
-static inline const OT::name_accelerator_t&
-_get_name (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::name_accelerator_t);
- return *(hb_ot_face_data (face)->name);
-}
-
/**
* hb_ot_name_list_names:
* @face: font face.
@@ -65,7 +58,7 @@
hb_ot_name_list_names (hb_face_t *face,
unsigned int *num_entries /* OUT */)
{
- const OT::name_accelerator_t &name = _get_name (face);
+ const OT::name_accelerator_t &name = *face->table.name;
if (num_entries) *num_entries = name.names.len;
return name.names.arrayZ();
}
@@ -124,7 +117,7 @@
unsigned int *text_size /* IN/OUT */,
typename utf_t::codepoint_t *text /* OUT */)
{
- const OT::name_accelerator_t &name = _get_name (face);
+ const OT::name_accelerator_t &name = *face->table.name;
if (!language)
language = hb_language_from_string ("en", 2);
diff --git a/src/hb-ot-var.cc b/src/hb-ot-var.cc
index 4363f85..c97e9c4 100644
--- a/src/hb-ot-var.cc
+++ b/src/hb-ot-var.cc
@@ -47,18 +47,6 @@
* fvar/avar
*/
-static inline const OT::fvar&
-_get_fvar (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::fvar);
- return *(hb_ot_face_data (face)->fvar);
-}
-static inline const OT::avar&
-_get_avar (hb_face_t *face)
-{
- if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::avar);
- return *(hb_ot_face_data (face)->avar);
-}
/**
* hb_ot_var_has_data:
@@ -74,7 +62,7 @@
hb_bool_t
hb_ot_var_has_data (hb_face_t *face)
{
- return _get_fvar (face).has_data ();
+ return face->table.fvar->has_data ();
}
/**
@@ -85,8 +73,7 @@
unsigned int
hb_ot_var_get_axis_count (hb_face_t *face)
{
- const OT::fvar &fvar = _get_fvar (face);
- return fvar.get_axis_count ();
+ return face->table.fvar->get_axis_count ();
}
/**
@@ -100,8 +87,7 @@
unsigned int *axes_count /* IN/OUT */,
hb_ot_var_axis_t *axes_array /* OUT */)
{
- const OT::fvar &fvar = _get_fvar (face);
- return fvar.get_axis_infos (start_offset, axes_count, axes_array);
+ return face->table.fvar->get_axis_infos (start_offset, axes_count, axes_array);
}
/**
@@ -115,8 +101,7 @@
unsigned int *axis_index,
hb_ot_var_axis_t *axis_info)
{
- const OT::fvar &fvar = _get_fvar (face);
- return fvar.find_axis (axis_tag, axis_index, axis_info);
+ return face->table.fvar->find_axis (axis_tag, axis_index, axis_info);
}
@@ -135,7 +120,7 @@
for (unsigned int i = 0; i < coords_length; i++)
coords[i] = 0;
- const OT::fvar &fvar = _get_fvar (face);
+ const OT::fvar &fvar = *face->table.fvar;
for (unsigned int i = 0; i < variations_length; i++)
{
unsigned int axis_index;
@@ -144,8 +129,7 @@
coords[axis_index] = fvar.normalize_axis_value (axis_index, variations[i].value);
}
- const OT::avar &avar = _get_avar (face);
- avar.map_coords (coords, coords_length);
+ face->table.avar->map_coords (coords, coords_length);
}
/**
@@ -159,10 +143,9 @@
const float *design_coords, /* IN */
int *normalized_coords /* OUT */)
{
- const OT::fvar &fvar = _get_fvar (face);
+ const OT::fvar &fvar = *face->table.fvar;
for (unsigned int i = 0; i < coords_length; i++)
normalized_coords[i] = fvar.normalize_axis_value (i, design_coords[i]);
- const OT::avar &avar = _get_avar (face);
- avar.map_coords (normalized_coords, coords_length);
+ face->table.avar->map_coords (normalized_coords, coords_length);
}