/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program 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.
*
* Copyright (c) 2006 - 2013 Pentaho Corporation and Contributors. All rights reserved.
*/
package org.pentaho.reporting.libraries.fonts.truetype;
import org.pentaho.reporting.libraries.fonts.ByteAccessUtilities;
/**
* Creation-Date: 06.11.2005, 20:24:42
*
* @author Thomas Morgner
*/
public class HorizontalHeaderTable implements FontTable {
public static final long TABLE_ID =
( 'h' << 24 | 'h' << 16 | 'e' << 8 | 'a' );
private long version;
private short ascender;
private short descender;
private short lineGap;
private int maxAdvanceWidth;
private short minLeftSidebearing;
private short minRightSidebearing;
private short xMaxExtent;
private short caretSlopeRise;
private short caretSlopeRun;
private short caretOffset;
// private short reserved0;
// private short reserved1;
// private short reserved2;
// private short reserved3;
private short metricDataFormat;
private int numberOfHMetrics;
public HorizontalHeaderTable( final byte[] data ) {
version = ByteAccessUtilities.readULong( data, 0 );
ascender = ByteAccessUtilities.readShort( data, 4 );
descender = ByteAccessUtilities.readShort( data, 6 );
lineGap = ByteAccessUtilities.readShort( data, 8 );
maxAdvanceWidth = ByteAccessUtilities.readUShort( data, 10 );
minLeftSidebearing = ByteAccessUtilities.readShort( data, 12 );
minRightSidebearing = ByteAccessUtilities.readShort( data, 14 );
xMaxExtent = ByteAccessUtilities.readShort( data, 16 );
caretSlopeRise = ByteAccessUtilities.readShort( data, 18 );
caretSlopeRun = ByteAccessUtilities.readShort( data, 20 );
caretOffset = ByteAccessUtilities.readShort( data, 22 );
metricDataFormat = ByteAccessUtilities.readShort( data, 32 );
numberOfHMetrics = ByteAccessUtilities.readUShort( data, 34 );
}
public long getVersion() {
return version;
}
public void setVersion( final int version ) {
this.version = version;
}
public short getAscender() {
return ascender;
}
public void setAscender( final short ascender ) {
this.ascender = ascender;
}
public short getDescender() {
return descender;
}
public void setDescender( final short descender ) {
this.descender = descender;
}
public short getLineGap() {
return lineGap;
}
public void setLineGap( final short lineGap ) {
this.lineGap = lineGap;
}
public int getMaxAdvanceWidth() {
return maxAdvanceWidth;
}
public void setMaxAdvanceWidth( final int maxAdvanceWidth ) {
this.maxAdvanceWidth = maxAdvanceWidth;
}
public short getMinLeftSidebearing() {
return minLeftSidebearing;
}
public void setMinLeftSidebearing( final short minLeftSidebearing ) {
this.minLeftSidebearing = minLeftSidebearing;
}
public short getMinRightSidebearing() {
return minRightSidebearing;
}
public void setMinRightSidebearing( final short minRightSidebearing ) {
this.minRightSidebearing = minRightSidebearing;
}
public short getxMaxExtent() {
return xMaxExtent;
}
public void setxMaxExtent( final short xMaxExtent ) {
this.xMaxExtent = xMaxExtent;
}
public short getCaretSlopeRise() {
return caretSlopeRise;
}
public void setCaretSlopeRise( final short caretSlopeRise ) {
this.caretSlopeRise = caretSlopeRise;
}
public short getCaretSlopeRun() {
return caretSlopeRun;
}
public void setCaretSlopeRun( final short caretSlopeRun ) {
this.caretSlopeRun = caretSlopeRun;
}
public short getCaretOffset() {
return caretOffset;
}
public void setCaretOffset( final short caretOffset ) {
this.caretOffset = caretOffset;
}
public short getMetricDataFormat() {
return metricDataFormat;
}
public void setMetricDataFormat( final short metricDataFormat ) {
this.metricDataFormat = metricDataFormat;
}
public int getNumberOfHMetrics() {
return numberOfHMetrics;
}
public void setNumberOfHMetrics( final int numberOfHMetrics ) {
this.numberOfHMetrics = numberOfHMetrics;
}
public long getName() {
return TABLE_ID;
}
}