public void writeLookupSubtable(OpenTypeTableWriter writer) { snapshot(); int multipleSubstitutionsBase = writer.getOutputIndex(); int coverageTableIndex, sequenceOffsetIndex; int sequenceCount = decompEntries.length; writer.writeData(1); // format = 1 coverageTableIndex = writer.getOutputIndex(); writer.writeData(0); // coverage table offset (fixed later) writer.writeData(sequenceCount); sequenceOffsetIndex = writer.getOutputIndex(); for (int s = 0; s < sequenceCount; s += 1) { writer.writeData(0); // offset to sequence table (fixed later); } for (int s = 0; s < sequenceCount; s += 1) { DecompEntry entry = decompEntries[s]; int decompCount = entry.getDecompositionCount(); writer.fixOffset(sequenceOffsetIndex++, multipleSubstitutionsBase); writer.writeData(decompCount); // glyphCount for (int g = 0; g < decompCount; g += 1) { writer.writeData(entry.getDecomposedCharacter(g)); } } // write a format 1 coverage table writer.fixOffset(coverageTableIndex, multipleSubstitutionsBase); writer.writeData(1); // format = 1 writer.writeData(sequenceCount); // glyphCount for (int i = 0; i < sequenceCount; i += 1) { writer.writeData(decompEntries[i].getComposedCharacter()); } }