[HB] Add HeadlessArrayTo<>
This commit is contained in:
parent
dcb6b60254
commit
e8cbaaf6d5
@ -314,12 +314,10 @@ struct Ligature {
|
||||
friend struct LigatureSet;
|
||||
|
||||
private:
|
||||
DEFINE_ARRAY_TYPE (GlyphID, component, (compCount ? compCount - 1 : 0));
|
||||
|
||||
inline bool substitute_ligature (LOOKUP_ARGS_DEF, bool is_mark) const {
|
||||
|
||||
unsigned int i, j;
|
||||
unsigned int count = compCount;
|
||||
unsigned int count = component.len;
|
||||
|
||||
if (HB_UNLIKELY (buffer->in_pos + count > buffer->in_length ||
|
||||
context_length < count))
|
||||
@ -336,7 +334,7 @@ struct Ligature {
|
||||
property & LookupFlag::MarkAttachmentType))
|
||||
is_mark = FALSE;
|
||||
|
||||
if (HB_LIKELY (IN_GLYPH(j) != (*this)[i - 1]))
|
||||
if (HB_LIKELY (IN_GLYPH(j) != component[i]))
|
||||
return false;
|
||||
}
|
||||
if ( _hb_ot_layout_has_new_glyph_classes (layout) )
|
||||
@ -383,8 +381,8 @@ struct Ligature {
|
||||
|
||||
private:
|
||||
GlyphID ligGlyph; /* GlyphID of ligature to substitute */
|
||||
USHORT compCount; /* Number of components in the ligature */
|
||||
GlyphID component[]; /* Array of component GlyphIDs--start
|
||||
HeadlessArrayOf<GlyphID>
|
||||
component; /* Array of component GlyphIDs--start
|
||||
* with the second component--ordered
|
||||
* in writing direction */
|
||||
};
|
||||
|
@ -362,9 +362,8 @@ struct ChainRule {
|
||||
backtrack; /* Array of backtracking values
|
||||
* (to be matched before the input
|
||||
* sequence) */
|
||||
USHORT inputCountX; /* Total number of values in the input
|
||||
* sequence (includes the first glyph) */
|
||||
USHORT inputX[]; /* Array of input values (start with
|
||||
HeadlessArrayOf<USHORT>
|
||||
inputX; /* Array of input values (start with
|
||||
* second glyph) */
|
||||
ArrayOf<USHORT>
|
||||
lookaheadX; /* Array of lookahead values's (to be
|
||||
|
@ -348,6 +348,25 @@ struct ArrayOf {
|
||||
if (HB_UNLIKELY (i >= len)) return Null(Type);
|
||||
return array[i];
|
||||
}
|
||||
inline unsigned int get_size () const {
|
||||
return sizeof (len) + len * sizeof (array[0]);
|
||||
}
|
||||
|
||||
USHORT len;
|
||||
Type array[];
|
||||
};
|
||||
|
||||
/* An array with a USHORT number of elements,
|
||||
* starting at second element. */
|
||||
template <typename Type>
|
||||
struct HeadlessArrayOf {
|
||||
inline const Type& operator [] (unsigned int i) const {
|
||||
if (HB_UNLIKELY (i >= len || !i)) return Null(Type);
|
||||
return array[i-1];
|
||||
}
|
||||
inline unsigned int get_size () const {
|
||||
return sizeof (len) + (len ? len - 1 : 0) * sizeof (array[0]);
|
||||
}
|
||||
|
||||
USHORT len;
|
||||
Type array[];
|
||||
|
Loading…
Reference in New Issue
Block a user