[ot] Fold hb_ot_face_post_accelerator_t
This commit is contained in:
parent
702d86ba6b
commit
9b04b0384f
|
@ -302,39 +302,6 @@ struct hb_ot_face_cbdt_accelerator_t
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct hb_ot_face_post_accelerator_t
|
|
||||||
{
|
|
||||||
hb_blob_t *post_blob;
|
|
||||||
OT::post::accelerator_t accel;
|
|
||||||
|
|
||||||
inline void init (hb_face_t *face)
|
|
||||||
{
|
|
||||||
hb_blob_t *blob = this->post_blob = OT::Sanitizer<OT::post>::sanitize (face->reference_table (HB_OT_TAG_post));
|
|
||||||
accel.init (OT::Sanitizer<OT::post>::lock_instance (blob), hb_blob_get_length (blob));
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void fini (void)
|
|
||||||
{
|
|
||||||
accel.fini ();
|
|
||||||
hb_blob_destroy (this->post_blob);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool get_glyph_name (hb_codepoint_t glyph,
|
|
||||||
char *name, unsigned int size) const
|
|
||||||
{
|
|
||||||
return this->accel.get_glyph_name (glyph, name, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool get_glyph_from_name (const char *name, int len,
|
|
||||||
hb_codepoint_t *glyph) const
|
|
||||||
{
|
|
||||||
if (unlikely (!len))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return this->accel.get_glyph_from_name (name, len, glyph);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef bool (*hb_cmap_get_glyph_func_t) (const void *obj,
|
typedef bool (*hb_cmap_get_glyph_func_t) (const void *obj,
|
||||||
hb_codepoint_t codepoint,
|
hb_codepoint_t codepoint,
|
||||||
hb_codepoint_t *glyph);
|
hb_codepoint_t *glyph);
|
||||||
|
@ -470,7 +437,7 @@ struct hb_ot_font_t
|
||||||
hb_ot_face_metrics_accelerator_t v_metrics;
|
hb_ot_face_metrics_accelerator_t v_metrics;
|
||||||
OT::hb_lazy_loader_t<hb_ot_face_glyf_accelerator_t> glyf;
|
OT::hb_lazy_loader_t<hb_ot_face_glyf_accelerator_t> glyf;
|
||||||
OT::hb_lazy_loader_t<hb_ot_face_cbdt_accelerator_t> cbdt;
|
OT::hb_lazy_loader_t<hb_ot_face_cbdt_accelerator_t> cbdt;
|
||||||
OT::hb_lazy_loader_t<hb_ot_face_post_accelerator_t> post;
|
OT::hb_lazy_loader_t<OT::post::accelerator_t> post;
|
||||||
OT::hb_lazy_loader_t<OT::kern::accelerator_t> kern;
|
OT::hb_lazy_loader_t<OT::kern::accelerator_t> kern;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -84,8 +84,12 @@ struct post
|
||||||
|
|
||||||
struct accelerator_t
|
struct accelerator_t
|
||||||
{
|
{
|
||||||
inline void init (const post *table, unsigned int post_len)
|
inline void init (hb_face_t *face)
|
||||||
{
|
{
|
||||||
|
blob = Sanitizer<post>::sanitize (face->reference_table (HB_OT_TAG_post));
|
||||||
|
const post *table = Sanitizer<post>::lock_instance (blob);
|
||||||
|
unsigned int table_length = hb_blob_get_length (blob);
|
||||||
|
|
||||||
version = table->version.to_int ();
|
version = table->version.to_int ();
|
||||||
index_to_offset.init ();
|
index_to_offset.init ();
|
||||||
if (version != 0x00020000)
|
if (version != 0x00020000)
|
||||||
|
@ -96,7 +100,7 @@ struct post
|
||||||
glyphNameIndex = &v2.glyphNameIndex;
|
glyphNameIndex = &v2.glyphNameIndex;
|
||||||
pool = &StructAfter<uint8_t> (v2.glyphNameIndex);
|
pool = &StructAfter<uint8_t> (v2.glyphNameIndex);
|
||||||
|
|
||||||
const uint8_t *end = (uint8_t *) table + post_len;
|
const uint8_t *end = (uint8_t *) table + table_length;
|
||||||
for (const uint8_t *data = pool; data < end && data + *data <= end; data += 1 + *data)
|
for (const uint8_t *data = pool; data < end && data + *data <= end; data += 1 + *data)
|
||||||
{
|
{
|
||||||
uint32_t *offset = index_to_offset.push ();
|
uint32_t *offset = index_to_offset.push ();
|
||||||
|
@ -227,6 +231,7 @@ struct post
|
||||||
return hb_string_t ((const char *) data, name_length);
|
return hb_string_t ((const char *) data, name_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hb_blob_t *blob;
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
const ArrayOf<USHORT> *glyphNameIndex;
|
const ArrayOf<USHORT> *glyphNameIndex;
|
||||||
hb_prealloced_array_t<uint32_t, 1> index_to_offset;
|
hb_prealloced_array_t<uint32_t, 1> index_to_offset;
|
||||||
|
|
Loading…
Reference in New Issue