blob: 93e111a5c7d65b6191d07a1122b2fe294d642494 [file] [log] [blame]
/*
*******************************************************************************
* Copyright (C) 1998-2004, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.dev.tool.layout;
/**
* @author emader
*
*/
public class OpenTypeTagBuilder
{
private static String[] tableTags = {
"acnt",
"avar",
"BASE",
"bdat",
"bhed",
"bloc",
"bsln",
"CFF ",
"cmap",
"cvar",
"cvt ",
"DSIG",
"EBDT",
"EBLC",
"EBSC",
"fdsc",
"feat",
"fmtx",
"fpgm",
"fvar",
"gasp",
"GDEF",
"glyf",
"GPOS",
"GSUB",
"gvar",
"hdmx",
"head",
"hhea",
"hmtx",
"hsty",
"just",
"JSTF",
"kern",
"lcar",
"loca",
"LTSH",
"maxp",
"mort",
"morx",
"name",
"opbd",
"OS/2",
"PCLT",
"post",
"prep",
"prop",
"trak",
"VDMX",
"vhea",
"vmtx",
"VORG",
"Zapf"
};
private static String[] featureTags = {
"aalt",
"abvf",
"abvm",
"abvs",
"afrc",
"akhn",
"blwf",
"blwm",
"blws",
"calt",
"case",
"ccmp",
"clig",
"cpsp",
"cswh",
"curs",
"c2sc",
"c2pc",
"dist",
"dlig",
"dnom",
"expt",
"falt",
"fin2",
"fin3",
"fina",
"frac",
"fwid",
"half",
"haln",
"halt",
"hist",
"hkna",
"hlig",
"hngl",
"hwid",
"init",
"isol",
"ital",
"jalt",
"jp78",
"jp83",
"jp90",
"kern",
"lfbd",
"liga",
"ljmo",
"lnum",
"locl",
"mark",
"med2",
"medi",
"mgrk",
"mkmk",
"mset",
"nalt",
"nlck",
"nukt",
"numr",
"onum",
"opbd",
"ordn",
"ornm",
"palt",
"pcap",
"pnum",
"pref",
"pres",
"pstf",
"psts",
"pwid",
"qwid",
"rand",
"rlig",
"rphf",
"rtbd",
"rtla",
"ruby",
"salt",
"sinf",
"size",
"smcp",
"smpl",
"ss01",
"ss02",
"ss03",
"ss04",
"ss05",
"ss06",
"ss07",
"ss08",
"ss09",
"ss10",
"ss11",
"ss12",
"ss13",
"ss14",
"ss15",
"ss16",
"ss17",
"ss18",
"ss19",
"ss20",
"subs",
"sups",
"swsh",
"titl",
"tjmo",
"tnam",
"tnum",
"trad",
"twid",
"unic",
"valt",
"vatu",
"vert",
"vhal",
"vjmo",
"vkna",
"vkrn",
"vpal",
"vrt2",
"zero"
};
private static String tagLabel(String tag)
{
StringBuffer result = new StringBuffer();
String upperTag = tag.toUpperCase();
for (int i = 0; i < upperTag.length(); i += 1) {
char ch = upperTag.charAt(i);
if ((ch < 'A' || ch > 'Z') && (ch < '0' || ch > '9')) {
ch = '_';
}
result.append(ch);
}
return result.toString();
}
private static void dumpTags(String enumName, String[] tags)
{
System.out.println("enum LE" + enumName + "Tags {");
for (int i = 0; i < tags.length; i += 1) {
String tag = tags[i];
System.out.println(" LE_" + tagLabel(tag) + "_" + enumName.toUpperCase() +
"_TAG = " + TagUtilities.makeTag(tag) + "UL" +
(i == tags.length - 1? " " : ",") + " /* '" + tag + "' */");
}
System.out.println("};");
}
public static void main(String[] args)
{
dumpTags("Table", tableTags);
dumpTags("Feature", featureTags);
}
}