/** ******************************************************************************* * Copyright (C) 1996-2001, International Business Machines Corporation and * * others. All Rights Reserved. * ******************************************************************************* * * $Source: /xsrl/Nsvn/icu/unicodetools/com/ibm/text/UCD/GenerateStandardizedVariants.java,v $ * $Date: 2003/03/12 16:01:26 $ * $Revision: 1.2 $ * ******************************************************************************* */ package com.ibm.text.UCD; import com.ibm.text.utility.*; import com.ibm.icu.text.UTF16; import com.ibm.icu.text.UnicodeSet; import java.util.*; import java.io.*; public final class GenerateStandardizedVariants implements UCD_Types { static final boolean DEBUG = false; static public String showVarGlyphs(String code0, String code1, String shape, String description) { if (DEBUG) System.out.println(code0 + ", " + code1 + ", [" + shape + "]"); String abbShape = ""; if (shape.length() != 0) { abbShape = '-' + shape.substring(0,4); if (description.indexOf("feminine") >= 0) abbShape += "fem"; } return "U+" + code0 + "+U+" + code1 + "/" + shape 
            + ""; } /* # Field 0: the variation sequence # Field 1: the description of the desired appearance # Field 2: where the appearance is only different in in particular shaping environments # this field lists them. The possible values are: isolated, initial, medial, final. # If more than one is present, there are spaces between them. */ static public void generate() throws IOException { Default.setUCD(); // read the data and compose the table String table = ""; String[] splits = new String[4]; String[] codes = new String[2]; String[] shapes = new String[4]; BufferedReader in = Utility.openUnicodeFile("StandardizedVariants", Default.ucdVersion, true, Utility.LATIN1); while (true) { String line = Utility.readDataLine(in); if (line == null) break; if (line.length() == 0) continue; int count = Utility.split(line, ';', splits); int codeCount = Utility.split(splits[0], ' ', codes); int code = Utility.codePointFromHex(codes[0]); // 03E2 table += "\n"; table += "\n"; String shape = splits[2].trim(); if (shape.equals("all")) shape = ""; table += "\n"; // http://www.unicode.org/cgi-bin/varglyph?24-1820-180B-fina // http://www.unicode.org/cgi-bin/varglyph?24-222A-FE00 table += "\n"; table += "\n"; table += ""; } in.close(); table += "
Rep GlyphCharacter SequenceContextAlt GlyphDescription of variant appearance
U+" + codes[0] + "" + splits[0] + "" + Utility.replace(shape, " ", "
") + "
"; if (shape.length() == 0) { table += showVarGlyphs(codes[0], codes[1], "", ""); } else { int shapeCount = Utility.split(shape, ' ', shapes); for (int i = 0; i < shapeCount; ++i) { if (i != 0) table += " "; table += showVarGlyphs(codes[0], codes[1], shapes[i], splits[1]); } } table += "" + Default.ucd.getName(code) + " " + splits[1] + "
"; // now write out the results String directory = "DerivedData/"; String filename = directory + "StandardizedVariants" + GenerateData.getHTMLFileSuffix(true); PrintWriter out = Utility.openPrintWriter(filename, Utility.LATIN1_UNIX); String[] batName = {""}; String mostRecent = GenerateData.generateBat(directory, filename, GenerateData.getFileSuffix(true), batName); String version = Default.ucd.getVersion(); int lastDot = version.lastIndexOf('.'); String updateDirectory = version.substring(0,lastDot) + "-Update"; int updateV = version.charAt(version.length()-1) - '0'; if (updateV != 0) updateDirectory += (char)('1' + updateV); if (DEBUG) System.out.println("updateDirectory: " + updateDirectory); String[] replacementList = { "@revision@", Default.ucd.getVersion(), "@updateDirectory@", updateDirectory, "@date@", Default.getDate(), "@table@", table}; Utility.appendFile("StandardizedVariants-Template.html", Utility.UTF8, out, replacementList); out.close(); Utility.renameIdentical(mostRecent, Utility.getOutputName(filename), batName[0]); } }