package com.google.typography.font.sfntly.table.core;
import com.google.typography.font.sfntly.data.ReadableFontData;
import com.google.typography.font.sfntly.data.WritableFontData;
import com.google.typography.font.sfntly.table.Header;
import com.google.typography.font.sfntly.table.Table;
import com.google.typography.font.sfntly.table.TableBasedTableBuilder;
public final class HorizontalMetricsTable
extends Table
{
private int numHMetrics;
private int numGlyphs;
private HorizontalMetricsTable(Header paramHeader, ReadableFontData paramReadableFontData, int paramInt1, int paramInt2)
{
super(paramHeader, paramReadableFontData);
this.numHMetrics = paramInt1;
this.numGlyphs = paramInt2;
}
public int numberOfHMetrics()
{
return this.numHMetrics;
}
public int numberOfLSBs()
{
return this.numGlyphs - this.numHMetrics;
}
public int hMetricAdvanceWidth(int paramInt)
{
if (paramInt > this.numHMetrics) {
throw new IndexOutOfBoundsException();
}
int i = Offset.hMetricsStart.offset + paramInt * Offset.hMetricsSize.offset + Offset.hMetricsAdvanceWidth.offset;
return this.data.readUShort(i);
}
public int hMetricLSB(int paramInt)
{
if (paramInt > this.numHMetrics) {
throw new IndexOutOfBoundsException();
}
int i = Offset.hMetricsStart.offset + paramInt * Offset.hMetricsSize.offset + Offset.hMetricsLeftSideBearing.offset;
return this.data.readShort(i);
}
public int lsbTableEntry(int paramInt)
{
if (paramInt > numberOfLSBs()) {
throw new IndexOutOfBoundsException();
}
int i = Offset.hMetricsStart.offset + this.numHMetrics * Offset.hMetricsSize.offset + paramInt * Offset.LeftSideBearingSize.offset;
return this.data.readShort(i);
}
public int advanceWidth(int paramInt)
{
if (paramInt < this.numHMetrics) {
return hMetricAdvanceWidth(paramInt);
}
return hMetricAdvanceWidth(this.numHMetrics - 1);
}
public int leftSideBearing(int paramInt)
{
if (paramInt < this.numHMetrics) {
return hMetricLSB(paramInt);
}
return lsbTableEntry(paramInt - this.numHMetrics);
}
public static class Builder
extends TableBasedTableBuilder<HorizontalMetricsTable>
{
private int numHMetrics = -1;
private int numGlyphs = -1;
public static Builder createBuilder(Header paramHeader, WritableFontData paramWritableFontData)
{
return new Builder(paramHeader, paramWritableFontData);
}
protected Builder(Header paramHeader, WritableFontData paramWritableFontData)
{
super(paramWritableFontData);
}
protected Builder(Header paramHeader, ReadableFontData paramReadableFontData)
{
super(paramReadableFontData);
}
protected HorizontalMetricsTable subBuildTable(ReadableFontData paramReadableFontData)
{
return new HorizontalMetricsTable(header(), paramReadableFontData, this.numHMetrics, this.numGlyphs, null);
}
public void setNumberOfHMetrics(int paramInt)
{
if (paramInt < 0) {
throw new IllegalArgumentException("Number of metrics can't be negative.");
}
this.numHMetrics = paramInt;
((HorizontalMetricsTable)table()).numHMetrics = paramInt;
}
public void setNumGlyphs(int paramInt)
{
if (paramInt < 0) {
throw new IllegalArgumentException("Number of glyphs can't be negative.");
}
this.numGlyphs = paramInt;
((HorizontalMetricsTable)table()).numGlyphs = paramInt;
}
}
private static enum Offset
{
hMetricsStart(0), hMetricsSize(4), hMetricsAdvanceWidth(0), hMetricsLeftSideBearing(2), LeftSideBearingSize(2);
private final int offset;
private Offset(int paramInt)
{
this.offset = paramInt;
}
}
}
/* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\google\typography\font\sfntly\table\core\HorizontalMetricsTable.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/