| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /* $Id$ */ |
| |
| package org.apache.fop.fonts.truetype; |
| |
| |
| /** |
| * Represents table names as found in a TrueType font's Table Directory. |
| * TrueType fonts may have custom tables so we cannot use an enum. |
| */ |
| public final class OFTableName { |
| |
| /** The first table in a TrueType font file containing metadata about other tables. */ |
| public static final OFTableName TABLE_DIRECTORY = new OFTableName("tableDirectory"); |
| |
| /** Baseline data */ |
| public static final OFTableName BASE = new OFTableName("BASE"); |
| |
| /** CFF data/ */ |
| public static final OFTableName CFF = new OFTableName("CFF "); |
| |
| /** Embedded bitmap data. */ |
| public static final OFTableName EBDT = new OFTableName("EBDT"); |
| |
| /** Embedded bitmap location data. */ |
| public static final OFTableName EBLC = new OFTableName("EBLC"); |
| |
| /** Embedded bitmap scaling data. */ |
| public static final OFTableName EBSC = new OFTableName("EBSC"); |
| |
| /** A FontForge specific table. */ |
| public static final OFTableName FFTM = new OFTableName("FFTM"); |
| |
| /** Divides glyphs into various classes that make using the GPOS/GSUB tables easier. */ |
| public static final OFTableName GDEF = new OFTableName("GDEF"); |
| |
| /** Provides kerning information, mark-to-base, etc. for opentype fonts. */ |
| public static final OFTableName GPOS = new OFTableName("GPOS"); |
| |
| /** Provides ligature information, swash, etc. for opentype fonts. */ |
| public static final OFTableName GSUB = new OFTableName("GSUB"); |
| |
| /** Linear threshold table. */ |
| public static final OFTableName LTSH = new OFTableName("LTSH"); |
| |
| /** OS/2 and Windows specific metrics. */ |
| public static final OFTableName OS2 = new OFTableName("OS/2"); |
| |
| /** PCL 5 data. */ |
| public static final OFTableName PCLT = new OFTableName("PCLT"); |
| |
| /** Vertical Device Metrics table. */ |
| public static final OFTableName VDMX = new OFTableName("VDMX"); |
| |
| /** Character to glyph mapping. */ |
| public static final OFTableName CMAP = new OFTableName("cmap"); |
| |
| /** Control Value Table. */ |
| public static final OFTableName CVT = new OFTableName("cvt "); |
| |
| /** Font program. */ |
| public static final OFTableName FPGM = new OFTableName("fpgm"); |
| |
| /** Grid-fitting and scan conversion procedure (grayscale). */ |
| public static final OFTableName GASP = new OFTableName("gasp"); |
| |
| /** Glyph data. */ |
| public static final OFTableName GLYF = new OFTableName("glyf"); |
| |
| /** Horizontal device metrics. */ |
| public static final OFTableName HDMX = new OFTableName("hdmx"); |
| |
| /** Font header. */ |
| public static final OFTableName HEAD = new OFTableName("head"); |
| |
| /** Horizontal header. */ |
| public static final OFTableName HHEA = new OFTableName("hhea"); |
| |
| /** Horizontal metrics. */ |
| public static final OFTableName HMTX = new OFTableName("hmtx"); |
| |
| /** Kerning. */ |
| public static final OFTableName KERN = new OFTableName("kern"); |
| |
| /** Index to location. */ |
| public static final OFTableName LOCA = new OFTableName("loca"); |
| |
| /** Maximum profile. */ |
| public static final OFTableName MAXP = new OFTableName("maxp"); |
| |
| /** Naming table. */ |
| public static final OFTableName NAME = new OFTableName("name"); |
| |
| /** PostScript information. */ |
| public static final OFTableName POST = new OFTableName("post"); |
| |
| /** CVT Program. */ |
| public static final OFTableName PREP = new OFTableName("prep"); |
| |
| /** Vertical Metrics header. */ |
| public static final OFTableName VHEA = new OFTableName("vhea"); |
| |
| /** Vertical Metrics. */ |
| public static final OFTableName VMTX = new OFTableName("vmtx"); |
| |
| private final String name; |
| |
| private OFTableName(String name) { |
| this.name = name; |
| } |
| |
| /** |
| * Returns the name of the table as it should be in the Directory Table. |
| */ |
| public String getName() { |
| return name; |
| } |
| |
| /** |
| * Returns an instance of this class corresponding to the given string representation. |
| * @param tableName table name as in the Table Directory |
| * @return TTFTableName |
| */ |
| public static OFTableName getValue(String tableName) { |
| if (tableName != null) { |
| return new OFTableName(tableName); |
| } |
| throw new IllegalArgumentException("A TrueType font table name must not be null"); |
| } |
| |
| @Override |
| public int hashCode() { |
| return name.hashCode(); |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (o == this) { |
| return true; |
| } |
| if (!(o instanceof OFTableName)) { |
| return false; |
| } |
| OFTableName to = (OFTableName) o; |
| return this.name.equals(to.getName()); |
| } |
| |
| @Override |
| public String toString() { |
| return name; |
| } |
| |
| } |