// Copyright 2001, FreeHEP.
package org.freehep.graphicsio.font.truetype;
import java.io.IOException;
/**
* HMTX Table.
*
* @author Simon Fischer
* @version $Id: TTFHMtxTable.java,v 1.5 2009-08-17 21:44:45 murkle Exp $
*/
public class TTFHMtxTable extends TTFTable {
public int[] advanceWidth;
public short[] leftSideBearing;
public short[] leftSideBearing2;
@Override
public String getTag() {
return "hmtx";
}
@Override
public void readTable() throws IOException {
int numberOfHMetrics = ((TTFHHeaTable) getTable(
"hhea")).numberOfHMetrics;
int numGlyphs = ((TTFMaxPTable) getTable("maxp")).numGlyphs;
advanceWidth = new int[numberOfHMetrics];
leftSideBearing = new short[numberOfHMetrics];
for (int i = 0; i < numberOfHMetrics; i++) {
advanceWidth[i] = ttf.readUFWord();
leftSideBearing[i] = ttf.readFWord();
}
leftSideBearing2 = ttf.readShortArray(numGlyphs - numberOfHMetrics);
}
@Override
public String toString() {
String str = super.toString();
str += "\n hMetrics[" + advanceWidth.length + "] = {";
for (int i = 0; i < advanceWidth.length; i++) {
if (i % 8 == 0) {
str += "\n ";
}
str += "(" + advanceWidth[i] + "," + leftSideBearing[i] + ") ";
}
str += "\n }";
str += "\n lsb[" + leftSideBearing2.length + "] = {";
for (int i = 0; i < leftSideBearing2.length; i++) {
if (i % 16 == 0) {
str += "\n ";
}
str += leftSideBearing2[i] + " ";
}
str += "\n }";
return str;
}
}