[subset] Towards subsetting SingleSubstFormat1

Why does subset plan not have a hb_set_t of glyphs?
This commit is contained in:
Behdad Esfahbod 2018-09-03 18:23:23 -07:00
parent 339d3603b9
commit dc50493a8d
2 changed files with 20 additions and 2 deletions

View File

@ -33,6 +33,7 @@
#include "hb-blob.hh" #include "hb-blob.hh"
#include "hb-iter.hh" #include "hb-iter.hh"
#include "hb-vector.hh"
/* /*
@ -585,6 +586,13 @@ struct Supplier
len = len_; len = len_;
stride = stride_; stride = stride_;
} }
inline Supplier (const hb_vector_t<Type> *v)
{
head = v->arrayZ;
len = v->len;
stride = sizeof (Type);
}
inline const Type operator [] (unsigned int i) const inline const Type operator [] (unsigned int i) const
{ {
if (unlikely (i >= len)) return Type (); if (unlikely (i >= len)) return Type ();

View File

@ -104,8 +104,18 @@ struct SingleSubstFormat1
inline bool subset (hb_subset_context_t *c) const inline bool subset (hb_subset_context_t *c) const
{ {
return false;
TRACE_SUBSET (this); TRACE_SUBSET (this);
// TODO(subset) hb_auto_t<hb_vector_t<hb_codepoint_t>> from;
hb_auto_t<hb_vector_t<hb_codepoint_t>> to;
hb_codepoint_t delta = deltaGlyphID;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ())
{
//if (!c->plan->glyphs->has (iter.get_glyph ()))
// continue;
from.push (iter.get_glyph ());
to.push ((iter.get_glyph () + delta) & 0xFFFF);
}
return_trace (false); return_trace (false);
} }