private int readUnsignedShort(RandomAccessFileOrArray stream) throws java.io.IOException { if (isBigEndian) { return stream.readUnsignedShort(); } else { return stream.readUnsignedShortLE(); } }
public static int[] readUShortArray(RandomAccessFileOrArray rf, int size, int location) throws java.io.IOException { int[] ret = new int[size]; for (int k = 0; k < size; ++k) { int offset = rf.readUnsignedShort(); ret[k] = offset == 0 ? offset : offset + location; } return ret; }
private static int readUnsignedShort(RandomAccessFileOrArray stream, boolean isBigEndian) throws java.io.IOException { if (isBigEndian) { return stream.readUnsignedShort(); } else { return stream.readUnsignedShortLE(); } }
public static int[] readUShortArray(RandomAccessFileOrArray rf, int size, int location) throws java.io.IOException { int[] ret = new int[size]; for (int k = 0; k < size; ++k) { int offset = rf.readUnsignedShort(); ret[k] = offset == 0 ? offset : offset + location; } return ret; }
private int readUnsignedShort(RandomAccessFileOrArray stream) throws java.io.IOException { if (isBigEndian) { return stream.readUnsignedShort(); } else { return stream.readUnsignedShortLE(); } }
public static SubstLookupRecord[] readSubstLookupRecords(RandomAccessFileOrArray rf, int substCount) throws java.io.IOException { SubstLookupRecord[] substPosLookUpRecords = new SubstLookupRecord[substCount]; for (int i = 0; i < substCount; ++i) { SubstLookupRecord slr = new SubstLookupRecord(); slr.sequenceIndex = rf.readUnsignedShort(); slr.lookupListIndex = rf.readUnsignedShort(); substPosLookUpRecords[i] = slr; } return substPosLookUpRecords; }
private static int readUnsignedShort(RandomAccessFileOrArray stream, boolean isBigEndian) throws java.io.IOException { if (isBigEndian) { return stream.readUnsignedShort(); } else { return stream.readUnsignedShortLE(); } }
public static SubstLookupRecord[] readSubstLookupRecords(RandomAccessFileOrArray rf, int substCount) throws java.io.IOException { SubstLookupRecord[] substPosLookUpRecords = new SubstLookupRecord[substCount]; for (int i = 0; i < substCount; ++i) { SubstLookupRecord slr = new SubstLookupRecord(); slr.sequenceIndex = rf.readUnsignedShort(); slr.lookupListIndex = rf.readUnsignedShort(); substPosLookUpRecords[i] = slr; } return substPosLookUpRecords; }
private void readLookupTable(int lookupTableLocation) throws java.io.IOException { rf.seek(lookupTableLocation); int lookupType = rf.readUnsignedShort(); int lookupFlag = rf.readUnsignedShort(); int subTableCount = rf.readUnsignedShort(); int[] subTableLocations = readUShortArray(subTableCount, lookupTableLocation); lookupList.add(readLookupTable(lookupType, lookupFlag, subTableLocations)); } }
protected int readNumGlyphs() throws java.io.IOException { int[] table_location = tables.get("maxp"); if (table_location == null) { return 65536; } else { raf.seek(table_location[0] + 4); return raf.readUnsignedShort(); } }
protected int readNumGlyphs() throws java.io.IOException { int[] table_location = tables.get("maxp"); if (table_location == null) { return 65536; } else { raf.seek(table_location[0] + 4); return raf.readUnsignedShort(); } }
protected TagAndLocation[] readTagAndLocations(int baseLocation) throws java.io.IOException { int count = rf.readUnsignedShort(); TagAndLocation[] tagslLocs = new TagAndLocation[count]; for (int k = 0; k < count; ++k) { TagAndLocation tl = new TagAndLocation(); tl.tag = rf.readString(4, "utf-8"); tl.location = rf.readUnsignedShort() + baseLocation; tagslLocs[k] = tl; } return tagslLocs; }
private void readLookupTable(int lookupTableLocation) throws java.io.IOException { rf.seek(lookupTableLocation); int lookupType = rf.readUnsignedShort(); int lookupFlag = rf.readUnsignedShort(); int subTableCount = rf.readUnsignedShort(); int[] subTableLocations = readUShortArray(subTableCount, lookupTableLocation); lookupList.add(readLookupTable(lookupType, lookupFlag, subTableLocations)); } }
protected TagAndLocation[] readTagAndLocations(int baseLocation) throws java.io.IOException { int count = rf.readUnsignedShort(); TagAndLocation[] tagslLocs = new TagAndLocation[count]; for (int k = 0; k < count; ++k) { TagAndLocation tl = new TagAndLocation(); tl.tag = rf.readString(4, "utf-8"); tl.location = rf.readUnsignedShort() + baseLocation; tagslLocs[k] = tl; } return tagslLocs; }
private LanguageRecord readLanguageRecord(TagAndLocation tagLoc) throws java.io.IOException { LanguageRecord rec = new LanguageRecord(); //skip lookup order openTypeReader.rf.seek(tagLoc.location + 2); rec.featureRequired = openTypeReader.rf.readUnsignedShort(); int count = openTypeReader.rf.readUnsignedShort(); rec.features = openTypeReader.readUShortArray(count); rec.tag = tagLoc.tag; return rec; } }
private LanguageRecord readLanguageRecord(TagAndLocation tagLoc) throws java.io.IOException { LanguageRecord rec = new LanguageRecord(); //skip lookup order openTypeReader.rf.seek(tagLoc.location + 2); rec.featureRequired = openTypeReader.rf.readUnsignedShort(); int count = openTypeReader.rf.readUnsignedShort(); rec.features = openTypeReader.readUShortArray(count); rec.tag = tagLoc.tag; return rec; } }
protected void readSubTableFormat3(int subTableLocation) throws java.io.IOException { int glyphCount = openReader.rf.readUnsignedShort(); int substCount = openReader.rf.readUnsignedShort(); int[] coverageOffsets = openReader.readUShortArray(glyphCount, subTableLocation); SubstLookupRecord[] substLookupRecords = openReader.readSubstLookupRecords(substCount); List<Set<Integer>> coverages = new ArrayList<>(glyphCount); openReader.readCoverages(coverageOffsets, coverages); SubTableLookup5Format3.SubstRuleFormat3 rule = new SubTableLookup5Format3.SubstRuleFormat3(coverages, substLookupRecords); subTables.add(new SubTableLookup5Format3(openReader, lookupFlag, rule)); } }
public static List<GposAnchor[]> readBaseArray(OpenTypeFontTableReader tableReader, int classCount, int location) throws java.io.IOException { List<GposAnchor[]> baseArray = new ArrayList<>(); tableReader.rf.seek(location); int baseCount = tableReader.rf.readUnsignedShort(); int[] anchorLocations = readUShortArray(tableReader.rf, baseCount * classCount, location); int idx = 0; for (int k = 0; k < baseCount; ++k) { baseArray.add(readAnchorArray(tableReader, anchorLocations, idx, idx + classCount)); idx += classCount; } return baseArray; }
public static List<GposAnchor[]> readBaseArray(OpenTypeFontTableReader tableReader, int classCount, int location) throws java.io.IOException { List<GposAnchor[]> baseArray = new ArrayList<>(); tableReader.rf.seek(location); int baseCount = tableReader.rf.readUnsignedShort(); int[] anchorLocations = readUShortArray(tableReader.rf, baseCount * classCount, location); int idx = 0; for (int k = 0; k < baseCount; ++k) { baseArray.add(readAnchorArray(tableReader, anchorLocations, idx, idx + classCount)); idx += classCount; } return baseArray; }
protected void readSubTableFormat3(int subTableLocation) throws java.io.IOException { int glyphCount = openReader.rf.readUnsignedShort(); int substCount = openReader.rf.readUnsignedShort(); int[] coverageOffsets = openReader.readUShortArray(glyphCount, subTableLocation); SubstLookupRecord[] substLookupRecords = openReader.readSubstLookupRecords(substCount); List<Set<Integer>> coverages = new ArrayList<>(glyphCount); openReader.readCoverages(coverageOffsets, coverages); SubTableLookup5Format3.SubstRuleFormat3 rule = new SubTableLookup5Format3.SubstRuleFormat3(coverages, substLookupRecords); subTables.add(new SubTableLookup5Format3(openReader, lookupFlag, rule)); } }