/** * Reads a format 10 subtable. * * @param data the data stream of the to be parsed ttf font * @param numGlyphs number of glyphs to be read * @throws IOException If there is an error parsing the true type font. */ protected void processSubtype10(TTFDataStream data, int numGlyphs) throws IOException { long startCode = data.readUnsignedInt(); long numChars = data.readUnsignedInt(); if (numChars > Integer.MAX_VALUE) { throw new IOException("Invalid number of Characters"); } if (startCode < 0 || startCode > 0x0010FFFF || (startCode + numChars) > 0x0010FFFF || ((startCode + numChars) >= 0x0000D800 && (startCode + numChars) <= 0x0000DFFF)) { throw new IOException("Invalid Characters codes"); } }
long nbGroups = data.readUnsignedInt(); characterCodeToGlyphId = new HashMap<>(numGlyphs); for (long i = 0; i < nbGroups; ++i) long firstCode = data.readUnsignedInt(); long endCode = data.readUnsignedInt(); long glyphId = data.readUnsignedInt();
long nbGroups = data.readUnsignedInt(); glyphIdToCharacterCode = newGlyphIdToCharacterCode(numGlyphs); characterCodeToGlyphId = new HashMap<>(numGlyphs); for (long i = 0; i < nbGroups; ++i) long firstCode = data.readUnsignedInt(); long endCode = data.readUnsignedInt(); long startGlyph = data.readUnsignedInt();
/** * This will read the required data from the stream. * * @param data The stream to read the data from. * @throws IOException If there is an error reading the data. */ public void initData(TTFDataStream data) throws IOException { platformId = data.readUnsignedShort(); platformEncodingId = data.readUnsignedShort(); subTableOffset = data.readUnsignedInt(); }
long nbGroups = data.readUnsignedInt(); long firstCode = data.readUnsignedInt(); long endCode = data.readUnsignedInt(); long startGlyph = data.readUnsignedInt();
numFonts = (int)stream.readUnsignedInt(); fontOffsets = new long[numFonts]; for (int i = 0; i < numFonts; i++) fontOffsets[i] = stream.readUnsignedInt();
underlinePosition = data.readSignedShort(); underlineThickness = data.readSignedShort(); isFixedPitch = data.readUnsignedInt(); minMemType42 = data.readUnsignedInt(); maxMemType42 = data.readUnsignedInt(); mimMemType1 = data.readUnsignedInt(); maxMemType1 = data.readUnsignedInt();
numSubtables = (int) data.readUnsignedInt();
offsets[i] = data.readUnsignedInt();
familyClass = data.readSignedShort(); panose = data.read(10); unicodeRange1 = data.readUnsignedInt(); unicodeRange2 = data.readUnsignedInt(); unicodeRange3 = data.readUnsignedInt(); unicodeRange4 = data.readUnsignedInt(); achVendId = data.readString(4); fsSelection = data.readUnsignedShort(); if (version >= 1) codePageRange1 = data.readUnsignedInt(); codePageRange2 = data.readUnsignedInt();
length = data.readUnsignedInt(); version = data.readUnsignedInt();
/** * This will read the required data from the stream. * * @param ttf The font that is being read. * @param data The stream to read the data from. * @throws IOException If there is an error reading the data. */ @Override public void read(TrueTypeFont ttf, TTFDataStream data) throws IOException { version = data.read32Fixed(); fontRevision = data.read32Fixed(); checkSumAdjustment = data.readUnsignedInt(); magicNumber = data.readUnsignedInt(); flags = data.readUnsignedShort(); unitsPerEm = data.readUnsignedShort(); created = data.readInternationalDate(); modified = data.readInternationalDate(); xMin = data.readSignedShort(); yMin = data.readSignedShort(); xMax = data.readSignedShort(); yMax = data.readSignedShort(); macStyle = data.readUnsignedShort(); lowestRecPPEM = data.readUnsignedShort(); fontDirectionHint = data.readSignedShort(); indexToLocFormat = data.readSignedShort(); glyphDataFormat = data.readSignedShort(); initialized = true; } /**
table.setCheckSum(raf.readUnsignedInt()); table.setOffset(raf.readUnsignedInt()); table.setLength(raf.readUnsignedInt());
@Override @SuppressWarnings({"squid:S1854"}) void read(TrueTypeFont ttf, TTFDataStream data) throws IOException { long start = data.getCurrentPosition(); @SuppressWarnings({"unused"}) int majorVersion = data.readUnsignedShort(); int minorVersion = data.readUnsignedShort(); int scriptListOffset = data.readUnsignedShort(); int featureListOffset = data.readUnsignedShort(); int lookupListOffset = data.readUnsignedShort(); @SuppressWarnings({"unused"}) long featureVariationsOffset = -1L; if (minorVersion == 1L) { featureVariationsOffset = data.readUnsignedInt(); } scriptList = readScriptList(data, start + scriptListOffset); featureListTable = readFeatureList(data, start + featureListOffset); lookupListTable = readLookupList(data, start + lookupListOffset); GlyphSubstitutionDataExtractor glyphSubstitutionDataExtractor = new GlyphSubstitutionDataExtractor(); gsubData = glyphSubstitutionDataExtractor .getGsubData(scriptList, featureListTable, lookupListTable); }
/** * Reads a format 10 subtable. * * @param data the data stream of the to be parsed ttf font * @param numGlyphs number of glyphs to be read * @throws IOException If there is an error parsing the true type font. */ protected void processSubtype10(TTFDataStream data, int numGlyphs) throws IOException { long startCode = data.readUnsignedInt(); long numChars = data.readUnsignedInt(); if (numChars > Integer.MAX_VALUE) { throw new IOException("Invalid number of Characters"); } if (startCode < 0 || startCode > 0x0010FFFF || (startCode + numChars) > 0x0010FFFF || ((startCode + numChars) >= 0x0000D800 && (startCode + numChars) <= 0x0000DFFF)) { throw new IOException("Invalid Characters codes"); } }
/** * Reads a format 10 subtable. * * @param data the data stream of the to be parsed ttf font * @param numGlyphs number of glyphs to be read * @throws IOException If there is an error parsing the true type font. */ protected void processSubtype10(TTFDataStream data, int numGlyphs) throws IOException { long startCode = data.readUnsignedInt(); long numChars = data.readUnsignedInt(); if (numChars > Integer.MAX_VALUE) { throw new IOException("Invalid number of Characters"); } if (startCode < 0 || startCode > 0x0010FFFF || (startCode + numChars) > 0x0010FFFF || ((startCode + numChars) >= 0x0000D800 && (startCode + numChars) <= 0x0000DFFF)) { throw new IOException("Invalid Characters codes"); } }
/** * This will read the required data from the stream. * * @param data The stream to read the data from. * @throws IOException If there is an error reading the data. */ public void initData(TTFDataStream data) throws IOException { platformId = data.readUnsignedShort(); platformEncodingId = data.readUnsignedShort(); subTableOffset = data.readUnsignedInt(); }
/** * This will read the required data from the stream. * * @param data The stream to read the data from. * @throws IOException If there is an error reading the data. */ public void initData(TTFDataStream data) throws IOException { platformId = data.readUnsignedShort(); platformEncodingId = data.readUnsignedShort(); subTableOffset = data.readUnsignedInt(); }
/** * This will read the required data from the stream. * * @param ttf The font that is being read. * @param data The stream to read the data from. * @throws IOException If there is an error reading the data. */ public void read(TrueTypeFont ttf, TTFDataStream data) throws IOException { HeaderTable head = ttf.getHeader(); int numGlyphs = ttf.getNumberOfGlyphs(); offsets = new long[ numGlyphs +1]; for( int i=0; i<numGlyphs+1; i++ ) { if( head.getIndexToLocFormat() == SHORT_OFFSETS ) { offsets[i] = data.readUnsignedShort() * 2; } else if( head.getIndexToLocFormat() == LONG_OFFSETS ) { offsets[i] = data.readUnsignedInt(); } else { throw new IOException( "Error:TTF.loca unknown offset format."); } } initialized = true; } /**
@Override void read(TrueTypeFont ttf, TTFDataStream data) throws IOException { long start = data.getCurrentPosition(); @SuppressWarnings("unused") int majorVersion = data.readUnsignedShort(); int minorVersion = data.readUnsignedShort(); int scriptListOffset = data.readUnsignedShort(); int featureListOffset = data.readUnsignedShort(); int lookupListOffset = data.readUnsignedShort(); @SuppressWarnings("unused") long featureVariationsOffset = -1L; if (minorVersion == 1L) { featureVariationsOffset = data.readUnsignedInt(); } scriptList = readScriptList(data, start + scriptListOffset); featureList = readFeatureList(data, start + featureListOffset); lookupList = readLookupList(data, start + lookupListOffset); }