|
|
|
@ -68,7 +68,7 @@ public: |
|
|
|
|
hb_font_t *font; |
|
|
|
|
unsigned int palette_index; |
|
|
|
|
hb_color_t foreground; |
|
|
|
|
VarStoreInstancer &instancer; |
|
|
|
|
ItemVarStoreInstancer &instancer; |
|
|
|
|
hb_map_t current_glyphs; |
|
|
|
|
hb_map_t current_layers; |
|
|
|
|
int depth_left = HB_MAX_NESTING_LEVEL; |
|
|
|
@ -80,7 +80,7 @@ public: |
|
|
|
|
hb_font_t *font_, |
|
|
|
|
unsigned int palette_, |
|
|
|
|
hb_color_t foreground_, |
|
|
|
|
VarStoreInstancer &instancer_) : |
|
|
|
|
ItemVarStoreInstancer &instancer_) : |
|
|
|
|
base (base_), |
|
|
|
|
funcs (funcs_), |
|
|
|
|
data (data_), |
|
|
|
@ -245,7 +245,7 @@ struct Variable |
|
|
|
|
{ value.closurev1 (c); } |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
if (!value.subset (c, instancer, varIdxBase)) return_trace (false); |
|
|
|
@ -270,7 +270,7 @@ struct Variable |
|
|
|
|
|
|
|
|
|
void get_color_stop (hb_paint_context_t *c, |
|
|
|
|
hb_color_stop_t *stop, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
value.get_color_stop (c, stop, varIdxBase, instancer); |
|
|
|
|
} |
|
|
|
@ -305,7 +305,7 @@ struct NoVariable |
|
|
|
|
{ value.closurev1 (c); } |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
return_trace (value.subset (c, instancer, varIdxBase)); |
|
|
|
@ -325,7 +325,7 @@ struct NoVariable |
|
|
|
|
|
|
|
|
|
void get_color_stop (hb_paint_context_t *c, |
|
|
|
|
hb_color_stop_t *stop, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
value.get_color_stop (c, stop, VarIdx::NO_VARIATION, instancer); |
|
|
|
|
} |
|
|
|
@ -348,7 +348,7 @@ struct ColorStop |
|
|
|
|
{ c->add_palette_index (paletteIndex); } |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -374,7 +374,7 @@ struct ColorStop |
|
|
|
|
void get_color_stop (hb_paint_context_t *c, |
|
|
|
|
hb_color_stop_t *out, |
|
|
|
|
uint32_t varIdx, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
out->offset = stopOffset.to_float(instancer (varIdx, 0)); |
|
|
|
|
out->color = c->get_color (paletteIndex, |
|
|
|
@ -410,7 +410,7 @@ struct ColorLine |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
auto *out = c->serializer->start_embed (this); |
|
|
|
@ -439,7 +439,7 @@ struct ColorLine |
|
|
|
|
unsigned int start, |
|
|
|
|
unsigned int *count, |
|
|
|
|
hb_color_stop_t *color_stops, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
unsigned int len = stops.len; |
|
|
|
|
|
|
|
|
@ -543,7 +543,7 @@ struct Affine2x3 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -588,7 +588,7 @@ struct PaintColrLayers |
|
|
|
|
void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer HB_UNUSED) const |
|
|
|
|
const ItemVarStoreInstancer &instancer HB_UNUSED) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
auto *out = c->serializer->embed (this); |
|
|
|
@ -620,7 +620,7 @@ struct PaintSolid |
|
|
|
|
{ c->add_palette_index (paletteIndex); } |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -669,7 +669,7 @@ struct PaintLinearGradient |
|
|
|
|
{ (this+colorLine).closurev1 (c); } |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -736,7 +736,7 @@ struct PaintRadialGradient |
|
|
|
|
{ (this+colorLine).closurev1 (c); } |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -803,7 +803,7 @@ struct PaintSweepGradient |
|
|
|
|
{ (this+colorLine).closurev1 (c); } |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -863,7 +863,7 @@ struct PaintGlyph |
|
|
|
|
void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
auto *out = c->serializer->embed (this); |
|
|
|
@ -906,7 +906,7 @@ struct PaintColrGlyph |
|
|
|
|
void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer HB_UNUSED) const |
|
|
|
|
const ItemVarStoreInstancer &instancer HB_UNUSED) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
auto *out = c->serializer->embed (this); |
|
|
|
@ -936,7 +936,7 @@ struct PaintTransform |
|
|
|
|
HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
auto *out = c->serializer->embed (this); |
|
|
|
@ -975,7 +975,7 @@ struct PaintTranslate |
|
|
|
|
HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -1024,7 +1024,7 @@ struct PaintScale |
|
|
|
|
HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -1073,7 +1073,7 @@ struct PaintScaleAroundCenter |
|
|
|
|
HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -1132,7 +1132,7 @@ struct PaintScaleUniform |
|
|
|
|
HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -1176,7 +1176,7 @@ struct PaintScaleUniformAroundCenter |
|
|
|
|
HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -1232,7 +1232,7 @@ struct PaintRotate |
|
|
|
|
HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -1276,7 +1276,7 @@ struct PaintRotateAroundCenter |
|
|
|
|
HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -1332,7 +1332,7 @@ struct PaintSkew |
|
|
|
|
HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -1381,7 +1381,7 @@ struct PaintSkewAroundCenter |
|
|
|
|
HB_INTERNAL void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -1440,7 +1440,7 @@ struct PaintComposite |
|
|
|
|
void closurev1 (hb_colrv1_closure_context_t* c) const; |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
auto *out = c->serializer->embed (this); |
|
|
|
@ -1491,7 +1491,7 @@ struct ClipBoxFormat1 |
|
|
|
|
return_trace (c->check_struct (this)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void get_clip_box (ClipBoxData &clip_box, const VarStoreInstancer &instancer HB_UNUSED) const |
|
|
|
|
void get_clip_box (ClipBoxData &clip_box, const ItemVarStoreInstancer &instancer HB_UNUSED) const |
|
|
|
|
{ |
|
|
|
|
clip_box.xMin = xMin; |
|
|
|
|
clip_box.yMin = yMin; |
|
|
|
@ -1500,7 +1500,7 @@ struct ClipBoxFormat1 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
uint32_t varIdxBase) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
@ -1533,7 +1533,7 @@ struct ClipBoxFormat1 |
|
|
|
|
|
|
|
|
|
struct ClipBoxFormat2 : Variable<ClipBoxFormat1> |
|
|
|
|
{ |
|
|
|
|
void get_clip_box (ClipBoxData &clip_box, const VarStoreInstancer &instancer) const |
|
|
|
|
void get_clip_box (ClipBoxData &clip_box, const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
value.get_clip_box(clip_box, instancer); |
|
|
|
|
if (instancer) |
|
|
|
@ -1549,7 +1549,7 @@ struct ClipBoxFormat2 : Variable<ClipBoxFormat1> |
|
|
|
|
struct ClipBox |
|
|
|
|
{ |
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
switch (u.format) { |
|
|
|
@ -1572,7 +1572,7 @@ struct ClipBox |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool get_extents (hb_glyph_extents_t *extents, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
ClipBoxData clip_box; |
|
|
|
|
switch (u.format) { |
|
|
|
@ -1608,7 +1608,7 @@ struct ClipRecord |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const void *base, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
auto *out = c->serializer->embed (*this); |
|
|
|
@ -1625,7 +1625,7 @@ struct ClipRecord |
|
|
|
|
|
|
|
|
|
bool get_extents (hb_glyph_extents_t *extents, |
|
|
|
|
const void *base, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
return (base+clipBox).get_extents (extents, instancer); |
|
|
|
|
} |
|
|
|
@ -1642,7 +1642,7 @@ DECLARE_NULL_NAMESPACE_BYTES (OT, ClipRecord); |
|
|
|
|
struct ClipList |
|
|
|
|
{ |
|
|
|
|
unsigned serialize_clip_records (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer, |
|
|
|
|
const ItemVarStoreInstancer &instancer, |
|
|
|
|
const hb_set_t& gids, |
|
|
|
|
const hb_map_t& gid_offset_map) const |
|
|
|
|
{ |
|
|
|
@ -1695,7 +1695,7 @@ struct ClipList |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
auto *out = c->serializer->start_embed (*this); |
|
|
|
@ -1735,7 +1735,7 @@ struct ClipList |
|
|
|
|
bool |
|
|
|
|
get_extents (hb_codepoint_t gid, |
|
|
|
|
hb_glyph_extents_t *extents, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
auto *rec = clips.as_array ().bsearch (gid); |
|
|
|
|
if (rec) |
|
|
|
@ -1855,7 +1855,7 @@ struct BaseGlyphPaintRecord |
|
|
|
|
|
|
|
|
|
bool serialize (hb_serialize_context_t *s, const hb_map_t* glyph_map, |
|
|
|
|
const void* src_base, hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SERIALIZE (this); |
|
|
|
|
auto *out = s->embed (this); |
|
|
|
@ -1884,7 +1884,7 @@ struct BaseGlyphPaintRecord |
|
|
|
|
struct BaseGlyphList : SortedArray32Of<BaseGlyphPaintRecord> |
|
|
|
|
{ |
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
auto *out = c->serializer->start_embed (this); |
|
|
|
@ -1916,7 +1916,7 @@ struct LayerList : Array32OfOffset32To<Paint> |
|
|
|
|
{ return this+(*this)[i]; } |
|
|
|
|
|
|
|
|
|
bool subset (hb_subset_context_t *c, |
|
|
|
|
const VarStoreInstancer &instancer) const |
|
|
|
|
const ItemVarStoreInstancer &instancer) const |
|
|
|
|
{ |
|
|
|
|
TRACE_SUBSET (this); |
|
|
|
|
auto *out = c->serializer->start_embed (this); |
|
|
|
@ -2206,7 +2206,7 @@ struct COLR |
|
|
|
|
auto snap = c->serializer->snapshot (); |
|
|
|
|
if (!c->serializer->allocate_size<void> (5 * HBUINT32::static_size)) return_trace (false); |
|
|
|
|
|
|
|
|
|
VarStoreInstancer instancer (varStore ? &(this+varStore) : nullptr, |
|
|
|
|
ItemVarStoreInstancer instancer (varStore ? &(this+varStore) : nullptr, |
|
|
|
|
varIdxMap ? &(this+varIdxMap) : nullptr, |
|
|
|
|
c->plan->normalized_coords.as_array ()); |
|
|
|
|
|
|
|
|
@ -2250,7 +2250,7 @@ struct COLR |
|
|
|
|
if (version != 1) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
VarStoreInstancer instancer (&(this+varStore), |
|
|
|
|
ItemVarStoreInstancer instancer (&(this+varStore), |
|
|
|
|
&(this+varIdxMap), |
|
|
|
|
hb_array (font->coords, font->num_coords)); |
|
|
|
|
|
|
|
|
@ -2301,7 +2301,7 @@ struct COLR |
|
|
|
|
|
|
|
|
|
bool get_clip (hb_codepoint_t glyph, |
|
|
|
|
hb_glyph_extents_t *extents, |
|
|
|
|
const VarStoreInstancer instancer) const |
|
|
|
|
const ItemVarStoreInstancer instancer) const |
|
|
|
|
{ |
|
|
|
|
return (this+clipList).get_extents (glyph, |
|
|
|
|
extents, |
|
|
|
@ -2312,7 +2312,7 @@ struct COLR |
|
|
|
|
bool |
|
|
|
|
paint_glyph (hb_font_t *font, hb_codepoint_t glyph, hb_paint_funcs_t *funcs, void *data, unsigned int palette_index, hb_color_t foreground, bool clip = true) const |
|
|
|
|
{ |
|
|
|
|
VarStoreInstancer instancer (&(this+varStore), |
|
|
|
|
ItemVarStoreInstancer instancer (&(this+varStore), |
|
|
|
|
&(this+varIdxMap), |
|
|
|
|
hb_array (font->coords, font->num_coords)); |
|
|
|
|
hb_paint_context_t c (this, funcs, data, font, palette_index, foreground, instancer); |
|
|
|
@ -2327,7 +2327,7 @@ struct COLR |
|
|
|
|
{ |
|
|
|
|
// COLRv1 glyph
|
|
|
|
|
|
|
|
|
|
VarStoreInstancer instancer (&(this+varStore), |
|
|
|
|
ItemVarStoreInstancer instancer (&(this+varStore), |
|
|
|
|
&(this+varIdxMap), |
|
|
|
|
hb_array (font->coords, font->num_coords)); |
|
|
|
|
|
|
|
|
|