[aat] Towards adding two ClassTable's
This commit is contained in:
parent
987f418772
commit
5b4a789ca8
|
@ -363,6 +363,14 @@ struct Lookup
|
|||
}
|
||||
}
|
||||
|
||||
inline typename T::type get_class (hb_codepoint_t glyph_id,
|
||||
unsigned int num_glyphs,
|
||||
unsigned int outOfRange) const
|
||||
{
|
||||
const T *v = get_value (glyph_id, num_glyphs);
|
||||
return v ? *v : outOfRange;
|
||||
}
|
||||
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
TRACE_SANITIZE (this);
|
||||
|
@ -638,6 +646,7 @@ struct StateTable
|
|||
DEFINE_SIZE_STATIC (4 * sizeof (HBUINT));
|
||||
};
|
||||
|
||||
template <typename HBUCHAR>
|
||||
struct ClassTable
|
||||
{
|
||||
inline unsigned int get_class (hb_codepoint_t glyph_id, unsigned int outOfRange) const
|
||||
|
@ -645,6 +654,12 @@ struct ClassTable
|
|||
unsigned int i = glyph_id - firstGlyph;
|
||||
return i >= classArray.len ? outOfRange : classArray.arrayZ[i];
|
||||
}
|
||||
inline unsigned int get_class (hb_codepoint_t glyph_id,
|
||||
unsigned int num_glyphs HB_UNUSED,
|
||||
unsigned int outOfRange) const
|
||||
{
|
||||
return get_class (glyph_id, outOfRange);
|
||||
}
|
||||
inline bool sanitize (hb_sanitize_context_t *c) const
|
||||
{
|
||||
TRACE_SANITIZE (this);
|
||||
|
@ -652,7 +667,7 @@ struct ClassTable
|
|||
}
|
||||
protected:
|
||||
GlyphID firstGlyph; /* First glyph index included in the trimmed array. */
|
||||
ArrayOf<HBUINT8> classArray; /* The class codes (indexed by glyph index minus
|
||||
ArrayOf<HBUCHAR> classArray; /* The class codes (indexed by glyph index minus
|
||||
* firstGlyph). */
|
||||
public:
|
||||
DEFINE_SIZE_ARRAY (4, classArray);
|
||||
|
@ -663,15 +678,8 @@ struct ObsoleteTypes
|
|||
static const bool extended = false;
|
||||
typedef HBUINT16 HBUINT;
|
||||
typedef HBUINT8 HBUSHORT;
|
||||
struct ClassType : ClassTable
|
||||
{
|
||||
inline unsigned int get_class (hb_codepoint_t glyph_id,
|
||||
unsigned int num_glyphs HB_UNUSED,
|
||||
unsigned int outOfRange) const
|
||||
{
|
||||
return ClassTable::get_class (glyph_id, outOfRange);
|
||||
}
|
||||
};
|
||||
typedef ClassTable<HBUINT8> ClassType;
|
||||
|
||||
template <typename T>
|
||||
static inline unsigned int offsetToIndex (unsigned int offset,
|
||||
const void *base,
|
||||
|
@ -692,16 +700,8 @@ struct ExtendedTypes
|
|||
static const bool extended = true;
|
||||
typedef HBUINT32 HBUINT;
|
||||
typedef HBUINT16 HBUSHORT;
|
||||
struct ClassType : Lookup<HBUINT16>
|
||||
{
|
||||
inline unsigned int get_class (hb_codepoint_t glyph_id,
|
||||
unsigned int num_glyphs,
|
||||
unsigned int outOfRange) const
|
||||
{
|
||||
const HBUINT16 *v = get_value (glyph_id, num_glyphs);
|
||||
return v ? *v : outOfRange;
|
||||
}
|
||||
};
|
||||
typedef Lookup<HBUINT16> ClassType;
|
||||
|
||||
template <typename T>
|
||||
static inline unsigned int offsetToIndex (unsigned int offset,
|
||||
const void *base,
|
||||
|
|
Loading…
Reference in New Issue