18393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius/*
28393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius *
38393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * (C) Copyright IBM Corp.  and others 1998-2013 - All Rights Reserved
48393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius *
58393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius */
68393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
78393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "LETypes.h"
88393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "MorphTables.h"
98393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "StateTables.h"
108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "MorphStateTables.h"
118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "SubtableProcessor2.h"
128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "StateTableProcessor2.h"
138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "IndicRearrangementProcessor2.h"
148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "LEGlyphStorage.h"
158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#include "LESwaps.h"
168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusU_NAMESPACE_BEGIN
188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusUOBJECT_DEFINE_RTTI_IMPLEMENTATION(IndicRearrangementProcessor2)
208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusIndicRearrangementProcessor2::IndicRearrangementProcessor2(const MorphSubtableHeader2 *morphSubtableHeader)
228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius  : StateTableProcessor2(morphSubtableHeader)
238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius{
248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    indicRearrangementSubtableHeader = (const IndicRearrangementSubtableHeader2 *) morphSubtableHeader;
258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    entryTable = (const IndicRearrangementStateEntry2 *) ((char *) &stateTableHeader->stHeader + entryTableOffset);
268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius}
278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusIndicRearrangementProcessor2::~IndicRearrangementProcessor2()
298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius{
308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius}
318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid IndicRearrangementProcessor2::beginStateTable()
338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius{
348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    firstGlyph = 0;
358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    lastGlyph = 0;
368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius}
378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusle_uint16 IndicRearrangementProcessor2::processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex2 index)
398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius{
408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    const IndicRearrangementStateEntry2 *entry = &entryTable[index];
418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    le_uint16 newState = SWAPW(entry->newStateIndex); // index to the new state
428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    IndicRearrangementFlags  flags =  (IndicRearrangementFlags) SWAPW(entry->flags);
438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    if (flags & irfMarkFirst) {
458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        firstGlyph = currGlyph;
468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    }
478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    if (flags & irfMarkLast) {
498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        lastGlyph = currGlyph;
508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    }
518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    doRearrangementAction(glyphStorage, (IndicRearrangementVerb) (flags & irfVerbMask));
538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    if (!(flags & irfDontAdvance)) {
558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        currGlyph += dir;
568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    }
578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    return newState; // index to new state
598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius}
608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid IndicRearrangementProcessor2::endStateTable()
628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius{
638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius}
648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphStorage, IndicRearrangementVerb verb) const
668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius{
678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    LEGlyphID a, b, c, d;
688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    le_int32 ia, ib, ic, id, ix, x;
698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    LEErrorCode success = LE_NO_ERROR;
708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    switch(verb)
728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    {
738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvNoAction:
748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvxA:
778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        x = firstGlyph + 1;
808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        while (x <= lastGlyph) {
828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage[x - 1] = glyphStorage[x];
838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            ix = glyphStorage.getCharIndex(x, success);
848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage.setCharIndex(x - 1, ix, success);
858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            x += 1;
868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = a;
898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ia, success);
908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvDx:
938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        d = glyphStorage[lastGlyph];
948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        x = lastGlyph - 1;
968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        while (x >= firstGlyph) {
988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage[x + 1] = glyphStorage[x];
998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            ix = glyphStorage.getCharIndex(x, success);
1008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage.setCharIndex(x + 1, ix, success);
1018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            x -= 1;
1028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = d;
1058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, id, success);
1068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
1078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvDxA:
1098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
1108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
1118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph,  success);
1128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = glyphStorage[lastGlyph];
1148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = a;
1158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, id, success);
1178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph,  ia, success);
1188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
1198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvxAB:
1218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
1228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        b = glyphStorage[firstGlyph + 1];
1238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
1248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ib = glyphStorage.getCharIndex(firstGlyph + 1, success);
1258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        x = firstGlyph + 2;
1268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        while (x <= lastGlyph) {
1288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage[x - 2] = glyphStorage[x];
1298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            ix = glyphStorage.getCharIndex(x, success);
1308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage.setCharIndex(x - 2, ix, success);
1318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            x += 1;
1328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph - 1] = a;
1358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = b;
1368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph - 1, ia, success);
1388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ib, success);
1398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
1408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvxBA:
1428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
1438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        b = glyphStorage[firstGlyph + 1];
1448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
1458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ib = glyphStorage.getCharIndex(firstGlyph + 1, success);
1468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        x = firstGlyph + 2;
1478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        while (x <= lastGlyph) {
1498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage[x - 2] = glyphStorage[x];
1508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            ix = glyphStorage.getCharIndex(x, success);
1518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage.setCharIndex(x - 2, ix, success);
1528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            x += 1;
1538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph - 1] = b;
1568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = a;
1578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph - 1, ib, success);
1598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ia, success);
1608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
1618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvCDx:
1638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        c = glyphStorage[lastGlyph - 1];
1648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        d = glyphStorage[lastGlyph];
1658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
1668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
1678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        x = lastGlyph - 2;
1688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        while (x >= firstGlyph) {
1708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage[x + 2] = glyphStorage[x];
1718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            ix = glyphStorage.getCharIndex(x, success);
1728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage.setCharIndex(x + 2, ix, success);
1738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            x -= 1;
1748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = c;
1778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph + 1] = d;
1788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, ic, success);
1808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph + 1, id, success);
1818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
1828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvDCx:
1848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        c = glyphStorage[lastGlyph - 1];
1858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        d = glyphStorage[lastGlyph];
1868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
1878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
1888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        x = lastGlyph - 2;
1898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        while (x >= firstGlyph) {
1918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage[x + 2] = glyphStorage[x];
1928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            ix = glyphStorage.getCharIndex(x, success);
1938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage.setCharIndex(x + 2, ix, success);
1948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            x -= 1;
1958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
1968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
1978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = d;
1988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph + 1] = c;
1998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, id, success);
2018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph + 1, ic, success);
2028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
2038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvCDxA:
2058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
2068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        c = glyphStorage[lastGlyph - 1];
2078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        d = glyphStorage[lastGlyph];
2088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
2098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
2108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
2118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        x = lastGlyph - 2;
2128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        while (x > firstGlyph) {
2148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage[x + 1] = glyphStorage[x];
2158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            ix = glyphStorage.getCharIndex(x, success);
2168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage.setCharIndex(x + 1, ix, success);
2178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            x -= 1;
2188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
2198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = c;
2218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph + 1] = d;
2228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = a;
2238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, ic, success);
2258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph + 1, id, success);
2268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ia, success);
2278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
2288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvDCxA:
2308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
2318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        c = glyphStorage[lastGlyph - 1];
2328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        d = glyphStorage[lastGlyph];
2338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
2348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
2358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
2368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        x = lastGlyph - 2;
2378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        while (x > firstGlyph) {
2398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage[x + 1] = glyphStorage[x];
2408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            ix = glyphStorage.getCharIndex(x, success);
2418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage.setCharIndex(x + 1, ix, success);
2428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            x -= 1;
2438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
2448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = d;
2468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph + 1] = c;
2478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = a;
2488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, id, success);
2508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph + 1, ic, success);
2518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ia, success);
2528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
2538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvDxAB:
2558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
2568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        b = glyphStorage[firstGlyph + 1];
2578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        d = glyphStorage[lastGlyph];
2588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
2598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ib = glyphStorage.getCharIndex(firstGlyph + 1, success);
2608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
2618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        x = firstGlyph + 2;
2628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        while (x < lastGlyph) {
2648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage[x - 2] = glyphStorage[x];
2658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            ix = glyphStorage.getCharIndex(x, success);
2668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage.setCharIndex(x - 2, ix, success);
2678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            x += 1;
2688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
2698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = d;
2718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph - 1] = a;
2728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = b;
2738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, id, success);
2758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph - 1, ia, success);
2768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ib, success);
2778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
2788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvDxBA:
2808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
2818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        b = glyphStorage[firstGlyph + 1];
2828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        d = glyphStorage[lastGlyph];
2838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
2848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ib = glyphStorage.getCharIndex(firstGlyph + 1, success);
2858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
2868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        x = firstGlyph + 2;
2878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        while (x < lastGlyph) {
2898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage[x - 2] = glyphStorage[x];
2908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            ix = glyphStorage.getCharIndex(x, success);
2918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            glyphStorage.setCharIndex(x - 2, ix, success);
2928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius            x += 1;
2938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        }
2948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = d;
2968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph - 1] = b;
2978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = a;
2988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
2998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, id, success);
3008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph - 1, ib, success);
3018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ia, success);
3028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
3038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvCDxAB:
3058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
3068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        b = glyphStorage[firstGlyph + 1];
3078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = glyphStorage[lastGlyph - 1];
3098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph + 1] = glyphStorage[lastGlyph];
3108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph - 1] = a;
3128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = b;
3138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
3158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ib = glyphStorage.getCharIndex(firstGlyph + 1, success);
3168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
3178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
3188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, ic, success);
3208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph + 1, id, success);
3218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph - 1, ia, success);
3238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ib, success);
3248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
3258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvCDxBA:
3278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
3288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        b = glyphStorage[firstGlyph + 1];
3298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = glyphStorage[lastGlyph - 1];
3318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph + 1] = glyphStorage[lastGlyph];
3328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph - 1] = b;
3348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = a;
3358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
3378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ib = glyphStorage.getCharIndex(firstGlyph + 1, success);
3388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
3398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
3408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, ic, success);
3428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph + 1, id, success);
3438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph - 1, ib, success);
3458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ia, success);
3468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
3478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvDCxAB:
3498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
3508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        b = glyphStorage[firstGlyph + 1];
3518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = glyphStorage[lastGlyph];
3538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph + 1] = glyphStorage[lastGlyph - 1];
3548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph - 1] = a;
3568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = b;
3578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
3598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ib = glyphStorage.getCharIndex(firstGlyph + 1, success);
3608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
3618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
3628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, id, success);
3648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph + 1, ic, success);
3658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph - 1, ia, success);
3678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ib, success);
3688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
3698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    case irvDCxBA:
3718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        a = glyphStorage[firstGlyph];
3728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        b = glyphStorage[firstGlyph + 1];
3738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph] = glyphStorage[lastGlyph];
3758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[firstGlyph + 1] = glyphStorage[lastGlyph - 1];
3768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph - 1] = b;
3788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage[lastGlyph] = a;
3798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ia = glyphStorage.getCharIndex(firstGlyph, success);
3818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ib = glyphStorage.getCharIndex(firstGlyph + 1, success);
3828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        ic = glyphStorage.getCharIndex(lastGlyph - 1, success);
3838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        id = glyphStorage.getCharIndex(lastGlyph, success);
3848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph, id, success);
3868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(firstGlyph + 1, ic, success);
3878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph - 1, ib, success);
3898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        glyphStorage.setCharIndex(lastGlyph, ia, success);
3908393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
3918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    default:
3938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius        break;
3948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    }
3958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius}
3978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
3988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusU_NAMESPACE_END
399