< prev index next >
src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-maxp-table.hh
Print this page
*** 25,36 ****
*/
#ifndef HB_OT_MAXP_TABLE_HH
#define HB_OT_MAXP_TABLE_HH
! #include "hb-open-type-private.hh"
! #include "hb-subset-plan.hh"
namespace OT {
/*
--- 25,35 ----
*/
#ifndef HB_OT_MAXP_TABLE_HH
#define HB_OT_MAXP_TABLE_HH
! #include "hb-open-type.hh"
namespace OT {
/*
*** 40,50 ****
#define HB_OT_TAG_maxp HB_TAG('m','a','x','p')
struct maxpV1Tail
{
! inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
return_trace (c->check_struct (this));
}
--- 39,49 ----
#define HB_OT_TAG_maxp HB_TAG('m','a','x','p')
struct maxpV1Tail
{
! bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
return_trace (c->check_struct (this));
}
*** 70,126 ****
};
struct maxp
{
! static const hb_tag_t tableTag = HB_OT_TAG_maxp;
! inline unsigned int get_num_glyphs (void) const
! {
! return numGlyphs;
! }
! inline void set_num_glyphs (unsigned int count)
{
numGlyphs.set (count);
}
! inline bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
if (unlikely (!c->check_struct (this)))
return_trace (false);
if (version.major == 1)
{
const maxpV1Tail &v1 = StructAfter<maxpV1Tail> (*this);
! return v1.sanitize (c);
}
return_trace (likely (version.major == 0 && version.minor == 0x5000u));
}
! 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_prime_blob = hb_blob_copy_writable_or_fail (maxp_blob);
hb_blob_destroy (maxp_blob);
if (unlikely (!maxp_prime_blob)) {
return false;
}
! OT::maxp *maxp_prime = (OT::maxp *) hb_blob_get_data (maxp_prime_blob, nullptr);
! maxp_prime->set_num_glyphs (plan->glyphs.len);
if (plan->drop_hints)
drop_hint_fields (plan, maxp_prime);
bool result = plan->add_table (HB_OT_TAG_maxp, maxp_prime_blob);
hb_blob_destroy (maxp_prime_blob);
return result;
}
! static inline void drop_hint_fields (hb_subset_plan_t *plan, OT::maxp *maxp_prime)
{
if (maxp_prime->version.major == 1)
{
maxpV1Tail &v1 = StructAfter<maxpV1Tail> (*maxp_prime);
v1.maxZones.set (1);
--- 69,122 ----
};
struct maxp
{
! static constexpr hb_tag_t tableTag = HB_OT_TAG_maxp;
! unsigned int get_num_glyphs () const { return numGlyphs; }
! void set_num_glyphs (unsigned int count)
{
numGlyphs.set (count);
}
! bool sanitize (hb_sanitize_context_t *c) const
{
TRACE_SANITIZE (this);
if (unlikely (!c->check_struct (this)))
return_trace (false);
if (version.major == 1)
{
const maxpV1Tail &v1 = StructAfter<maxpV1Tail> (*this);
! return_trace (v1.sanitize (c));
}
return_trace (likely (version.major == 0 && version.minor == 0x5000u));
}
! bool subset (hb_subset_plan_t *plan) const
{
! hb_blob_t *maxp_blob = hb_sanitize_context_t().reference_table<maxp> (plan->source);
hb_blob_t *maxp_prime_blob = hb_blob_copy_writable_or_fail (maxp_blob);
hb_blob_destroy (maxp_blob);
if (unlikely (!maxp_prime_blob)) {
return false;
}
! maxp *maxp_prime = (maxp *) hb_blob_get_data (maxp_prime_blob, nullptr);
! maxp_prime->set_num_glyphs (plan->glyphs.length);
if (plan->drop_hints)
drop_hint_fields (plan, maxp_prime);
bool result = plan->add_table (HB_OT_TAG_maxp, maxp_prime_blob);
hb_blob_destroy (maxp_prime_blob);
return result;
}
! static void drop_hint_fields (hb_subset_plan_t *plan HB_UNUSED, maxp *maxp_prime)
{
if (maxp_prime->version.major == 1)
{
maxpV1Tail &v1 = StructAfter<maxpV1Tail> (*maxp_prime);
v1.maxZones.set (1);
< prev index next >