01: /*
02: *******************************************************************************
03: * Copyright (C) 1998-2004, International Business Machines Corporation and *
04: * others. All Rights Reserved. *
05: *******************************************************************************
06: */
07: package com.ibm.icu.dev.tool.layout;
08:
09: /**
10: * @author emader
11: *
12: */
13: public class OpenTypeTagBuilder {
14: private static String[] tableTags = { "acnt", "avar", "BASE",
15: "bdat", "bhed", "bloc", "bsln", "CFF ", "cmap", "cvar",
16: "cvt ", "DSIG", "EBDT", "EBLC", "EBSC", "fdsc", "feat",
17: "fmtx", "fpgm", "fvar", "gasp", "GDEF", "glyf", "GPOS",
18: "GSUB", "gvar", "hdmx", "head", "hhea", "hmtx", "hsty",
19: "just", "JSTF", "kern", "lcar", "loca", "LTSH", "maxp",
20: "mort", "morx", "name", "opbd", "OS/2", "PCLT", "post",
21: "prep", "prop", "trak", "VDMX", "vhea", "vmtx", "VORG",
22: "Zapf" };
23:
24: private static String[] featureTags = { "aalt", "abvf", "abvm",
25: "abvs", "afrc", "akhn", "blwf", "blwm", "blws", "calt",
26: "case", "ccmp", "clig", "cpsp", "cswh", "curs", "c2sc",
27: "c2pc", "dist", "dlig", "dnom", "expt", "falt", "fin2",
28: "fin3", "fina", "frac", "fwid", "half", "haln", "halt",
29: "hist", "hkna", "hlig", "hngl", "hwid", "init", "isol",
30: "ital", "jalt", "jp78", "jp83", "jp90", "kern", "lfbd",
31: "liga", "ljmo", "lnum", "locl", "mark", "med2", "medi",
32: "mgrk", "mkmk", "mset", "nalt", "nlck", "nukt", "numr",
33: "onum", "opbd", "ordn", "ornm", "palt", "pcap", "pnum",
34: "pref", "pres", "pstf", "psts", "pwid", "qwid", "rand",
35: "rlig", "rphf", "rtbd", "rtla", "ruby", "salt", "sinf",
36: "size", "smcp", "smpl", "ss01", "ss02", "ss03", "ss04",
37: "ss05", "ss06", "ss07", "ss08", "ss09", "ss10", "ss11",
38: "ss12", "ss13", "ss14", "ss15", "ss16", "ss17", "ss18",
39: "ss19", "ss20", "subs", "sups", "swsh", "titl", "tjmo",
40: "tnam", "tnum", "trad", "twid", "unic", "valt", "vatu",
41: "vert", "vhal", "vjmo", "vkna", "vkrn", "vpal", "vrt2",
42: "zero" };
43:
44: private static String tagLabel(String tag) {
45: StringBuffer result = new StringBuffer();
46: String upperTag = tag.toUpperCase();
47:
48: for (int i = 0; i < upperTag.length(); i += 1) {
49: char ch = upperTag.charAt(i);
50:
51: if ((ch < 'A' || ch > 'Z') && (ch < '0' || ch > '9')) {
52: ch = '_';
53: }
54:
55: result.append(ch);
56: }
57:
58: return result.toString();
59: }
60:
61: private static void dumpTags(String enumName, String[] tags) {
62: System.out.println("enum LE" + enumName + "Tags {");
63:
64: for (int i = 0; i < tags.length; i += 1) {
65: String tag = tags[i];
66:
67: System.out.println(" LE_" + tagLabel(tag) + "_"
68: + enumName.toUpperCase() + "_TAG = "
69: + TagUtilities.makeTag(tag) + "UL"
70: + (i == tags.length - 1 ? " " : ",") + " /* '"
71: + tag + "' */");
72: }
73:
74: System.out.println("};");
75: }
76:
77: public static void main(String[] args) {
78: dumpTags("Table", tableTags);
79: dumpTags("Feature", featureTags);
80: }
81: }
|