[ot-face] Remove tables_t. The face_data_t is what tables_t was
This commit is contained in:
parent
3a0b3a29cc
commit
a268068010
|
@ -49,9 +49,9 @@ _get_morx (hb_face_t *face, hb_blob_t **blob = nullptr)
|
||||||
*blob = hb_blob_get_empty ();
|
*blob = hb_blob_get_empty ();
|
||||||
return Null(AAT::morx);
|
return Null(AAT::morx);
|
||||||
}
|
}
|
||||||
const AAT::morx& morx = *(hb_ot_face_data (face)->table.morx.get ());
|
const AAT::morx& morx = *(hb_ot_face_data (face)->morx.get ());
|
||||||
if (blob)
|
if (blob)
|
||||||
*blob = hb_ot_face_data (face)->table.morx.get_blob ();
|
*blob = hb_ot_face_data (face)->morx.get_blob ();
|
||||||
return morx;
|
return morx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -533,7 +533,7 @@ hb_face_collect_unicodes (hb_face_t *face,
|
||||||
hb_set_t *out)
|
hb_set_t *out)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return;
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return;
|
||||||
hb_ot_face_data (face)->table.cmap->collect_unicodes (out);
|
hb_ot_face_data (face)->cmap->collect_unicodes (out);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -550,7 +550,7 @@ hb_face_collect_variation_selectors (hb_face_t *face,
|
||||||
hb_set_t *out)
|
hb_set_t *out)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return;
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return;
|
||||||
hb_ot_face_data (face)->table.cmap->collect_variation_selectors (out);
|
hb_ot_face_data (face)->cmap->collect_variation_selectors (out);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -568,7 +568,7 @@ hb_face_collect_variation_unicodes (hb_face_t *face,
|
||||||
hb_set_t *out)
|
hb_set_t *out)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return;
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return;
|
||||||
hb_ot_face_data (face)->table.cmap->collect_variation_unicodes (variation_selector, out);
|
hb_ot_face_data (face)->cmap->collect_variation_unicodes (variation_selector, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
#include "hb-ot-layout-gpos-table.hh"
|
#include "hb-ot-layout-gpos-table.hh"
|
||||||
|
|
||||||
|
|
||||||
void hb_ot_face_data_t::tables_t::init0 (hb_face_t *face)
|
void hb_ot_face_data_t::init0 (hb_face_t *face)
|
||||||
{
|
{
|
||||||
this->face = face;
|
this->face = face;
|
||||||
#define HB_OT_LAYOUT_TABLE(Namespace, Type) Type.init0 ();
|
#define HB_OT_LAYOUT_TABLE(Namespace, Type) Type.init0 ();
|
||||||
|
@ -46,7 +46,7 @@ void hb_ot_face_data_t::tables_t::init0 (hb_face_t *face)
|
||||||
#undef HB_OT_LAYOUT_ACCELERATOR
|
#undef HB_OT_LAYOUT_ACCELERATOR
|
||||||
#undef HB_OT_LAYOUT_TABLE
|
#undef HB_OT_LAYOUT_TABLE
|
||||||
}
|
}
|
||||||
void hb_ot_face_data_t::tables_t::fini (void)
|
void hb_ot_face_data_t::fini (void)
|
||||||
{
|
{
|
||||||
#define HB_OT_LAYOUT_TABLE(Namespace, Type) Type.fini ();
|
#define HB_OT_LAYOUT_TABLE(Namespace, Type) Type.fini ();
|
||||||
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) HB_OT_LAYOUT_TABLE (Namespace, Type)
|
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) HB_OT_LAYOUT_TABLE (Namespace, Type)
|
||||||
|
@ -62,7 +62,7 @@ _hb_ot_face_data_create (hb_face_t *face)
|
||||||
if (unlikely (!data))
|
if (unlikely (!data))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
data->table.init0 (face);
|
data->init0 (face);
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ _hb_ot_face_data_create (hb_face_t *face)
|
||||||
void
|
void
|
||||||
_hb_ot_face_data_destroy (hb_ot_face_data_t *data)
|
_hb_ot_face_data_destroy (hb_ot_face_data_t *data)
|
||||||
{
|
{
|
||||||
data->table.fini ();
|
data->fini ();
|
||||||
free (data);
|
free (data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -80,33 +80,29 @@ HB_OT_LAYOUT_TABLES
|
||||||
|
|
||||||
struct hb_ot_face_data_t
|
struct hb_ot_face_data_t
|
||||||
{
|
{
|
||||||
/* All the president's tables. */
|
HB_INTERNAL void init0 (hb_face_t *face);
|
||||||
struct tables_t
|
HB_INTERNAL void fini (void);
|
||||||
{
|
|
||||||
HB_INTERNAL void init0 (hb_face_t *face);
|
|
||||||
HB_INTERNAL void fini (void);
|
|
||||||
|
|
||||||
#define HB_OT_LAYOUT_TABLE_ORDER(Namespace, Type) \
|
#define HB_OT_LAYOUT_TABLE_ORDER(Namespace, Type) \
|
||||||
HB_PASTE (ORDER_, HB_PASTE (Namespace, HB_PASTE (_, Type)))
|
HB_PASTE (ORDER_, HB_PASTE (Namespace, HB_PASTE (_, Type)))
|
||||||
enum order_t
|
enum order_t
|
||||||
{
|
{
|
||||||
ORDER_ZERO,
|
ORDER_ZERO,
|
||||||
#define HB_OT_LAYOUT_TABLE(Namespace, Type) HB_OT_LAYOUT_TABLE_ORDER (Namespace, Type),
|
#define HB_OT_LAYOUT_TABLE(Namespace, Type) HB_OT_LAYOUT_TABLE_ORDER (Namespace, Type),
|
||||||
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) HB_OT_LAYOUT_TABLE (Namespace, Type)
|
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) HB_OT_LAYOUT_TABLE (Namespace, Type)
|
||||||
HB_OT_LAYOUT_TABLES
|
|
||||||
#undef HB_OT_LAYOUT_ACCELERATOR
|
|
||||||
#undef HB_OT_LAYOUT_TABLE
|
|
||||||
};
|
|
||||||
|
|
||||||
hb_face_t *face; /* MUST be JUST before the lazy loaders. */
|
|
||||||
#define HB_OT_LAYOUT_TABLE(Namespace, Type) \
|
|
||||||
hb_table_lazy_loader_t<Namespace::Type, HB_OT_LAYOUT_TABLE_ORDER (Namespace, Type)> Type;
|
|
||||||
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) \
|
|
||||||
hb_face_lazy_loader_t<Namespace::Type##_accelerator_t, HB_OT_LAYOUT_TABLE_ORDER (Namespace, Type)> Type;
|
|
||||||
HB_OT_LAYOUT_TABLES
|
HB_OT_LAYOUT_TABLES
|
||||||
#undef HB_OT_LAYOUT_ACCELERATOR
|
#undef HB_OT_LAYOUT_ACCELERATOR
|
||||||
#undef HB_OT_LAYOUT_TABLE
|
#undef HB_OT_LAYOUT_TABLE
|
||||||
} table;
|
};
|
||||||
|
|
||||||
|
hb_face_t *face; /* MUST be JUST before the lazy loaders. */
|
||||||
|
#define HB_OT_LAYOUT_TABLE(Namespace, Type) \
|
||||||
|
hb_table_lazy_loader_t<Namespace::Type, HB_OT_LAYOUT_TABLE_ORDER (Namespace, Type)> Type;
|
||||||
|
#define HB_OT_LAYOUT_ACCELERATOR(Namespace, Type) \
|
||||||
|
hb_face_lazy_loader_t<Namespace::Type##_accelerator_t, HB_OT_LAYOUT_TABLE_ORDER (Namespace, Type)> Type;
|
||||||
|
HB_OT_LAYOUT_TABLES
|
||||||
|
#undef HB_OT_LAYOUT_ACCELERATOR
|
||||||
|
#undef HB_OT_LAYOUT_TABLE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,9 +40,6 @@
|
||||||
#include "hb-ot-color-cbdt-table.hh"
|
#include "hb-ot-color-cbdt-table.hh"
|
||||||
|
|
||||||
|
|
||||||
typedef hb_ot_face_data_t::tables_t hb_ot_font_t;
|
|
||||||
|
|
||||||
|
|
||||||
static hb_bool_t
|
static hb_bool_t
|
||||||
hb_ot_get_nominal_glyph (hb_font_t *font HB_UNUSED,
|
hb_ot_get_nominal_glyph (hb_font_t *font HB_UNUSED,
|
||||||
void *font_data,
|
void *font_data,
|
||||||
|
@ -51,7 +48,7 @@ hb_ot_get_nominal_glyph (hb_font_t *font HB_UNUSED,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
|
|
||||||
{
|
{
|
||||||
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
|
const hb_ot_face_data_t *ot_font = (const hb_ot_face_data_t *) font_data;
|
||||||
return ot_font->cmap.get_relaxed()->get_nominal_glyph (unicode, glyph);
|
return ot_font->cmap.get_relaxed()->get_nominal_glyph (unicode, glyph);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,7 +60,7 @@ hb_ot_get_variation_glyph (hb_font_t *font HB_UNUSED,
|
||||||
hb_codepoint_t *glyph,
|
hb_codepoint_t *glyph,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
|
const hb_ot_face_data_t *ot_font = (const hb_ot_face_data_t *) font_data;
|
||||||
return ot_font->cmap.get_relaxed ()->get_variation_glyph (unicode, variation_selector, glyph);
|
return ot_font->cmap.get_relaxed ()->get_variation_glyph (unicode, variation_selector, glyph);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +70,7 @@ hb_ot_get_glyph_h_advance (hb_font_t *font,
|
||||||
hb_codepoint_t glyph,
|
hb_codepoint_t glyph,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
|
const hb_ot_face_data_t *ot_font = (const hb_ot_face_data_t *) font_data;
|
||||||
return font->em_scale_x (ot_font->hmtx.get_relaxed ()->get_advance (glyph, font));
|
return font->em_scale_x (ot_font->hmtx.get_relaxed ()->get_advance (glyph, font));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +80,7 @@ hb_ot_get_glyph_v_advance (hb_font_t *font,
|
||||||
hb_codepoint_t glyph,
|
hb_codepoint_t glyph,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
|
const hb_ot_face_data_t *ot_font = (const hb_ot_face_data_t *) font_data;
|
||||||
return font->em_scale_y (-(int) ot_font->vmtx.get_relaxed ()->get_advance (glyph, font));
|
return font->em_scale_y (-(int) ot_font->vmtx.get_relaxed ()->get_advance (glyph, font));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +91,7 @@ hb_ot_get_glyph_h_kerning (hb_font_t *font,
|
||||||
hb_codepoint_t right_glyph,
|
hb_codepoint_t right_glyph,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
|
const hb_ot_face_data_t *ot_font = (const hb_ot_face_data_t *) font_data;
|
||||||
return font->em_scale_x (ot_font->kern->get_h_kerning (left_glyph, right_glyph));
|
return font->em_scale_x (ot_font->kern->get_h_kerning (left_glyph, right_glyph));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +102,7 @@ hb_ot_get_glyph_extents (hb_font_t *font,
|
||||||
hb_glyph_extents_t *extents,
|
hb_glyph_extents_t *extents,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
|
const hb_ot_face_data_t *ot_font = (const hb_ot_face_data_t *) font_data;
|
||||||
bool ret = ot_font->glyf->get_extents (glyph, extents);
|
bool ret = ot_font->glyf->get_extents (glyph, extents);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
ret = ot_font->CBDT->get_extents (glyph, extents);
|
ret = ot_font->CBDT->get_extents (glyph, extents);
|
||||||
|
@ -124,7 +121,7 @@ hb_ot_get_glyph_name (hb_font_t *font HB_UNUSED,
|
||||||
char *name, unsigned int size,
|
char *name, unsigned int size,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
|
const hb_ot_face_data_t *ot_font = (const hb_ot_face_data_t *) font_data;
|
||||||
return ot_font->post->get_glyph_name (glyph, name, size);
|
return ot_font->post->get_glyph_name (glyph, name, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,7 +132,7 @@ hb_ot_get_glyph_from_name (hb_font_t *font HB_UNUSED,
|
||||||
hb_codepoint_t *glyph,
|
hb_codepoint_t *glyph,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
|
const hb_ot_face_data_t *ot_font = (const hb_ot_face_data_t *) font_data;
|
||||||
return ot_font->post->get_glyph_from_name (name, len, glyph);
|
return ot_font->post->get_glyph_from_name (name, len, glyph);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +142,7 @@ hb_ot_get_font_h_extents (hb_font_t *font,
|
||||||
hb_font_extents_t *metrics,
|
hb_font_extents_t *metrics,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
|
const hb_ot_face_data_t *ot_font = (const hb_ot_face_data_t *) font_data;
|
||||||
metrics->ascender = font->em_scale_y (ot_font->hmtx.get_relaxed ()->ascender);
|
metrics->ascender = font->em_scale_y (ot_font->hmtx.get_relaxed ()->ascender);
|
||||||
metrics->descender = font->em_scale_y (ot_font->hmtx.get_relaxed ()->descender);
|
metrics->descender = font->em_scale_y (ot_font->hmtx.get_relaxed ()->descender);
|
||||||
metrics->line_gap = font->em_scale_y (ot_font->hmtx.get_relaxed ()->line_gap);
|
metrics->line_gap = font->em_scale_y (ot_font->hmtx.get_relaxed ()->line_gap);
|
||||||
|
@ -159,7 +156,7 @@ hb_ot_get_font_v_extents (hb_font_t *font,
|
||||||
hb_font_extents_t *metrics,
|
hb_font_extents_t *metrics,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
|
const hb_ot_face_data_t *ot_font = (const hb_ot_face_data_t *) font_data;
|
||||||
metrics->ascender = font->em_scale_x (ot_font->vmtx.get_relaxed ()->ascender);
|
metrics->ascender = font->em_scale_x (ot_font->vmtx.get_relaxed ()->ascender);
|
||||||
metrics->descender = font->em_scale_x (ot_font->vmtx.get_relaxed ()->descender);
|
metrics->descender = font->em_scale_x (ot_font->vmtx.get_relaxed ()->descender);
|
||||||
metrics->line_gap = font->em_scale_x (ot_font->vmtx.get_relaxed ()->line_gap);
|
metrics->line_gap = font->em_scale_x (ot_font->vmtx.get_relaxed ()->line_gap);
|
||||||
|
@ -226,7 +223,7 @@ void
|
||||||
hb_ot_font_set_funcs (hb_font_t *font)
|
hb_ot_font_set_funcs (hb_font_t *font)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (font->face))) return;
|
if (unlikely (!hb_ot_shaper_face_data_ensure (font->face))) return;
|
||||||
hb_ot_font_t *ot_font = &hb_ot_face_data (font->face)->table;
|
hb_ot_face_data_t *ot_font = hb_ot_face_data (font->face);
|
||||||
|
|
||||||
/* Load them lazies. We access them with get_relaxed() for performance. */
|
/* Load them lazies. We access them with get_relaxed() for performance. */
|
||||||
ot_font->cmap.get ();
|
ot_font->cmap.get ();
|
||||||
|
|
|
@ -59,35 +59,35 @@
|
||||||
inline const OT::GDEF& _get_gdef (hb_face_t *face)
|
inline const OT::GDEF& _get_gdef (hb_face_t *face)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::GDEF);
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::GDEF);
|
||||||
return *hb_ot_face_data (face)->table.GDEF->table;
|
return *hb_ot_face_data (face)->GDEF->table;
|
||||||
}
|
}
|
||||||
static hb_blob_t * _get_gsub_blob (hb_face_t *face)
|
static hb_blob_t * _get_gsub_blob (hb_face_t *face)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return hb_blob_get_empty ();
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return hb_blob_get_empty ();
|
||||||
return hb_ot_face_data (face)->table.GSUB->blob;
|
return hb_ot_face_data (face)->GSUB->blob;
|
||||||
}
|
}
|
||||||
static inline const OT::GSUB& _get_gsub (hb_face_t *face)
|
static inline const OT::GSUB& _get_gsub (hb_face_t *face)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::GSUB);
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::GSUB);
|
||||||
return *hb_ot_face_data (face)->table.GSUB->table;
|
return *hb_ot_face_data (face)->GSUB->table;
|
||||||
}
|
}
|
||||||
inline const OT::GSUB& _get_gsub_relaxed (hb_face_t *face)
|
inline const OT::GSUB& _get_gsub_relaxed (hb_face_t *face)
|
||||||
{
|
{
|
||||||
return *hb_ot_face_data (face)->table.GSUB.get_relaxed ()->table;
|
return *hb_ot_face_data (face)->GSUB.get_relaxed ()->table;
|
||||||
}
|
}
|
||||||
static hb_blob_t * _get_gpos_blob (hb_face_t *face)
|
static hb_blob_t * _get_gpos_blob (hb_face_t *face)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return hb_blob_get_empty ();
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return hb_blob_get_empty ();
|
||||||
return hb_ot_face_data (face)->table.GPOS->blob;
|
return hb_ot_face_data (face)->GPOS->blob;
|
||||||
}
|
}
|
||||||
static inline const OT::GPOS& _get_gpos (hb_face_t *face)
|
static inline const OT::GPOS& _get_gpos (hb_face_t *face)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::GPOS);
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::GPOS);
|
||||||
return *hb_ot_face_data (face)->table.GPOS->table;
|
return *hb_ot_face_data (face)->GPOS->table;
|
||||||
}
|
}
|
||||||
inline const OT::GPOS& _get_gpos_relaxed (hb_face_t *face)
|
inline const OT::GPOS& _get_gpos_relaxed (hb_face_t *face)
|
||||||
{
|
{
|
||||||
return *hb_ot_face_data (face)->table.GPOS.get_relaxed ()->table;
|
return *hb_ot_face_data (face)->GPOS.get_relaxed ()->table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -614,11 +614,11 @@ hb_ot_layout_table_get_lookup_count (hb_face_t *face,
|
||||||
{
|
{
|
||||||
case HB_OT_TAG_GSUB:
|
case HB_OT_TAG_GSUB:
|
||||||
{
|
{
|
||||||
return hb_ot_face_data (face)->table.GSUB->lookup_count;
|
return hb_ot_face_data (face)->GSUB->lookup_count;
|
||||||
}
|
}
|
||||||
case HB_OT_TAG_GPOS:
|
case HB_OT_TAG_GPOS:
|
||||||
{
|
{
|
||||||
return hb_ot_face_data (face)->table.GPOS->lookup_count;
|
return hb_ot_face_data (face)->GPOS->lookup_count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -832,13 +832,13 @@ hb_ot_layout_lookup_collect_glyphs (hb_face_t *face,
|
||||||
{
|
{
|
||||||
case HB_OT_TAG_GSUB:
|
case HB_OT_TAG_GSUB:
|
||||||
{
|
{
|
||||||
const OT::SubstLookup& l = hb_ot_face_data (face)->table.GSUB->table->get_lookup (lookup_index);
|
const OT::SubstLookup& l = hb_ot_face_data (face)->GSUB->table->get_lookup (lookup_index);
|
||||||
l.collect_glyphs (&c);
|
l.collect_glyphs (&c);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case HB_OT_TAG_GPOS:
|
case HB_OT_TAG_GPOS:
|
||||||
{
|
{
|
||||||
const OT::PosLookup& l = hb_ot_face_data (face)->table.GPOS->table->get_lookup (lookup_index);
|
const OT::PosLookup& l = hb_ot_face_data (face)->GPOS->table->get_lookup (lookup_index);
|
||||||
l.collect_glyphs (&c);
|
l.collect_glyphs (&c);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -911,12 +911,12 @@ hb_ot_layout_lookup_would_substitute_fast (hb_face_t *face,
|
||||||
unsigned int glyphs_length,
|
unsigned int glyphs_length,
|
||||||
hb_bool_t zero_context)
|
hb_bool_t zero_context)
|
||||||
{
|
{
|
||||||
if (unlikely (lookup_index >= hb_ot_face_data (face)->table.GSUB->lookup_count)) return false;
|
if (unlikely (lookup_index >= hb_ot_face_data (face)->GSUB->lookup_count)) return false;
|
||||||
OT::hb_would_apply_context_t c (face, glyphs, glyphs_length, (bool) zero_context);
|
OT::hb_would_apply_context_t c (face, glyphs, glyphs_length, (bool) zero_context);
|
||||||
|
|
||||||
const OT::SubstLookup& l = hb_ot_face_data (face)->table.GSUB->table->get_lookup (lookup_index);
|
const OT::SubstLookup& l = hb_ot_face_data (face)->GSUB->table->get_lookup (lookup_index);
|
||||||
|
|
||||||
return l.would_apply (&c, &hb_ot_face_data (face)->table.GSUB->accels[lookup_index]);
|
return l.would_apply (&c, &hb_ot_face_data (face)->GSUB->accels[lookup_index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1073,8 +1073,8 @@ struct GSUBProxy
|
||||||
typedef OT::SubstLookup Lookup;
|
typedef OT::SubstLookup Lookup;
|
||||||
|
|
||||||
GSUBProxy (hb_face_t *face) :
|
GSUBProxy (hb_face_t *face) :
|
||||||
table (*hb_ot_face_data (face)->table.GSUB->table),
|
table (*hb_ot_face_data (face)->GSUB->table),
|
||||||
accels (hb_ot_face_data (face)->table.GSUB->accels) {}
|
accels (hb_ot_face_data (face)->GSUB->accels) {}
|
||||||
|
|
||||||
const OT::GSUB &table;
|
const OT::GSUB &table;
|
||||||
const hb_ot_layout_lookup_accelerator_t *accels;
|
const hb_ot_layout_lookup_accelerator_t *accels;
|
||||||
|
@ -1087,8 +1087,8 @@ struct GPOSProxy
|
||||||
typedef OT::PosLookup Lookup;
|
typedef OT::PosLookup Lookup;
|
||||||
|
|
||||||
GPOSProxy (hb_face_t *face) :
|
GPOSProxy (hb_face_t *face) :
|
||||||
table (*hb_ot_face_data (face)->table.GPOS->table),
|
table (*hb_ot_face_data (face)->GPOS->table),
|
||||||
accels (hb_ot_face_data (face)->table.GPOS->accels) {}
|
accels (hb_ot_face_data (face)->GPOS->accels) {}
|
||||||
|
|
||||||
const OT::GPOS &table;
|
const OT::GPOS &table;
|
||||||
const hb_ot_layout_lookup_accelerator_t *accels;
|
const hb_ot_layout_lookup_accelerator_t *accels;
|
||||||
|
|
|
@ -33,8 +33,8 @@ static inline const OT::MATH&
|
||||||
_get_math (hb_face_t *face)
|
_get_math (hb_face_t *face)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::MATH);
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::MATH);
|
||||||
hb_ot_face_data_t * layout = hb_ot_face_data (face);
|
hb_ot_face_data_t * data = hb_ot_face_data (face);
|
||||||
return *(layout->table.MATH.get ());
|
return *(data->MATH.get ());
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -41,14 +41,14 @@ _get_fvar (hb_face_t *face)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::fvar);
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::fvar);
|
||||||
hb_ot_face_data_t *layout = hb_ot_face_data (face);
|
hb_ot_face_data_t *layout = hb_ot_face_data (face);
|
||||||
return *(layout->table.fvar.get ());
|
return *(layout->fvar.get ());
|
||||||
}
|
}
|
||||||
static inline const OT::avar&
|
static inline const OT::avar&
|
||||||
_get_avar (hb_face_t *face)
|
_get_avar (hb_face_t *face)
|
||||||
{
|
{
|
||||||
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::avar);
|
if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(OT::avar);
|
||||||
hb_ot_face_data_t *layout = hb_ot_face_data (face);
|
hb_ot_face_data_t *layout = hb_ot_face_data (face);
|
||||||
return *(layout->table.avar.get ());
|
return *(layout->avar.get ());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue