5891N/A * or visit www.oracle.com if you need additional information or have any
5891N/A#include "MorphTables.h"
5891N/A#include "StateTables.h"
5891N/A#include "MorphStateTables.h"
5891N/A#include "SubtableProcessor2.h"
5891N/A#include "StateTableProcessor2.h"
5891N/A#include "LigatureSubstProc2.h"
5891N/A#include "LEGlyphStorage.h"
5980N/ALigatureSubstitutionProcessor2::LigatureSubstitutionProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success)
5980N/A ligatureSubstitutionHeader(morphSubtableHeader, success), componentOffset(0), ligatureOffset(0), entryTable()
5980N/A entryTable = LEReferenceToArrayOf<LigatureSubstitutionStateEntry2>(stHeader, success, entryTableOffset, LE_UNBOUNDED_ARRAY);
5980N/Ale_uint16 LigatureSubstitutionProcessor2::processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex2 index, LEErrorCode &success)
5891N/A if (++m >= nComponents) {
5971N/A return nextStateIndex;
5891N/A if (actionOffset != 0) {
5980N/A ap.addObject(ligActionIndex - 1, success); // index offset ( one before the actual start, because we will pre-increment)
5980N/A LEReferenceToArrayOf<TTGlyphID> ligatureTable(stHeader, success, ligatureOffset, LE_UNBOUNDED_ARRAY);
5980N/A LEReferenceToArrayOf<le_uint16> componentTable(stHeader, success, componentOffset, LE_UNBOUNDED_ARRAY);
5980N/A i += SWAPW(componentTable(LE_GET_GLYPH(glyphStorage[componentGlyph]) + (SignExtend(offset, lafComponentOffsetMask)),success));
5971N/A } while (!(action & lafLast) && (m>=0) ); // stop if last bit is set, or if run out of items
5891N/A if (++m >= nComponents) {
5891N/A return nextStateIndex;