/** Creates new PostTable */ protected PostTable(final DirectoryEntry de, final DataInput di) throws IOException { this.de = (DirectoryEntry) de.clone(); version = di.readInt(); italicAngle = di.readInt(); underlinePosition = di.readShort(); underlineThickness = di.readShort(); isFixedPitch = di.readInt(); minMemType42 = di.readInt(); maxMemType42 = di.readInt(); minMemType1 = di.readInt(); maxMemType1 = di.readInt(); if (version == 0x00020000) { numGlyphs = di.readUnsignedShort(); glyphNameIndex = new int[numGlyphs]; for (int i = 0; i < numGlyphs; i++) { glyphNameIndex[i] = di.readUnsignedShort(); } int h = highestGlyphNameIndex(); if (h > 257) { h -= 257; psGlyphName = new String[h]; for (int i = 0; i < h; i++) { final int len = di.readUnsignedByte(); final byte[] buf = new byte[len]; di.readFully(buf); psGlyphName[i] = new String(buf); } } // } else if (version == 0x00025000) { // } else if (version == 0x00030000) { } }
protected Os2Table(DirectoryEntry de, DataInput di) throws IOException { this._de = (DirectoryEntry) de.clone(); _version = di.readUnsignedShort(); _xAvgCharWidth = di.readShort(); _usWeightClass = di.readUnsignedShort(); _usWidthClass = di.readUnsignedShort(); _fsType = di.readShort(); _ySubscriptXSize = di.readShort(); _ySubscriptYSize = di.readShort(); _ySubscriptXOffset = di.readShort(); _ySubscriptYOffset = di.readShort(); _ySuperscriptXSize = di.readShort(); _ySuperscriptYSize = di.readShort(); _ySuperscriptXOffset = di.readShort(); _ySuperscriptYOffset = di.readShort(); _yStrikeoutSize = di.readShort(); _yStrikeoutPosition = di.readShort(); _sFamilyClass = di.readShort(); byte[] buf = new byte[10]; di.readFully(buf); _panose = new Panose(buf); _ulUnicodeRange1 = di.readInt(); _ulUnicodeRange2 = di.readInt(); _ulUnicodeRange3 = di.readInt(); _ulUnicodeRange4 = di.readInt(); _achVendorID = di.readInt(); _fsSelection = di.readShort(); _usFirstCharIndex = di.readUnsignedShort(); _usLastCharIndex = di.readUnsignedShort(); _sTypoAscender = di.readShort(); _sTypoDescender = di.readShort(); _sTypoLineGap = di.readShort(); _usWinAscent = di.readUnsignedShort(); _usWinDescent = di.readUnsignedShort(); _ulCodePageRange1 = di.readInt(); _ulCodePageRange2 = di.readInt(); // OpenType 1.3 if (_version == 2) { _sxHeight = di.readShort(); _sCapHeight = di.readShort(); _usDefaultChar = di.readUnsignedShort(); _usBreakChar = di.readUnsignedShort(); _usMaxContext = di.readUnsignedShort(); } }
protected VheaTable(DirectoryEntry de, DataInput di) throws IOException { _de = (DirectoryEntry) de.clone(); _version = di.readInt(); _ascent = di.readShort(); _descent = di.readShort(); _lineGap = di.readShort(); _advanceHeightMax = di.readShort(); _minTopSideBearing = di.readShort(); _minBottomSideBearing = di.readShort(); _yMaxExtent = di.readShort(); _caretSlopeRise = di.readShort(); _caretSlopeRun = di.readShort(); for (int i = 0; i < 5; ++i) { di.readShort(); } _metricDataFormat = di.readShort(); _numberOfLongVerMetrics = di.readUnsignedShort(); }
/** Creates a new instance of BaseTable */ protected BaseTable(DirectoryEntry de, DataInput di) throws IOException { _de = (DirectoryEntry) de.clone(); // Load entire table into a buffer, and create another input stream _buf = new byte[de.getLength()]; di.readFully(_buf); DataInput di2 = getDataInputForOffset(0); _version = di2.readInt(); _horizAxisOffset = di2.readUnsignedShort(); _vertAxisOffset = di2.readUnsignedShort(); if (_horizAxisOffset != 0) { _horizAxis = new Axis(_horizAxisOffset); } if (_vertAxisOffset != 0) { _vertAxis = new Axis(_vertAxisOffset); } // Let go of the buffer _buf = null; }