// Copyright 2001, FreeHEP. package org.freehep.graphicsio.font.truetype; import java.io.IOException; import java.io.UnsupportedEncodingException; import org.geogebra.common.util.Charsets; /** * OS/2 Table. * * @author Simon Fischer * @version $Id: TTFOS_2Table.java,v 1.5 2009-08-17 21:44:45 murkle Exp $ */ public class TTFOS_2Table extends TTFVersionTable { public int version; public short xAvgCharWidth; public int usWeightClass, usWidthClass; public short fsType; public short ySubscriptXSize, ySubscriptYSize, ySubscriptXOffset, ySubscriptYOffset; public short ySuperscriptXSize, ySuperscriptYSize, ySuperscriptXOffset, ySuperscriptYOffset; public short yStrikeoutSize, yStrikeoutPosition; public short sFamilyClass; public byte[] panose = new byte[10]; public long[] ulUnicode = new long[4]; public byte[] achVendID = new byte[4]; public int fsSelection; public int usFirstCharIndex, usLastCharIndes; public int sTypoAscender, sTzpoDescender, sTypoLineGap; public int usWinAscent, usWinDescent; public long[] ulCodePageRange = new long[2]; @Override public String getTag() { return "OS/2"; } @Override public void readTable() throws IOException { version = ttf.readUShort(); xAvgCharWidth = ttf.readShort(); usWeightClass = ttf.readUShort(); usWidthClass = ttf.readUShort(); fsType = ttf.readShort(); ySubscriptXSize = ttf.readShort(); ySubscriptYSize = ttf.readShort(); ySubscriptXOffset = ttf.readShort(); ySubscriptYOffset = ttf.readShort(); ySuperscriptXSize = ttf.readShort(); ySuperscriptYSize = ttf.readShort(); ySuperscriptXOffset = ttf.readShort(); ySuperscriptYOffset = ttf.readShort(); yStrikeoutSize = ttf.readShort(); yStrikeoutPosition = ttf.readShort(); sFamilyClass = ttf.readShort(); ttf.readFully(panose); for (int i = 0; i < ulUnicode.length; i++) { ulUnicode[i] = ttf.readULong(); } ttf.readFully(achVendID); fsSelection = ttf.readUShort(); usFirstCharIndex = ttf.readUShort(); usLastCharIndes = ttf.readUShort(); sTypoAscender = ttf.readUShort(); sTzpoDescender = ttf.readUShort(); sTypoLineGap = ttf.readUShort(); usWinAscent = ttf.readUShort(); usWinDescent = ttf.readUShort(); ulCodePageRange[0] = ttf.readULong(); ulCodePageRange[1] = ttf.readULong(); } public String getAchVendID() { try { return new String(achVendID, Charsets.UTF_8); } catch (UnsupportedEncodingException e) { return null; } } @Override public String toString() { return super.toString() + "\n version: " + version + "\n vendor: " + getAchVendID(); } }