ttfhorizontalmetricstable.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 73 行

JAVA
73
字号
// Copyright 2001, FreeHEP.
package org.jnode.awt.font.truetype;

import java.io.IOException;

/**
 * HMTX Table.
 *
 *  @author Simon Fischer
 *  @version $Id: TTFHorizontalMetricsTable.java,v 1.1 2003/11/25 11:51:38 epr Exp $
 */
public class TTFHorizontalMetricsTable extends TTFTable {

	private int[] advanceWidth;
	private short[] leftSideBearing;
	private short[] leftSideBearing2;

	public String getTag() {
		return "hmtx";
	}

	public void readTable() throws IOException {
		final TTFFontData font = getFont();
		final int numberOfHMetrics = font.getHorizontalHeaderTable().getNumberOfHMetrics();
		final int numGlyphs = font.getMaxPTable().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);
	}

	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;
	}
	
	/**
	 * @param index
	 * @return The advance width for a given index
	 */
	public int getAdvanceWidth(int index) {
		return this.advanceWidth[index];
	}

	/**
	 * @param index
	 * @return The left side bearing for a given index
	 */
	public int getLeftSideBearing(int index) {
		return this.leftSideBearing[index];
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?