home *** CD-ROM | disk | FTP | other *** search
- package sun.awt;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import sun.java2d.SunGraphicsEnvironment;
-
- class FontConfiguration$PropertiesHandler {
- private HashMap<String, Short> scriptIDs;
- private HashMap<String, Short> elcIDs;
- private HashMap<String, Short> componentFontNameIDs;
- private HashMap<String, Short> fontfileNameIDs;
- private HashMap<String, Integer> logicalFontIDs;
- private HashMap<String, Integer> fontStyleIDs;
- private HashMap<Short, Short> filenames;
- private HashMap<Short, short[]> sequences;
- private HashMap<Short, Short[]> scriptFonts;
- private HashMap<Short, Short> scriptAllfonts;
- private HashMap<Short, int[]> exclusions;
- private HashMap<Short, Short> awtfontpaths;
- private HashMap<Short, Short> proportionals;
- private HashMap<Short, Short> scriptAllfontsMotif;
- private HashMap<Short, Short[]> scriptFontsMotif;
- private HashMap<Short, Short> alphabeticSuffix;
- private short[] fallbackScriptIDs;
- private String version;
- private String appendedfontpath;
-
- public void load(InputStream var1) throws IOException {
- this.initLogicalNameStyle();
- this.initHashMaps();
- FontConfiguration.PropertiesHandler.FontProperties var2 = new FontConfiguration.PropertiesHandler.FontProperties(this);
- var2.load(var1);
- this.initBinaryTable();
- }
-
- private void initBinaryTable() {
- FontConfiguration.access$002(new short[20]);
- FontConfiguration.access$000()[0] = 20;
- FontConfiguration.access$102(FontConfiguration.access$200(this.scriptIDs));
- FontConfiguration.access$000()[1] = (short)(FontConfiguration.access$000()[0] + FontConfiguration.access$100().length);
- int var1 = FontConfiguration.access$100().length + this.scriptFonts.size() * 20;
- FontConfiguration.access$302(new short[var1]);
-
- for(Map.Entry var3 : this.scriptAllfonts.entrySet()) {
- FontConfiguration.access$300()[((Short)var3.getKey()).intValue()] = (Short)var3.getValue();
- }
-
- int var19 = FontConfiguration.access$100().length;
-
- for(Map.Entry var4 : this.scriptFonts.entrySet()) {
- FontConfiguration.access$300()[((Short)var4.getKey()).intValue()] = (short)(-var19);
- Short[] var5 = (Short[])var4.getValue();
-
- for(int var6 = 0; var6 < 20; ++var6) {
- if (var5[var6] != null) {
- FontConfiguration.access$300()[var19++] = var5[var6];
- } else {
- FontConfiguration.access$300()[var19++] = 0;
- }
- }
- }
-
- FontConfiguration.access$000()[2] = (short)(FontConfiguration.access$000()[1] + FontConfiguration.access$300().length);
- FontConfiguration.access$402(FontConfiguration.access$200(this.elcIDs));
- FontConfiguration.access$000()[3] = (short)(FontConfiguration.access$000()[2] + FontConfiguration.access$400().length);
- FontConfiguration.access$502(new short[this.elcIDs.size() * 5]);
-
- for(Map.Entry var21 : this.sequences.entrySet()) {
- int var30 = ((Short)var21.getKey()).intValue();
- short[] var36 = (short[])var21.getValue();
- if (var36.length == 1) {
- for(int var39 = 0; var39 < 5; ++var39) {
- FontConfiguration.access$500()[var30 * 5 + var39] = var36[0];
- }
- } else {
- for(int var7 = 0; var7 < 5; ++var7) {
- FontConfiguration.access$500()[var30 * 5 + var7] = var36[var7];
- }
- }
- }
-
- FontConfiguration.access$000()[4] = (short)(FontConfiguration.access$000()[3] + FontConfiguration.access$500().length);
- FontConfiguration.access$602(FontConfiguration.access$200(this.fontfileNameIDs));
- FontConfiguration.access$000()[5] = (short)(FontConfiguration.access$000()[4] + FontConfiguration.access$600().length);
- FontConfiguration.access$702(FontConfiguration.access$200(this.componentFontNameIDs));
- FontConfiguration.access$000()[6] = (short)(FontConfiguration.access$000()[5] + FontConfiguration.access$700().length);
- FontConfiguration.access$802(new short[FontConfiguration.access$700().length]);
-
- for(int var22 = 0; var22 < FontConfiguration.access$800().length; ++var22) {
- FontConfiguration.access$800()[var22] = -1;
- }
-
- for(Map.Entry var23 : this.filenames.entrySet()) {
- FontConfiguration.access$800()[(Short)var23.getKey()] = (Short)var23.getValue();
- }
-
- FontConfiguration.access$000()[7] = (short)(FontConfiguration.access$000()[6] + FontConfiguration.access$800().length);
- FontConfiguration.table_awtfontpaths = new short[FontConfiguration.access$100().length];
-
- for(Map.Entry var24 : this.awtfontpaths.entrySet()) {
- FontConfiguration.table_awtfontpaths[(Short)var24.getKey()] = (Short)var24.getValue();
- }
-
- FontConfiguration.access$000()[8] = (short)(FontConfiguration.access$000()[7] + FontConfiguration.table_awtfontpaths.length);
- FontConfiguration.access$902(new short[this.scriptIDs.size()]);
-
- for(Map.Entry var25 : this.exclusions.entrySet()) {
- int[] var31 = (int[])var25.getValue();
- char[] var37 = new char[var31.length * 2];
- int var40 = 0;
-
- for(int var8 = 0; var8 < var31.length; ++var8) {
- var37[var40++] = (char)(var31[var8] >> 16);
- var37[var40++] = (char)(var31[var8] & '\uffff');
- }
-
- FontConfiguration.access$900()[(Short)var25.getKey()] = FontConfiguration.access$1000(new String(var37));
- }
-
- FontConfiguration.access$000()[9] = (short)(FontConfiguration.access$000()[8] + FontConfiguration.access$900().length);
- FontConfiguration.access$1102(new short[this.proportionals.size() * 2]);
- Iterator var15 = this.proportionals.entrySet().iterator();
-
- Map.Entry var32;
- for(int var26 = 0; var15.hasNext(); FontConfiguration.access$1100()[var26++] = (Short)var32.getValue()) {
- var32 = (Map.Entry)var15.next();
- FontConfiguration.access$1100()[var26++] = (Short)var32.getKey();
- }
-
- FontConfiguration.access$000()[10] = (short)(FontConfiguration.access$000()[9] + FontConfiguration.access$1100().length);
- if (this.scriptAllfontsMotif.size() == 0 && this.scriptFontsMotif.size() == 0) {
- FontConfiguration.access$1202(FontConfiguration.access$1300());
- } else {
- var1 = FontConfiguration.access$100().length + this.scriptFontsMotif.size() * 20;
- FontConfiguration.access$1202(new short[var1]);
-
- for(Map.Entry var33 : this.scriptAllfontsMotif.entrySet()) {
- FontConfiguration.access$1200()[((Short)var33.getKey()).intValue()] = (Short)var33.getValue();
- }
-
- var19 = FontConfiguration.access$100().length;
-
- for(Map.Entry var34 : this.scriptFontsMotif.entrySet()) {
- FontConfiguration.access$1200()[((Short)var34.getKey()).intValue()] = (short)(-var19);
- Short[] var38 = (Short[])var34.getValue();
-
- for(int var42 = 0; var42 < 20; ++var42) {
- if (var38[var42] != null) {
- FontConfiguration.access$1200()[var19++] = var38[var42];
- } else {
- FontConfiguration.access$1200()[var19++] = 0;
- }
- }
- }
- }
-
- FontConfiguration.access$000()[11] = (short)(FontConfiguration.access$000()[10] + FontConfiguration.access$1200().length);
- FontConfiguration.access$1402(new short[this.alphabeticSuffix.size() * 2]);
- var15 = this.alphabeticSuffix.entrySet().iterator();
-
- for(int var28 = 0; var15.hasNext(); FontConfiguration.access$1400()[var28++] = (Short)var32.getValue()) {
- var32 = (Map.Entry)var15.next();
- FontConfiguration.access$1400()[var28++] = (Short)var32.getKey();
- }
-
- FontConfiguration.access$000()[15] = FontConfiguration.access$1500(this.fallbackScriptIDs);
- FontConfiguration.access$000()[16] = FontConfiguration.access$1000(this.appendedfontpath);
- FontConfiguration.access$000()[17] = FontConfiguration.access$1000(this.version);
- FontConfiguration.access$000()[12] = (short)(FontConfiguration.access$000()[11] + FontConfiguration.access$1400().length);
- FontConfiguration.access$1602(new short[FontConfiguration.access$1700() + 1]);
- System.arraycopy(FontConfiguration.access$1800(), 0, FontConfiguration.access$1600(), 0, FontConfiguration.access$1700() + 1);
- FontConfiguration.access$000()[13] = (short)(FontConfiguration.access$000()[12] + FontConfiguration.access$1700() + 1);
- FontConfiguration.access$1902(FontConfiguration.access$2000().toString().toCharArray());
- FontConfiguration.access$000()[14] = (short)(FontConfiguration.access$000()[13] + FontConfiguration.access$2000().length());
- FontConfiguration.access$2102(new String[FontConfiguration.access$1600().length]);
- }
-
- private void initLogicalNameStyle() {
- this.logicalFontIDs = new HashMap();
- this.fontStyleIDs = new HashMap();
- this.logicalFontIDs.put("serif", 0);
- this.logicalFontIDs.put("sansserif", 1);
- this.logicalFontIDs.put("monospaced", 2);
- this.logicalFontIDs.put("dialog", 3);
- this.logicalFontIDs.put("dialoginput", 4);
- this.fontStyleIDs.put("plain", 0);
- this.fontStyleIDs.put("bold", 1);
- this.fontStyleIDs.put("italic", 2);
- this.fontStyleIDs.put("bolditalic", 3);
- }
-
- private void initHashMaps() {
- this.scriptIDs = new HashMap();
- this.elcIDs = new HashMap();
- this.componentFontNameIDs = new HashMap();
- this.componentFontNameIDs.put("", new Short((short)0));
- this.fontfileNameIDs = new HashMap();
- this.filenames = new HashMap();
- this.sequences = new HashMap();
- this.scriptFonts = new HashMap();
- this.scriptAllfonts = new HashMap();
- this.exclusions = new HashMap();
- this.awtfontpaths = new HashMap();
- this.proportionals = new HashMap();
- this.scriptFontsMotif = new HashMap();
- this.scriptAllfontsMotif = new HashMap();
- this.alphabeticSuffix = new HashMap();
- this.fallbackScriptIDs = FontConfiguration.access$1300();
- }
-
- private int[] parseExclusions(String var1, String var2) {
- if (var2 == null) {
- return FontConfiguration.access$2200();
- } else {
- int var3 = 1;
-
- for(int var15 = 0; (var15 = var2.indexOf(44, var15)) != -1; ++var15) {
- ++var3;
- }
-
- int[] var5 = new int[var3 * 2];
- int var16 = 0;
- int var6 = 0;
-
- int var22;
- for(int var7 = 0; var7 < var3 * 2; var5[var7++] = var22) {
- int var10 = 0;
- var22 = 0;
-
- try {
- var6 = var2.indexOf(45, var16);
- String var8 = var2.substring(var16, var6);
- var16 = var6 + 1;
- var6 = var2.indexOf(44, var16);
- if (var6 == -1) {
- var6 = var2.length();
- }
-
- String var9 = var2.substring(var16, var6);
- var16 = var6 + 1;
- int var12 = var8.length();
- int var13 = var9.length();
- if (var12 != 4 && var12 != 6 || var13 != 4 && var13 != 6) {
- throw new Exception();
- }
-
- var10 = Integer.parseInt(var8, 16);
- var22 = Integer.parseInt(var9, 16);
- if (var10 > var22) {
- throw new Exception();
- }
- } catch (Exception var14) {
- if (SunGraphicsEnvironment.debugFonts && FontConfiguration.access$2300() != null) {
- FontConfiguration.access$2300().config("Failed parsing " + var1 + " property of font configuration.");
- }
-
- return FontConfiguration.access$2200();
- }
-
- var5[var7++] = var10;
- }
-
- return var5;
- }
- }
-
- private Short getID(HashMap<String, Short> var1, String var2) {
- Short var3 = (Short)var1.get(var2);
- if (var3 == null) {
- var1.put(var2, (short)var1.size());
- return (Short)var1.get(var2);
- } else {
- return var3;
- }
- }
-
- private void parseProperty(String var1, String var2) {
- if (var1.startsWith("filename.")) {
- var1 = var1.substring(9);
- if (!"MingLiU_HKSCS".equals(var1)) {
- var1 = var1.replace('_', ' ');
- }
-
- Short var20 = this.getID(this.componentFontNameIDs, var1);
- Short var22 = this.getID(this.fontfileNameIDs, var2);
- this.filenames.put(var20, var22);
- } else if (var1.startsWith("exclusion.")) {
- var1 = var1.substring(10);
- this.exclusions.put(this.getID(this.scriptIDs, var1), this.parseExclusions(var1, var2));
- } else if (var1.startsWith("sequence.")) {
- var1 = var1.substring(9);
- boolean var19 = false;
- boolean var21 = false;
- String[] var23 = (String[])FontConfiguration.access$2600(var2).toArray(FontConfiguration.access$2500());
- short[] var24 = new short[var23.length];
-
- for(int var25 = 0; var25 < var23.length; ++var25) {
- if ("alphabetic/default".equals(var23[var25])) {
- var23[var25] = "alphabetic";
- var19 = true;
- } else if ("alphabetic/1252".equals(var23[var25])) {
- var23[var25] = "alphabetic";
- var21 = true;
- }
-
- var24[var25] = this.getID(this.scriptIDs, var23[var25]);
- }
-
- short var26 = FontConfiguration.access$1500(var24);
- Object var27 = null;
- int var29 = var1.indexOf(46);
- Short var28;
- if (var29 == -1) {
- if ("fallback".equals(var1)) {
- this.fallbackScriptIDs = var24;
- return;
- }
-
- if (!"allfonts".equals(var1)) {
- if (FontConfiguration.access$2300() != null) {
- FontConfiguration.access$2300().config("Error sequence def: <sequence." + var1 + ">");
- }
-
- return;
- }
-
- var28 = this.getID(this.elcIDs, "NULL.NULL.NULL");
- } else {
- var28 = this.getID(this.elcIDs, var1.substring(var29 + 1));
- var1 = var1.substring(0, var29);
- }
-
- Object var10 = null;
- short[] var30;
- if ("allfonts".equals(var1)) {
- var30 = new short[]{var26};
- } else {
- var30 = (short[])this.sequences.get(var28);
- if (var30 == null) {
- var30 = new short[5];
- }
-
- Integer var11 = (Integer)this.logicalFontIDs.get(var1);
- if (var11 == null) {
- if (FontConfiguration.access$2300() != null) {
- FontConfiguration.access$2300().config("Unrecognizable logicfont name " + var1);
- }
-
- return;
- }
-
- var30[var11] = var26;
- }
-
- this.sequences.put(var28, var30);
- if (var19) {
- this.alphabeticSuffix.put(var28, FontConfiguration.access$1000("default"));
- } else if (var21) {
- this.alphabeticSuffix.put(var28, FontConfiguration.access$1000("1252"));
- }
- } else if (var1.startsWith("allfonts.")) {
- var1 = var1.substring(9);
- if (var1.endsWith(".motif")) {
- var1 = var1.substring(0, var1.length() - 6);
- this.scriptAllfontsMotif.put(this.getID(this.scriptIDs, var1), this.getID(this.componentFontNameIDs, var2));
- } else {
- this.scriptAllfonts.put(this.getID(this.scriptIDs, var1), this.getID(this.componentFontNameIDs, var2));
- }
- } else if (var1.startsWith("awtfontpath.")) {
- var1 = var1.substring(12);
- this.awtfontpaths.put(this.getID(this.scriptIDs, var1), FontConfiguration.access$1000(var2));
- } else if ("version".equals(var1)) {
- this.version = var2;
- } else if ("appendedfontpath".equals(var1)) {
- this.appendedfontpath = var2;
- } else if (var1.startsWith("proportional.")) {
- var1 = var1.substring(13).replace('_', ' ');
- this.proportionals.put(this.getID(this.componentFontNameIDs, var1), this.getID(this.componentFontNameIDs, var2));
- } else {
- boolean var5 = false;
- int var3 = var1.indexOf(46);
- if (var3 == -1) {
- if (FontConfiguration.access$2300() != null) {
- FontConfiguration.access$2300().config("Failed parsing " + var1 + " property of font configuration.");
- }
-
- return;
- }
-
- int var4 = var1.indexOf(46, var3 + 1);
- if (var4 == -1) {
- if (FontConfiguration.access$2300() != null) {
- FontConfiguration.access$2300().config("Failed parsing " + var1 + " property of font configuration.");
- }
-
- return;
- }
-
- if (var1.endsWith(".motif")) {
- var1 = var1.substring(0, var1.length() - 6);
- var5 = true;
- }
-
- Integer var6 = (Integer)this.logicalFontIDs.get(var1.substring(0, var3));
- Integer var7 = (Integer)this.fontStyleIDs.get(var1.substring(var3 + 1, var4));
- Short var8 = this.getID(this.scriptIDs, var1.substring(var4 + 1));
- if (var6 == null || var7 == null) {
- if (FontConfiguration.access$2300() != null) {
- FontConfiguration.access$2300().config("unrecognizable logicfont name/style at " + var1);
- }
-
- return;
- }
-
- Short[] var9;
- if (var5) {
- var9 = (Short[])this.scriptFontsMotif.get(var8);
- } else {
- var9 = (Short[])this.scriptFonts.get(var8);
- }
-
- if (var9 == null) {
- var9 = new Short[20];
- }
-
- var9[var6 * 4 + var7] = this.getID(this.componentFontNameIDs, var2);
- if (var5) {
- this.scriptFontsMotif.put(var8, var9);
- } else {
- this.scriptFonts.put(var8, var9);
- }
- }
-
- }
-
- // $FF: synthetic method
- static void access$2400(FontConfiguration$PropertiesHandler var0, String var1, String var2) {
- var0.parseProperty(var1, var2);
- }
- }
-