/***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package jogamp.graph.font.typecast.ot.table; import java.io.DataInput; import java.io.IOException; import jogamp.graph.font.typecast.ot.Fixed; /** * @version $Id: HheaTable.java,v 1.2 2010-08-10 11:44:02 davidsch Exp $ * @author <a href="mailto:davidsch@dev.java.net">David Schweinsberg</a> */ public class HheaTable implements Table { private final DirectoryEntry de; private final int version; private final short ascender; private final short descender; private final short lineGap; private final short advanceWidthMax; private final short minLeftSideBearing; private final short minRightSideBearing; private final short xMaxExtent; private final short caretSlopeRise; private final short caretSlopeRun; private final short metricDataFormat; private final int numberOfHMetrics; protected HheaTable(final DirectoryEntry de, final DataInput di) throws IOException { this.de = (DirectoryEntry) de.clone(); version = di.readInt(); ascender = di.readShort(); descender = di.readShort(); lineGap = di.readShort(); advanceWidthMax = di.readShort(); minLeftSideBearing = di.readShort(); minRightSideBearing = di.readShort(); xMaxExtent = di.readShort(); caretSlopeRise = di.readShort(); caretSlopeRun = di.readShort(); for (int i = 0; i < 5; i++) { di.readShort(); } metricDataFormat = di.readShort(); numberOfHMetrics = di.readUnsignedShort(); } public short getAdvanceWidthMax() { return advanceWidthMax; } public short getAscender() { return ascender; } public short getCaretSlopeRise() { return caretSlopeRise; } public short getCaretSlopeRun() { return caretSlopeRun; } public short getDescender() { return descender; } public short getLineGap() { return lineGap; } public short getMetricDataFormat() { return metricDataFormat; } public short getMinLeftSideBearing() { return minLeftSideBearing; } public short getMinRightSideBearing() { return minRightSideBearing; } public int getNumberOfHMetrics() { return numberOfHMetrics; } @Override public int getType() { return hhea; } public short getXMaxExtent() { return xMaxExtent; } @Override public String toString() { return new StringBuilder() .append("'hhea' Table - Horizontal Header\n--------------------------------") .append("\n 'hhea' version: ").append(Fixed.floatValue(version)) .append("\n yAscender: ").append(ascender) .append("\n yDescender: ").append(descender) .append("\n yLineGap: ").append(lineGap) .append("\n advanceWidthMax: ").append(advanceWidthMax) .append("\n minLeftSideBearing: ").append(minLeftSideBearing) .append("\n minRightSideBearing: ").append(minRightSideBearing) .append("\n xMaxExtent: ").append(xMaxExtent) .append("\n horizCaretSlopeNum: ").append(caretSlopeRise) .append("\n horizCaretSlopeDenom: ").append(caretSlopeRun) .append("\n reserved0: 0") .append("\n reserved1: 0") .append("\n reserved2: 0") .append("\n reserved3: 0") .append("\n reserved4: 0") .append("\n metricDataFormat: ").append(metricDataFormat) .append("\n numOf_LongHorMetrics: ").append(numberOfHMetrics) .toString(); } /** * Get a directory entry for this table. This uniquely identifies the * table in collections where there may be more than one instance of a * particular table. * @return A directory entry */ @Override public DirectoryEntry getDirectoryEntry() { return de; } }