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.SubTable; import com.google.typography.font.sfntly.table.SubTable.Builder; import java.util.Iterator; import java.util.NoSuchElementException; public abstract class CMap extends SubTable implements Iterable<Integer> { protected final int format; protected final CMapTable.CMapId cmapId; protected CMap(ReadableFontData paramReadableFontData, int paramInt, CMapTable.CMapId paramCMapId) { super(paramReadableFontData); this.format = paramInt; this.cmapId = paramCMapId; } public int format() { return this.format; } public CMapTable.CMapId cmapId() { return this.cmapId; } public int platformId() { return cmapId().platformId(); } public int encodingId() { return cmapId().encodingId(); } public int hashCode() { return this.cmapId.hashCode(); } public boolean equals(Object paramObject) { if (this == paramObject) { return true; } if (!(paramObject instanceof CMap)) { return false; } return this.cmapId.equals(((CMap)paramObject).cmapId); } public abstract int language(); public abstract int glyphId(int paramInt); public String toString() { StringBuilder localStringBuilder = new StringBuilder(); localStringBuilder.append("cmap: "); localStringBuilder.append(cmapId()); localStringBuilder.append(", "); localStringBuilder.append(CMapFormat.valueOf(format())); localStringBuilder.append(", Data Size=0x"); localStringBuilder.append(Integer.toHexString(this.data.length())); return localStringBuilder.toString(); } public static abstract class Builder<T extends CMap> extends SubTable.Builder<T> { private final CMap.CMapFormat format; private final CMapTable.CMapId cmapId; private int language; protected Builder(ReadableFontData paramReadableFontData, CMap.CMapFormat paramCMapFormat, CMapTable.CMapId paramCMapId) { super(); this.format = paramCMapFormat; this.cmapId = paramCMapId; } public CMapTable.CMapId cmapId() { return this.cmapId; } public int encodingId() { return cmapId().encodingId(); } public int platformId() { return cmapId().platformId(); } public CMap.CMapFormat format() { return this.format; } public int language() { return this.language; } public void setLanguage(int paramInt) { this.language = paramInt; } protected Builder(WritableFontData paramWritableFontData, CMap.CMapFormat paramCMapFormat, CMapTable.CMapId paramCMapId) { super(); this.format = paramCMapFormat; this.cmapId = paramCMapId; } protected void subDataSet() {} protected int subDataSizeToSerialize() { return internalReadData().length(); } protected boolean subReadyToSerialize() { return true; } protected int subSerialize(WritableFontData paramWritableFontData) { return internalReadData().copyTo(paramWritableFontData); } static Builder<? extends CMap> getBuilder(ReadableFontData paramReadableFontData, int paramInt, CMapTable.CMapId paramCMapId) { int i = paramReadableFontData.readUShort(paramInt); CMap.CMapFormat localCMapFormat = CMap.CMapFormat.valueOf(i); switch (CMap.1.$SwitchMap$com$google$typography$font$sfntly$table$core$CMap$CMapFormat[localCMapFormat.ordinal()]) { case 1: return new CMapFormat0.Builder(paramReadableFontData, paramInt, paramCMapId); case 2: return new CMapFormat2.Builder(paramReadableFontData, paramInt, paramCMapId); case 3: return new CMapFormat4.Builder(paramReadableFontData, paramInt, paramCMapId); case 4: return new CMapFormat6.Builder(paramReadableFontData, paramInt, paramCMapId); case 5: return new CMapFormat8.Builder(paramReadableFontData, paramInt, paramCMapId); case 6: return new CMapFormat10.Builder(paramReadableFontData, paramInt, paramCMapId); case 7: return new CMapFormat12.Builder(paramReadableFontData, paramInt, paramCMapId); case 8: return new CMapFormat13.Builder(paramReadableFontData, paramInt, paramCMapId); case 9: return new CMapFormat14.Builder(paramReadableFontData, paramInt, paramCMapId); } return null; } static Builder<? extends CMap> getBuilder(CMap.CMapFormat paramCMapFormat, CMapTable.CMapId paramCMapId) { switch (CMap.1.$SwitchMap$com$google$typography$font$sfntly$table$core$CMap$CMapFormat[paramCMapFormat.ordinal()]) { case 1: return new CMapFormat0.Builder(null, 0, paramCMapId); case 3: return new CMapFormat4.Builder(null, 0, paramCMapId); } return null; } public String toString() { return String.format("%s, format = %s", new Object[] { cmapId(), format() }); } } protected class CharacterIterator implements Iterator<Integer> { private int character = 0; private final int maxCharacter; CharacterIterator(int paramInt1, int paramInt2) { this.character = paramInt1; this.maxCharacter = paramInt2; } public boolean hasNext() { return this.character < this.maxCharacter; } public Integer next() { if (!hasNext()) { throw new NoSuchElementException("No more characters to iterate."); } return Integer.valueOf(this.character++); } public void remove() { throw new UnsupportedOperationException("Unable to remove a character from cmap."); } } public static enum CMapFormat { Format0(0), Format2(2), Format4(4), Format6(6), Format8(8), Format10(10), Format12(12), Format13(13), Format14(14); final int value; private CMapFormat(int paramInt) { this.value = paramInt; } public int value() { return this.value; } public boolean equals(int paramInt) { return paramInt == this.value; } public static CMapFormat valueOf(int paramInt) { for (CMapFormat localCMapFormat : ) { if (localCMapFormat.equals(paramInt)) { return localCMapFormat; } } return null; } } } /* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\google\typography\font\sfntly\table\core\CMap.class * Java compiler version: 6 (50.0) * JD-Core Version: 0.7.1 */