com.sun.pdfview.font.ttf.HeadTable Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pdf-renderer Show documentation
Show all versions of pdf-renderer Show documentation
PDF renderer implementation supporting the subset of PDF 1.4 specification.
The newest version!
/*
* $Id: HeadTable.java,v 1.3 2007-12-20 18:33:30 rbair Exp $
*
* Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
* Santa Clara, California 95054, U.S.A. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package com.sun.pdfview.font.ttf;
import java.nio.ByteBuffer;
import java.util.Date;
/**
*
* @author jkaplan
*/
public class HeadTable extends TrueTypeTable {
/** Holds value of property version. */
private int version;
/** Holds value of property fontRevision. */
private int fontRevision;
/** Holds value of property checksumAdjustment. */
private int checksumAdjustment;
/** Holds value of property magicNumber. */
private int magicNumber;
/** Holds value of property flags. */
private short flags;
/** Holds value of property unitsPerEm. */
private short unitsPerEm;
/** Holds value of property created. */
private long created;
/** Holds value of property modified. */
private long modified;
/** Holds value of property xMin. */
private short xMin;
/** Holds value of property yMin. */
private short yMin;
/** Holds value of property xMax. */
private short xMax;
/** Holds value of property yMax. */
private short yMax;
/** Holds value of property macStyle. */
private short macStyle;
/** Holds value of property lowestRecPPem. */
private short lowestRecPPem;
/** Holds value of property fontDirectionHint. */
private short fontDirectionHint;
/** Holds value of property indexToLocFormat. */
private short indexToLocFormat;
/** Holds value of property glyphDataFormat. */
private short glyphDataFormat;
/** Creates a new instance of HeadTable
* Makes up reasonable(?) defaults for all values
*/
protected HeadTable() {
super(TrueTypeTable.HEAD_TABLE);
setVersion(0x10000);
setFontRevision(0x10000);
setChecksumAdjustment(0);
setMagicNumber(0x5f0f3cf5);
setFlags((short) 0x0);
setUnitsPerEm((short) 64);
setCreated(System.currentTimeMillis());
setModified(System.currentTimeMillis());
setXMin((short) 0);
setXMax((short) Short.MAX_VALUE);
setYMin((short) 0);
setYMax((short) Short.MAX_VALUE);
setMacStyle((short) 0x0);
setLowestRecPPem((short) 0);
setFontDirectionHint((short) 0);
setIndexToLocFormat((short) 0);
setGlyphDataFormat((short) 0);
}
/**
* Parse the data before it is set
*/
public void setData(ByteBuffer data) {
if (data.remaining() != 54) {
throw new IllegalArgumentException("Bad Head table size");
}
setVersion(data.getInt());
setFontRevision(data.getInt());
setChecksumAdjustment(data.getInt());
setMagicNumber(data.getInt());
setFlags(data.getShort());
setUnitsPerEm(data.getShort());
setCreated(data.getLong());
setModified(data.getLong());
setXMin(data.getShort());
setXMax(data.getShort());
setYMin(data.getShort());
setYMax(data.getShort());
setMacStyle(data.getShort());
setLowestRecPPem(data.getShort());
setFontDirectionHint(data.getShort());
setIndexToLocFormat(data.getShort());
setGlyphDataFormat(data.getShort());
}
/**
* Get the data we have stored
*/
public ByteBuffer getData() {
ByteBuffer buf = ByteBuffer.allocate(getLength());
buf.putInt(getVersion());
buf.putInt(getFontRevision());
buf.putInt(getChecksumAdjustment());
buf.putInt(getMagicNumber());
buf.putShort(getFlags());
buf.putShort(getUnitsPerEm());
buf.putLong(getCreated());
buf.putLong(getModified());
buf.putShort(getXMin());
buf.putShort(getXMax());
buf.putShort(getYMin());
buf.putShort(getYMax());
buf.putShort(getMacStyle());
buf.putShort(getLowestRecPPem());
buf.putShort(getFontDirectionHint());
buf.putShort(getIndexToLocFormat());
buf.putShort(getGlyphDataFormat());
// reset the position to the start of the buffer
buf.flip();
return buf;
}
/**
* Get the length of this table
*/
public int getLength() {
return 54;
}
/** Getter for property version.
* @return Value of property version.
*
*/
public int getVersion() {
return version;
}
/** Getter for property fontRevision.
* @return Value of property fontRevision.
*
*/
public int getFontRevision() {
return this.fontRevision;
}
/** Getter for property checksumAdjustment.
* @return Value of property checksumAdjustment.
*
*/
public int getChecksumAdjustment() {
return this.checksumAdjustment;
}
/** Getter for property magicNumber.
* @return Value of property magicNumber.
*
*/
public int getMagicNumber() {
return this.magicNumber;
}
/** Getter for property flags.
* @return Value of property flags.
*
*/
public short getFlags() {
return this.flags;
}
/** Getter for property unitsPerEm.
* @return Value of property unitsPerEm.
*
*/
public short getUnitsPerEm() {
return this.unitsPerEm;
}
/** Getter for property created.
* @return Value of property created.
*
*/
public long getCreated() {
return this.created;
}
/** Getter for property modified.
* @return Value of property modified.
*
*/
public long getModified() {
return this.modified;
}
/** Getter for property xMin.
* @return Value of property xMin.
*
*/
public short getXMin() {
return this.xMin;
}
/** Getter for property yMin.
* @return Value of property yMin.
*
*/
public short getYMin() {
return this.yMin;
}
/** Getter for property xMax.
* @return Value of property xMax.
*
*/
public short getXMax() {
return this.xMax;
}
/** Getter for property yMax.
* @return Value of property yMax.
*
*/
public short getYMax() {
return this.yMax;
}
/** Getter for property macStyle.
* @return Value of property macStyle.
*
*/
public short getMacStyle() {
return this.macStyle;
}
/** Getter for property lowestRecPPem.
* @return Value of property lowestRecPPem.
*
*/
public short getLowestRecPPem() {
return this.lowestRecPPem;
}
/** Getter for property fontDirectionHint.
* @return Value of property fontDirectionHint.
*
*/
public short getFontDirectionHint() {
return this.fontDirectionHint;
}
/** Getter for property indexToLocFormat.
* @return Value of property indexToLocFormat.
*
*/
public short getIndexToLocFormat() {
return this.indexToLocFormat;
}
/** Getter for property glyphDataFormat.
* @return Value of property glyphDataFormat.
*
*/
public short getGlyphDataFormat() {
return this.glyphDataFormat;
}
/** Setter for property XMax.
* @param xMax New value of property XMax.
*
*/
public void setXMax(short xMax) {
this.xMax = xMax;
}
/** Setter for property XMin.
* @param xMin New value of property XMin.
*
*/
public void setXMin(short xMin) {
this.xMin = xMin;
}
/** Setter for property YMax.
* @param yMax New value of property YMax.
*
*/
public void setYMax(short yMax) {
this.yMax = yMax;
}
/** Setter for property YMin.
* @param yMin New value of property YMin.
*
*/
public void setYMin(short yMin) {
this.yMin = yMin;
}
/** Setter for property checksumAdjustment.
* @param checksumAdjustment New value of property checksumAdjustment.
*
*/
public void setChecksumAdjustment(int checksumAdjustment) {
this.checksumAdjustment = checksumAdjustment;
}
/** Setter for property created.
* @param created New value of property created.
*
*/
public void setCreated(long created) {
this.created = created;
}
/** Setter for property flags.
* @param flags New value of property flags.
*
*/
public void setFlags(short flags) {
this.flags = flags;
}
/** Setter for property fontDirectionHint.
* @param fontDirectionHint New value of property fontDirectionHint.
*
*/
public void setFontDirectionHint(short fontDirectionHint) {
this.fontDirectionHint = fontDirectionHint;
}
/** Setter for property fontRevision.
* @param fontRevision New value of property fontRevision.
*
*/
public void setFontRevision(int fontRevision) {
this.fontRevision = fontRevision;
}
/** Setter for property glyphDataFormat.
* @param glyphDataFormat New value of property glyphDataFormat.
*
*/
public void setGlyphDataFormat(short glyphDataFormat) {
this.glyphDataFormat = glyphDataFormat;
}
/** Setter for property indexToLocFormat.
* @param indexToLocFormat New value of property indexToLocFormat.
*
*/
public void setIndexToLocFormat(short indexToLocFormat) {
this.indexToLocFormat = indexToLocFormat;
}
/** Setter for property lowestRecPPem.
* @param lowestRecPPem New value of property lowestRecPPem.
*
*/
public void setLowestRecPPem(short lowestRecPPem) {
this.lowestRecPPem = lowestRecPPem;
}
/** Setter for property macStyle.
* @param macStyle New value of property macStyle.
*
*/
public void setMacStyle(short macStyle) {
this.macStyle = macStyle;
}
/** Setter for property magicNumber.
* @param magicNumber New value of property magicNumber.
*
*/
public void setMagicNumber(int magicNumber) {
this.magicNumber = magicNumber;
}
/** Setter for property modified.
* @param modified New value of property modified.
*
*/
public void setModified(long modified) {
this.modified = modified;
}
/** Setter for property unitsPerEm.
* @param unitsPerEm New value of property unitsPerEm.
*
*/
public void setUnitsPerEm(short unitsPerEm) {
this.unitsPerEm = unitsPerEm;
}
/** Setter for property version.
* @param version New value of property version.
*
*/
public void setVersion(int version) {
this.version = version;
}
/**
* Create a pretty string
*/
public String toString() {
StringBuffer buf = new StringBuffer();
String indent = " ";
buf.append(indent + "Version : " + Integer.toHexString(getVersion()) + "\n");
buf.append(indent + "Revision : " + Integer.toHexString(getFontRevision()) + "\n");
buf.append(indent + "ChecksumAdj : " + Integer.toHexString(getChecksumAdjustment()) + "\n");
buf.append(indent + "MagicNumber : " + Integer.toHexString(getMagicNumber()) + "\n");
buf.append(indent + "Flags : " + Integer.toBinaryString(getFlags()) + "\n");
buf.append(indent + "UnitsPerEm : " + getUnitsPerEm() + "\n");
buf.append(indent + "Created : " + new Date(getCreated()) + "\n");
buf.append(indent + "Modified : " + new Date(getModified()) + "\n");
buf.append(indent + "XMin : " + getXMin() + "\n");
buf.append(indent + "XMax : " + getXMax() + "\n");
buf.append(indent + "YMin : " + getYMin() + "\n");
buf.append(indent + "YMax : " + getYMax() + "\n");
buf.append(indent + "MacStyle : " + Integer.toBinaryString(getMacStyle()) + "\n");
buf.append(indent + "LowestPPem : " + getLowestRecPPem() + "\n");
buf.append(indent + "FontDirectionHint: " + getFontDirectionHint() + "\n");
buf.append(indent + "IndexToLocFormat : " + getIndexToLocFormat() + "\n");
buf.append(indent + "GlyphDataFormat : " + getGlyphDataFormat() + "\n");
return buf.toString();
}
}