[avar2] Add v2 structure and sanitize
This commit is contained in:
parent
c9e843942e
commit
c3eb6713e9
|
@ -28,6 +28,8 @@
|
||||||
#define HB_OT_VAR_AVAR_TABLE_HH
|
#define HB_OT_VAR_AVAR_TABLE_HH
|
||||||
|
|
||||||
#include "hb-open-type.hh"
|
#include "hb-open-type.hh"
|
||||||
|
#include "hb-ot-var-common.hh"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* avar -- Axis Variations
|
* avar -- Axis Variations
|
||||||
|
@ -40,6 +42,27 @@
|
||||||
namespace OT {
|
namespace OT {
|
||||||
|
|
||||||
|
|
||||||
|
struct avarV2Tail
|
||||||
|
{
|
||||||
|
friend struct avar;
|
||||||
|
|
||||||
|
bool sanitize (hb_sanitize_context_t *c,
|
||||||
|
const void *base) const
|
||||||
|
{
|
||||||
|
TRACE_SANITIZE (this);
|
||||||
|
return_trace (varIdxMap.sanitize (c, base) &&
|
||||||
|
varStore.sanitize (c, base));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Offset32To<DeltaSetIndexMap> varIdxMap; /* Offset from the beginning of 'avar' table. */
|
||||||
|
Offset32To<VariationStore> varStore; /* Offset from the beginning of 'avar' table. */
|
||||||
|
|
||||||
|
public:
|
||||||
|
DEFINE_SIZE_STATIC (8);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct AxisValueMap
|
struct AxisValueMap
|
||||||
{
|
{
|
||||||
bool sanitize (hb_sanitize_context_t *c) const
|
bool sanitize (hb_sanitize_context_t *c) const
|
||||||
|
@ -118,7 +141,7 @@ struct avar
|
||||||
{
|
{
|
||||||
TRACE_SANITIZE (this);
|
TRACE_SANITIZE (this);
|
||||||
if (unlikely (!(version.sanitize (c) &&
|
if (unlikely (!(version.sanitize (c) &&
|
||||||
version.major == 1 &&
|
(version.major == 1 || version.major == 2) &&
|
||||||
c->check_struct (this))))
|
c->check_struct (this))))
|
||||||
return_trace (false);
|
return_trace (false);
|
||||||
|
|
||||||
|
@ -131,6 +154,13 @@ struct avar
|
||||||
map = &StructAfter<SegmentMaps> (*map);
|
map = &StructAfter<SegmentMaps> (*map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (version.major == 2)
|
||||||
|
{
|
||||||
|
auto *v2 = (const avarV2Tail *) map;
|
||||||
|
if (unlikely (!v2->sanitize (c, this)))
|
||||||
|
return_trace (false);
|
||||||
|
}
|
||||||
|
|
||||||
return_trace (true);
|
return_trace (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue