Port more off of Sanitizer<>
This commit is contained in:
parent
e7737b41d7
commit
9583e0077d
|
@ -451,7 +451,7 @@ hb_face_get_upem (hb_face_t *face)
|
||||||
void
|
void
|
||||||
hb_face_t::load_upem (void) const
|
hb_face_t::load_upem (void) const
|
||||||
{
|
{
|
||||||
hb_blob_t *head_blob = OT::Sanitizer<OT::head>().sanitize (reference_table (HB_OT_TAG_head));
|
hb_blob_t *head_blob = OT::hb_sanitize_context_t().reference_table<OT::head> (this);
|
||||||
const OT::head *head_table = head_blob->as<OT::head> ();
|
const OT::head *head_table = head_blob->as<OT::head> ();
|
||||||
upem = head_table->get_upem ();
|
upem = head_table->get_upem ();
|
||||||
hb_blob_destroy (head_blob);
|
hb_blob_destroy (head_blob);
|
||||||
|
@ -495,7 +495,7 @@ hb_face_get_glyph_count (hb_face_t *face)
|
||||||
void
|
void
|
||||||
hb_face_t::load_num_glyphs (void) const
|
hb_face_t::load_num_glyphs (void) const
|
||||||
{
|
{
|
||||||
hb_blob_t *maxp_blob = OT::Sanitizer<OT::maxp>().sanitize (reference_table (HB_OT_TAG_maxp));
|
hb_blob_t *maxp_blob = OT::hb_sanitize_context_t().reference_table<OT::maxp> (this);
|
||||||
const OT::maxp *maxp_table = maxp_blob->as<OT::maxp> ();
|
const OT::maxp *maxp_table = maxp_blob->as<OT::maxp> ();
|
||||||
num_glyphs = maxp_table->get_num_glyphs ();
|
num_glyphs = maxp_table->get_num_glyphs ();
|
||||||
hb_blob_destroy (maxp_blob);
|
hb_blob_destroy (maxp_blob);
|
||||||
|
|
|
@ -346,7 +346,7 @@ struct hb_sanitize_context_t :
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Type>
|
template <typename Type>
|
||||||
inline hb_blob_t *reference_table (hb_face_t *face, hb_tag_t tableTag = Type::tableTag)
|
inline hb_blob_t *reference_table (const hb_face_t *face, hb_tag_t tableTag = Type::tableTag)
|
||||||
{
|
{
|
||||||
return sanitize_blob<Type> (face->reference_table (tableTag));
|
return sanitize_blob<Type> (face->reference_table (tableTag));
|
||||||
}
|
}
|
||||||
|
|
|
@ -894,7 +894,7 @@ struct cmap
|
||||||
{
|
{
|
||||||
inline void init (hb_face_t *face)
|
inline void init (hb_face_t *face)
|
||||||
{
|
{
|
||||||
this->blob = OT::Sanitizer<OT::cmap>().sanitize (face->reference_table (HB_OT_TAG_cmap));
|
this->blob = OT::hb_sanitize_context_t().reference_table<OT::cmap> (face);
|
||||||
const OT::cmap *cmap = this->blob->as<OT::cmap> ();
|
const OT::cmap *cmap = this->blob->as<OT::cmap> ();
|
||||||
const OT::CmapSubtable *subtable = nullptr;
|
const OT::CmapSubtable *subtable = nullptr;
|
||||||
const OT::CmapSubtableFormat14 *subtable_uvs = nullptr;
|
const OT::CmapSubtableFormat14 *subtable_uvs = nullptr;
|
||||||
|
|
|
@ -394,8 +394,8 @@ struct CBDT
|
||||||
{
|
{
|
||||||
upem = hb_face_get_upem (face);
|
upem = hb_face_get_upem (face);
|
||||||
|
|
||||||
cblc_blob = Sanitizer<CBLC>().sanitize (face->reference_table (HB_OT_TAG_CBLC));
|
cblc_blob = hb_sanitize_context_t().reference_table<CBLC> (face);
|
||||||
cbdt_blob = Sanitizer<CBDT>().sanitize (face->reference_table (HB_OT_TAG_CBDT));
|
cbdt_blob = hb_sanitize_context_t().reference_table<CBDT> (face);
|
||||||
cbdt_len = hb_blob_get_length (cbdt_blob);
|
cbdt_len = hb_blob_get_length (cbdt_blob);
|
||||||
|
|
||||||
if (hb_blob_get_length (cblc_blob) == 0) {
|
if (hb_blob_get_length (cblc_blob) == 0) {
|
||||||
|
|
|
@ -96,11 +96,9 @@ struct SVG
|
||||||
{
|
{
|
||||||
inline void init (hb_face_t *face)
|
inline void init (hb_face_t *face)
|
||||||
{
|
{
|
||||||
OT::Sanitizer<OT::SVG> sanitizer;
|
svg_blob = OT::hb_sanitize_context_t().reference_table<SVG> (face);
|
||||||
svg_blob = sanitizer.sanitize (face->reference_table (HB_OT_TAG_SVG));
|
|
||||||
svg_len = hb_blob_get_length (svg_blob);
|
svg_len = hb_blob_get_length (svg_blob);
|
||||||
svg = svg_blob->as<OT::SVG> ();
|
svg = svg_blob->as<OT::SVG> ();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void fini (void)
|
inline void fini (void)
|
||||||
|
|
|
@ -103,7 +103,7 @@ struct glyf
|
||||||
static bool
|
static bool
|
||||||
_add_head_and_set_loca_version (hb_subset_plan_t *plan, bool use_short_loca)
|
_add_head_and_set_loca_version (hb_subset_plan_t *plan, bool use_short_loca)
|
||||||
{
|
{
|
||||||
hb_blob_t *head_blob = OT::Sanitizer<OT::head>().sanitize (hb_face_reference_table (plan->source, HB_OT_TAG_head));
|
hb_blob_t *head_blob = OT::hb_sanitize_context_t().reference_table<OT::head> (plan->source);
|
||||||
hb_blob_t *head_prime_blob = hb_blob_copy_writable_or_fail (head_blob);
|
hb_blob_t *head_prime_blob = hb_blob_copy_writable_or_fail (head_blob);
|
||||||
hb_blob_destroy (head_blob);
|
hb_blob_destroy (head_blob);
|
||||||
|
|
||||||
|
@ -236,7 +236,7 @@ struct glyf
|
||||||
{
|
{
|
||||||
memset (this, 0, sizeof (accelerator_t));
|
memset (this, 0, sizeof (accelerator_t));
|
||||||
|
|
||||||
hb_blob_t *head_blob = Sanitizer<head>().sanitize (face->reference_table (HB_OT_TAG_head));
|
hb_blob_t *head_blob = hb_sanitize_context_t().reference_table<head> (face);
|
||||||
const head *head_table = head_blob->as<head> ();
|
const head *head_table = head_blob->as<head> ();
|
||||||
if (head_table == &Null(head) || (unsigned int) head_table->indexToLocFormat > 1 || head_table->glyphDataFormat != 0)
|
if (head_table == &Null(head) || (unsigned int) head_table->indexToLocFormat > 1 || head_table->glyphDataFormat != 0)
|
||||||
{
|
{
|
||||||
|
@ -247,9 +247,9 @@ struct glyf
|
||||||
short_offset = 0 == head_table->indexToLocFormat;
|
short_offset = 0 == head_table->indexToLocFormat;
|
||||||
hb_blob_destroy (head_blob);
|
hb_blob_destroy (head_blob);
|
||||||
|
|
||||||
loca_blob = Sanitizer<loca>().sanitize (face->reference_table (HB_OT_TAG_loca));
|
loca_blob = hb_sanitize_context_t().reference_table<loca> (face);
|
||||||
loca_table = loca_blob->as<loca> ();
|
loca_table = loca_blob->as<loca> ();
|
||||||
glyf_blob = Sanitizer<glyf>().sanitize (face->reference_table (HB_OT_TAG_glyf));
|
glyf_blob = hb_sanitize_context_t().reference_table<glyf> (face);
|
||||||
glyf_table = glyf_blob->as<glyf> ();
|
glyf_table = glyf_blob->as<glyf> ();
|
||||||
|
|
||||||
num_glyphs = MAX (1u, hb_blob_get_length (loca_blob) / (short_offset ? 2 : 4)) - 1;
|
num_glyphs = MAX (1u, hb_blob_get_length (loca_blob) / (short_offset ? 2 : 4)) - 1;
|
||||||
|
|
|
@ -69,7 +69,7 @@ struct hmtxvmtx
|
||||||
inline bool subset_update_header (hb_subset_plan_t *plan,
|
inline bool subset_update_header (hb_subset_plan_t *plan,
|
||||||
unsigned int num_hmetrics) const
|
unsigned int num_hmetrics) const
|
||||||
{
|
{
|
||||||
hb_blob_t *src_blob = OT::Sanitizer<H> ().sanitize (plan->source->reference_table (H::tableTag));
|
hb_blob_t *src_blob = OT::hb_sanitize_context_t().reference_table<H> (plan->source, H::tableTag);
|
||||||
hb_blob_t *dest_blob = hb_blob_copy_writable_or_fail(src_blob);
|
hb_blob_t *dest_blob = hb_blob_copy_writable_or_fail(src_blob);
|
||||||
hb_blob_destroy (src_blob);
|
hb_blob_destroy (src_blob);
|
||||||
|
|
||||||
|
@ -195,7 +195,7 @@ struct hmtxvmtx
|
||||||
bool got_font_extents = false;
|
bool got_font_extents = false;
|
||||||
if (T::os2Tag)
|
if (T::os2Tag)
|
||||||
{
|
{
|
||||||
hb_blob_t *os2_blob = Sanitizer<os2> ().sanitize (face->reference_table (T::os2Tag));
|
hb_blob_t *os2_blob = hb_sanitize_context_t().reference_table<os2> (face);
|
||||||
const os2 *os2_table = os2_blob->as<os2> ();
|
const os2 *os2_table = os2_blob->as<os2> ();
|
||||||
#define USE_TYPO_METRICS (1u<<7)
|
#define USE_TYPO_METRICS (1u<<7)
|
||||||
if (0 != (os2_table->fsSelection & USE_TYPO_METRICS))
|
if (0 != (os2_table->fsSelection & USE_TYPO_METRICS))
|
||||||
|
@ -208,7 +208,7 @@ struct hmtxvmtx
|
||||||
hb_blob_destroy (os2_blob);
|
hb_blob_destroy (os2_blob);
|
||||||
}
|
}
|
||||||
|
|
||||||
hb_blob_t *_hea_blob = Sanitizer<H> ().sanitize (face->reference_table (H::tableTag));
|
hb_blob_t *_hea_blob = hb_sanitize_context_t().reference_table<H> (face);
|
||||||
const H *_hea_table = _hea_blob->as<H> ();
|
const H *_hea_table = _hea_blob->as<H> ();
|
||||||
num_advances = _hea_table->numberOfLongMetrics;
|
num_advances = _hea_table->numberOfLongMetrics;
|
||||||
if (!got_font_extents)
|
if (!got_font_extents)
|
||||||
|
@ -222,7 +222,7 @@ struct hmtxvmtx
|
||||||
|
|
||||||
has_font_extents = got_font_extents;
|
has_font_extents = got_font_extents;
|
||||||
|
|
||||||
blob = Sanitizer<hmtxvmtx> ().sanitize (face->reference_table (T::tableTag));
|
blob = hb_sanitize_context_t().reference_table<hmtxvmtx> (face, T::tableTag);
|
||||||
|
|
||||||
/* Cap num_metrics() and num_advances() based on table length. */
|
/* Cap num_metrics() and num_advances() based on table length. */
|
||||||
unsigned int len = hb_blob_get_length (blob);
|
unsigned int len = hb_blob_get_length (blob);
|
||||||
|
@ -240,7 +240,7 @@ struct hmtxvmtx
|
||||||
}
|
}
|
||||||
table = blob->as<hmtxvmtx> ();
|
table = blob->as<hmtxvmtx> ();
|
||||||
|
|
||||||
var_blob = Sanitizer<HVARVVAR> ().sanitize (face->reference_table (T::variationsTag));
|
var_blob = hb_sanitize_context_t().reference_table<HVARVVAR> (face, T::variationsTag);
|
||||||
var_table = var_blob->as<HVARVVAR> ();
|
var_table = var_blob->as<HVARVVAR> ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -362,7 +362,7 @@ struct kern
|
||||||
{
|
{
|
||||||
inline void init (hb_face_t *face)
|
inline void init (hb_face_t *face)
|
||||||
{
|
{
|
||||||
blob = Sanitizer<kern>().sanitize (face->reference_table (HB_OT_TAG_kern));
|
blob = hb_sanitize_context_t().reference_table<kern> (face);
|
||||||
table = blob->as<kern> ();
|
table = blob->as<kern> ();
|
||||||
table_length = blob->length;
|
table_length = blob->length;
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,13 +54,13 @@ _hb_ot_layout_create (hb_face_t *face)
|
||||||
if (unlikely (!layout))
|
if (unlikely (!layout))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
layout->gdef_blob = OT::Sanitizer<OT::GDEF>().sanitize (face->reference_table (HB_OT_TAG_GDEF));
|
layout->gdef_blob = OT::hb_sanitize_context_t().reference_table<OT::GDEF> (face);
|
||||||
layout->gdef = layout->gdef_blob->as<OT::GDEF> ();
|
layout->gdef = layout->gdef_blob->as<OT::GDEF> ();
|
||||||
|
|
||||||
layout->gsub_blob = OT::Sanitizer<OT::GSUB>().sanitize (face->reference_table (HB_OT_TAG_GSUB));
|
layout->gsub_blob = OT::hb_sanitize_context_t().reference_table<OT::GSUB> (face);
|
||||||
layout->gsub = layout->gsub_blob->as<OT::GSUB> ();
|
layout->gsub = layout->gsub_blob->as<OT::GSUB> ();
|
||||||
|
|
||||||
layout->gpos_blob = OT::Sanitizer<OT::GPOS>().sanitize (face->reference_table (HB_OT_TAG_GPOS));
|
layout->gpos_blob = OT::hb_sanitize_context_t().reference_table<OT::GPOS> (face);
|
||||||
layout->gpos = layout->gpos_blob->as<OT::GPOS> ();
|
layout->gpos = layout->gpos_blob->as<OT::GPOS> ();
|
||||||
|
|
||||||
layout->math.init (face);
|
layout->math.init (face);
|
||||||
|
|
|
@ -100,7 +100,7 @@ struct maxp
|
||||||
|
|
||||||
inline bool subset (hb_subset_plan_t *plan) const
|
inline bool subset (hb_subset_plan_t *plan) const
|
||||||
{
|
{
|
||||||
hb_blob_t *maxp_blob = OT::Sanitizer<OT::maxp>().sanitize (hb_face_reference_table (plan->source, HB_OT_TAG_maxp));
|
hb_blob_t *maxp_blob = OT::hb_sanitize_context_t().reference_table<OT::maxp> (plan->source);
|
||||||
hb_blob_t *maxp_prime_blob = hb_blob_copy_writable_or_fail (maxp_blob);
|
hb_blob_t *maxp_prime_blob = hb_blob_copy_writable_or_fail (maxp_blob);
|
||||||
hb_blob_destroy (maxp_blob);
|
hb_blob_destroy (maxp_blob);
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ struct os2
|
||||||
|
|
||||||
inline bool subset (hb_subset_plan_t *plan) const
|
inline bool subset (hb_subset_plan_t *plan) const
|
||||||
{
|
{
|
||||||
hb_blob_t *os2_blob = OT::Sanitizer<OT::os2>().sanitize (hb_face_reference_table (plan->source, HB_OT_TAG_os2));
|
hb_blob_t *os2_blob = OT::hb_sanitize_context_t().reference_table<OT::os2> (plan->source);
|
||||||
hb_blob_t *os2_prime_blob = hb_blob_create_sub_blob (os2_blob, 0, -1);
|
hb_blob_t *os2_prime_blob = hb_blob_create_sub_blob (os2_blob, 0, -1);
|
||||||
// TODO(grieger): move to hb_blob_copy_writable_or_fail
|
// TODO(grieger): move to hb_blob_copy_writable_or_fail
|
||||||
hb_blob_destroy (os2_blob);
|
hb_blob_destroy (os2_blob);
|
||||||
|
|
|
@ -110,7 +110,7 @@ struct post
|
||||||
{
|
{
|
||||||
index_to_offset.init ();
|
index_to_offset.init ();
|
||||||
|
|
||||||
blob = Sanitizer<post>().sanitize (face->reference_table (HB_OT_TAG_post));
|
blob = hb_sanitize_context_t().reference_table<post> (face);
|
||||||
const post *table = blob->as<post> ();
|
const post *table = blob->as<post> ();
|
||||||
unsigned int table_length = blob->length;
|
unsigned int table_length = blob->length;
|
||||||
|
|
||||||
|
|
|
@ -78,9 +78,7 @@ template<typename TableType>
|
||||||
static bool
|
static bool
|
||||||
_subset (hb_subset_plan_t *plan)
|
_subset (hb_subset_plan_t *plan)
|
||||||
{
|
{
|
||||||
OT::Sanitizer<TableType> sanitizer;
|
hb_blob_t *source_blob = OT::hb_sanitize_context_t().reference_table<TableType> (plan->source);
|
||||||
|
|
||||||
hb_blob_t *source_blob = sanitizer.sanitize (plan->source->reference_table (TableType::tableTag));
|
|
||||||
const TableType *table = source_blob->as<TableType> ();
|
const TableType *table = source_blob->as<TableType> ();
|
||||||
|
|
||||||
hb_tag_t tag = TableType::tableTag;
|
hb_tag_t tag = TableType::tableTag;
|
||||||
|
|
Loading…
Reference in New Issue