protected void CreateNewGlyphTables()
{
newLocaTable = new int[locaTable.Length];
int[] activeGlyphs = new int[glyphsInList.Count];
for (int k = 0; k < activeGlyphs.Length; ++k)
activeGlyphs[k] = glyphsInList[k];
Array.Sort(activeGlyphs);
int glyfSize = 0;
for (int k = 0; k < activeGlyphs.Length; ++k) {
int glyph = activeGlyphs[k];
glyfSize += locaTable[glyph + 1] - locaTable[glyph];
}
glyfTableRealSize = glyfSize;
glyfSize = (glyfSize + 3) & (~3);
newGlyfTable = new byte[glyfSize];
int glyfPtr = 0;
int listGlyf = 0;
for (int k = 0; k < newLocaTable.Length; ++k) {
newLocaTable[k] = glyfPtr;
if (listGlyf < activeGlyphs.Length && activeGlyphs[listGlyf] == k) {
++listGlyf;
newLocaTable[k] = glyfPtr;
int start = locaTable[k];
int len = locaTable[k + 1] - start;
if (len > 0) {
rf.Seek(tableGlyphOffset + start);
rf.ReadFully(newGlyfTable, glyfPtr, len);
glyfPtr += len;
}
}
}
}