@Override public void close() throws IOException { stream.close(); } }
int segCountX2 = data.readUnsignedShort(); int segCount = segCountX2 / 2; int searchRange = data.readUnsignedShort(); int entrySelector = data.readUnsignedShort(); int rangeShift = data.readUnsignedShort(); int[] endCount = data.readUnsignedShortArray(segCount); int reservedPad = data.readUnsignedShort(); int[] startCount = data.readUnsignedShortArray(segCount); int[] idDelta = data.readUnsignedShortArray(segCount); long idRangeOffsetPosition = data.getCurrentPosition(); int[] idRangeOffset = data.readUnsignedShortArray(segCount); data.seek(glyphOffset); int glyphIndex = data.readUnsignedShort(); if (glyphIndex != 0)
@Override public InputStream getOriginalData() throws IOException { return stream.getOriginalData(); }
/** * Read a 16.16 fixed value, where the first 16 bits are the decimal and the last 16 bits are the fraction. * * @return A 32 bit value. * @throws IOException If there is an error reading the data. */ public float read32Fixed() throws IOException { float retval = 0; retval = readSignedShort(); retval += (readUnsignedShort() / 65536.0); return retval; }
/** * 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; } /**
/** * 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 { version = data.read32Fixed(); numGlyphs = data.readUnsignedShort(); maxPoints = data.readUnsignedShort(); maxContours = data.readUnsignedShort(); maxCompositePoints = data.readUnsignedShort(); maxCompositeContours = data.readUnsignedShort(); maxZones = data.readUnsignedShort(); maxTwilightPoints = data.readUnsignedShort(); maxStorage = data.readUnsignedShort(); maxFunctionDefs = data.readUnsignedShort(); maxInstructionDefs = data.readUnsignedShort(); maxStackElements = data.readUnsignedShort(); maxSizeOfInstructions = data.readUnsignedShort(); maxComponentElements = data.readUnsignedShort(); maxComponentDepth = data.readUnsignedShort(); initialized = true; } }
public void read(TrueTypeFont ttf, TTFDataStream data) throws IOException formatType = data.read32Fixed(); italicAngle = data.read32Fixed(); underlinePosition = data.readSignedShort(); underlineThickness = data.readSignedShort(); isFixedPitch = data.readUnsignedInt(); minMemType42 = data.readUnsignedInt(); maxMemType42 = data.readUnsignedInt(); mimMemType1 = data.readUnsignedInt(); maxMemType1 = data.readUnsignedInt(); int numGlyphs = data.readUnsignedShort(); int[] glyphNameIndex = new int[numGlyphs]; glyphNames = new String[numGlyphs]; for (int i = 0; i < numGlyphs; i++) int index = data.readUnsignedShort(); glyphNameIndex[i] = index; for (int i = 0; i < maxIndex - WGL4Names.NUMBER_OF_MAC_GLYPHS + 1; i++) int numberOfChars = data.readUnsignedByte(); nameArray[i] = data.readString(numberOfChars); int offset = data.readSignedByte(); glyphNameIndex[i] = i + 1 + offset;
/** * 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 { version = data.read32Fixed(); ascender = data.readSignedShort(); descender = data.readSignedShort(); lineGap = data.readSignedShort(); advanceWidthMax = data.readUnsignedShort(); minLeftSideBearing = data.readSignedShort(); minRightSideBearing = data.readSignedShort(); xMaxExtent = data.readSignedShort(); caretSlopeRise = data.readSignedShort(); caretSlopeRun = data.readSignedShort(); reserved1 = data.readSignedShort(); reserved2 = data.readSignedShort(); reserved3 = data.readSignedShort(); reserved4 = data.readSignedShort(); reserved5 = data.readSignedShort(); metricDataFormat = data.readSignedShort(); numberOfHMetrics = data.readUnsignedShort(); initialized = true; }
version = data.readUnsignedShort(); averageCharWidth = data.readSignedShort(); weightClass = data.readUnsignedShort(); widthClass = data.readUnsignedShort(); fsType = data.readSignedShort(); subscriptXSize = data.readSignedShort(); subscriptYSize = data.readSignedShort(); subscriptXOffset = data.readSignedShort(); subscriptYOffset = data.readSignedShort(); superscriptXSize = data.readSignedShort(); superscriptYSize = data.readSignedShort(); superscriptXOffset = data.readSignedShort(); superscriptYOffset = data.readSignedShort(); strikeoutSize = data.readSignedShort(); strikeoutPosition = data.readSignedShort(); 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(); firstCharIndex = data.readUnsignedShort(); lastCharIndex = data.readUnsignedShort(); typoAscender = data.readSignedShort(); typoDescender = data.readSignedShort(); typoLineGap = data.readSignedShort(); winAscent = data.readUnsignedShort();
String tag = stream.readTag(); if (!tag.equals("ttcf")) float version = stream.read32Fixed(); numFonts = (int)stream.readUnsignedInt(); fontOffsets = new long[numFonts]; for (int i = 0; i < numFonts; i++) fontOffsets[i] = stream.readUnsignedInt(); int ulDsigTag = stream.readUnsignedShort(); int ulDsigLength = stream.readUnsignedShort(); int ulDsigOffset = stream.readUnsignedShort();
for (int i = 0; i < 256; i++) subHeaderKeys[i] = data.readUnsignedShort(); maxSubHeaderIndex = Math.max(maxSubHeaderIndex, subHeaderKeys[i] / 8); for (int i = 0; i <= maxSubHeaderIndex; ++i) int firstCode = data.readUnsignedShort(); int entryCount = data.readUnsignedShort(); short idDelta = data.readSignedShort(); int idRangeOffset = data.readUnsignedShort() - (maxSubHeaderIndex + 1 - i - 1) * 8 - 2; subHeaders[i] = new SubHeader(firstCode, entryCount, idDelta, idRangeOffset); long startGlyphIndexOffset = data.getCurrentPosition(); glyphIdToCharacterCode = newGlyphIdToCharacterCode(numGlyphs); characterCodeToGlyphId = new HashMap<>(numGlyphs); int idDelta = sh.getIdDelta(); int entryCount = sh.getEntryCount(); data.seek(startGlyphIndexOffset + idRangeOffset); for (int j = 0; j < entryCount; ++j) int p = data.readUnsignedShort();
/** * Returns the raw bytes of the given table. * @param table the table to read. * @throws IOException if there was an error accessing the table. */ public byte[] getTableBytes(TTFTable table) throws IOException { synchronized (lockReadtable) { // save current position long currentPosition = data.getCurrentPosition(); data.seek(table.getOffset()); // read all data byte[] bytes = data.read((int) table.getLength()); // restore current position data.seek(currentPosition); return bytes; } }
flags = bais.readSignedShort(); glyphIndex = bais.readUnsignedShort();// number of glyph in a font is uint16 argument1 = bais.readSignedShort(); argument2 = bais.readSignedShort(); argument1 = (short) bais.readSignedByte(); argument2 = (short) bais.readSignedByte(); int i = bais.readSignedShort(); xscale = yscale = i / (double) 0x4000; short i = bais.readSignedShort(); xscale = i / (double) 0x4000; i = bais.readSignedShort(); yscale = i / (double) 0x4000; int i = bais.readSignedShort(); xscale = i / (double) 0x4000; i = bais.readSignedShort(); scale01 = i / (double) 0x4000; i = bais.readSignedShort(); scale10 = i / (double) 0x4000; i = bais.readSignedShort(); yscale = i / (double) 0x4000;
/** * Read the given table if necessary. Package-private, used by TTFParser only. * * @param table the table to be initialized * * @throws IOException if there was an error reading the table. */ void readTable(TTFTable table) throws IOException { // PDFBOX-4219: synchronize on data because it is accessed by several threads // when PDFBox is accessing a standard 14 font for the first time synchronized (data) { // save current position long currentPosition = data.getCurrentPosition(); data.seek(table.getOffset()); table.read(this, data); // restore current position data.seek(currentPosition); } }
@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); }
/** * Read a signed byte. * * @return A signed byte. * @throws IOException If there is an error reading the data. */ public int readSignedByte() throws IOException { int signedByte = read(); return signedByte < 127 ? signedByte : signedByte - 256; }
private LookupSubTable readLookupSubTable(TTFDataStream data, long offset) throws IOException { data.seek(offset); int substFormat = data.readUnsignedShort(); switch (substFormat) { case 1: { int coverageOffset = data.readUnsignedShort(); short deltaGlyphID = data.readSignedShort(); CoverageTable coverageTable = readCoverageTable(data, offset + coverageOffset); return new LookupTypeSingleSubstFormat1(substFormat, coverageTable, deltaGlyphID); } case 2: { int coverageOffset = data.readUnsignedShort(); int glyphCount = data.readUnsignedShort(); int[] substituteGlyphIDs = new int[glyphCount]; for (int i = 0; i < glyphCount; i++) { substituteGlyphIDs[i] = data.readUnsignedShort(); } CoverageTable coverageTable = readCoverageTable(data, offset + coverageOffset); return new LookupTypeSingleSubstFormat2(substFormat, coverageTable, substituteGlyphIDs); } default: throw new IllegalArgumentException("Unknown substFormat: " + substFormat); } }
x += (short) bais.readUnsignedByte(); x += (short) -((short) bais.readUnsignedByte()); x += bais.readSignedShort(); y += (short) bais.readUnsignedByte(); y += (short) -((short) bais.readUnsignedByte()); y += bais.readSignedShort();
/** * Get the data size of the TrueType Font program representing the stream used to build this * object (normally from the TTFParser object). * * @return the size. */ public long getOriginalDataSize() { return data.getOriginalDataSize(); }
@Override public long readLong() throws IOException { return stream.readLong(); }