]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Added (limited) support for Unicode UAX#14 compliant line breaking. Thanks to Joerg...
authorManuel Mall <manuel@apache.org>
Fri, 22 Dec 2006 09:16:18 +0000 (09:16 +0000)
committerManuel Mall <manuel@apache.org>
Fri, 22 Dec 2006 09:16:18 +0000 (09:16 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@489585 13f79535-47bb-0310-9956-ffa450edef68

74 files changed:
build.xml
src/codegen/Courier.xml [deleted file]
src/codegen/CourierBold.xml [deleted file]
src/codegen/CourierBoldOblique.xml [deleted file]
src/codegen/CourierOblique.xml [deleted file]
src/codegen/Helvetica.xml [deleted file]
src/codegen/HelveticaBold.xml [deleted file]
src/codegen/HelveticaBoldOblique.xml [deleted file]
src/codegen/HelveticaOblique.xml [deleted file]
src/codegen/Symbol.xml [deleted file]
src/codegen/TimesBold.xml [deleted file]
src/codegen/TimesBoldItalic.xml [deleted file]
src/codegen/TimesItalic.xml [deleted file]
src/codegen/TimesRoman.xml [deleted file]
src/codegen/ZapfDingbats.xml [deleted file]
src/codegen/charlist.xml [deleted file]
src/codegen/code-point-mapping.xsl [deleted file]
src/codegen/colorkw.xml [deleted file]
src/codegen/constants.xml [deleted file]
src/codegen/constants.xsl [deleted file]
src/codegen/encodings.xml [deleted file]
src/codegen/fo-property-mapping.xsl [deleted file]
src/codegen/fo/colorkw.xml [new file with mode: 0644]
src/codegen/fo/constants.xml [new file with mode: 0644]
src/codegen/fo/constants.xsl [new file with mode: 0644]
src/codegen/fo/fo-property-mapping.xsl [new file with mode: 0644]
src/codegen/fo/foelements.xml [new file with mode: 0644]
src/codegen/fo/foproperties.xml [new file with mode: 0644]
src/codegen/fo/properties.dtd [new file with mode: 0644]
src/codegen/fo/property-sets.xsl [new file with mode: 0644]
src/codegen/fo/propinc.xsl [new file with mode: 0644]
src/codegen/fo/propmaker.xsl [new file with mode: 0644]
src/codegen/foelements.xml [deleted file]
src/codegen/font-file.xsl [deleted file]
src/codegen/fonts/Courier.xml [new file with mode: 0644]
src/codegen/fonts/CourierBold.xml [new file with mode: 0644]
src/codegen/fonts/CourierBoldOblique.xml [new file with mode: 0644]
src/codegen/fonts/CourierOblique.xml [new file with mode: 0644]
src/codegen/fonts/Helvetica.xml [new file with mode: 0644]
src/codegen/fonts/HelveticaBold.xml [new file with mode: 0644]
src/codegen/fonts/HelveticaBoldOblique.xml [new file with mode: 0644]
src/codegen/fonts/HelveticaOblique.xml [new file with mode: 0644]
src/codegen/fonts/Symbol.xml [new file with mode: 0644]
src/codegen/fonts/TimesBold.xml [new file with mode: 0644]
src/codegen/fonts/TimesBoldItalic.xml [new file with mode: 0644]
src/codegen/fonts/TimesItalic.xml [new file with mode: 0644]
src/codegen/fonts/TimesRoman.xml [new file with mode: 0644]
src/codegen/fonts/ZapfDingbats.xml [new file with mode: 0644]
src/codegen/fonts/charlist.xml [new file with mode: 0644]
src/codegen/fonts/code-point-mapping.xsl [new file with mode: 0644]
src/codegen/fonts/encodings.xml [new file with mode: 0644]
src/codegen/fonts/font-file.xsl [new file with mode: 0644]
src/codegen/fonts/glyphlist.xml [new file with mode: 0644]
src/codegen/fonts/t1font-file.xsl [new file with mode: 0644]
src/codegen/fonts/ttffontfile.xsl [new file with mode: 0644]
src/codegen/foproperties.xml [deleted file]
src/codegen/glyphlist.xml [deleted file]
src/codegen/properties.dtd [deleted file]
src/codegen/property-sets.xsl [deleted file]
src/codegen/propinc.xsl [deleted file]
src/codegen/propmaker.xsl [deleted file]
src/codegen/t1font-file.xsl [deleted file]
src/codegen/ttffontfile.xsl [deleted file]
src/codegen/unicode/data/LineBreakPairTable.txt [new file with mode: 0755]
src/codegen/unicode/java/org/apache/fop/text/linebreak/GenerateLineBreakUtils.java [new file with mode: 0644]
src/java/org/apache/fop/layoutmgr/inline/TextLayoutManager.java
src/java/org/apache/fop/text/linebreak/LineBreakStatus.java [new file with mode: 0644]
src/java/org/apache/fop/text/linebreak/LineBreakUtils.java [new file with mode: 0644]
status.xml
test/java/org/apache/fop/text/linebreak/LineBreakStatusTest.java [new file with mode: 0644]
test/java/org/apache/fop/text/linebreak/LineBreakUtilsTest.java [new file with mode: 0644]
test/layoutengine/standard-testcases/block_uax14_linebreaking.xml [new file with mode: 0755]
test/layoutengine/standard-testcases/block_white-space_4.xml
test/layoutengine/standard-testcases/inline_border_padding_conditionality_2.xml

index c0fca36e648003062a931a7f60f10ff7222cdf65..aead809dd0fe7aa8b6846a6a0159b8e6b914ecb7 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -162,6 +162,7 @@ list of possible build targets.
   
   <property name="src.dir" value="${basedir}/src"/>
   <property name="src.codegen.dir" value="${src.dir}/codegen"/>
+  <property name="src.codegen.fonts.dir" value="${src.codegen.dir}/fonts"/>
   <property name="src.java.dir" value="${src.dir}/java"/>
   <property name="src.sandbox.dir" value="${src.dir}/sandbox"/>
   <property name="src.viewer.resources.dir" value="${src.java.dir}/org/apache/fop/render/awt/viewer/resources"/>
@@ -178,6 +179,7 @@ list of possible build targets.
   <property name="build.gensrc.dir" value="${build.dir}/gensrc"/>
   <property name="build.classes.dir" value="${build.dir}/classes"/>
   <property name="build.sandbox-classes.dir" value="${build.dir}/sandbox-classes"/>
+  <property name="build.codegen-classes.dir" value="${build.dir}/codegen-classes"/>
   <property name="build.javadocs.dir" value="${build.dir}/javadocs"/>
   <property name="build.examples.dir" value="${build.dir}/examples"/>
 
@@ -319,69 +321,69 @@ list of possible build targets.
     <mkdir dir="${build.gensrc.dir}"/>
     <mkdir dir="${build.gensrc.dir}/org/apache/fop/fonts/base14"/>
 
-    <style in="${src.codegen.dir}/encodings.xml"
-           style="${src.codegen.dir}/code-point-mapping.xsl"
+    <style in="${src.codegen.fonts.dir}/encodings.xml"
+           style="${src.codegen.fonts.dir}/code-point-mapping.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/CodePointMapping.java"/>
     <!-- Task unrolled because of a bug in Xalan included in some
          JDK 1.4 releases
     <style basedir="src/codegen" includes="Helvetica*.xml,Times*.xml,Courier*.xml"
-        style="${src.codegen.dir}/font-file.xsl"
+        style="${src.codegen.fonts.dir}/font-file.xsl"
         destdir="${build.gensrc.dir}/org/apache/fop/fonts/base14" extension=".java">
         <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
     -->
-    <style in="${src.codegen.dir}/Courier.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/Courier.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/Courier.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/CourierOblique.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/CourierOblique.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/CourierOblique.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/CourierBold.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/CourierBold.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/CourierBold.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/CourierBoldOblique.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/CourierBoldOblique.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/CourierBoldOblique.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/Helvetica.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/Helvetica.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         destdir="${build.gensrc.dir}/org/apache/fop/fonts/base14"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/Helvetica.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/HelveticaBold.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/HelveticaBold.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/HelveticaBold.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/HelveticaOblique.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/HelveticaOblique.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/HelveticaOblique.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/HelveticaBoldOblique.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/HelveticaBoldOblique.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/HelveticaBoldOblique.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/TimesRoman.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/TimesRoman.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/TimesRoman.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/TimesItalic.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/TimesItalic.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/TimesItalic.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/TimesBold.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/TimesBold.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/TimesBold.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/TimesBoldItalic.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/TimesBoldItalic.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/TimesBoldItalic.java">
       <param name="encoding" expression="WinAnsiEncoding"/>
     </style>
-    <style in="${src.codegen.dir}/Symbol.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/Symbol.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/Symbol.java"/>
-    <style in="${src.codegen.dir}/ZapfDingbats.xml" style="${src.codegen.dir}/font-file.xsl"
+    <style in="${src.codegen.fonts.dir}/ZapfDingbats.xml" style="${src.codegen.fonts.dir}/font-file.xsl"
         out="${build.gensrc.dir}/org/apache/fop/fonts/base14/ZapfDingbats.java"/>
 
   </target>
@@ -901,7 +903,26 @@ list of possible build targets.
     </junit>
   </target>
 
-  <target name="junit" depends="junit-basic, junit-transcoder, junit-layout, junit-fotree, junit-intermediate-format" description="Runs all of FOP's JUnit tests" if="junit.present">
+  <target name="junit-text-linebreak" depends="junit-compile" description="Runs FOP's JUnit unicode linebreak tests" if="junit.present">
+    <echo message="Running tests for Unicode UAX#14 support"/>
+    <junit dir="${basedir}" haltonfailure="${junit.haltonfailure}" fork="${junit.fork}" errorproperty="fop.junit.error" failureproperty="fop.junit.failure">
+      <sysproperty key="basedir" value="${basedir}"/>
+      <sysproperty key="jawa.awt.headless" value="true"/>
+      <formatter type="brief" usefile="false"/>
+      <formatter type="plain" usefile="true"/>
+      <formatter type="xml" usefile="true"/>
+      <classpath>
+        <pathelement location="${build.dir}/test-classes"/>
+        <path refid="libs-build-classpath"/>
+        <fileset dir="build">
+          <include name="fop.jar"/>
+        </fileset>
+      </classpath>
+      <test name="org.apache.fop.text.linebreak.LineBreakStatusTest" todir="${junit.reports.dir}"/>
+    </junit>
+  </target>
+
+  <target name="junit" depends="junit-basic, junit-transcoder, junit-text-linebreak, junit-layout, junit-fotree, junit-intermediate-format" description="Runs all of FOP's JUnit tests" if="junit.present">
     <fail>
       <condition>
         <or>
@@ -1260,13 +1281,29 @@ NOTE:
   <!-- and may have updates that will *not* be generated by below.  This   -->
   <!-- target should never be part of the normal build process.            -->
   <!-- =================================================================== -->
-  <target name="xsltToJava" >
-    <style in="src\codegen\constants.xml" style="src\codegen\constants.xsl"
+  <target name="codegen-fo" >
+    <style in="${src.codegen.dir}/fo/constants.xml" style="${src.codegen.dir}/fo/constants.xsl"
         out="Constants.java"/>
-    <style in="src/codegen/foelements.xml" style="src/codegen/property-sets.xsl"
+    <style in="${src.codegen.dir}/fo/foelements.xml" style="${src.codegen.dir}/fo/property-sets.xsl"
         out="PropertySets.java"/>
   </target>
 
+  <!-- =================================================================== -->
+  <!-- Helper task to generate source files that have already been         -->
+  <!-- checked into CVS.  For these files, CVS version is the official one -->
+  <!-- and may have updates that will *not* be generated by below.  This   -->
+  <!-- target should never be part of the normal build process.            -->
+  <!-- =================================================================== -->
+  <target name="codegen-unicode" >
+    <mkdir dir="${build.codegen-classes.dir}"/>
+    <javac destdir="${build.codegen-classes.dir}" fork="${javac.fork}" debug="${javac.debug}"
+           deprecation="${javac.deprecation}" optimize="${javac.optimize}"
+           source="${javac.source}" target="${javac.target}">
+      <src path="${src.codegen.dir}/unicode/java"/>
+    </javac>
+    <java classname="org.apache.fop.text.linebreak.GenerateLineBreakUtils" classpath="${build.codegen-classes.dir}" />
+  </target>
+
   <!-- =================================================================== -->
   <!-- Special target for Gump                                             -->
   <!-- =================================================================== -->
diff --git a/src/codegen/Courier.xml b/src/codegen/Courier.xml
deleted file mode 100644 (file)
index 89c7314..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Courier</font-name>
-   <class-name>Courier</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>562</cap-height>
-   <x-height>426</x-height>
-   <ascender>629</ascender>
-   <descender>-157</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="600"/>
-      <char name="AE" width="600"/>
-      <char name="Aacute" width="600"/>
-      <char name="Acircumflex" width="600"/>
-      <char name="Adieresis" width="600"/>
-      <char name="Agrave" width="600"/>
-      <char name="Aring" width="600"/>
-      <char name="Atilde" width="600"/>
-      <char name="B" width="600"/>
-      <char name="C" width="600"/>
-      <char name="Ccedilla" width="600"/>
-      <char name="D" width="600"/>
-      <char name="E" width="600"/>
-      <char name="Eacute" width="600"/>
-      <char name="Ecircumflex" width="600"/>
-      <char name="Edieresis" width="600"/>
-      <char name="Egrave" width="600"/>
-      <char name="Eth" width="600"/>
-      <char name="Euro" width="600"/>
-      <char name="F" width="600"/>
-      <char name="G" width="600"/>
-      <char name="Gcaron" width="600"/>
-      <char name="H" width="600"/>
-      <char name="I" width="600"/>
-      <char name="IJ" width="600"/>
-      <char name="Iacute" width="600"/>
-      <char name="Icircumflex" width="600"/>
-      <char name="Idieresis" width="600"/>
-      <char name="Idot" width="600"/>
-      <char name="Igrave" width="600"/>
-      <char name="J" width="600"/>
-      <char name="K" width="600"/>
-      <char name="L" width="600"/>
-      <char name="LL" width="600"/>
-      <char name="Lslash" width="600"/>
-      <char name="M" width="600"/>
-      <char name="N" width="600"/>
-      <char name="Ntilde" width="600"/>
-      <char name="O" width="600"/>
-      <char name="OE" width="600"/>
-      <char name="Oacute" width="600"/>
-      <char name="Ocircumflex" width="600"/>
-      <char name="Odieresis" width="600"/>
-      <char name="Ograve" width="600"/>
-      <char name="Oslash" width="600"/>
-      <char name="Otilde" width="600"/>
-      <char name="P" width="600"/>
-      <char name="Q" width="600"/>
-      <char name="R" width="600"/>
-      <char name="S" width="600"/>
-      <char name="Scaron" width="600"/>
-      <char name="Scedilla" width="600"/>
-      <char name="T" width="600"/>
-      <char name="Thorn" width="600"/>
-      <char name="U" width="600"/>
-      <char name="Uacute" width="600"/>
-      <char name="Ucircumflex" width="600"/>
-      <char name="Udieresis" width="600"/>
-      <char name="Ugrave" width="600"/>
-      <char name="V" width="600"/>
-      <char name="W" width="600"/>
-      <char name="X" width="600"/>
-      <char name="Y" width="600"/>
-      <char name="Yacute" width="600"/>
-      <char name="Ydieresis" width="600"/>
-      <char name="Z" width="600"/>
-      <char name="Zcaron" width="600"/>
-      <char name="a" width="600"/>
-      <char name="aacute" width="600"/>
-      <char name="acircumflex" width="600"/>
-      <char name="acute" width="600"/>
-      <char name="adieresis" width="600"/>
-      <char name="ae" width="600"/>
-      <char name="agrave" width="600"/>
-      <char name="ampersand" width="600"/>
-      <char name="aring" width="600"/>
-      <char name="arrowboth" width="600"/>
-      <char name="arrowdown" width="600"/>
-      <char name="arrowleft" width="600"/>
-      <char name="arrowright" width="600"/>
-      <char name="arrowup" width="600"/>
-      <char name="asciicircum" width="600"/>
-      <char name="asciitilde" width="600"/>
-      <char name="asterisk" width="600"/>
-      <char name="at" width="600"/>
-      <char name="atilde" width="600"/>
-      <char name="b" width="600"/>
-      <char name="backslash" width="600"/>
-      <char name="bar" width="600"/>
-      <char name="braceleft" width="600"/>
-      <char name="braceright" width="600"/>
-      <char name="bracketleft" width="600"/>
-      <char name="bracketright" width="600"/>
-      <char name="breve" width="600"/>
-      <char name="brokenbar" width="600"/>
-      <char name="bullet" width="600"/>
-      <char name="c" width="600"/>
-      <char name="caron" width="600"/>
-      <char name="ccedilla" width="600"/>
-      <char name="cedilla" width="600"/>
-      <char name="cent" width="600"/>
-      <char name="center" width="600"/>
-      <char name="circumflex" width="600"/>
-      <char name="colon" width="600"/>
-      <char name="comma" width="600"/>
-      <char name="copyright" width="600"/>
-      <char name="currency" width="600"/>
-      <char name="d" width="600"/>
-      <char name="dagger" width="600"/>
-      <char name="daggerdbl" width="600"/>
-      <char name="dectab" width="600"/>
-      <char name="degree" width="600"/>
-      <char name="dieresis" width="600"/>
-      <char name="divide" width="600"/>
-      <char name="dollar" width="600"/>
-      <char name="dotaccent" width="600"/>
-      <char name="dotlessi" width="600"/>
-      <char name="down" width="600"/>
-      <char name="e" width="600"/>
-      <char name="eacute" width="600"/>
-      <char name="ecircumflex" width="600"/>
-      <char name="edieresis" width="600"/>
-      <char name="egrave" width="600"/>
-      <char name="eight" width="600"/>
-      <char name="ellipsis" width="600"/>
-      <char name="emdash" width="600"/>
-      <char name="endash" width="600"/>
-      <char name="equal" width="600"/>
-      <char name="eth" width="600"/>
-      <char name="exclam" width="600"/>
-      <char name="exclamdown" width="600"/>
-      <char name="f" width="600"/>
-      <char name="fi" width="600"/>
-      <char name="five" width="600"/>
-      <char name="fl" width="600"/>
-      <char name="florin" width="600"/>
-      <char name="format" width="600"/>
-      <char name="four" width="600"/>
-      <char name="fraction" width="600"/>
-      <char name="g" width="600"/>
-      <char name="gcaron" width="600"/>
-      <char name="germandbls" width="600"/>
-      <char name="grave" width="600"/>
-      <char name="graybox" width="600"/>
-      <char name="greater" width="600"/>
-      <char name="guillemotleft" width="600"/>
-      <char name="guillemotright" width="600"/>
-      <char name="guilsinglleft" width="600"/>
-      <char name="guilsinglright" width="600"/>
-      <char name="h" width="600"/>
-      <char name="hungarumlaut" width="600"/>
-      <char name="hyphen" width="600"/>
-      <char name="i" width="600"/>
-      <char name="iacute" width="600"/>
-      <char name="icircumflex" width="600"/>
-      <char name="idieresis" width="600"/>
-      <char name="igrave" width="600"/>
-      <char name="ij" width="600"/>
-      <char name="indent" width="600"/>
-      <char name="j" width="600"/>
-      <char name="k" width="600"/>
-      <char name="l" width="600"/>
-      <char name="largebullet" width="600"/>
-      <char name="left" width="600"/>
-      <char name="less" width="600"/>
-      <char name="lira" width="600"/>
-      <char name="ll" width="600"/>
-      <char name="logicalnot" width="600"/>
-      <char name="lslash" width="600"/>
-      <char name="m" width="600"/>
-      <char name="macron" width="600"/>
-      <char name="merge" width="600"/>
-      <char name="minus" width="600"/>
-      <char name="mu" width="600"/>
-      <char name="multiply" width="600"/>
-      <char name="n" width="600"/>
-      <char name="nine" width="600"/>
-      <char name="notegraphic" width="600"/>
-      <char name="ntilde" width="600"/>
-      <char name="numbersign" width="600"/>
-      <char name="o" width="600"/>
-      <char name="oacute" width="600"/>
-      <char name="ocircumflex" width="600"/>
-      <char name="odieresis" width="600"/>
-      <char name="oe" width="600"/>
-      <char name="ogonek" width="600"/>
-      <char name="ograve" width="600"/>
-      <char name="one" width="600"/>
-      <char name="onehalf" width="600"/>
-      <char name="onequarter" width="600"/>
-      <char name="onesuperior" width="600"/>
-      <char name="ordfeminine" width="600"/>
-      <char name="ordmasculine" width="600"/>
-      <char name="oslash" width="600"/>
-      <char name="otilde" width="600"/>
-      <char name="overscore" width="600"/>
-      <char name="p" width="600"/>
-      <char name="paragraph" width="600"/>
-      <char name="parenleft" width="600"/>
-      <char name="parenright" width="600"/>
-      <char name="percent" width="600"/>
-      <char name="period" width="600"/>
-      <char name="periodcentered" width="600"/>
-      <char name="perthousand" width="600"/>
-      <char name="plus" width="600"/>
-      <char name="plusminus" width="600"/>
-      <char name="prescription" width="600"/>
-      <char name="q" width="600"/>
-      <char name="question" width="600"/>
-      <char name="questiondown" width="600"/>
-      <char name="quotedbl" width="600"/>
-      <char name="quotedblbase" width="600"/>
-      <char name="quotedblleft" width="600"/>
-      <char name="quotedblright" width="600"/>
-      <char name="quoteleft" width="600"/>
-      <char name="quoteright" width="600"/>
-      <char name="quotesinglbase" width="600"/>
-      <char name="quotesingle" width="600"/>
-      <char name="r" width="600"/>
-      <char name="registered" width="600"/>
-      <char name="return" width="600"/>
-      <char name="ring" width="600"/>
-      <char name="s" width="600"/>
-      <char name="scaron" width="600"/>
-      <char name="scedilla" width="600"/>
-      <char name="section" width="600"/>
-      <char name="semicolon" width="600"/>
-      <char name="seven" width="600"/>
-      <char name="six" width="600"/>
-      <char name="slash" width="600"/>
-      <char name="space" width="600"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="600"/>
-      <char name="square" width="600"/>
-      <char name="sterling" width="600"/>
-      <char name="stop" width="600"/>
-      <char name="t" width="600"/>
-      <char name="tab" width="600"/>
-      <char name="thorn" width="600"/>
-      <char name="three" width="600"/>
-      <char name="threequarters" width="600"/>
-      <char name="threesuperior" width="600"/>
-      <char name="tilde" width="600"/>
-      <char name="trademark" width="600"/>
-      <char name="two" width="600"/>
-      <char name="twosuperior" width="600"/>
-      <char name="u" width="600"/>
-      <char name="uacute" width="600"/>
-      <char name="ucircumflex" width="600"/>
-      <char name="udieresis" width="600"/>
-      <char name="ugrave" width="600"/>
-      <char name="underscore" width="600"/>
-      <char name="up" width="600"/>
-      <char name="v" width="600"/>
-      <char name="w" width="600"/>
-      <char name="x" width="600"/>
-      <char name="y" width="600"/>
-      <char name="yacute" width="600"/>
-      <char name="ydieresis" width="600"/>
-      <char name="yen" width="600"/>
-      <char name="z" width="600"/>
-      <char name="zcaron" width="600"/>
-      <char name="zero" width="600"/>
-   </widths>
-</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/CourierBold.xml b/src/codegen/CourierBold.xml
deleted file mode 100644 (file)
index 92a777a..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Courier-Bold</font-name>
-   <class-name>CourierBold</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>562</cap-height>
-   <x-height>439</x-height>
-   <ascender>626</ascender>
-   <descender>-142</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="600"/>
-      <char name="AE" width="600"/>
-      <char name="Aacute" width="600"/>
-      <char name="Acircumflex" width="600"/>
-      <char name="Adieresis" width="600"/>
-      <char name="Agrave" width="600"/>
-      <char name="Aring" width="600"/>
-      <char name="Atilde" width="600"/>
-      <char name="B" width="600"/>
-      <char name="C" width="600"/>
-      <char name="Ccedilla" width="600"/>
-      <char name="D" width="600"/>
-      <char name="E" width="600"/>
-      <char name="Eacute" width="600"/>
-      <char name="Ecircumflex" width="600"/>
-      <char name="Edieresis" width="600"/>
-      <char name="Egrave" width="600"/>
-      <char name="Eth" width="600"/>
-      <char name="Euro" width="600"/>
-      <char name="F" width="600"/>
-      <char name="G" width="600"/>
-      <char name="Gcaron" width="600"/>
-      <char name="H" width="600"/>
-      <char name="I" width="600"/>
-      <char name="IJ" width="600"/>
-      <char name="Iacute" width="600"/>
-      <char name="Icircumflex" width="600"/>
-      <char name="Idieresis" width="600"/>
-      <char name="Idot" width="600"/>
-      <char name="Igrave" width="600"/>
-      <char name="J" width="600"/>
-      <char name="K" width="600"/>
-      <char name="L" width="600"/>
-      <char name="LL" width="600"/>
-      <char name="Lslash" width="600"/>
-      <char name="M" width="600"/>
-      <char name="N" width="600"/>
-      <char name="Ntilde" width="600"/>
-      <char name="O" width="600"/>
-      <char name="OE" width="600"/>
-      <char name="Oacute" width="600"/>
-      <char name="Ocircumflex" width="600"/>
-      <char name="Odieresis" width="600"/>
-      <char name="Ograve" width="600"/>
-      <char name="Oslash" width="600"/>
-      <char name="Otilde" width="600"/>
-      <char name="P" width="600"/>
-      <char name="Q" width="600"/>
-      <char name="R" width="600"/>
-      <char name="S" width="600"/>
-      <char name="Scaron" width="600"/>
-      <char name="Scedilla" width="600"/>
-      <char name="T" width="600"/>
-      <char name="Thorn" width="600"/>
-      <char name="U" width="600"/>
-      <char name="Uacute" width="600"/>
-      <char name="Ucircumflex" width="600"/>
-      <char name="Udieresis" width="600"/>
-      <char name="Ugrave" width="600"/>
-      <char name="V" width="600"/>
-      <char name="W" width="600"/>
-      <char name="X" width="600"/>
-      <char name="Y" width="600"/>
-      <char name="Yacute" width="600"/>
-      <char name="Ydieresis" width="600"/>
-      <char name="Z" width="600"/>
-      <char name="Zcaron" width="600"/>
-      <char name="a" width="600"/>
-      <char name="aacute" width="600"/>
-      <char name="acircumflex" width="600"/>
-      <char name="acute" width="600"/>
-      <char name="adieresis" width="600"/>
-      <char name="ae" width="600"/>
-      <char name="agrave" width="600"/>
-      <char name="ampersand" width="600"/>
-      <char name="aring" width="600"/>
-      <char name="arrowboth" width="600"/>
-      <char name="arrowdown" width="600"/>
-      <char name="arrowleft" width="600"/>
-      <char name="arrowright" width="600"/>
-      <char name="arrowup" width="600"/>
-      <char name="asciicircum" width="600"/>
-      <char name="asciitilde" width="600"/>
-      <char name="asterisk" width="600"/>
-      <char name="at" width="600"/>
-      <char name="atilde" width="600"/>
-      <char name="b" width="600"/>
-      <char name="backslash" width="600"/>
-      <char name="bar" width="600"/>
-      <char name="braceleft" width="600"/>
-      <char name="braceright" width="600"/>
-      <char name="bracketleft" width="600"/>
-      <char name="bracketright" width="600"/>
-      <char name="breve" width="600"/>
-      <char name="brokenbar" width="600"/>
-      <char name="bullet" width="600"/>
-      <char name="c" width="600"/>
-      <char name="caron" width="600"/>
-      <char name="ccedilla" width="600"/>
-      <char name="cedilla" width="600"/>
-      <char name="cent" width="600"/>
-      <char name="center" width="600"/>
-      <char name="circumflex" width="600"/>
-      <char name="colon" width="600"/>
-      <char name="comma" width="600"/>
-      <char name="copyright" width="600"/>
-      <char name="currency" width="600"/>
-      <char name="d" width="600"/>
-      <char name="dagger" width="600"/>
-      <char name="daggerdbl" width="600"/>
-      <char name="dectab" width="600"/>
-      <char name="degree" width="600"/>
-      <char name="dieresis" width="600"/>
-      <char name="divide" width="600"/>
-      <char name="dollar" width="600"/>
-      <char name="dotaccent" width="600"/>
-      <char name="dotlessi" width="600"/>
-      <char name="down" width="600"/>
-      <char name="e" width="600"/>
-      <char name="eacute" width="600"/>
-      <char name="ecircumflex" width="600"/>
-      <char name="edieresis" width="600"/>
-      <char name="egrave" width="600"/>
-      <char name="eight" width="600"/>
-      <char name="ellipsis" width="600"/>
-      <char name="emdash" width="600"/>
-      <char name="endash" width="600"/>
-      <char name="equal" width="600"/>
-      <char name="eth" width="600"/>
-      <char name="exclam" width="600"/>
-      <char name="exclamdown" width="600"/>
-      <char name="f" width="600"/>
-      <char name="fi" width="600"/>
-      <char name="five" width="600"/>
-      <char name="fl" width="600"/>
-      <char name="florin" width="600"/>
-      <char name="format" width="600"/>
-      <char name="four" width="600"/>
-      <char name="fraction" width="600"/>
-      <char name="g" width="600"/>
-      <char name="gcaron" width="600"/>
-      <char name="germandbls" width="600"/>
-      <char name="grave" width="600"/>
-      <char name="graybox" width="600"/>
-      <char name="greater" width="600"/>
-      <char name="guillemotleft" width="600"/>
-      <char name="guillemotright" width="600"/>
-      <char name="guilsinglleft" width="600"/>
-      <char name="guilsinglright" width="600"/>
-      <char name="h" width="600"/>
-      <char name="hungarumlaut" width="600"/>
-      <char name="hyphen" width="600"/>
-      <char name="i" width="600"/>
-      <char name="iacute" width="600"/>
-      <char name="icircumflex" width="600"/>
-      <char name="idieresis" width="600"/>
-      <char name="igrave" width="600"/>
-      <char name="ij" width="600"/>
-      <char name="indent" width="600"/>
-      <char name="j" width="600"/>
-      <char name="k" width="600"/>
-      <char name="l" width="600"/>
-      <char name="largebullet" width="600"/>
-      <char name="left" width="600"/>
-      <char name="less" width="600"/>
-      <char name="lira" width="600"/>
-      <char name="ll" width="600"/>
-      <char name="logicalnot" width="600"/>
-      <char name="lslash" width="600"/>
-      <char name="m" width="600"/>
-      <char name="macron" width="600"/>
-      <char name="merge" width="600"/>
-      <char name="minus" width="600"/>
-      <char name="mu" width="600"/>
-      <char name="multiply" width="600"/>
-      <char name="n" width="600"/>
-      <char name="nine" width="600"/>
-      <char name="notegraphic" width="600"/>
-      <char name="ntilde" width="600"/>
-      <char name="numbersign" width="600"/>
-      <char name="o" width="600"/>
-      <char name="oacute" width="600"/>
-      <char name="ocircumflex" width="600"/>
-      <char name="odieresis" width="600"/>
-      <char name="oe" width="600"/>
-      <char name="ogonek" width="600"/>
-      <char name="ograve" width="600"/>
-      <char name="one" width="600"/>
-      <char name="onehalf" width="600"/>
-      <char name="onequarter" width="600"/>
-      <char name="onesuperior" width="600"/>
-      <char name="ordfeminine" width="600"/>
-      <char name="ordmasculine" width="600"/>
-      <char name="oslash" width="600"/>
-      <char name="otilde" width="600"/>
-      <char name="overscore" width="600"/>
-      <char name="p" width="600"/>
-      <char name="paragraph" width="600"/>
-      <char name="parenleft" width="600"/>
-      <char name="parenright" width="600"/>
-      <char name="percent" width="600"/>
-      <char name="period" width="600"/>
-      <char name="periodcentered" width="600"/>
-      <char name="perthousand" width="600"/>
-      <char name="plus" width="600"/>
-      <char name="plusminus" width="600"/>
-      <char name="prescription" width="600"/>
-      <char name="q" width="600"/>
-      <char name="question" width="600"/>
-      <char name="questiondown" width="600"/>
-      <char name="quotedbl" width="600"/>
-      <char name="quotedblbase" width="600"/>
-      <char name="quotedblleft" width="600"/>
-      <char name="quotedblright" width="600"/>
-      <char name="quoteleft" width="600"/>
-      <char name="quoteright" width="600"/>
-      <char name="quotesinglbase" width="600"/>
-      <char name="quotesingle" width="600"/>
-      <char name="r" width="600"/>
-      <char name="registered" width="600"/>
-      <char name="return" width="600"/>
-      <char name="ring" width="600"/>
-      <char name="s" width="600"/>
-      <char name="scaron" width="600"/>
-      <char name="scedilla" width="600"/>
-      <char name="section" width="600"/>
-      <char name="semicolon" width="600"/>
-      <char name="seven" width="600"/>
-      <char name="six" width="600"/>
-      <char name="slash" width="600"/>
-      <char name="space" width="600"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="600"/>
-      <char name="square" width="600"/>
-      <char name="sterling" width="600"/>
-      <char name="stop" width="600"/>
-      <char name="t" width="600"/>
-      <char name="tab" width="600"/>
-      <char name="thorn" width="600"/>
-      <char name="three" width="600"/>
-      <char name="threequarters" width="600"/>
-      <char name="threesuperior" width="600"/>
-      <char name="tilde" width="600"/>
-      <char name="trademark" width="600"/>
-      <char name="two" width="600"/>
-      <char name="twosuperior" width="600"/>
-      <char name="u" width="600"/>
-      <char name="uacute" width="600"/>
-      <char name="ucircumflex" width="600"/>
-      <char name="udieresis" width="600"/>
-      <char name="ugrave" width="600"/>
-      <char name="underscore" width="600"/>
-      <char name="up" width="600"/>
-      <char name="v" width="600"/>
-      <char name="w" width="600"/>
-      <char name="x" width="600"/>
-      <char name="y" width="600"/>
-      <char name="yacute" width="600"/>
-      <char name="ydieresis" width="600"/>
-      <char name="yen" width="600"/>
-      <char name="z" width="600"/>
-      <char name="zcaron" width="600"/>
-      <char name="zero" width="600"/>
-   </widths>
-</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/CourierBoldOblique.xml b/src/codegen/CourierBoldOblique.xml
deleted file mode 100644 (file)
index 914fdab..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Courier-BoldOblique</font-name>
-   <class-name>CourierBoldOblique</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>562</cap-height>
-   <x-height>439</x-height>
-   <ascender>626</ascender>
-   <descender>-142</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="600"/>
-      <char name="AE" width="600"/>
-      <char name="Aacute" width="600"/>
-      <char name="Acircumflex" width="600"/>
-      <char name="Adieresis" width="600"/>
-      <char name="Agrave" width="600"/>
-      <char name="Aring" width="600"/>
-      <char name="Atilde" width="600"/>
-      <char name="B" width="600"/>
-      <char name="C" width="600"/>
-      <char name="Ccedilla" width="600"/>
-      <char name="D" width="600"/>
-      <char name="E" width="600"/>
-      <char name="Eacute" width="600"/>
-      <char name="Ecircumflex" width="600"/>
-      <char name="Edieresis" width="600"/>
-      <char name="Egrave" width="600"/>
-      <char name="Eth" width="600"/>
-      <char name="Euro" width="600"/>
-      <char name="F" width="600"/>
-      <char name="G" width="600"/>
-      <char name="Gcaron" width="600"/>
-      <char name="H" width="600"/>
-      <char name="I" width="600"/>
-      <char name="IJ" width="600"/>
-      <char name="Iacute" width="600"/>
-      <char name="Icircumflex" width="600"/>
-      <char name="Idieresis" width="600"/>
-      <char name="Idot" width="600"/>
-      <char name="Igrave" width="600"/>
-      <char name="J" width="600"/>
-      <char name="K" width="600"/>
-      <char name="L" width="600"/>
-      <char name="LL" width="600"/>
-      <char name="Lslash" width="600"/>
-      <char name="M" width="600"/>
-      <char name="N" width="600"/>
-      <char name="Ntilde" width="600"/>
-      <char name="O" width="600"/>
-      <char name="OE" width="600"/>
-      <char name="Oacute" width="600"/>
-      <char name="Ocircumflex" width="600"/>
-      <char name="Odieresis" width="600"/>
-      <char name="Ograve" width="600"/>
-      <char name="Oslash" width="600"/>
-      <char name="Otilde" width="600"/>
-      <char name="P" width="600"/>
-      <char name="Q" width="600"/>
-      <char name="R" width="600"/>
-      <char name="S" width="600"/>
-      <char name="Scaron" width="600"/>
-      <char name="Scedilla" width="600"/>
-      <char name="T" width="600"/>
-      <char name="Thorn" width="600"/>
-      <char name="U" width="600"/>
-      <char name="Uacute" width="600"/>
-      <char name="Ucircumflex" width="600"/>
-      <char name="Udieresis" width="600"/>
-      <char name="Ugrave" width="600"/>
-      <char name="V" width="600"/>
-      <char name="W" width="600"/>
-      <char name="X" width="600"/>
-      <char name="Y" width="600"/>
-      <char name="Yacute" width="600"/>
-      <char name="Ydieresis" width="600"/>
-      <char name="Z" width="600"/>
-      <char name="Zcaron" width="600"/>
-      <char name="a" width="600"/>
-      <char name="aacute" width="600"/>
-      <char name="acircumflex" width="600"/>
-      <char name="acute" width="600"/>
-      <char name="adieresis" width="600"/>
-      <char name="ae" width="600"/>
-      <char name="agrave" width="600"/>
-      <char name="ampersand" width="600"/>
-      <char name="aring" width="600"/>
-      <char name="arrowboth" width="600"/>
-      <char name="arrowdown" width="600"/>
-      <char name="arrowleft" width="600"/>
-      <char name="arrowright" width="600"/>
-      <char name="arrowup" width="600"/>
-      <char name="asciicircum" width="600"/>
-      <char name="asciitilde" width="600"/>
-      <char name="asterisk" width="600"/>
-      <char name="at" width="600"/>
-      <char name="atilde" width="600"/>
-      <char name="b" width="600"/>
-      <char name="backslash" width="600"/>
-      <char name="bar" width="600"/>
-      <char name="braceleft" width="600"/>
-      <char name="braceright" width="600"/>
-      <char name="bracketleft" width="600"/>
-      <char name="bracketright" width="600"/>
-      <char name="breve" width="600"/>
-      <char name="brokenbar" width="600"/>
-      <char name="bullet" width="600"/>
-      <char name="c" width="600"/>
-      <char name="caron" width="600"/>
-      <char name="ccedilla" width="600"/>
-      <char name="cedilla" width="600"/>
-      <char name="cent" width="600"/>
-      <char name="center" width="600"/>
-      <char name="circumflex" width="600"/>
-      <char name="colon" width="600"/>
-      <char name="comma" width="600"/>
-      <char name="copyright" width="600"/>
-      <char name="currency" width="600"/>
-      <char name="d" width="600"/>
-      <char name="dagger" width="600"/>
-      <char name="daggerdbl" width="600"/>
-      <char name="dectab" width="600"/>
-      <char name="degree" width="600"/>
-      <char name="dieresis" width="600"/>
-      <char name="divide" width="600"/>
-      <char name="dollar" width="600"/>
-      <char name="dotaccent" width="600"/>
-      <char name="dotlessi" width="600"/>
-      <char name="down" width="600"/>
-      <char name="e" width="600"/>
-      <char name="eacute" width="600"/>
-      <char name="ecircumflex" width="600"/>
-      <char name="edieresis" width="600"/>
-      <char name="egrave" width="600"/>
-      <char name="eight" width="600"/>
-      <char name="ellipsis" width="600"/>
-      <char name="emdash" width="600"/>
-      <char name="endash" width="600"/>
-      <char name="equal" width="600"/>
-      <char name="eth" width="600"/>
-      <char name="exclam" width="600"/>
-      <char name="exclamdown" width="600"/>
-      <char name="f" width="600"/>
-      <char name="fi" width="600"/>
-      <char name="five" width="600"/>
-      <char name="fl" width="600"/>
-      <char name="florin" width="600"/>
-      <char name="format" width="600"/>
-      <char name="four" width="600"/>
-      <char name="fraction" width="600"/>
-      <char name="g" width="600"/>
-      <char name="gcaron" width="600"/>
-      <char name="germandbls" width="600"/>
-      <char name="grave" width="600"/>
-      <char name="graybox" width="600"/>
-      <char name="greater" width="600"/>
-      <char name="guillemotleft" width="600"/>
-      <char name="guillemotright" width="600"/>
-      <char name="guilsinglleft" width="600"/>
-      <char name="guilsinglright" width="600"/>
-      <char name="h" width="600"/>
-      <char name="hungarumlaut" width="600"/>
-      <char name="hyphen" width="600"/>
-      <char name="i" width="600"/>
-      <char name="iacute" width="600"/>
-      <char name="icircumflex" width="600"/>
-      <char name="idieresis" width="600"/>
-      <char name="igrave" width="600"/>
-      <char name="ij" width="600"/>
-      <char name="indent" width="600"/>
-      <char name="j" width="600"/>
-      <char name="k" width="600"/>
-      <char name="l" width="600"/>
-      <char name="largebullet" width="600"/>
-      <char name="left" width="600"/>
-      <char name="less" width="600"/>
-      <char name="lira" width="600"/>
-      <char name="ll" width="600"/>
-      <char name="logicalnot" width="600"/>
-      <char name="lslash" width="600"/>
-      <char name="m" width="600"/>
-      <char name="macron" width="600"/>
-      <char name="merge" width="600"/>
-      <char name="minus" width="600"/>
-      <char name="mu" width="600"/>
-      <char name="multiply" width="600"/>
-      <char name="n" width="600"/>
-      <char name="nine" width="600"/>
-      <char name="notegraphic" width="600"/>
-      <char name="ntilde" width="600"/>
-      <char name="numbersign" width="600"/>
-      <char name="o" width="600"/>
-      <char name="oacute" width="600"/>
-      <char name="ocircumflex" width="600"/>
-      <char name="odieresis" width="600"/>
-      <char name="oe" width="600"/>
-      <char name="ogonek" width="600"/>
-      <char name="ograve" width="600"/>
-      <char name="one" width="600"/>
-      <char name="onehalf" width="600"/>
-      <char name="onequarter" width="600"/>
-      <char name="onesuperior" width="600"/>
-      <char name="ordfeminine" width="600"/>
-      <char name="ordmasculine" width="600"/>
-      <char name="oslash" width="600"/>
-      <char name="otilde" width="600"/>
-      <char name="overscore" width="600"/>
-      <char name="p" width="600"/>
-      <char name="paragraph" width="600"/>
-      <char name="parenleft" width="600"/>
-      <char name="parenright" width="600"/>
-      <char name="percent" width="600"/>
-      <char name="period" width="600"/>
-      <char name="periodcentered" width="600"/>
-      <char name="perthousand" width="600"/>
-      <char name="plus" width="600"/>
-      <char name="plusminus" width="600"/>
-      <char name="prescription" width="600"/>
-      <char name="q" width="600"/>
-      <char name="question" width="600"/>
-      <char name="questiondown" width="600"/>
-      <char name="quotedbl" width="600"/>
-      <char name="quotedblbase" width="600"/>
-      <char name="quotedblleft" width="600"/>
-      <char name="quotedblright" width="600"/>
-      <char name="quoteleft" width="600"/>
-      <char name="quoteright" width="600"/>
-      <char name="quotesinglbase" width="600"/>
-      <char name="quotesingle" width="600"/>
-      <char name="r" width="600"/>
-      <char name="registered" width="600"/>
-      <char name="return" width="600"/>
-      <char name="ring" width="600"/>
-      <char name="s" width="600"/>
-      <char name="scaron" width="600"/>
-      <char name="scedilla" width="600"/>
-      <char name="section" width="600"/>
-      <char name="semicolon" width="600"/>
-      <char name="seven" width="600"/>
-      <char name="six" width="600"/>
-      <char name="slash" width="600"/>
-      <char name="space" width="600"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="600"/>
-      <char name="square" width="600"/>
-      <char name="sterling" width="600"/>
-      <char name="stop" width="600"/>
-      <char name="t" width="600"/>
-      <char name="tab" width="600"/>
-      <char name="thorn" width="600"/>
-      <char name="three" width="600"/>
-      <char name="threequarters" width="600"/>
-      <char name="threesuperior" width="600"/>
-      <char name="tilde" width="600"/>
-      <char name="trademark" width="600"/>
-      <char name="two" width="600"/>
-      <char name="twosuperior" width="600"/>
-      <char name="u" width="600"/>
-      <char name="uacute" width="600"/>
-      <char name="ucircumflex" width="600"/>
-      <char name="udieresis" width="600"/>
-      <char name="ugrave" width="600"/>
-      <char name="underscore" width="600"/>
-      <char name="up" width="600"/>
-      <char name="v" width="600"/>
-      <char name="w" width="600"/>
-      <char name="x" width="600"/>
-      <char name="y" width="600"/>
-      <char name="yacute" width="600"/>
-      <char name="ydieresis" width="600"/>
-      <char name="yen" width="600"/>
-      <char name="z" width="600"/>
-      <char name="zcaron" width="600"/>
-      <char name="zero" width="600"/>
-   </widths>
-</font-metrics>
diff --git a/src/codegen/CourierOblique.xml b/src/codegen/CourierOblique.xml
deleted file mode 100644 (file)
index 3b043c1..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Courier-Oblique</font-name>
-   <class-name>CourierOblique</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>562</cap-height>
-   <x-height>426</x-height>
-   <ascender>629</ascender>
-   <descender>-157</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="600"/>
-      <char name="AE" width="600"/>
-      <char name="Aacute" width="600"/>
-      <char name="Acircumflex" width="600"/>
-      <char name="Adieresis" width="600"/>
-      <char name="Agrave" width="600"/>
-      <char name="Aring" width="600"/>
-      <char name="Atilde" width="600"/>
-      <char name="B" width="600"/>
-      <char name="C" width="600"/>
-      <char name="Ccedilla" width="600"/>
-      <char name="D" width="600"/>
-      <char name="E" width="600"/>
-      <char name="Eacute" width="600"/>
-      <char name="Ecircumflex" width="600"/>
-      <char name="Edieresis" width="600"/>
-      <char name="Egrave" width="600"/>
-      <char name="Eth" width="600"/>
-      <char name="Euro" width="600"/>
-      <char name="F" width="600"/>
-      <char name="G" width="600"/>
-      <char name="Gcaron" width="600"/>
-      <char name="H" width="600"/>
-      <char name="I" width="600"/>
-      <char name="IJ" width="600"/>
-      <char name="Iacute" width="600"/>
-      <char name="Icircumflex" width="600"/>
-      <char name="Idieresis" width="600"/>
-      <char name="Idot" width="600"/>
-      <char name="Igrave" width="600"/>
-      <char name="J" width="600"/>
-      <char name="K" width="600"/>
-      <char name="L" width="600"/>
-      <char name="LL" width="600"/>
-      <char name="Lslash" width="600"/>
-      <char name="M" width="600"/>
-      <char name="N" width="600"/>
-      <char name="Ntilde" width="600"/>
-      <char name="O" width="600"/>
-      <char name="OE" width="600"/>
-      <char name="Oacute" width="600"/>
-      <char name="Ocircumflex" width="600"/>
-      <char name="Odieresis" width="600"/>
-      <char name="Ograve" width="600"/>
-      <char name="Oslash" width="600"/>
-      <char name="Otilde" width="600"/>
-      <char name="P" width="600"/>
-      <char name="Q" width="600"/>
-      <char name="R" width="600"/>
-      <char name="S" width="600"/>
-      <char name="Scaron" width="600"/>
-      <char name="Scedilla" width="600"/>
-      <char name="T" width="600"/>
-      <char name="Thorn" width="600"/>
-      <char name="U" width="600"/>
-      <char name="Uacute" width="600"/>
-      <char name="Ucircumflex" width="600"/>
-      <char name="Udieresis" width="600"/>
-      <char name="Ugrave" width="600"/>
-      <char name="V" width="600"/>
-      <char name="W" width="600"/>
-      <char name="X" width="600"/>
-      <char name="Y" width="600"/>
-      <char name="Yacute" width="600"/>
-      <char name="Ydieresis" width="600"/>
-      <char name="Z" width="600"/>
-      <char name="Zcaron" width="600"/>
-      <char name="a" width="600"/>
-      <char name="aacute" width="600"/>
-      <char name="acircumflex" width="600"/>
-      <char name="acute" width="600"/>
-      <char name="adieresis" width="600"/>
-      <char name="ae" width="600"/>
-      <char name="agrave" width="600"/>
-      <char name="ampersand" width="600"/>
-      <char name="aring" width="600"/>
-      <char name="arrowboth" width="600"/>
-      <char name="arrowdown" width="600"/>
-      <char name="arrowleft" width="600"/>
-      <char name="arrowright" width="600"/>
-      <char name="arrowup" width="600"/>
-      <char name="asciicircum" width="600"/>
-      <char name="asciitilde" width="600"/>
-      <char name="asterisk" width="600"/>
-      <char name="at" width="600"/>
-      <char name="atilde" width="600"/>
-      <char name="b" width="600"/>
-      <char name="backslash" width="600"/>
-      <char name="bar" width="600"/>
-      <char name="braceleft" width="600"/>
-      <char name="braceright" width="600"/>
-      <char name="bracketleft" width="600"/>
-      <char name="bracketright" width="600"/>
-      <char name="breve" width="600"/>
-      <char name="brokenbar" width="600"/>
-      <char name="bullet" width="600"/>
-      <char name="c" width="600"/>
-      <char name="caron" width="600"/>
-      <char name="ccedilla" width="600"/>
-      <char name="cedilla" width="600"/>
-      <char name="cent" width="600"/>
-      <char name="center" width="600"/>
-      <char name="circumflex" width="600"/>
-      <char name="colon" width="600"/>
-      <char name="comma" width="600"/>
-      <char name="copyright" width="600"/>
-      <char name="currency" width="600"/>
-      <char name="d" width="600"/>
-      <char name="dagger" width="600"/>
-      <char name="daggerdbl" width="600"/>
-      <char name="dectab" width="600"/>
-      <char name="degree" width="600"/>
-      <char name="dieresis" width="600"/>
-      <char name="divide" width="600"/>
-      <char name="dollar" width="600"/>
-      <char name="dotaccent" width="600"/>
-      <char name="dotlessi" width="600"/>
-      <char name="down" width="600"/>
-      <char name="e" width="600"/>
-      <char name="eacute" width="600"/>
-      <char name="ecircumflex" width="600"/>
-      <char name="edieresis" width="600"/>
-      <char name="egrave" width="600"/>
-      <char name="eight" width="600"/>
-      <char name="ellipsis" width="600"/>
-      <char name="emdash" width="600"/>
-      <char name="endash" width="600"/>
-      <char name="equal" width="600"/>
-      <char name="eth" width="600"/>
-      <char name="exclam" width="600"/>
-      <char name="exclamdown" width="600"/>
-      <char name="f" width="600"/>
-      <char name="fi" width="600"/>
-      <char name="five" width="600"/>
-      <char name="fl" width="600"/>
-      <char name="florin" width="600"/>
-      <char name="format" width="600"/>
-      <char name="four" width="600"/>
-      <char name="fraction" width="600"/>
-      <char name="g" width="600"/>
-      <char name="gcaron" width="600"/>
-      <char name="germandbls" width="600"/>
-      <char name="grave" width="600"/>
-      <char name="graybox" width="600"/>
-      <char name="greater" width="600"/>
-      <char name="guillemotleft" width="600"/>
-      <char name="guillemotright" width="600"/>
-      <char name="guilsinglleft" width="600"/>
-      <char name="guilsinglright" width="600"/>
-      <char name="h" width="600"/>
-      <char name="hungarumlaut" width="600"/>
-      <char name="hyphen" width="600"/>
-      <char name="i" width="600"/>
-      <char name="iacute" width="600"/>
-      <char name="icircumflex" width="600"/>
-      <char name="idieresis" width="600"/>
-      <char name="igrave" width="600"/>
-      <char name="ij" width="600"/>
-      <char name="indent" width="600"/>
-      <char name="j" width="600"/>
-      <char name="k" width="600"/>
-      <char name="l" width="600"/>
-      <char name="largebullet" width="600"/>
-      <char name="left" width="600"/>
-      <char name="less" width="600"/>
-      <char name="lira" width="600"/>
-      <char name="ll" width="600"/>
-      <char name="logicalnot" width="600"/>
-      <char name="lslash" width="600"/>
-      <char name="m" width="600"/>
-      <char name="macron" width="600"/>
-      <char name="merge" width="600"/>
-      <char name="minus" width="600"/>
-      <char name="mu" width="600"/>
-      <char name="multiply" width="600"/>
-      <char name="n" width="600"/>
-      <char name="nine" width="600"/>
-      <char name="notegraphic" width="600"/>
-      <char name="ntilde" width="600"/>
-      <char name="numbersign" width="600"/>
-      <char name="o" width="600"/>
-      <char name="oacute" width="600"/>
-      <char name="ocircumflex" width="600"/>
-      <char name="odieresis" width="600"/>
-      <char name="oe" width="600"/>
-      <char name="ogonek" width="600"/>
-      <char name="ograve" width="600"/>
-      <char name="one" width="600"/>
-      <char name="onehalf" width="600"/>
-      <char name="onequarter" width="600"/>
-      <char name="onesuperior" width="600"/>
-      <char name="ordfeminine" width="600"/>
-      <char name="ordmasculine" width="600"/>
-      <char name="oslash" width="600"/>
-      <char name="otilde" width="600"/>
-      <char name="overscore" width="600"/>
-      <char name="p" width="600"/>
-      <char name="paragraph" width="600"/>
-      <char name="parenleft" width="600"/>
-      <char name="parenright" width="600"/>
-      <char name="percent" width="600"/>
-      <char name="period" width="600"/>
-      <char name="periodcentered" width="600"/>
-      <char name="perthousand" width="600"/>
-      <char name="plus" width="600"/>
-      <char name="plusminus" width="600"/>
-      <char name="prescription" width="600"/>
-      <char name="q" width="600"/>
-      <char name="question" width="600"/>
-      <char name="questiondown" width="600"/>
-      <char name="quotedbl" width="600"/>
-      <char name="quotedblbase" width="600"/>
-      <char name="quotedblleft" width="600"/>
-      <char name="quotedblright" width="600"/>
-      <char name="quoteleft" width="600"/>
-      <char name="quoteright" width="600"/>
-      <char name="quotesinglbase" width="600"/>
-      <char name="quotesingle" width="600"/>
-      <char name="r" width="600"/>
-      <char name="registered" width="600"/>
-      <char name="return" width="600"/>
-      <char name="ring" width="600"/>
-      <char name="s" width="600"/>
-      <char name="scaron" width="600"/>
-      <char name="scedilla" width="600"/>
-      <char name="section" width="600"/>
-      <char name="semicolon" width="600"/>
-      <char name="seven" width="600"/>
-      <char name="six" width="600"/>
-      <char name="slash" width="600"/>
-      <char name="space" width="600"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="600"/>
-      <char name="square" width="600"/>
-      <char name="sterling" width="600"/>
-      <char name="stop" width="600"/>
-      <char name="t" width="600"/>
-      <char name="tab" width="600"/>
-      <char name="thorn" width="600"/>
-      <char name="three" width="600"/>
-      <char name="threequarters" width="600"/>
-      <char name="threesuperior" width="600"/>
-      <char name="tilde" width="600"/>
-      <char name="trademark" width="600"/>
-      <char name="two" width="600"/>
-      <char name="twosuperior" width="600"/>
-      <char name="u" width="600"/>
-      <char name="uacute" width="600"/>
-      <char name="ucircumflex" width="600"/>
-      <char name="udieresis" width="600"/>
-      <char name="ugrave" width="600"/>
-      <char name="underscore" width="600"/>
-      <char name="up" width="600"/>
-      <char name="v" width="600"/>
-      <char name="w" width="600"/>
-      <char name="x" width="600"/>
-      <char name="y" width="600"/>
-      <char name="yacute" width="600"/>
-      <char name="ydieresis" width="600"/>
-      <char name="yen" width="600"/>
-      <char name="z" width="600"/>
-      <char name="zcaron" width="600"/>
-      <char name="zero" width="600"/>
-   </widths>
-</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/Helvetica.xml b/src/codegen/Helvetica.xml
deleted file mode 100644 (file)
index d63eb5a..0000000
+++ /dev/null
@@ -1,603 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Helvetica</font-name>
-   <class-name>Helvetica</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>718</cap-height>
-   <x-height>523</x-height>
-   <ascender>718</ascender>
-   <descender>-207</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="667"/>
-      <char name="AE" width="1000"/>
-      <char name="Aacute" width="667"/>
-      <char name="Acircumflex" width="667"/>
-      <char name="Adieresis" width="667"/>
-      <char name="Agrave" width="667"/>
-      <char name="Aring" width="667"/>
-      <char name="Atilde" width="667"/>
-      <char name="B" width="667"/>
-      <char name="C" width="722"/>
-      <char name="Ccedilla" width="722"/>
-      <char name="D" width="722"/>
-      <char name="E" width="667"/>
-      <char name="Eacute" width="667"/>
-      <char name="Ecircumflex" width="667"/>
-      <char name="Edieresis" width="667"/>
-      <char name="Egrave" width="667"/>
-      <char name="Eth" width="722"/>
-      <char name="Euro" width="556"/>
-      <char name="F" width="611"/>
-      <char name="G" width="778"/>
-      <char name="H" width="722"/>
-      <char name="I" width="278"/>
-      <char name="Iacute" width="278"/>
-      <char name="Icircumflex" width="278"/>
-      <char name="Idieresis" width="278"/>
-      <char name="Igrave" width="278"/>
-      <char name="J" width="500"/>
-      <char name="K" width="667"/>
-      <char name="L" width="556"/>
-      <char name="Lslash" width="556"/>
-      <char name="M" width="833"/>
-      <char name="N" width="722"/>
-      <char name="Ntilde" width="722"/>
-      <char name="O" width="778"/>
-      <char name="OE" width="1000"/>
-      <char name="Oacute" width="778"/>
-      <char name="Ocircumflex" width="778"/>
-      <char name="Odieresis" width="778"/>
-      <char name="Ograve" width="778"/>
-      <char name="Oslash" width="778"/>
-      <char name="Otilde" width="778"/>
-      <char name="P" width="667"/>
-      <char name="Q" width="778"/>
-      <char name="R" width="722"/>
-      <char name="S" width="667"/>
-      <char name="Scaron" width="667"/>
-      <char name="T" width="611"/>
-      <char name="Thorn" width="667"/>
-      <char name="U" width="722"/>
-      <char name="Uacute" width="722"/>
-      <char name="Ucircumflex" width="722"/>
-      <char name="Udieresis" width="722"/>
-      <char name="Ugrave" width="722"/>
-      <char name="V" width="667"/>
-      <char name="W" width="944"/>
-      <char name="X" width="667"/>
-      <char name="Y" width="667"/>
-      <char name="Yacute" width="667"/>
-      <char name="Ydieresis" width="667"/>
-      <char name="Z" width="611"/>
-      <char name="Zcaron" width="611"/>
-      <char name="a" width="556"/>
-      <char name="aacute" width="556"/>
-      <char name="acircumflex" width="556"/>
-      <char name="acute" width="333"/>
-      <char name="adieresis" width="556"/>
-      <char name="ae" width="889"/>
-      <char name="agrave" width="556"/>
-      <char name="ampersand" width="667"/>
-      <char name="aring" width="556"/>
-      <char name="asciicircum" width="469"/>
-      <char name="asciitilde" width="584"/>
-      <char name="asterisk" width="389"/>
-      <char name="at" width="1015"/>
-      <char name="atilde" width="556"/>
-      <char name="b" width="556"/>
-      <char name="backslash" width="278"/>
-      <char name="bar" width="260"/>
-      <char name="braceleft" width="334"/>
-      <char name="braceright" width="334"/>
-      <char name="bracketleft" width="278"/>
-      <char name="bracketright" width="278"/>
-      <char name="breve" width="333"/>
-      <char name="brokenbar" width="260"/>
-      <char name="bullet" width="350"/>
-      <char name="c" width="500"/>
-      <char name="caron" width="333"/>
-      <char name="ccedilla" width="500"/>
-      <char name="cedilla" width="333"/>
-      <char name="cent" width="556"/>
-      <char name="circumflex" width="333"/>
-      <char name="colon" width="278"/>
-      <char name="comma" width="278"/>
-      <char name="copyright" width="737"/>
-      <char name="currency" width="556"/>
-      <char name="d" width="556"/>
-      <char name="dagger" width="556"/>
-      <char name="daggerdbl" width="556"/>
-      <char name="degree" width="400"/>
-      <char name="dieresis" width="333"/>
-      <char name="divide" width="584"/>
-      <char name="dollar" width="556"/>
-      <char name="dotaccent" width="333"/>
-      <char name="dotlessi" width="278"/>
-      <char name="e" width="556"/>
-      <char name="eacute" width="556"/>
-      <char name="ecircumflex" width="556"/>
-      <char name="edieresis" width="556"/>
-      <char name="egrave" width="556"/>
-      <char name="eight" width="556"/>
-      <char name="ellipsis" width="1000"/>
-      <char name="emdash" width="1000"/>
-      <char name="endash" width="556"/>
-      <char name="equal" width="584"/>
-      <char name="eth" width="556"/>
-      <char name="exclam" width="278"/>
-      <char name="exclamdown" width="333"/>
-      <char name="f" width="278"/>
-      <char name="fi" width="500"/>
-      <char name="five" width="556"/>
-      <char name="fl" width="500"/>
-      <char name="florin" width="556"/>
-      <char name="four" width="556"/>
-      <char name="fraction" width="167"/>
-      <char name="g" width="556"/>
-      <char name="germandbls" width="611"/>
-      <char name="grave" width="333"/>
-      <char name="greater" width="584"/>
-      <char name="guillemotleft" width="556"/>
-      <char name="guillemotright" width="556"/>
-      <char name="guilsinglleft" width="333"/>
-      <char name="guilsinglright" width="333"/>
-      <char name="h" width="556"/>
-      <char name="hungarumlaut" width="333"/>
-      <char name="hyphen" width="333"/>
-      <char name="i" width="222"/>
-      <char name="iacute" width="278"/>
-      <char name="icircumflex" width="278"/>
-      <char name="idieresis" width="278"/>
-      <char name="igrave" width="278"/>
-      <char name="j" width="222"/>
-      <char name="k" width="500"/>
-      <char name="l" width="222"/>
-      <char name="less" width="584"/>
-      <char name="logicalnot" width="584"/>
-      <char name="lslash" width="222"/>
-      <char name="m" width="833"/>
-      <char name="macron" width="333"/>
-      <char name="minus" width="324"/>
-      <char name="mu" width="556"/>
-      <char name="multiply" width="584"/>
-      <char name="n" width="556"/>
-      <char name="nine" width="556"/>
-      <char name="ntilde" width="556"/>
-      <char name="numbersign" width="556"/>
-      <char name="o" width="556"/>
-      <char name="oacute" width="556"/>
-      <char name="ocircumflex" width="556"/>
-      <char name="odieresis" width="556"/>
-      <char name="oe" width="944"/>
-      <char name="ogonek" width="333"/>
-      <char name="ograve" width="556"/>
-      <char name="one" width="556"/>
-      <char name="onehalf" width="834"/>
-      <char name="onequarter" width="834"/>
-      <char name="onesuperior" width="333"/>
-      <char name="ordfeminine" width="370"/>
-      <char name="ordmasculine" width="365"/>
-      <char name="oslash" width="611"/>
-      <char name="otilde" width="556"/>
-      <char name="p" width="556"/>
-      <char name="paragraph" width="537"/>
-      <char name="parenleft" width="333"/>
-      <char name="parenright" width="333"/>
-      <char name="percent" width="889"/>
-      <char name="period" width="278"/>
-      <char name="periodcentered" width="278"/>
-      <char name="perthousand" width="1000"/>
-      <char name="plus" width="584"/>
-      <char name="plusminus" width="584"/>
-      <char name="q" width="556"/>
-      <char name="question" width="556"/>
-      <char name="questiondown" width="611"/>
-      <char name="quotedbl" width="355"/>
-      <char name="quotedblbase" width="333"/>
-      <char name="quotedblleft" width="333"/>
-      <char name="quotedblright" width="333"/>
-      <char name="quoteleft" width="222"/>
-      <char name="quoteright" width="222"/>
-      <char name="quotesinglbase" width="222"/>
-      <char name="quotesingle" width="191"/>
-      <char name="r" width="333"/>
-      <char name="registered" width="737"/>
-      <char name="ring" width="333"/>
-      <char name="s" width="500"/>
-      <char name="scaron" width="500"/>
-      <char name="section" width="556"/>
-      <char name="semicolon" width="278"/>
-      <char name="seven" width="556"/>
-      <char name="six" width="556"/>
-      <char name="slash" width="278"/>
-      <char name="space" width="278"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="278"/>
-      <char name="sterling" width="556"/>
-      <char name="t" width="278"/>
-      <char name="thorn" width="556"/>
-      <char name="three" width="556"/>
-      <char name="threequarters" width="834"/>
-      <char name="threesuperior" width="333"/>
-      <char name="tilde" width="333"/>
-      <char name="trademark" width="1000"/>
-      <char name="two" width="556"/>
-      <char name="twosuperior" width="333"/>
-      <char name="u" width="556"/>
-      <char name="uacute" width="556"/>
-      <char name="ucircumflex" width="556"/>
-      <char name="udieresis" width="556"/>
-      <char name="ugrave" width="556"/>
-      <char name="underscore" width="556"/>
-      <char name="v" width="500"/>
-      <char name="w" width="722"/>
-      <char name="x" width="500"/>
-      <char name="y" width="500"/>
-      <char name="yacute" width="500"/>
-      <char name="ydieresis" width="500"/>
-      <char name="yen" width="556"/>
-      <char name="z" width="500"/>
-      <char name="zcaron" width="500"/>
-      <char name="zero" width="556"/>
-   </widths>
-  <kerning kpx1="107">
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="-20" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="79">
-    <pair kern="-20" kpx2="65"/>
-    <pair kern="-30" kpx2="87"/>
-    <pair kern="-70" kpx2="89"/>
-    <pair kern="-40" kpx2="84"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-50" kpx2="86"/>
-    <pair kern="-60" kpx2="88"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="104">
-    <pair kern="-30" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="87">
-    <pair kern="-30" kpx2="111"/>
-    <pair kern="-40" kpx2="45"/>
-    <pair kern="-20" kpx2="79"/>
-    <pair kern="-40" kpx2="97"/>
-    <pair kern="-50" kpx2="65"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-30" kpx2="101"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="99">
-    <pair kern="-20" kpx2="107"/>
-    <pair kern="-15" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="112">
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-35" kpx2="46"/>
-    <pair kern="-35" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="80">
-    <pair kern="-50" kpx2="111"/>
-    <pair kern="-40" kpx2="97"/>
-    <pair kern="-120" kpx2="65"/>
-    <pair kern="-180" kpx2="46"/>
-    <pair kern="-50" kpx2="101"/>
-    <pair kern="-180" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="86">
-    <pair kern="-80" kpx2="111"/>
-    <pair kern="-80" kpx2="45"/>
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-40" kpx2="58"/>
-    <pair kern="-70" kpx2="97"/>
-    <pair kern="-80" kpx2="65"/>
-    <pair kern="-70" kpx2="117"/>
-    <pair kern="-125" kpx2="46"/>
-    <pair kern="-40" kpx2="71"/>
-    <pair kern="-80" kpx2="101"/>
-    <pair kern="-40" kpx2="59"/>
-    <pair kern="-125" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="118">
-    <pair kern="-25" kpx2="111"/>
-    <pair kern="-25" kpx2="97"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-25" kpx2="101"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="59">
-    <pair kern="-50" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="32">
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-30" kpx2="147"/>
-    <pair kern="-90" kpx2="89"/>
-    <pair kern="-50" kpx2="84"/>
-    <pair kern="-60" kpx2="145"/>
-    <pair kern="-50" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="97">
-    <pair kern="-20" kpx2="119"/>
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="65">
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-40" kpx2="119"/>
-    <pair kern="-50" kpx2="87"/>
-    <pair kern="-30" kpx2="67"/>
-    <pair kern="-30" kpx2="81"/>
-    <pair kern="-30" kpx2="71"/>
-    <pair kern="-70" kpx2="86"/>
-    <pair kern="-40" kpx2="118"/>
-    <pair kern="-50" kpx2="85"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-100" kpx2="89"/>
-    <pair kern="-120" kpx2="84"/>
-    <pair kern="-40" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="70">
-    <pair kern="-30" kpx2="111"/>
-    <pair kern="-45" kpx2="114"/>
-    <pair kern="-50" kpx2="97"/>
-    <pair kern="-80" kpx2="65"/>
-    <pair kern="-150" kpx2="46"/>
-    <pair kern="-30" kpx2="101"/>
-    <pair kern="-150" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="85">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="115">
-    <pair kern="-30" kpx2="119"/>
-    <pair kern="-15" kpx2="46"/>
-    <pair kern="-15" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="122">
-    <pair kern="-15" kpx2="111"/>
-    <pair kern="-15" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="83">
-    <pair kern="-20" kpx2="46"/>
-    <pair kern="-20" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="111">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-30" kpx2="120"/>
-    <pair kern="-15" kpx2="118"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="68">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-90" kpx2="89"/>
-    <pair kern="-70" kpx2="46"/>
-    <pair kern="-70" kpx2="86"/>
-    <pair kern="-70" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="146">
-    <pair kern="-50" kpx2="100"/>
-    <pair kern="-70" kpx2="32"/>
-    <pair kern="-57" kpx2="146"/>
-    <pair kern="-50" kpx2="114"/>
-    <pair kern="-50" kpx2="115"/>
-  </kerning>
-  <kerning kpx1="82">
-    <pair kern="-20" kpx2="79"/>
-    <pair kern="-30" kpx2="87"/>
-    <pair kern="-40" kpx2="85"/>
-    <pair kern="-50" kpx2="89"/>
-    <pair kern="-30" kpx2="84"/>
-    <pair kern="-50" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="75">
-    <pair kern="-40" kpx2="111"/>
-    <pair kern="-50" kpx2="79"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-50" kpx2="121"/>
-    <pair kern="-40" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="119">
-    <pair kern="-10" kpx2="111"/>
-    <pair kern="-15" kpx2="97"/>
-    <pair kern="-60" kpx2="46"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-60" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="58">
-    <pair kern="-50" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="114">
-    <pair kern="15" kpx2="107"/>
-    <pair kern="30" kpx2="58"/>
-    <pair kern="30" kpx2="112"/>
-    <pair kern="15" kpx2="108"/>
-    <pair kern="30" kpx2="118"/>
-    <pair kern="-50" kpx2="44"/>
-    <pair kern="30" kpx2="59"/>
-    <pair kern="15" kpx2="105"/>
-    <pair kern="25" kpx2="109"/>
-    <pair kern="-10" kpx2="97"/>
-    <pair kern="15" kpx2="117"/>
-    <pair kern="40" kpx2="116"/>
-    <pair kern="30" kpx2="121"/>
-    <pair kern="-50" kpx2="46"/>
-    <pair kern="25" kpx2="110"/>
-  </kerning>
-  <kerning kpx1="67">
-    <pair kern="-30" kpx2="46"/>
-    <pair kern="-30" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="145">
-    <pair kern="-57" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="103">
-    <pair kern="-10" kpx2="114"/>
-  </kerning>
-  <kerning kpx1="66">
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="-20" kpx2="46"/>
-    <pair kern="-20" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="81">
-    <pair kern="-10" kpx2="85"/>
-  </kerning>
-  <kerning kpx1="76">
-    <pair kern="-140" kpx2="148"/>
-    <pair kern="-160" kpx2="146"/>
-    <pair kern="-70" kpx2="87"/>
-    <pair kern="-140" kpx2="89"/>
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-110" kpx2="84"/>
-    <pair kern="-110" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="98">
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-20" kpx2="108"/>
-    <pair kern="-10" kpx2="98"/>
-    <pair kern="-20" kpx2="118"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="44">
-    <pair kern="-100" kpx2="148"/>
-    <pair kern="-100" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="148">
-    <pair kern="-40" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="109">
-    <pair kern="-10" kpx2="117"/>
-    <pair kern="-15" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="248">
-    <pair kern="-55" kpx2="107"/>
-    <pair kern="-55" kpx2="104"/>
-    <pair kern="-55" kpx2="99"/>
-    <pair kern="-55" kpx2="112"/>
-    <pair kern="-55" kpx2="113"/>
-    <pair kern="-70" kpx2="118"/>
-    <pair kern="-55" kpx2="105"/>
-    <pair kern="-55" kpx2="97"/>
-    <pair kern="-55" kpx2="117"/>
-    <pair kern="-55" kpx2="116"/>
-    <pair kern="-55" kpx2="106"/>
-    <pair kern="-55" kpx2="115"/>
-    <pair kern="-55" kpx2="122"/>
-    <pair kern="-55" kpx2="100"/>
-    <pair kern="-55" kpx2="111"/>
-    <pair kern="-70" kpx2="119"/>
-    <pair kern="-55" kpx2="114"/>
-    <pair kern="-55" kpx2="103"/>
-    <pair kern="-55" kpx2="108"/>
-    <pair kern="-55" kpx2="98"/>
-    <pair kern="-95" kpx2="44"/>
-    <pair kern="-55" kpx2="109"/>
-    <pair kern="-55" kpx2="102"/>
-    <pair kern="-70" kpx2="121"/>
-    <pair kern="-95" kpx2="46"/>
-    <pair kern="-55" kpx2="110"/>
-    <pair kern="-85" kpx2="120"/>
-    <pair kern="-55" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="102">
-    <pair kern="60" kpx2="148"/>
-    <pair kern="-30" kpx2="111"/>
-    <pair kern="50" kpx2="146"/>
-    <pair kern="-30" kpx2="97"/>
-    <pair kern="-30" kpx2="46"/>
-    <pair kern="-30" kpx2="101"/>
-    <pair kern="-30" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="74">
-    <pair kern="-20" kpx2="97"/>
-    <pair kern="-20" kpx2="65"/>
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-30" kpx2="46"/>
-    <pair kern="-30" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="89">
-    <pair kern="-140" kpx2="111"/>
-    <pair kern="-140" kpx2="45"/>
-    <pair kern="-20" kpx2="105"/>
-    <pair kern="-85" kpx2="79"/>
-    <pair kern="-60" kpx2="58"/>
-    <pair kern="-140" kpx2="97"/>
-    <pair kern="-110" kpx2="65"/>
-    <pair kern="-110" kpx2="117"/>
-    <pair kern="-140" kpx2="46"/>
-    <pair kern="-140" kpx2="101"/>
-    <pair kern="-60" kpx2="59"/>
-    <pair kern="-140" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="121">
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="-20" kpx2="97"/>
-    <pair kern="-100" kpx2="46"/>
-    <pair kern="-20" kpx2="101"/>
-    <pair kern="-100" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="84">
-    <pair kern="-120" kpx2="111"/>
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-20" kpx2="58"/>
-    <pair kern="-120" kpx2="119"/>
-    <pair kern="-120" kpx2="114"/>
-    <pair kern="-120" kpx2="44"/>
-    <pair kern="-20" kpx2="59"/>
-    <pair kern="-140" kpx2="45"/>
-    <pair kern="-120" kpx2="65"/>
-    <pair kern="-120" kpx2="97"/>
-    <pair kern="-120" kpx2="117"/>
-    <pair kern="-120" kpx2="121"/>
-    <pair kern="-120" kpx2="46"/>
-    <pair kern="-120" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="46">
-    <pair kern="-100" kpx2="148"/>
-    <pair kern="-60" kpx2="32"/>
-    <pair kern="-100" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="110">
-    <pair kern="-10" kpx2="117"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="120">
-    <pair kern="-30" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="101">
-    <pair kern="-20" kpx2="119"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-15" kpx2="46"/>
-    <pair kern="-30" kpx2="120"/>
-    <pair kern="-30" kpx2="118"/>
-    <pair kern="-15" kpx2="44"/>
-  </kerning>
-</font-metrics>
diff --git a/src/codegen/HelveticaBold.xml b/src/codegen/HelveticaBold.xml
deleted file mode 100644 (file)
index c417937..0000000
+++ /dev/null
@@ -1,561 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Helvetica-Bold</font-name>
-   <class-name>HelveticaBold</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>718</cap-height>
-   <x-height>532</x-height>
-   <ascender>718</ascender>
-   <descender>-207</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="722"/>
-      <char name="AE" width="1000"/>
-      <char name="Aacute" width="722"/>
-      <char name="Acircumflex" width="722"/>
-      <char name="Adieresis" width="722"/>
-      <char name="Agrave" width="722"/>
-      <char name="Aring" width="722"/>
-      <char name="Atilde" width="722"/>
-      <char name="B" width="722"/>
-      <char name="C" width="722"/>
-      <char name="Ccedilla" width="722"/>
-      <char name="D" width="722"/>
-      <char name="E" width="667"/>
-      <char name="Eacute" width="667"/>
-      <char name="Ecircumflex" width="667"/>
-      <char name="Edieresis" width="667"/>
-      <char name="Egrave" width="667"/>
-      <char name="Eth" width="722"/>
-      <char name="Euro" width="556"/>
-      <char name="F" width="611"/>
-      <char name="G" width="778"/>
-      <char name="H" width="722"/>
-      <char name="I" width="278"/>
-      <char name="Iacute" width="278"/>
-      <char name="Icircumflex" width="278"/>
-      <char name="Idieresis" width="278"/>
-      <char name="Igrave" width="278"/>
-      <char name="J" width="556"/>
-      <char name="K" width="722"/>
-      <char name="L" width="611"/>
-      <char name="Lslash" width="611"/>
-      <char name="M" width="833"/>
-      <char name="N" width="722"/>
-      <char name="Ntilde" width="722"/>
-      <char name="O" width="778"/>
-      <char name="OE" width="1000"/>
-      <char name="Oacute" width="778"/>
-      <char name="Ocircumflex" width="778"/>
-      <char name="Odieresis" width="778"/>
-      <char name="Ograve" width="778"/>
-      <char name="Oslash" width="778"/>
-      <char name="Otilde" width="778"/>
-      <char name="P" width="667"/>
-      <char name="Q" width="778"/>
-      <char name="R" width="722"/>
-      <char name="S" width="667"/>
-      <char name="Scaron" width="667"/>
-      <char name="T" width="611"/>
-      <char name="Thorn" width="667"/>
-      <char name="U" width="722"/>
-      <char name="Uacute" width="722"/>
-      <char name="Ucircumflex" width="722"/>
-      <char name="Udieresis" width="722"/>
-      <char name="Ugrave" width="722"/>
-      <char name="V" width="667"/>
-      <char name="W" width="944"/>
-      <char name="X" width="667"/>
-      <char name="Y" width="667"/>
-      <char name="Yacute" width="667"/>
-      <char name="Ydieresis" width="667"/>
-      <char name="Z" width="611"/>
-      <char name="Zcaron" width="611"/>
-      <char name="a" width="556"/>
-      <char name="aacute" width="556"/>
-      <char name="acircumflex" width="556"/>
-      <char name="acute" width="333"/>
-      <char name="adieresis" width="556"/>
-      <char name="ae" width="889"/>
-      <char name="agrave" width="556"/>
-      <char name="ampersand" width="722"/>
-      <char name="aring" width="556"/>
-      <char name="asciicircum" width="584"/>
-      <char name="asciitilde" width="584"/>
-      <char name="asterisk" width="389"/>
-      <char name="at" width="975"/>
-      <char name="atilde" width="556"/>
-      <char name="b" width="611"/>
-      <char name="backslash" width="278"/>
-      <char name="bar" width="280"/>
-      <char name="braceleft" width="389"/>
-      <char name="braceright" width="389"/>
-      <char name="bracketleft" width="333"/>
-      <char name="bracketright" width="333"/>
-      <char name="breve" width="333"/>
-      <char name="brokenbar" width="280"/>
-      <char name="bullet" width="350"/>
-      <char name="c" width="556"/>
-      <char name="caron" width="333"/>
-      <char name="ccedilla" width="556"/>
-      <char name="cedilla" width="333"/>
-      <char name="cent" width="556"/>
-      <char name="circumflex" width="333"/>
-      <char name="colon" width="333"/>
-      <char name="comma" width="278"/>
-      <char name="copyright" width="737"/>
-      <char name="currency" width="556"/>
-      <char name="d" width="611"/>
-      <char name="dagger" width="556"/>
-      <char name="daggerdbl" width="556"/>
-      <char name="degree" width="400"/>
-      <char name="dieresis" width="333"/>
-      <char name="divide" width="584"/>
-      <char name="dollar" width="556"/>
-      <char name="dotaccent" width="333"/>
-      <char name="dotlessi" width="278"/>
-      <char name="e" width="556"/>
-      <char name="eacute" width="556"/>
-      <char name="ecircumflex" width="556"/>
-      <char name="edieresis" width="556"/>
-      <char name="egrave" width="556"/>
-      <char name="eight" width="556"/>
-      <char name="ellipsis" width="1000"/>
-      <char name="emdash" width="1000"/>
-      <char name="endash" width="556"/>
-      <char name="equal" width="584"/>
-      <char name="eth" width="611"/>
-      <char name="exclam" width="333"/>
-      <char name="exclamdown" width="333"/>
-      <char name="f" width="333"/>
-      <char name="fi" width="611"/>
-      <char name="five" width="556"/>
-      <char name="fl" width="611"/>
-      <char name="florin" width="556"/>
-      <char name="four" width="556"/>
-      <char name="fraction" width="167"/>
-      <char name="g" width="611"/>
-      <char name="germandbls" width="611"/>
-      <char name="grave" width="333"/>
-      <char name="greater" width="584"/>
-      <char name="guillemotleft" width="556"/>
-      <char name="guillemotright" width="556"/>
-      <char name="guilsinglleft" width="333"/>
-      <char name="guilsinglright" width="333"/>
-      <char name="h" width="611"/>
-      <char name="hungarumlaut" width="333"/>
-      <char name="hyphen" width="333"/>
-      <char name="i" width="278"/>
-      <char name="iacute" width="278"/>
-      <char name="icircumflex" width="278"/>
-      <char name="idieresis" width="278"/>
-      <char name="igrave" width="278"/>
-      <char name="j" width="278"/>
-      <char name="k" width="556"/>
-      <char name="l" width="278"/>
-      <char name="less" width="584"/>
-      <char name="logicalnot" width="584"/>
-      <char name="lslash" width="278"/>
-      <char name="m" width="889"/>
-      <char name="macron" width="333"/>
-      <char name="minus" width="324"/>
-      <char name="mu" width="611"/>
-      <char name="multiply" width="584"/>
-      <char name="n" width="611"/>
-      <char name="nine" width="556"/>
-      <char name="ntilde" width="611"/>
-      <char name="numbersign" width="556"/>
-      <char name="o" width="611"/>
-      <char name="oacute" width="611"/>
-      <char name="ocircumflex" width="611"/>
-      <char name="odieresis" width="611"/>
-      <char name="oe" width="944"/>
-      <char name="ogonek" width="333"/>
-      <char name="ograve" width="611"/>
-      <char name="one" width="556"/>
-      <char name="onehalf" width="834"/>
-      <char name="onequarter" width="834"/>
-      <char name="onesuperior" width="333"/>
-      <char name="ordfeminine" width="370"/>
-      <char name="ordmasculine" width="365"/>
-      <char name="oslash" width="611"/>
-      <char name="otilde" width="611"/>
-      <char name="p" width="611"/>
-      <char name="paragraph" width="556"/>
-      <char name="parenleft" width="333"/>
-      <char name="parenright" width="333"/>
-      <char name="percent" width="889"/>
-      <char name="period" width="278"/>
-      <char name="periodcentered" width="278"/>
-      <char name="perthousand" width="1000"/>
-      <char name="plus" width="584"/>
-      <char name="plusminus" width="584"/>
-      <char name="q" width="611"/>
-      <char name="question" width="611"/>
-      <char name="questiondown" width="611"/>
-      <char name="quotedbl" width="474"/>
-      <char name="quotedblbase" width="500"/>
-      <char name="quotedblleft" width="500"/>
-      <char name="quotedblright" width="500"/>
-      <char name="quoteleft" width="278"/>
-      <char name="quoteright" width="278"/>
-      <char name="quotesinglbase" width="278"/>
-      <char name="quotesingle" width="238"/>
-      <char name="r" width="389"/>
-      <char name="registered" width="737"/>
-      <char name="ring" width="333"/>
-      <char name="s" width="556"/>
-      <char name="scaron" width="556"/>
-      <char name="section" width="556"/>
-      <char name="semicolon" width="333"/>
-      <char name="seven" width="556"/>
-      <char name="six" width="556"/>
-      <char name="slash" width="278"/>
-      <char name="space" width="278"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="278"/>
-      <char name="sterling" width="556"/>
-      <char name="t" width="333"/>
-      <char name="thorn" width="611"/>
-      <char name="three" width="556"/>
-      <char name="threequarters" width="834"/>
-      <char name="threesuperior" width="333"/>
-      <char name="tilde" width="333"/>
-      <char name="trademark" width="1000"/>
-      <char name="two" width="556"/>
-      <char name="twosuperior" width="333"/>
-      <char name="u" width="611"/>
-      <char name="uacute" width="611"/>
-      <char name="ucircumflex" width="611"/>
-      <char name="udieresis" width="611"/>
-      <char name="ugrave" width="611"/>
-      <char name="underscore" width="556"/>
-      <char name="v" width="556"/>
-      <char name="w" width="778"/>
-      <char name="x" width="556"/>
-      <char name="y" width="556"/>
-      <char name="yacute" width="556"/>
-      <char name="ydieresis" width="556"/>
-      <char name="yen" width="556"/>
-      <char name="z" width="500"/>
-      <char name="zcaron" width="500"/>
-      <char name="zero" width="556"/>
-   </widths>
-  <kerning kpx1="107">
-    <pair kern="-15" kpx2="111"/>
-  </kerning>
-  <kerning kpx1="79">
-    <pair kern="-50" kpx2="65"/>
-    <pair kern="-50" kpx2="87"/>
-    <pair kern="-70" kpx2="89"/>
-    <pair kern="-40" kpx2="84"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-50" kpx2="86"/>
-    <pair kern="-50" kpx2="88"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="104">
-    <pair kern="-20" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="99">
-    <pair kern="-20" kpx2="107"/>
-    <pair kern="-10" kpx2="104"/>
-    <pair kern="-10" kpx2="121"/>
-    <pair kern="-20" kpx2="108"/>
-  </kerning>
-  <kerning kpx1="87">
-    <pair kern="-60" kpx2="111"/>
-    <pair kern="-40" kpx2="45"/>
-    <pair kern="-20" kpx2="79"/>
-    <pair kern="-10" kpx2="58"/>
-    <pair kern="-40" kpx2="97"/>
-    <pair kern="-60" kpx2="65"/>
-    <pair kern="-45" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-35" kpx2="101"/>
-    <pair kern="-10" kpx2="59"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="112">
-    <pair kern="-15" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="80">
-    <pair kern="-40" kpx2="111"/>
-    <pair kern="-30" kpx2="97"/>
-    <pair kern="-100" kpx2="65"/>
-    <pair kern="-120" kpx2="46"/>
-    <pair kern="-30" kpx2="101"/>
-    <pair kern="-120" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="86">
-    <pair kern="-90" kpx2="111"/>
-    <pair kern="-80" kpx2="45"/>
-    <pair kern="-50" kpx2="79"/>
-    <pair kern="-40" kpx2="58"/>
-    <pair kern="-60" kpx2="97"/>
-    <pair kern="-80" kpx2="65"/>
-    <pair kern="-60" kpx2="117"/>
-    <pair kern="-120" kpx2="46"/>
-    <pair kern="-50" kpx2="71"/>
-    <pair kern="-50" kpx2="101"/>
-    <pair kern="-40" kpx2="59"/>
-    <pair kern="-120" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="59">
-    <pair kern="-40" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="118">
-    <pair kern="-30" kpx2="111"/>
-    <pair kern="-20" kpx2="97"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="32">
-    <pair kern="-80" kpx2="87"/>
-    <pair kern="-80" kpx2="147"/>
-    <pair kern="-120" kpx2="89"/>
-    <pair kern="-100" kpx2="84"/>
-    <pair kern="-60" kpx2="145"/>
-    <pair kern="-80" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="97">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-10" kpx2="103"/>
-    <pair kern="-15" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="65">
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-30" kpx2="119"/>
-    <pair kern="-60" kpx2="87"/>
-    <pair kern="-40" kpx2="67"/>
-    <pair kern="-40" kpx2="81"/>
-    <pair kern="-50" kpx2="71"/>
-    <pair kern="-80" kpx2="86"/>
-    <pair kern="-40" kpx2="118"/>
-    <pair kern="-50" kpx2="85"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-110" kpx2="89"/>
-    <pair kern="-90" kpx2="84"/>
-    <pair kern="-30" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="70">
-    <pair kern="-20" kpx2="97"/>
-    <pair kern="-80" kpx2="65"/>
-    <pair kern="-100" kpx2="46"/>
-    <pair kern="-100" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="85">
-    <pair kern="-50" kpx2="65"/>
-    <pair kern="-30" kpx2="46"/>
-    <pair kern="-30" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="115">
-    <pair kern="-15" kpx2="119"/>
-  </kerning>
-  <kerning kpx1="111">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-30" kpx2="120"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="122">
-    <pair kern="10" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="100">
-    <pair kern="-10" kpx2="100"/>
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="-15" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="68">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-70" kpx2="89"/>
-    <pair kern="-30" kpx2="46"/>
-    <pair kern="-40" kpx2="86"/>
-    <pair kern="-30" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="146">
-    <pair kern="-80" kpx2="100"/>
-    <pair kern="-80" kpx2="32"/>
-    <pair kern="-46" kpx2="146"/>
-    <pair kern="-40" kpx2="114"/>
-    <pair kern="-20" kpx2="108"/>
-    <pair kern="-60" kpx2="115"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="82">
-    <pair kern="-20" kpx2="79"/>
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-20" kpx2="85"/>
-    <pair kern="-50" kpx2="89"/>
-    <pair kern="-20" kpx2="84"/>
-    <pair kern="-50" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="75">
-    <pair kern="-35" kpx2="111"/>
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-40" kpx2="121"/>
-    <pair kern="-15" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="58">
-    <pair kern="-40" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="119">
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="114">
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="-20" kpx2="100"/>
-    <pair kern="-20" kpx2="45"/>
-    <pair kern="-20" kpx2="99"/>
-    <pair kern="20" kpx2="116"/>
-    <pair kern="10" kpx2="121"/>
-    <pair kern="-60" kpx2="46"/>
-    <pair kern="-15" kpx2="103"/>
-    <pair kern="-20" kpx2="113"/>
-    <pair kern="-15" kpx2="115"/>
-    <pair kern="10" kpx2="118"/>
-    <pair kern="-60" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="145">
-    <pair kern="-46" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="108">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-15" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="103">
-    <pair kern="-10" kpx2="103"/>
-    <pair kern="10" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="66">
-    <pair kern="-30" kpx2="65"/>
-    <pair kern="-10" kpx2="85"/>
-  </kerning>
-  <kerning kpx1="98">
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-10" kpx2="108"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="76">
-    <pair kern="-140" kpx2="148"/>
-    <pair kern="-140" kpx2="146"/>
-    <pair kern="-80" kpx2="87"/>
-    <pair kern="-120" kpx2="89"/>
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-90" kpx2="84"/>
-    <pair kern="-110" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="81">
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="20" kpx2="46"/>
-    <pair kern="20" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="44">
-    <pair kern="-120" kpx2="148"/>
-    <pair kern="-40" kpx2="32"/>
-    <pair kern="-120" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="148">
-    <pair kern="-80" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="109">
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-30" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="102">
-    <pair kern="30" kpx2="148"/>
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="30" kpx2="146"/>
-    <pair kern="-10" kpx2="46"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-10" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="74">
-    <pair kern="-20" kpx2="65"/>
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-20" kpx2="46"/>
-    <pair kern="-20" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="89">
-    <pair kern="-100" kpx2="111"/>
-    <pair kern="-70" kpx2="79"/>
-    <pair kern="-50" kpx2="58"/>
-    <pair kern="-90" kpx2="97"/>
-    <pair kern="-110" kpx2="65"/>
-    <pair kern="-100" kpx2="117"/>
-    <pair kern="-100" kpx2="46"/>
-    <pair kern="-80" kpx2="101"/>
-    <pair kern="-50" kpx2="59"/>
-    <pair kern="-100" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="84">
-    <pair kern="-80" kpx2="111"/>
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-40" kpx2="58"/>
-    <pair kern="-60" kpx2="119"/>
-    <pair kern="-80" kpx2="114"/>
-    <pair kern="-80" kpx2="44"/>
-    <pair kern="-40" kpx2="59"/>
-    <pair kern="-120" kpx2="45"/>
-    <pair kern="-90" kpx2="65"/>
-    <pair kern="-80" kpx2="97"/>
-    <pair kern="-90" kpx2="117"/>
-    <pair kern="-60" kpx2="121"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-60" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="121">
-    <pair kern="-25" kpx2="111"/>
-    <pair kern="-30" kpx2="97"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="46">
-    <pair kern="-120" kpx2="148"/>
-    <pair kern="-40" kpx2="32"/>
-    <pair kern="-120" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="110">
-    <pair kern="-10" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-40" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="120">
-    <pair kern="-10" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="101">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="20" kpx2="46"/>
-    <pair kern="-15" kpx2="120"/>
-    <pair kern="-15" kpx2="118"/>
-    <pair kern="10" kpx2="44"/>
-  </kerning>
-</font-metrics>
diff --git a/src/codegen/HelveticaBoldOblique.xml b/src/codegen/HelveticaBoldOblique.xml
deleted file mode 100644 (file)
index 087b225..0000000
+++ /dev/null
@@ -1,561 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Helvetica-BoldOblique</font-name>
-   <class-name>HelveticaBoldOblique</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>718</cap-height>
-   <x-height>532</x-height>
-   <ascender>718</ascender>
-   <descender>-207</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="722"/>
-      <char name="AE" width="1000"/>
-      <char name="Aacute" width="722"/>
-      <char name="Acircumflex" width="722"/>
-      <char name="Adieresis" width="722"/>
-      <char name="Agrave" width="722"/>
-      <char name="Aring" width="722"/>
-      <char name="Atilde" width="722"/>
-      <char name="B" width="722"/>
-      <char name="C" width="722"/>
-      <char name="Ccedilla" width="722"/>
-      <char name="D" width="722"/>
-      <char name="E" width="667"/>
-      <char name="Eacute" width="667"/>
-      <char name="Ecircumflex" width="667"/>
-      <char name="Edieresis" width="667"/>
-      <char name="Egrave" width="667"/>
-      <char name="Eth" width="722"/>
-      <char name="Euro" width="556"/>
-      <char name="F" width="611"/>
-      <char name="G" width="778"/>
-      <char name="H" width="722"/>
-      <char name="I" width="278"/>
-      <char name="Iacute" width="278"/>
-      <char name="Icircumflex" width="278"/>
-      <char name="Idieresis" width="278"/>
-      <char name="Igrave" width="278"/>
-      <char name="J" width="556"/>
-      <char name="K" width="722"/>
-      <char name="L" width="611"/>
-      <char name="Lslash" width="611"/>
-      <char name="M" width="833"/>
-      <char name="N" width="722"/>
-      <char name="Ntilde" width="722"/>
-      <char name="O" width="778"/>
-      <char name="OE" width="1000"/>
-      <char name="Oacute" width="778"/>
-      <char name="Ocircumflex" width="778"/>
-      <char name="Odieresis" width="778"/>
-      <char name="Ograve" width="778"/>
-      <char name="Oslash" width="778"/>
-      <char name="Otilde" width="778"/>
-      <char name="P" width="667"/>
-      <char name="Q" width="778"/>
-      <char name="R" width="722"/>
-      <char name="S" width="667"/>
-      <char name="Scaron" width="667"/>
-      <char name="T" width="611"/>
-      <char name="Thorn" width="667"/>
-      <char name="U" width="722"/>
-      <char name="Uacute" width="722"/>
-      <char name="Ucircumflex" width="722"/>
-      <char name="Udieresis" width="722"/>
-      <char name="Ugrave" width="722"/>
-      <char name="V" width="667"/>
-      <char name="W" width="944"/>
-      <char name="X" width="667"/>
-      <char name="Y" width="667"/>
-      <char name="Yacute" width="667"/>
-      <char name="Ydieresis" width="667"/>
-      <char name="Z" width="611"/>
-      <char name="Zcaron" width="611"/>
-      <char name="a" width="556"/>
-      <char name="aacute" width="556"/>
-      <char name="acircumflex" width="556"/>
-      <char name="acute" width="333"/>
-      <char name="adieresis" width="556"/>
-      <char name="ae" width="889"/>
-      <char name="agrave" width="556"/>
-      <char name="ampersand" width="722"/>
-      <char name="aring" width="556"/>
-      <char name="asciicircum" width="584"/>
-      <char name="asciitilde" width="584"/>
-      <char name="asterisk" width="389"/>
-      <char name="at" width="975"/>
-      <char name="atilde" width="556"/>
-      <char name="b" width="611"/>
-      <char name="backslash" width="278"/>
-      <char name="bar" width="280"/>
-      <char name="braceleft" width="389"/>
-      <char name="braceright" width="389"/>
-      <char name="bracketleft" width="333"/>
-      <char name="bracketright" width="333"/>
-      <char name="breve" width="333"/>
-      <char name="brokenbar" width="280"/>
-      <char name="bullet" width="350"/>
-      <char name="c" width="556"/>
-      <char name="caron" width="333"/>
-      <char name="ccedilla" width="556"/>
-      <char name="cedilla" width="333"/>
-      <char name="cent" width="556"/>
-      <char name="circumflex" width="333"/>
-      <char name="colon" width="333"/>
-      <char name="comma" width="278"/>
-      <char name="copyright" width="737"/>
-      <char name="currency" width="556"/>
-      <char name="d" width="611"/>
-      <char name="dagger" width="556"/>
-      <char name="daggerdbl" width="556"/>
-      <char name="degree" width="400"/>
-      <char name="dieresis" width="333"/>
-      <char name="divide" width="584"/>
-      <char name="dollar" width="556"/>
-      <char name="dotaccent" width="333"/>
-      <char name="dotlessi" width="278"/>
-      <char name="e" width="556"/>
-      <char name="eacute" width="556"/>
-      <char name="ecircumflex" width="556"/>
-      <char name="edieresis" width="556"/>
-      <char name="egrave" width="556"/>
-      <char name="eight" width="556"/>
-      <char name="ellipsis" width="1000"/>
-      <char name="emdash" width="1000"/>
-      <char name="endash" width="556"/>
-      <char name="equal" width="584"/>
-      <char name="eth" width="611"/>
-      <char name="exclam" width="333"/>
-      <char name="exclamdown" width="333"/>
-      <char name="f" width="333"/>
-      <char name="fi" width="611"/>
-      <char name="five" width="556"/>
-      <char name="fl" width="611"/>
-      <char name="florin" width="556"/>
-      <char name="four" width="556"/>
-      <char name="fraction" width="167"/>
-      <char name="g" width="611"/>
-      <char name="germandbls" width="611"/>
-      <char name="grave" width="333"/>
-      <char name="greater" width="584"/>
-      <char name="guillemotleft" width="556"/>
-      <char name="guillemotright" width="556"/>
-      <char name="guilsinglleft" width="333"/>
-      <char name="guilsinglright" width="333"/>
-      <char name="h" width="611"/>
-      <char name="hungarumlaut" width="333"/>
-      <char name="hyphen" width="333"/>
-      <char name="i" width="278"/>
-      <char name="iacute" width="278"/>
-      <char name="icircumflex" width="278"/>
-      <char name="idieresis" width="278"/>
-      <char name="igrave" width="278"/>
-      <char name="j" width="278"/>
-      <char name="k" width="556"/>
-      <char name="l" width="278"/>
-      <char name="less" width="584"/>
-      <char name="logicalnot" width="584"/>
-      <char name="lslash" width="278"/>
-      <char name="m" width="889"/>
-      <char name="macron" width="333"/>
-      <char name="minus" width="324"/>
-      <char name="mu" width="611"/>
-      <char name="multiply" width="584"/>
-      <char name="n" width="611"/>
-      <char name="nine" width="556"/>
-      <char name="ntilde" width="611"/>
-      <char name="numbersign" width="556"/>
-      <char name="o" width="611"/>
-      <char name="oacute" width="611"/>
-      <char name="ocircumflex" width="611"/>
-      <char name="odieresis" width="611"/>
-      <char name="oe" width="944"/>
-      <char name="ogonek" width="333"/>
-      <char name="ograve" width="611"/>
-      <char name="one" width="556"/>
-      <char name="onehalf" width="834"/>
-      <char name="onequarter" width="834"/>
-      <char name="onesuperior" width="333"/>
-      <char name="ordfeminine" width="370"/>
-      <char name="ordmasculine" width="365"/>
-      <char name="oslash" width="611"/>
-      <char name="otilde" width="611"/>
-      <char name="p" width="611"/>
-      <char name="paragraph" width="556"/>
-      <char name="parenleft" width="333"/>
-      <char name="parenright" width="333"/>
-      <char name="percent" width="889"/>
-      <char name="period" width="278"/>
-      <char name="periodcentered" width="278"/>
-      <char name="perthousand" width="1000"/>
-      <char name="plus" width="584"/>
-      <char name="plusminus" width="584"/>
-      <char name="q" width="611"/>
-      <char name="question" width="611"/>
-      <char name="questiondown" width="611"/>
-      <char name="quotedbl" width="474"/>
-      <char name="quotedblbase" width="500"/>
-      <char name="quotedblleft" width="500"/>
-      <char name="quotedblright" width="500"/>
-      <char name="quoteleft" width="278"/>
-      <char name="quoteright" width="278"/>
-      <char name="quotesinglbase" width="278"/>
-      <char name="quotesingle" width="238"/>
-      <char name="r" width="389"/>
-      <char name="registered" width="737"/>
-      <char name="ring" width="333"/>
-      <char name="s" width="556"/>
-      <char name="scaron" width="556"/>
-      <char name="section" width="556"/>
-      <char name="semicolon" width="333"/>
-      <char name="seven" width="556"/>
-      <char name="six" width="556"/>
-      <char name="slash" width="278"/>
-      <char name="space" width="278"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="278"/>
-      <char name="sterling" width="556"/>
-      <char name="t" width="333"/>
-      <char name="thorn" width="611"/>
-      <char name="three" width="556"/>
-      <char name="threequarters" width="834"/>
-      <char name="threesuperior" width="333"/>
-      <char name="tilde" width="333"/>
-      <char name="trademark" width="1000"/>
-      <char name="two" width="556"/>
-      <char name="twosuperior" width="333"/>
-      <char name="u" width="611"/>
-      <char name="uacute" width="611"/>
-      <char name="ucircumflex" width="611"/>
-      <char name="udieresis" width="611"/>
-      <char name="ugrave" width="611"/>
-      <char name="underscore" width="556"/>
-      <char name="v" width="556"/>
-      <char name="w" width="778"/>
-      <char name="x" width="556"/>
-      <char name="y" width="556"/>
-      <char name="yacute" width="556"/>
-      <char name="ydieresis" width="556"/>
-      <char name="yen" width="556"/>
-      <char name="z" width="500"/>
-      <char name="zcaron" width="500"/>
-      <char name="zero" width="556"/>
-   </widths>
-  <kerning kpx1="107">
-    <pair kern="-15" kpx2="111"/>
-  </kerning>
-  <kerning kpx1="79">
-    <pair kern="-50" kpx2="65"/>
-    <pair kern="-50" kpx2="87"/>
-    <pair kern="-70" kpx2="89"/>
-    <pair kern="-40" kpx2="84"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-50" kpx2="86"/>
-    <pair kern="-50" kpx2="88"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="104">
-    <pair kern="-20" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="99">
-    <pair kern="-20" kpx2="107"/>
-    <pair kern="-10" kpx2="104"/>
-    <pair kern="-10" kpx2="121"/>
-    <pair kern="-20" kpx2="108"/>
-  </kerning>
-  <kerning kpx1="87">
-    <pair kern="-60" kpx2="111"/>
-    <pair kern="-40" kpx2="45"/>
-    <pair kern="-20" kpx2="79"/>
-    <pair kern="-10" kpx2="58"/>
-    <pair kern="-40" kpx2="97"/>
-    <pair kern="-60" kpx2="65"/>
-    <pair kern="-45" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-35" kpx2="101"/>
-    <pair kern="-10" kpx2="59"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="112">
-    <pair kern="-15" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="80">
-    <pair kern="-40" kpx2="111"/>
-    <pair kern="-30" kpx2="97"/>
-    <pair kern="-100" kpx2="65"/>
-    <pair kern="-120" kpx2="46"/>
-    <pair kern="-30" kpx2="101"/>
-    <pair kern="-120" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="86">
-    <pair kern="-90" kpx2="111"/>
-    <pair kern="-80" kpx2="45"/>
-    <pair kern="-50" kpx2="79"/>
-    <pair kern="-40" kpx2="58"/>
-    <pair kern="-60" kpx2="97"/>
-    <pair kern="-80" kpx2="65"/>
-    <pair kern="-60" kpx2="117"/>
-    <pair kern="-120" kpx2="46"/>
-    <pair kern="-50" kpx2="71"/>
-    <pair kern="-50" kpx2="101"/>
-    <pair kern="-40" kpx2="59"/>
-    <pair kern="-120" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="59">
-    <pair kern="-40" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="118">
-    <pair kern="-30" kpx2="111"/>
-    <pair kern="-20" kpx2="97"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="32">
-    <pair kern="-80" kpx2="87"/>
-    <pair kern="-80" kpx2="147"/>
-    <pair kern="-120" kpx2="89"/>
-    <pair kern="-100" kpx2="84"/>
-    <pair kern="-60" kpx2="145"/>
-    <pair kern="-80" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="97">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-10" kpx2="103"/>
-    <pair kern="-15" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="65">
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-30" kpx2="119"/>
-    <pair kern="-60" kpx2="87"/>
-    <pair kern="-40" kpx2="67"/>
-    <pair kern="-40" kpx2="81"/>
-    <pair kern="-50" kpx2="71"/>
-    <pair kern="-80" kpx2="86"/>
-    <pair kern="-40" kpx2="118"/>
-    <pair kern="-50" kpx2="85"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-110" kpx2="89"/>
-    <pair kern="-90" kpx2="84"/>
-    <pair kern="-30" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="70">
-    <pair kern="-20" kpx2="97"/>
-    <pair kern="-80" kpx2="65"/>
-    <pair kern="-100" kpx2="46"/>
-    <pair kern="-100" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="85">
-    <pair kern="-50" kpx2="65"/>
-    <pair kern="-30" kpx2="46"/>
-    <pair kern="-30" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="115">
-    <pair kern="-15" kpx2="119"/>
-  </kerning>
-  <kerning kpx1="111">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-30" kpx2="120"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="122">
-    <pair kern="10" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="100">
-    <pair kern="-10" kpx2="100"/>
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="-15" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="68">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-70" kpx2="89"/>
-    <pair kern="-30" kpx2="46"/>
-    <pair kern="-40" kpx2="86"/>
-    <pair kern="-30" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="146">
-    <pair kern="-80" kpx2="100"/>
-    <pair kern="-80" kpx2="32"/>
-    <pair kern="-46" kpx2="146"/>
-    <pair kern="-40" kpx2="114"/>
-    <pair kern="-20" kpx2="108"/>
-    <pair kern="-60" kpx2="115"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="82">
-    <pair kern="-20" kpx2="79"/>
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-20" kpx2="85"/>
-    <pair kern="-50" kpx2="89"/>
-    <pair kern="-20" kpx2="84"/>
-    <pair kern="-50" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="75">
-    <pair kern="-35" kpx2="111"/>
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-40" kpx2="121"/>
-    <pair kern="-15" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="58">
-    <pair kern="-40" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="119">
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="114">
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="-20" kpx2="100"/>
-    <pair kern="-20" kpx2="45"/>
-    <pair kern="-20" kpx2="99"/>
-    <pair kern="20" kpx2="116"/>
-    <pair kern="10" kpx2="121"/>
-    <pair kern="-60" kpx2="46"/>
-    <pair kern="-15" kpx2="103"/>
-    <pair kern="-20" kpx2="113"/>
-    <pair kern="-15" kpx2="115"/>
-    <pair kern="10" kpx2="118"/>
-    <pair kern="-60" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="145">
-    <pair kern="-46" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="108">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-15" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="103">
-    <pair kern="-10" kpx2="103"/>
-    <pair kern="10" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="66">
-    <pair kern="-30" kpx2="65"/>
-    <pair kern="-10" kpx2="85"/>
-  </kerning>
-  <kerning kpx1="98">
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-10" kpx2="108"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="76">
-    <pair kern="-140" kpx2="148"/>
-    <pair kern="-140" kpx2="146"/>
-    <pair kern="-80" kpx2="87"/>
-    <pair kern="-120" kpx2="89"/>
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-90" kpx2="84"/>
-    <pair kern="-110" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="81">
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="20" kpx2="46"/>
-    <pair kern="20" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="44">
-    <pair kern="-120" kpx2="148"/>
-    <pair kern="-40" kpx2="32"/>
-    <pair kern="-120" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="148">
-    <pair kern="-80" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="109">
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-30" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="102">
-    <pair kern="30" kpx2="148"/>
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="30" kpx2="146"/>
-    <pair kern="-10" kpx2="46"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-10" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="74">
-    <pair kern="-20" kpx2="65"/>
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-20" kpx2="46"/>
-    <pair kern="-20" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="89">
-    <pair kern="-100" kpx2="111"/>
-    <pair kern="-70" kpx2="79"/>
-    <pair kern="-50" kpx2="58"/>
-    <pair kern="-90" kpx2="97"/>
-    <pair kern="-110" kpx2="65"/>
-    <pair kern="-100" kpx2="117"/>
-    <pair kern="-100" kpx2="46"/>
-    <pair kern="-80" kpx2="101"/>
-    <pair kern="-50" kpx2="59"/>
-    <pair kern="-100" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="84">
-    <pair kern="-80" kpx2="111"/>
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-40" kpx2="58"/>
-    <pair kern="-60" kpx2="119"/>
-    <pair kern="-80" kpx2="114"/>
-    <pair kern="-80" kpx2="44"/>
-    <pair kern="-40" kpx2="59"/>
-    <pair kern="-120" kpx2="45"/>
-    <pair kern="-90" kpx2="65"/>
-    <pair kern="-80" kpx2="97"/>
-    <pair kern="-90" kpx2="117"/>
-    <pair kern="-60" kpx2="121"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-60" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="121">
-    <pair kern="-25" kpx2="111"/>
-    <pair kern="-30" kpx2="97"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="46">
-    <pair kern="-120" kpx2="148"/>
-    <pair kern="-40" kpx2="32"/>
-    <pair kern="-120" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="110">
-    <pair kern="-10" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-40" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="120">
-    <pair kern="-10" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="101">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="20" kpx2="46"/>
-    <pair kern="-15" kpx2="120"/>
-    <pair kern="-15" kpx2="118"/>
-    <pair kern="10" kpx2="44"/>
-  </kerning>
-</font-metrics>
diff --git a/src/codegen/HelveticaOblique.xml b/src/codegen/HelveticaOblique.xml
deleted file mode 100644 (file)
index d913b6d..0000000
+++ /dev/null
@@ -1,603 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Helvetica-Oblique</font-name>
-   <class-name>HelveticaOblique</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>718</cap-height>
-   <x-height>523</x-height>
-   <ascender>718</ascender>
-   <descender>-207</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="667"/>
-      <char name="AE" width="1000"/>
-      <char name="Aacute" width="667"/>
-      <char name="Acircumflex" width="667"/>
-      <char name="Adieresis" width="667"/>
-      <char name="Agrave" width="667"/>
-      <char name="Aring" width="667"/>
-      <char name="Atilde" width="667"/>
-      <char name="B" width="667"/>
-      <char name="C" width="722"/>
-      <char name="Ccedilla" width="722"/>
-      <char name="D" width="722"/>
-      <char name="E" width="667"/>
-      <char name="Eacute" width="667"/>
-      <char name="Ecircumflex" width="667"/>
-      <char name="Edieresis" width="667"/>
-      <char name="Egrave" width="667"/>
-      <char name="Eth" width="722"/>
-      <char name="Euro" width="556"/>
-      <char name="F" width="611"/>
-      <char name="G" width="778"/>
-      <char name="H" width="722"/>
-      <char name="I" width="278"/>
-      <char name="Iacute" width="278"/>
-      <char name="Icircumflex" width="278"/>
-      <char name="Idieresis" width="278"/>
-      <char name="Igrave" width="278"/>
-      <char name="J" width="500"/>
-      <char name="K" width="667"/>
-      <char name="L" width="556"/>
-      <char name="Lslash" width="556"/>
-      <char name="M" width="833"/>
-      <char name="N" width="722"/>
-      <char name="Ntilde" width="722"/>
-      <char name="O" width="778"/>
-      <char name="OE" width="1000"/>
-      <char name="Oacute" width="778"/>
-      <char name="Ocircumflex" width="778"/>
-      <char name="Odieresis" width="778"/>
-      <char name="Ograve" width="778"/>
-      <char name="Oslash" width="778"/>
-      <char name="Otilde" width="778"/>
-      <char name="P" width="667"/>
-      <char name="Q" width="778"/>
-      <char name="R" width="722"/>
-      <char name="S" width="667"/>
-      <char name="Scaron" width="667"/>
-      <char name="T" width="611"/>
-      <char name="Thorn" width="667"/>
-      <char name="U" width="722"/>
-      <char name="Uacute" width="722"/>
-      <char name="Ucircumflex" width="722"/>
-      <char name="Udieresis" width="722"/>
-      <char name="Ugrave" width="722"/>
-      <char name="V" width="667"/>
-      <char name="W" width="944"/>
-      <char name="X" width="667"/>
-      <char name="Y" width="667"/>
-      <char name="Yacute" width="667"/>
-      <char name="Ydieresis" width="667"/>
-      <char name="Z" width="611"/>
-      <char name="Zcaron" width="611"/>
-      <char name="a" width="556"/>
-      <char name="aacute" width="556"/>
-      <char name="acircumflex" width="556"/>
-      <char name="acute" width="333"/>
-      <char name="adieresis" width="556"/>
-      <char name="ae" width="889"/>
-      <char name="agrave" width="556"/>
-      <char name="ampersand" width="667"/>
-      <char name="aring" width="556"/>
-      <char name="asciicircum" width="469"/>
-      <char name="asciitilde" width="584"/>
-      <char name="asterisk" width="389"/>
-      <char name="at" width="1015"/>
-      <char name="atilde" width="556"/>
-      <char name="b" width="556"/>
-      <char name="backslash" width="278"/>
-      <char name="bar" width="260"/>
-      <char name="braceleft" width="334"/>
-      <char name="braceright" width="334"/>
-      <char name="bracketleft" width="278"/>
-      <char name="bracketright" width="278"/>
-      <char name="breve" width="333"/>
-      <char name="brokenbar" width="260"/>
-      <char name="bullet" width="350"/>
-      <char name="c" width="500"/>
-      <char name="caron" width="333"/>
-      <char name="ccedilla" width="500"/>
-      <char name="cedilla" width="333"/>
-      <char name="cent" width="556"/>
-      <char name="circumflex" width="333"/>
-      <char name="colon" width="278"/>
-      <char name="comma" width="278"/>
-      <char name="copyright" width="737"/>
-      <char name="currency" width="556"/>
-      <char name="d" width="556"/>
-      <char name="dagger" width="556"/>
-      <char name="daggerdbl" width="556"/>
-      <char name="degree" width="400"/>
-      <char name="dieresis" width="333"/>
-      <char name="divide" width="584"/>
-      <char name="dollar" width="556"/>
-      <char name="dotaccent" width="333"/>
-      <char name="dotlessi" width="278"/>
-      <char name="e" width="556"/>
-      <char name="eacute" width="556"/>
-      <char name="ecircumflex" width="556"/>
-      <char name="edieresis" width="556"/>
-      <char name="egrave" width="556"/>
-      <char name="eight" width="556"/>
-      <char name="ellipsis" width="1000"/>
-      <char name="emdash" width="1000"/>
-      <char name="endash" width="556"/>
-      <char name="equal" width="584"/>
-      <char name="eth" width="556"/>
-      <char name="exclam" width="278"/>
-      <char name="exclamdown" width="333"/>
-      <char name="f" width="278"/>
-      <char name="fi" width="500"/>
-      <char name="five" width="556"/>
-      <char name="fl" width="500"/>
-      <char name="florin" width="556"/>
-      <char name="four" width="556"/>
-      <char name="fraction" width="167"/>
-      <char name="g" width="556"/>
-      <char name="germandbls" width="611"/>
-      <char name="grave" width="333"/>
-      <char name="greater" width="584"/>
-      <char name="guillemotleft" width="556"/>
-      <char name="guillemotright" width="556"/>
-      <char name="guilsinglleft" width="333"/>
-      <char name="guilsinglright" width="333"/>
-      <char name="h" width="556"/>
-      <char name="hungarumlaut" width="333"/>
-      <char name="hyphen" width="333"/>
-      <char name="i" width="222"/>
-      <char name="iacute" width="278"/>
-      <char name="icircumflex" width="278"/>
-      <char name="idieresis" width="278"/>
-      <char name="igrave" width="278"/>
-      <char name="j" width="222"/>
-      <char name="k" width="500"/>
-      <char name="l" width="222"/>
-      <char name="less" width="584"/>
-      <char name="logicalnot" width="584"/>
-      <char name="lslash" width="222"/>
-      <char name="m" width="833"/>
-      <char name="macron" width="333"/>
-      <char name="minus" width="584"/>
-      <char name="mu" width="556"/>
-      <char name="multiply" width="584"/>
-      <char name="n" width="556"/>
-      <char name="nine" width="556"/>
-      <char name="ntilde" width="556"/>
-      <char name="numbersign" width="556"/>
-      <char name="o" width="556"/>
-      <char name="oacute" width="556"/>
-      <char name="ocircumflex" width="556"/>
-      <char name="odieresis" width="556"/>
-      <char name="oe" width="944"/>
-      <char name="ogonek" width="333"/>
-      <char name="ograve" width="556"/>
-      <char name="one" width="556"/>
-      <char name="onehalf" width="834"/>
-      <char name="onequarter" width="834"/>
-      <char name="onesuperior" width="333"/>
-      <char name="ordfeminine" width="370"/>
-      <char name="ordmasculine" width="365"/>
-      <char name="oslash" width="611"/>
-      <char name="otilde" width="556"/>
-      <char name="p" width="556"/>
-      <char name="paragraph" width="537"/>
-      <char name="parenleft" width="333"/>
-      <char name="parenright" width="333"/>
-      <char name="percent" width="889"/>
-      <char name="period" width="278"/>
-      <char name="periodcentered" width="278"/>
-      <char name="perthousand" width="1000"/>
-      <char name="plus" width="584"/>
-      <char name="plusminus" width="584"/>
-      <char name="q" width="556"/>
-      <char name="question" width="556"/>
-      <char name="questiondown" width="611"/>
-      <char name="quotedbl" width="355"/>
-      <char name="quotedblbase" width="333"/>
-      <char name="quotedblleft" width="333"/>
-      <char name="quotedblright" width="333"/>
-      <char name="quoteleft" width="222"/>
-      <char name="quoteright" width="222"/>
-      <char name="quotesinglbase" width="222"/>
-      <char name="quotesingle" width="191"/>
-      <char name="r" width="333"/>
-      <char name="registered" width="737"/>
-      <char name="ring" width="333"/>
-      <char name="s" width="500"/>
-      <char name="scaron" width="500"/>
-      <char name="section" width="556"/>
-      <char name="semicolon" width="278"/>
-      <char name="seven" width="556"/>
-      <char name="six" width="556"/>
-      <char name="slash" width="278"/>
-      <char name="space" width="278"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="278"/>
-      <char name="sterling" width="556"/>
-      <char name="t" width="278"/>
-      <char name="thorn" width="556"/>
-      <char name="three" width="556"/>
-      <char name="threequarters" width="834"/>
-      <char name="threesuperior" width="333"/>
-      <char name="tilde" width="333"/>
-      <char name="trademark" width="1000"/>
-      <char name="two" width="556"/>
-      <char name="twosuperior" width="333"/>
-      <char name="u" width="556"/>
-      <char name="uacute" width="556"/>
-      <char name="ucircumflex" width="556"/>
-      <char name="udieresis" width="556"/>
-      <char name="ugrave" width="556"/>
-      <char name="underscore" width="556"/>
-      <char name="v" width="500"/>
-      <char name="w" width="722"/>
-      <char name="x" width="500"/>
-      <char name="y" width="500"/>
-      <char name="yacute" width="500"/>
-      <char name="ydieresis" width="500"/>
-      <char name="yen" width="556"/>
-      <char name="z" width="500"/>
-      <char name="zcaron" width="500"/>
-      <char name="zero" width="556"/>
-   </widths>
-  <kerning kpx1="107">
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="-20" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="79">
-    <pair kern="-20" kpx2="65"/>
-    <pair kern="-30" kpx2="87"/>
-    <pair kern="-70" kpx2="89"/>
-    <pair kern="-40" kpx2="84"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-50" kpx2="86"/>
-    <pair kern="-60" kpx2="88"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="104">
-    <pair kern="-30" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="87">
-    <pair kern="-30" kpx2="111"/>
-    <pair kern="-40" kpx2="45"/>
-    <pair kern="-20" kpx2="79"/>
-    <pair kern="-40" kpx2="97"/>
-    <pair kern="-50" kpx2="65"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-30" kpx2="101"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="99">
-    <pair kern="-20" kpx2="107"/>
-    <pair kern="-15" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="112">
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-35" kpx2="46"/>
-    <pair kern="-35" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="80">
-    <pair kern="-50" kpx2="111"/>
-    <pair kern="-40" kpx2="97"/>
-    <pair kern="-120" kpx2="65"/>
-    <pair kern="-180" kpx2="46"/>
-    <pair kern="-50" kpx2="101"/>
-    <pair kern="-180" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="86">
-    <pair kern="-80" kpx2="111"/>
-    <pair kern="-80" kpx2="45"/>
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-40" kpx2="58"/>
-    <pair kern="-70" kpx2="97"/>
-    <pair kern="-80" kpx2="65"/>
-    <pair kern="-70" kpx2="117"/>
-    <pair kern="-125" kpx2="46"/>
-    <pair kern="-40" kpx2="71"/>
-    <pair kern="-80" kpx2="101"/>
-    <pair kern="-40" kpx2="59"/>
-    <pair kern="-125" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="118">
-    <pair kern="-25" kpx2="111"/>
-    <pair kern="-25" kpx2="97"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="-25" kpx2="101"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="59">
-    <pair kern="-50" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="32">
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-30" kpx2="147"/>
-    <pair kern="-90" kpx2="89"/>
-    <pair kern="-50" kpx2="84"/>
-    <pair kern="-60" kpx2="145"/>
-    <pair kern="-50" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="97">
-    <pair kern="-20" kpx2="119"/>
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="65">
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-40" kpx2="119"/>
-    <pair kern="-50" kpx2="87"/>
-    <pair kern="-30" kpx2="67"/>
-    <pair kern="-30" kpx2="81"/>
-    <pair kern="-30" kpx2="71"/>
-    <pair kern="-70" kpx2="86"/>
-    <pair kern="-40" kpx2="118"/>
-    <pair kern="-50" kpx2="85"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-100" kpx2="89"/>
-    <pair kern="-120" kpx2="84"/>
-    <pair kern="-40" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="70">
-    <pair kern="-30" kpx2="111"/>
-    <pair kern="-45" kpx2="114"/>
-    <pair kern="-50" kpx2="97"/>
-    <pair kern="-80" kpx2="65"/>
-    <pair kern="-150" kpx2="46"/>
-    <pair kern="-30" kpx2="101"/>
-    <pair kern="-150" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="85">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="115">
-    <pair kern="-30" kpx2="119"/>
-    <pair kern="-15" kpx2="46"/>
-    <pair kern="-15" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="122">
-    <pair kern="-15" kpx2="111"/>
-    <pair kern="-15" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="83">
-    <pair kern="-20" kpx2="46"/>
-    <pair kern="-20" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="111">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-30" kpx2="120"/>
-    <pair kern="-15" kpx2="118"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="68">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-90" kpx2="89"/>
-    <pair kern="-70" kpx2="46"/>
-    <pair kern="-70" kpx2="86"/>
-    <pair kern="-70" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="146">
-    <pair kern="-50" kpx2="100"/>
-    <pair kern="-70" kpx2="32"/>
-    <pair kern="-57" kpx2="146"/>
-    <pair kern="-50" kpx2="114"/>
-    <pair kern="-50" kpx2="115"/>
-  </kerning>
-  <kerning kpx1="82">
-    <pair kern="-20" kpx2="79"/>
-    <pair kern="-30" kpx2="87"/>
-    <pair kern="-40" kpx2="85"/>
-    <pair kern="-50" kpx2="89"/>
-    <pair kern="-30" kpx2="84"/>
-    <pair kern="-50" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="75">
-    <pair kern="-40" kpx2="111"/>
-    <pair kern="-50" kpx2="79"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-50" kpx2="121"/>
-    <pair kern="-40" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="119">
-    <pair kern="-10" kpx2="111"/>
-    <pair kern="-15" kpx2="97"/>
-    <pair kern="-60" kpx2="46"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-60" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="58">
-    <pair kern="-50" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="114">
-    <pair kern="15" kpx2="107"/>
-    <pair kern="30" kpx2="58"/>
-    <pair kern="30" kpx2="112"/>
-    <pair kern="15" kpx2="108"/>
-    <pair kern="30" kpx2="118"/>
-    <pair kern="-50" kpx2="44"/>
-    <pair kern="30" kpx2="59"/>
-    <pair kern="15" kpx2="105"/>
-    <pair kern="25" kpx2="109"/>
-    <pair kern="-10" kpx2="97"/>
-    <pair kern="15" kpx2="117"/>
-    <pair kern="40" kpx2="116"/>
-    <pair kern="30" kpx2="121"/>
-    <pair kern="-50" kpx2="46"/>
-    <pair kern="25" kpx2="110"/>
-  </kerning>
-  <kerning kpx1="67">
-    <pair kern="-30" kpx2="46"/>
-    <pair kern="-30" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="145">
-    <pair kern="-57" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="103">
-    <pair kern="-10" kpx2="114"/>
-  </kerning>
-  <kerning kpx1="66">
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="-20" kpx2="46"/>
-    <pair kern="-20" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="81">
-    <pair kern="-10" kpx2="85"/>
-  </kerning>
-  <kerning kpx1="76">
-    <pair kern="-140" kpx2="148"/>
-    <pair kern="-160" kpx2="146"/>
-    <pair kern="-70" kpx2="87"/>
-    <pair kern="-140" kpx2="89"/>
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-110" kpx2="84"/>
-    <pair kern="-110" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="98">
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="-20" kpx2="108"/>
-    <pair kern="-10" kpx2="98"/>
-    <pair kern="-20" kpx2="118"/>
-    <pair kern="-40" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="44">
-    <pair kern="-100" kpx2="148"/>
-    <pair kern="-100" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="148">
-    <pair kern="-40" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="109">
-    <pair kern="-10" kpx2="117"/>
-    <pair kern="-15" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="248">
-    <pair kern="-55" kpx2="107"/>
-    <pair kern="-55" kpx2="104"/>
-    <pair kern="-55" kpx2="99"/>
-    <pair kern="-55" kpx2="112"/>
-    <pair kern="-55" kpx2="113"/>
-    <pair kern="-70" kpx2="118"/>
-    <pair kern="-55" kpx2="105"/>
-    <pair kern="-55" kpx2="97"/>
-    <pair kern="-55" kpx2="117"/>
-    <pair kern="-55" kpx2="116"/>
-    <pair kern="-55" kpx2="106"/>
-    <pair kern="-55" kpx2="115"/>
-    <pair kern="-55" kpx2="122"/>
-    <pair kern="-55" kpx2="100"/>
-    <pair kern="-55" kpx2="111"/>
-    <pair kern="-70" kpx2="119"/>
-    <pair kern="-55" kpx2="114"/>
-    <pair kern="-55" kpx2="103"/>
-    <pair kern="-55" kpx2="108"/>
-    <pair kern="-55" kpx2="98"/>
-    <pair kern="-95" kpx2="44"/>
-    <pair kern="-55" kpx2="109"/>
-    <pair kern="-55" kpx2="102"/>
-    <pair kern="-70" kpx2="121"/>
-    <pair kern="-95" kpx2="46"/>
-    <pair kern="-55" kpx2="110"/>
-    <pair kern="-85" kpx2="120"/>
-    <pair kern="-55" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="102">
-    <pair kern="60" kpx2="148"/>
-    <pair kern="-30" kpx2="111"/>
-    <pair kern="50" kpx2="146"/>
-    <pair kern="-30" kpx2="97"/>
-    <pair kern="-30" kpx2="46"/>
-    <pair kern="-30" kpx2="101"/>
-    <pair kern="-30" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="74">
-    <pair kern="-20" kpx2="97"/>
-    <pair kern="-20" kpx2="65"/>
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-30" kpx2="46"/>
-    <pair kern="-30" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="89">
-    <pair kern="-140" kpx2="111"/>
-    <pair kern="-140" kpx2="45"/>
-    <pair kern="-20" kpx2="105"/>
-    <pair kern="-85" kpx2="79"/>
-    <pair kern="-60" kpx2="58"/>
-    <pair kern="-140" kpx2="97"/>
-    <pair kern="-110" kpx2="65"/>
-    <pair kern="-110" kpx2="117"/>
-    <pair kern="-140" kpx2="46"/>
-    <pair kern="-140" kpx2="101"/>
-    <pair kern="-60" kpx2="59"/>
-    <pair kern="-140" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="121">
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="-20" kpx2="97"/>
-    <pair kern="-100" kpx2="46"/>
-    <pair kern="-20" kpx2="101"/>
-    <pair kern="-100" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="84">
-    <pair kern="-120" kpx2="111"/>
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-20" kpx2="58"/>
-    <pair kern="-120" kpx2="119"/>
-    <pair kern="-120" kpx2="114"/>
-    <pair kern="-120" kpx2="44"/>
-    <pair kern="-20" kpx2="59"/>
-    <pair kern="-140" kpx2="45"/>
-    <pair kern="-120" kpx2="65"/>
-    <pair kern="-120" kpx2="97"/>
-    <pair kern="-120" kpx2="117"/>
-    <pair kern="-120" kpx2="121"/>
-    <pair kern="-120" kpx2="46"/>
-    <pair kern="-120" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="46">
-    <pair kern="-100" kpx2="148"/>
-    <pair kern="-60" kpx2="32"/>
-    <pair kern="-100" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="110">
-    <pair kern="-10" kpx2="117"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="120">
-    <pair kern="-30" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="101">
-    <pair kern="-20" kpx2="119"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-15" kpx2="46"/>
-    <pair kern="-30" kpx2="120"/>
-    <pair kern="-30" kpx2="118"/>
-    <pair kern="-15" kpx2="44"/>
-  </kerning>
-</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/Symbol.xml b/src/codegen/Symbol.xml
deleted file mode 100644 (file)
index 241d4d2..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-<!--
-  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$ -->
-<font-metrics>
-  <font-name>Symbol</font-name>
-  <class-name>Symbol</class-name>
-  <encoding>SymbolEncoding</encoding>
-  <cap-height>1010</cap-height>
-  <x-height>520</x-height>
-  <ascender>1010</ascender>
-  <descender>-293</descender>
-  <first-char>32</first-char>
-  <last-char>255</last-char>
-  <widths>
-    <char name="space" width="250"/>
-    <char name="exclam" width="333"/>
-    <char name="universal" width="713"/>
-    <char name="numbersign" width="500"/>
-    <char name="existential" width="549"/>
-    <char name="percent" width="833"/>
-    <char name="ampersand" width="778"/>
-    <char name="suchthat" width="439"/>
-    <char name="parenleft" width="333"/>
-    <char name="parenright" width="333"/>
-    <char name="asteriskmath" width="500"/>
-    <char name="plus" width="549"/>
-    <char name="comma" width="250"/>
-    <char name="minus" width="549"/>
-    <char name="period" width="250"/>
-    <char name="slash" width="278"/>
-    <char name="zero" width="500"/>
-    <char name="one" width="500"/>
-    <char name="two" width="500"/>
-    <char name="three" width="500"/>
-    <char name="four" width="500"/>
-    <char name="five" width="500"/>
-    <char name="six" width="500"/>
-    <char name="seven" width="500"/>
-    <char name="eight" width="500"/>
-    <char name="nine" width="500"/>
-    <char name="colon" width="278"/>
-    <char name="semicolon" width="278"/>
-    <char name="less" width="549"/>
-    <char name="equal" width="549"/>
-    <char name="greater" width="549"/>
-    <char name="question" width="444"/>
-    <char name="congruent" width="549"/>
-    <char name="Alpha" width="722"/>
-    <char name="Beta" width="667"/>
-    <char name="Chi" width="722"/>
-    <char name="Delta" width="612"/>
-    <char name="Epsilon" width="611"/>
-    <char name="Phi" width="763"/>
-    <char name="Gamma" width="603"/>
-    <char name="Eta" width="722"/>
-    <char name="Iota" width="333"/>
-    <char name="theta1" width="631"/>
-    <char name="Kappa" width="722"/>
-    <char name="Lambda" width="686"/>
-    <char name="Mu" width="889"/>
-    <char name="Nu" width="722"/>
-    <char name="Omicron" width="722"/>
-    <char name="Pi" width="768"/>
-    <char name="Theta" width="741"/>
-    <char name="Rho" width="556"/>
-    <char name="Sigma" width="592"/>
-    <char name="Tau" width="611"/>
-    <char name="Upsilon" width="690"/>
-    <char name="sigma1" width="439"/>
-    <char name="Omega" width="768"/>
-    <char name="Xi" width="645"/>
-    <char name="Psi" width="795"/>
-    <char name="Zeta" width="611"/>
-    <char name="bracketleft" width="333"/>
-    <char name="therefore" width="863"/>
-    <char name="bracketright" width="333"/>
-    <char name="perpendicular" width="658"/>
-    <char name="underscore" width="500"/>
-    <char name="radicalex" width="500"/>
-    <char name="alpha" width="631"/>
-    <char name="beta" width="549"/>
-    <char name="chi" width="549"/>
-    <char name="delta" width="494"/>
-    <char name="epsilon" width="439"/>
-    <char name="phi" width="521"/>
-    <char name="gamma" width="411"/>
-    <char name="eta" width="603"/>
-    <char name="iota" width="329"/>
-    <char name="phi1" width="603"/>
-    <char name="kappa" width="549"/>
-    <char name="lambda" width="549"/>
-    <char name="m" width="576"/>
-    <char name="mu" width="576"/>
-    <char name="nu" width="521"/>
-    <char name="omicron" width="549"/>
-    <char name="pi" width="549"/>
-    <char name="theta" width="521"/>
-    <char name="rho" width="549"/>
-    <char name="sigma" width="603"/>
-    <char name="tau" width="439"/>
-    <char name="upsilon" width="576"/>
-    <char name="omega1" width="713"/>
-    <char name="omega" width="686"/>
-    <char name="xi" width="493"/>
-    <char name="psi" width="686"/>
-    <char name="zeta" width="494"/>
-    <char name="braceleft" width="480"/>
-    <char name="bar" width="200"/>
-    <char name="braceright" width="480"/>
-    <char name="similar" width="549"/>
-    <char name="Upsilon1" width="620"/>
-    <char name="minute" width="247"/>
-    <char name="lessequal" width="549"/>
-    <char name="fraction" width="167"/>
-    <char name="infinity" width="713"/>
-    <char name="florin" width="500"/>
-    <char name="club" width="753"/>
-    <char name="diamond" width="753"/>
-    <char name="heart" width="753"/>
-    <char name="spade" width="753"/>
-    <char name="arrowboth" width="1042"/>
-    <char name="arrowleft" width="987"/>
-    <char name="arrowup" width="603"/>
-    <char name="arrowright" width="987"/>
-    <char name="arrowdown" width="603"/>
-    <char name="degree" width="400"/>
-    <char name="plusminus" width="549"/>
-    <char name="second" width="411"/>
-    <char name="greaterequal" width="549"/>
-    <char name="multiply" width="549"/>
-    <char name="proportional" width="713"/>
-    <char name="partialdiff" width="494"/>
-    <char name="bullet" width="460"/>
-    <char name="divide" width="549"/>
-    <char name="notequal" width="549"/>
-    <char name="equivalence" width="549"/>
-    <char name="approxequal" width="549"/>
-    <char name="ellipsis" width="1000"/>
-    <char name="arrowvertex" width="603"/>
-    <char name="arrowhorizex" width="1000"/>
-    <char name="carriagereturn" width="658"/>
-    <char name="aleph" width="823"/>
-    <char name="Ifraktur" width="686"/>
-    <char name="Rfraktur" width="795"/>
-    <char name="weierstrass" width="987"/>
-    <char name="circlemultiply" width="768"/>
-    <char name="circleplus" width="768"/>
-    <char name="emptyset" width="823"/>
-    <char name="intersection" width="768"/>
-    <char name="union" width="768"/>
-    <char name="propersuperset" width="713"/>
-    <char name="reflexsuperset" width="713"/>
-    <char name="notsubset" width="713"/>
-    <char name="propersubset" width="713"/>
-    <char name="reflexsubset" width="713"/>
-    <char name="element" width="713"/>
-    <char name="notelement" width="713"/>
-    <char name="angle" width="768"/>
-    <char name="gradient" width="713"/>
-    <char name="registerserif" width="790"/>
-    <char name="copyrightserif" width="790"/>
-    <char name="trademarkserif" width="890"/>
-    <char name="product" width="823"/>
-    <char name="radical" width="549"/>
-    <char name="dotmath" width="250"/>
-    <char name="logicalnot" width="713"/>
-    <char name="logicaland" width="603"/>
-    <char name="logicalor" width="603"/>
-    <char name="arrowdblboth" width="1042"/>
-    <char name="arrowdblleft" width="987"/>
-    <char name="arrowdblup" width="603"/>
-    <char name="arrowdblright" width="987"/>
-    <char name="arrowdbldown" width="603"/>
-    <char name="lozenge" width="494"/>
-    <char name="angleleft" width="329"/>
-    <char name="registersans" width="790"/>
-    <char name="copyrightsans" width="790"/>
-    <char name="trademarksans" width="786"/>
-    <char name="summation" width="713"/>
-    <char name="parenlefttp" width="384"/>
-    <char name="parenleftex" width="384"/>
-    <char name="parenleftbt" width="384"/>
-    <char name="bracketlefttp" width="384"/>
-    <char name="bracketleftex" width="384"/>
-    <char name="bracketleftbt" width="384"/>
-    <char name="bracelefttp" width="494"/>
-    <char name="braceleftmid" width="494"/>
-    <char name="braceleftbt" width="494"/>
-    <char name="braceex" width="494"/>
-    <char name="angleright" width="329"/>
-    <char name="integral" width="274"/>
-    <char name="integraltp" width="686"/>
-    <char name="integralex" width="686"/>
-    <char name="integralbt" width="686"/>
-    <char name="parenrighttp" width="384"/>
-    <char name="parenrightex" width="384"/>
-    <char name="parenrightbt" width="384"/>
-    <char name="bracketrighttp" width="384"/>
-    <char name="bracketrightex" width="384"/>
-    <char name="bracketrightbt" width="384"/>
-    <char name="bracerighttp" width="494"/>
-    <char name="bracerightmid" width="494"/>
-    <char name="bracerightbt" width="494"/>
-    <char name="apple" width="790"/>
-  </widths>
-</font-metrics>
diff --git a/src/codegen/TimesBold.xml b/src/codegen/TimesBold.xml
deleted file mode 100644 (file)
index 12bb175..0000000
+++ /dev/null
@@ -1,642 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Times-Bold</font-name>
-   <class-name>TimesBold</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>676</cap-height>
-   <x-height>461</x-height>
-   <ascender>676</ascender>
-   <descender>-205</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="722"/>
-      <char name="AE" width="1000"/>
-      <char name="Aacute" width="722"/>
-      <char name="Acircumflex" width="722"/>
-      <char name="Adieresis" width="722"/>
-      <char name="Agrave" width="722"/>
-      <char name="Aring" width="722"/>
-      <char name="Atilde" width="722"/>
-      <char name="B" width="667"/>
-      <char name="C" width="722"/>
-      <char name="Ccedilla" width="722"/>
-      <char name="D" width="722"/>
-      <char name="E" width="667"/>
-      <char name="Eacute" width="667"/>
-      <char name="Ecircumflex" width="667"/>
-      <char name="Edieresis" width="667"/>
-      <char name="Egrave" width="667"/>
-      <char name="Eth" width="722"/>
-      <char name="Euro" width="500"/>
-      <char name="F" width="611"/>
-      <char name="G" width="778"/>
-      <char name="H" width="778"/>
-      <char name="I" width="389"/>
-      <char name="Iacute" width="389"/>
-      <char name="Icircumflex" width="389"/>
-      <char name="Idieresis" width="389"/>
-      <char name="Igrave" width="389"/>
-      <char name="J" width="500"/>
-      <char name="K" width="778"/>
-      <char name="L" width="667"/>
-      <char name="Lslash" width="667"/>
-      <char name="M" width="944"/>
-      <char name="N" width="722"/>
-      <char name="Ntilde" width="722"/>
-      <char name="O" width="778"/>
-      <char name="OE" width="1000"/>
-      <char name="Oacute" width="778"/>
-      <char name="Ocircumflex" width="778"/>
-      <char name="Odieresis" width="778"/>
-      <char name="Ograve" width="778"/>
-      <char name="Oslash" width="778"/>
-      <char name="Otilde" width="778"/>
-      <char name="P" width="611"/>
-      <char name="Q" width="778"/>
-      <char name="R" width="722"/>
-      <char name="S" width="556"/>
-      <char name="Scaron" width="556"/>
-      <char name="T" width="667"/>
-      <char name="Thorn" width="611"/>
-      <char name="U" width="722"/>
-      <char name="Uacute" width="722"/>
-      <char name="Ucircumflex" width="722"/>
-      <char name="Udieresis" width="722"/>
-      <char name="Ugrave" width="722"/>
-      <char name="V" width="722"/>
-      <char name="W" width="1000"/>
-      <char name="X" width="722"/>
-      <char name="Y" width="722"/>
-      <char name="Yacute" width="722"/>
-      <char name="Ydieresis" width="722"/>
-      <char name="Z" width="667"/>
-      <char name="Zcaron" width="667"/>
-      <char name="a" width="500"/>
-      <char name="aacute" width="500"/>
-      <char name="acircumflex" width="500"/>
-      <char name="acute" width="333"/>
-      <char name="adieresis" width="500"/>
-      <char name="ae" width="722"/>
-      <char name="agrave" width="500"/>
-      <char name="ampersand" width="833"/>
-      <char name="aring" width="500"/>
-      <char name="asciicircum" width="581"/>
-      <char name="asciitilde" width="520"/>
-      <char name="asterisk" width="500"/>
-      <char name="at" width="930"/>
-      <char name="atilde" width="500"/>
-      <char name="b" width="556"/>
-      <char name="backslash" width="278"/>
-      <char name="bar" width="220"/>
-      <char name="braceleft" width="394"/>
-      <char name="braceright" width="394"/>
-      <char name="bracketleft" width="333"/>
-      <char name="bracketright" width="333"/>
-      <char name="breve" width="333"/>
-      <char name="brokenbar" width="220"/>
-      <char name="bullet" width="350"/>
-      <char name="c" width="444"/>
-      <char name="caron" width="333"/>
-      <char name="ccedilla" width="444"/>
-      <char name="cedilla" width="333"/>
-      <char name="cent" width="500"/>
-      <char name="circumflex" width="333"/>
-      <char name="colon" width="333"/>
-      <char name="comma" width="250"/>
-      <char name="copyright" width="747"/>
-      <char name="currency" width="500"/>
-      <char name="d" width="556"/>
-      <char name="dagger" width="500"/>
-      <char name="daggerdbl" width="500"/>
-      <char name="degree" width="400"/>
-      <char name="dieresis" width="333"/>
-      <char name="divide" width="570"/>
-      <char name="dollar" width="500"/>
-      <char name="dotaccent" width="333"/>
-      <char name="dotlessi" width="278"/>
-      <char name="e" width="444"/>
-      <char name="eacute" width="444"/>
-      <char name="ecircumflex" width="444"/>
-      <char name="edieresis" width="444"/>
-      <char name="egrave" width="444"/>
-      <char name="eight" width="500"/>
-      <char name="ellipsis" width="1000"/>
-      <char name="emdash" width="1000"/>
-      <char name="endash" width="500"/>
-      <char name="equal" width="570"/>
-      <char name="eth" width="500"/>
-      <char name="exclam" width="333"/>
-      <char name="exclamdown" width="333"/>
-      <char name="f" width="333"/>
-      <char name="fi" width="556"/>
-      <char name="five" width="500"/>
-      <char name="fl" width="556"/>
-      <char name="florin" width="500"/>
-      <char name="four" width="500"/>
-      <char name="fraction" width="167"/>
-      <char name="g" width="500"/>
-      <char name="germandbls" width="556"/>
-      <char name="grave" width="333"/>
-      <char name="greater" width="570"/>
-      <char name="guillemotleft" width="500"/>
-      <char name="guillemotright" width="500"/>
-      <char name="guilsinglleft" width="333"/>
-      <char name="guilsinglright" width="333"/>
-      <char name="h" width="556"/>
-      <char name="hungarumlaut" width="333"/>
-      <char name="hyphen" width="333"/>
-      <char name="i" width="278"/>
-      <char name="iacute" width="278"/>
-      <char name="icircumflex" width="278"/>
-      <char name="idieresis" width="278"/>
-      <char name="igrave" width="278"/>
-      <char name="j" width="333"/>
-      <char name="k" width="556"/>
-      <char name="l" width="278"/>
-      <char name="less" width="570"/>
-      <char name="logicalnot" width="570"/>
-      <char name="lslash" width="278"/>
-      <char name="m" width="833"/>
-      <char name="macron" width="333"/>
-      <char name="minus" width="324"/>
-      <char name="mu" width="556"/>
-      <char name="multiply" width="570"/>
-      <char name="n" width="556"/>
-      <char name="nine" width="500"/>
-      <char name="ntilde" width="556"/>
-      <char name="numbersign" width="500"/>
-      <char name="o" width="500"/>
-      <char name="oacute" width="500"/>
-      <char name="ocircumflex" width="500"/>
-      <char name="odieresis" width="500"/>
-      <char name="oe" width="722"/>
-      <char name="ogonek" width="333"/>
-      <char name="ograve" width="500"/>
-      <char name="one" width="500"/>
-      <char name="onehalf" width="750"/>
-      <char name="onequarter" width="750"/>
-      <char name="onesuperior" width="300"/>
-      <char name="ordfeminine" width="300"/>
-      <char name="ordmasculine" width="330"/>
-      <char name="oslash" width="500"/>
-      <char name="otilde" width="500"/>
-      <char name="p" width="556"/>
-      <char name="paragraph" width="540"/>
-      <char name="parenleft" width="333"/>
-      <char name="parenright" width="333"/>
-      <char name="percent" width="1000"/>
-      <char name="period" width="250"/>
-      <char name="periodcentered" width="250"/>
-      <char name="perthousand" width="1000"/>
-      <char name="plus" width="570"/>
-      <char name="plusminus" width="570"/>
-      <char name="q" width="556"/>
-      <char name="question" width="500"/>
-      <char name="questiondown" width="500"/>
-      <char name="quotedbl" width="555"/>
-      <char name="quotedblbase" width="500"/>
-      <char name="quotedblleft" width="500"/>
-      <char name="quotedblright" width="500"/>
-      <char name="quoteleft" width="333"/>
-      <char name="quoteright" width="333"/>
-      <char name="quotesinglbase" width="333"/>
-      <char name="quotesingle" width="278"/>
-      <char name="r" width="444"/>
-      <char name="registered" width="747"/>
-      <char name="ring" width="333"/>
-      <char name="s" width="389"/>
-      <char name="scaron" width="389"/>
-      <char name="section" width="500"/>
-      <char name="semicolon" width="333"/>
-      <char name="seven" width="500"/>
-      <char name="six" width="500"/>
-      <char name="slash" width="278"/>
-      <char name="space" width="250"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="250"/>
-      <char name="sterling" width="500"/>
-      <char name="t" width="333"/>
-      <char name="thorn" width="556"/>
-      <char name="three" width="500"/>
-      <char name="threequarters" width="750"/>
-      <char name="threesuperior" width="300"/>
-      <char name="tilde" width="333"/>
-      <char name="trademark" width="1000"/>
-      <char name="two" width="500"/>
-      <char name="twosuperior" width="300"/>
-      <char name="u" width="556"/>
-      <char name="uacute" width="556"/>
-      <char name="ucircumflex" width="556"/>
-      <char name="udieresis" width="556"/>
-      <char name="ugrave" width="556"/>
-      <char name="underscore" width="500"/>
-      <char name="v" width="500"/>
-      <char name="w" width="722"/>
-      <char name="x" width="500"/>
-      <char name="y" width="500"/>
-      <char name="yacute" width="500"/>
-      <char name="ydieresis" width="500"/>
-      <char name="yen" width="500"/>
-      <char name="z" width="444"/>
-      <char name="zcaron" width="444"/>
-      <char name="zero" width="500"/>
-   </widths>
-  <kerning kpx1="79">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-50" kpx2="87"/>
-    <pair kern="-50" kpx2="89"/>
-    <pair kern="-40" kpx2="84"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="-50" kpx2="86"/>
-    <pair kern="-40" kpx2="88"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="107">
-    <pair kern="-15" kpx2="111"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="-10" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="112">
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="80">
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="-10" kpx2="97"/>
-    <pair kern="-74" kpx2="65"/>
-    <pair kern="-110" kpx2="46"/>
-    <pair kern="-20" kpx2="101"/>
-    <pair kern="-92" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="86">
-    <pair kern="-100" kpx2="111"/>
-    <pair kern="-45" kpx2="79"/>
-    <pair kern="-92" kpx2="58"/>
-    <pair kern="-30" kpx2="71"/>
-    <pair kern="-129" kpx2="44"/>
-    <pair kern="-92" kpx2="59"/>
-    <pair kern="-74" kpx2="45"/>
-    <pair kern="-37" kpx2="105"/>
-    <pair kern="-135" kpx2="65"/>
-    <pair kern="-92" kpx2="97"/>
-    <pair kern="-92" kpx2="117"/>
-    <pair kern="-145" kpx2="46"/>
-    <pair kern="-100" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="118">
-    <pair kern="-10" kpx2="111"/>
-    <pair kern="-10" kpx2="97"/>
-    <pair kern="-70" kpx2="46"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-55" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="32">
-    <pair kern="-55" kpx2="65"/>
-    <pair kern="-30" kpx2="87"/>
-    <pair kern="0" kpx2="147"/>
-    <pair kern="-55" kpx2="89"/>
-    <pair kern="-30" kpx2="84"/>
-    <pair kern="0" kpx2="145"/>
-    <pair kern="-45" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="97">
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="116"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="0" kpx2="98"/>
-    <pair kern="-25" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="70">
-    <pair kern="-25" kpx2="111"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="0" kpx2="114"/>
-    <pair kern="-25" kpx2="97"/>
-    <pair kern="-90" kpx2="65"/>
-    <pair kern="-110" kpx2="46"/>
-    <pair kern="-25" kpx2="101"/>
-    <pair kern="-92" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="85">
-    <pair kern="-60" kpx2="65"/>
-    <pair kern="-50" kpx2="46"/>
-    <pair kern="-50" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="100">
-    <pair kern="0" kpx2="100"/>
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="83">
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="122">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="68">
-    <pair kern="-35" kpx2="65"/>
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-40" kpx2="89"/>
-    <pair kern="-20" kpx2="46"/>
-    <pair kern="-40" kpx2="86"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="146">
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-20" kpx2="100"/>
-    <pair kern="-74" kpx2="32"/>
-    <pair kern="-63" kpx2="146"/>
-    <pair kern="-20" kpx2="114"/>
-    <pair kern="0" kpx2="116"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="-37" kpx2="115"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="58">
-    <pair kern="0" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="119">
-    <pair kern="-10" kpx2="111"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-70" kpx2="46"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-55" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="75">
-    <pair kern="-25" kpx2="111"/>
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-15" kpx2="117"/>
-    <pair kern="-45" kpx2="121"/>
-    <pair kern="-25" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="82">
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-35" kpx2="87"/>
-    <pair kern="-30" kpx2="85"/>
-    <pair kern="-35" kpx2="89"/>
-    <pair kern="-40" kpx2="84"/>
-    <pair kern="-55" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="145">
-    <pair kern="-10" kpx2="65"/>
-    <pair kern="-63" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="103">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="0" kpx2="114"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-15" kpx2="46"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="66">
-    <pair kern="-30" kpx2="65"/>
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="98">
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="-10" kpx2="98"/>
-    <pair kern="-15" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="81">
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="-20" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="44">
-    <pair kern="-45" kpx2="148"/>
-    <pair kern="0" kpx2="32"/>
-    <pair kern="-55" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="102">
-    <pair kern="50" kpx2="148"/>
-    <pair kern="-25" kpx2="111"/>
-    <pair kern="-25" kpx2="105"/>
-    <pair kern="55" kpx2="146"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="0" kpx2="102"/>
-    <pair kern="-15" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-15" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="84">
-    <pair kern="-92" kpx2="111"/>
-    <pair kern="-18" kpx2="79"/>
-    <pair kern="-74" kpx2="119"/>
-    <pair kern="-74" kpx2="58"/>
-    <pair kern="-74" kpx2="114"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-74" kpx2="44"/>
-    <pair kern="-74" kpx2="59"/>
-    <pair kern="-92" kpx2="45"/>
-    <pair kern="-18" kpx2="105"/>
-    <pair kern="-90" kpx2="65"/>
-    <pair kern="-92" kpx2="97"/>
-    <pair kern="-92" kpx2="117"/>
-    <pair kern="-74" kpx2="121"/>
-    <pair kern="-90" kpx2="46"/>
-    <pair kern="-92" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="121">
-    <pair kern="-25" kpx2="111"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="-70" kpx2="46"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-55" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="120">
-    <pair kern="0" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="101">
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="0" kpx2="98"/>
-    <pair kern="0" kpx2="120"/>
-    <pair kern="-15" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="99">
-    <pair kern="0" kpx2="107"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="87">
-    <pair kern="-75" kpx2="111"/>
-    <pair kern="-10" kpx2="79"/>
-    <pair kern="-55" kpx2="58"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-92" kpx2="44"/>
-    <pair kern="-55" kpx2="59"/>
-    <pair kern="-37" kpx2="45"/>
-    <pair kern="-18" kpx2="105"/>
-    <pair kern="-120" kpx2="65"/>
-    <pair kern="-65" kpx2="97"/>
-    <pair kern="-50" kpx2="117"/>
-    <pair kern="-60" kpx2="121"/>
-    <pair kern="-92" kpx2="46"/>
-    <pair kern="-65" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="104">
-    <pair kern="-15" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="71">
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="105">
-    <pair kern="-10" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="65">
-    <pair kern="-45" kpx2="79"/>
-    <pair kern="-74" kpx2="146"/>
-    <pair kern="-90" kpx2="119"/>
-    <pair kern="-130" kpx2="87"/>
-    <pair kern="-55" kpx2="67"/>
-    <pair kern="-25" kpx2="112"/>
-    <pair kern="-45" kpx2="81"/>
-    <pair kern="-55" kpx2="71"/>
-    <pair kern="-145" kpx2="86"/>
-    <pair kern="-100" kpx2="118"/>
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-50" kpx2="85"/>
-    <pair kern="-50" kpx2="117"/>
-    <pair kern="-100" kpx2="89"/>
-    <pair kern="-74" kpx2="121"/>
-    <pair kern="-95" kpx2="84"/>
-  </kerning>
-  <kerning kpx1="147">
-    <pair kern="-10" kpx2="65"/>
-    <pair kern="0" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="78">
-    <pair kern="-20" kpx2="65"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="115">
-    <pair kern="0" kpx2="119"/>
-  </kerning>
-  <kerning kpx1="111">
-    <pair kern="-10" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="0" kpx2="120"/>
-    <pair kern="-10" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="114">
-    <pair kern="-18" kpx2="111"/>
-    <pair kern="0" kpx2="100"/>
-    <pair kern="0" kpx2="107"/>
-    <pair kern="0" kpx2="114"/>
-    <pair kern="-18" kpx2="99"/>
-    <pair kern="-10" kpx2="112"/>
-    <pair kern="-10" kpx2="103"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="-18" kpx2="113"/>
-    <pair kern="-10" kpx2="118"/>
-    <pair kern="-92" kpx2="44"/>
-    <pair kern="-37" kpx2="45"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="0" kpx2="109"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="116"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-100" kpx2="46"/>
-    <pair kern="-15" kpx2="110"/>
-    <pair kern="0" kpx2="115"/>
-    <pair kern="-18" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="108">
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="76">
-    <pair kern="-20" kpx2="148"/>
-    <pair kern="-110" kpx2="146"/>
-    <pair kern="-92" kpx2="87"/>
-    <pair kern="-92" kpx2="89"/>
-    <pair kern="-55" kpx2="121"/>
-    <pair kern="-92" kpx2="84"/>
-    <pair kern="-92" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="148">
-    <pair kern="0" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="109">
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="89">
-    <pair kern="-111" kpx2="111"/>
-    <pair kern="-92" kpx2="45"/>
-    <pair kern="-37" kpx2="105"/>
-    <pair kern="-35" kpx2="79"/>
-    <pair kern="-92" kpx2="58"/>
-    <pair kern="-85" kpx2="97"/>
-    <pair kern="-110" kpx2="65"/>
-    <pair kern="-92" kpx2="117"/>
-    <pair kern="-92" kpx2="46"/>
-    <pair kern="-111" kpx2="101"/>
-    <pair kern="-92" kpx2="59"/>
-    <pair kern="-92" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="74">
-    <pair kern="-15" kpx2="111"/>
-    <pair kern="-15" kpx2="97"/>
-    <pair kern="-30" kpx2="65"/>
-    <pair kern="-15" kpx2="117"/>
-    <pair kern="-20" kpx2="46"/>
-    <pair kern="-15" kpx2="101"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="46">
-    <pair kern="-55" kpx2="148"/>
-    <pair kern="-55" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="110">
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-40" kpx2="118"/>
-  </kerning>
-</font-metrics>
diff --git a/src/codegen/TimesBoldItalic.xml b/src/codegen/TimesBoldItalic.xml
deleted file mode 100644 (file)
index 540e891..0000000
+++ /dev/null
@@ -1,642 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Times-BoldItalic</font-name>
-   <class-name>TimesBoldItalic</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>669</cap-height>
-   <x-height>462</x-height>
-   <ascender>699</ascender>
-   <descender>-205</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="667"/>
-      <char name="AE" width="944"/>
-      <char name="Aacute" width="667"/>
-      <char name="Acircumflex" width="667"/>
-      <char name="Adieresis" width="667"/>
-      <char name="Agrave" width="667"/>
-      <char name="Aring" width="667"/>
-      <char name="Atilde" width="667"/>
-      <char name="B" width="667"/>
-      <char name="C" width="667"/>
-      <char name="Ccedilla" width="667"/>
-      <char name="D" width="722"/>
-      <char name="E" width="667"/>
-      <char name="Eacute" width="667"/>
-      <char name="Ecircumflex" width="667"/>
-      <char name="Edieresis" width="667"/>
-      <char name="Egrave" width="667"/>
-      <char name="Eth" width="722"/>
-      <char name="Euro" width="500"/>
-      <char name="F" width="667"/>
-      <char name="G" width="722"/>
-      <char name="H" width="778"/>
-      <char name="I" width="389"/>
-      <char name="Iacute" width="389"/>
-      <char name="Icircumflex" width="389"/>
-      <char name="Idieresis" width="389"/>
-      <char name="Igrave" width="389"/>
-      <char name="J" width="500"/>
-      <char name="K" width="667"/>
-      <char name="L" width="611"/>
-      <char name="Lslash" width="611"/>
-      <char name="M" width="889"/>
-      <char name="N" width="722"/>
-      <char name="Ntilde" width="722"/>
-      <char name="O" width="722"/>
-      <char name="OE" width="944"/>
-      <char name="Oacute" width="722"/>
-      <char name="Ocircumflex" width="722"/>
-      <char name="Odieresis" width="722"/>
-      <char name="Ograve" width="722"/>
-      <char name="Oslash" width="722"/>
-      <char name="Otilde" width="722"/>
-      <char name="P" width="611"/>
-      <char name="Q" width="722"/>
-      <char name="R" width="667"/>
-      <char name="S" width="556"/>
-      <char name="Scaron" width="556"/>
-      <char name="T" width="611"/>
-      <char name="Thorn" width="611"/>
-      <char name="U" width="722"/>
-      <char name="Uacute" width="722"/>
-      <char name="Ucircumflex" width="722"/>
-      <char name="Udieresis" width="722"/>
-      <char name="Ugrave" width="722"/>
-      <char name="V" width="667"/>
-      <char name="W" width="889"/>
-      <char name="X" width="667"/>
-      <char name="Y" width="611"/>
-      <char name="Yacute" width="611"/>
-      <char name="Ydieresis" width="611"/>
-      <char name="Z" width="611"/>
-      <char name="Zcaron" width="611"/>
-      <char name="a" width="500"/>
-      <char name="aacute" width="500"/>
-      <char name="acircumflex" width="500"/>
-      <char name="acute" width="333"/>
-      <char name="adieresis" width="500"/>
-      <char name="ae" width="722"/>
-      <char name="agrave" width="500"/>
-      <char name="ampersand" width="778"/>
-      <char name="aring" width="500"/>
-      <char name="asciicircum" width="570"/>
-      <char name="asciitilde" width="570"/>
-      <char name="asterisk" width="500"/>
-      <char name="at" width="832"/>
-      <char name="atilde" width="500"/>
-      <char name="b" width="500"/>
-      <char name="backslash" width="278"/>
-      <char name="bar" width="220"/>
-      <char name="braceleft" width="348"/>
-      <char name="braceright" width="348"/>
-      <char name="bracketleft" width="333"/>
-      <char name="bracketright" width="333"/>
-      <char name="breve" width="333"/>
-      <char name="brokenbar" width="220"/>
-      <char name="bullet" width="350"/>
-      <char name="c" width="444"/>
-      <char name="caron" width="333"/>
-      <char name="ccedilla" width="444"/>
-      <char name="cedilla" width="333"/>
-      <char name="cent" width="500"/>
-      <char name="circumflex" width="333"/>
-      <char name="colon" width="333"/>
-      <char name="comma" width="250"/>
-      <char name="copyright" width="747"/>
-      <char name="currency" width="500"/>
-      <char name="d" width="500"/>
-      <char name="dagger" width="500"/>
-      <char name="daggerdbl" width="500"/>
-      <char name="degree" width="400"/>
-      <char name="dieresis" width="333"/>
-      <char name="divide" width="570"/>
-      <char name="dollar" width="500"/>
-      <char name="dotaccent" width="333"/>
-      <char name="dotlessi" width="278"/>
-      <char name="e" width="444"/>
-      <char name="eacute" width="444"/>
-      <char name="ecircumflex" width="444"/>
-      <char name="edieresis" width="444"/>
-      <char name="egrave" width="444"/>
-      <char name="eight" width="500"/>
-      <char name="ellipsis" width="1000"/>
-      <char name="emdash" width="1000"/>
-      <char name="endash" width="500"/>
-      <char name="equal" width="570"/>
-      <char name="eth" width="500"/>
-      <char name="exclam" width="389"/>
-      <char name="exclamdown" width="389"/>
-      <char name="f" width="333"/>
-      <char name="fi" width="556"/>
-      <char name="five" width="500"/>
-      <char name="fl" width="556"/>
-      <char name="florin" width="500"/>
-      <char name="four" width="500"/>
-      <char name="fraction" width="167"/>
-      <char name="g" width="500"/>
-      <char name="germandbls" width="500"/>
-      <char name="grave" width="333"/>
-      <char name="greater" width="570"/>
-      <char name="guillemotleft" width="500"/>
-      <char name="guillemotright" width="500"/>
-      <char name="guilsinglleft" width="333"/>
-      <char name="guilsinglright" width="333"/>
-      <char name="h" width="556"/>
-      <char name="hungarumlaut" width="333"/>
-      <char name="hyphen" width="333"/>
-      <char name="i" width="278"/>
-      <char name="iacute" width="278"/>
-      <char name="icircumflex" width="278"/>
-      <char name="idieresis" width="278"/>
-      <char name="igrave" width="278"/>
-      <char name="j" width="278"/>
-      <char name="k" width="500"/>
-      <char name="l" width="278"/>
-      <char name="less" width="570"/>
-      <char name="logicalnot" width="606"/>
-      <char name="lslash" width="278"/>
-      <char name="m" width="778"/>
-      <char name="macron" width="333"/>
-      <char name="minus" width="330"/>
-      <char name="mu" width="576"/>
-      <char name="multiply" width="570"/>
-      <char name="n" width="556"/>
-      <char name="nine" width="500"/>
-      <char name="ntilde" width="556"/>
-      <char name="numbersign" width="500"/>
-      <char name="o" width="500"/>
-      <char name="oacute" width="500"/>
-      <char name="ocircumflex" width="500"/>
-      <char name="odieresis" width="500"/>
-      <char name="oe" width="722"/>
-      <char name="ogonek" width="333"/>
-      <char name="ograve" width="500"/>
-      <char name="one" width="500"/>
-      <char name="onehalf" width="750"/>
-      <char name="onequarter" width="750"/>
-      <char name="onesuperior" width="300"/>
-      <char name="ordfeminine" width="266"/>
-      <char name="ordmasculine" width="300"/>
-      <char name="oslash" width="500"/>
-      <char name="otilde" width="500"/>
-      <char name="p" width="500"/>
-      <char name="paragraph" width="500"/>
-      <char name="parenleft" width="333"/>
-      <char name="parenright" width="333"/>
-      <char name="percent" width="833"/>
-      <char name="period" width="250"/>
-      <char name="periodcentered" width="250"/>
-      <char name="perthousand" width="1000"/>
-      <char name="plus" width="570"/>
-      <char name="plusminus" width="570"/>
-      <char name="q" width="500"/>
-      <char name="question" width="500"/>
-      <char name="questiondown" width="500"/>
-      <char name="quotedbl" width="555"/>
-      <char name="quotedblbase" width="500"/>
-      <char name="quotedblleft" width="500"/>
-      <char name="quotedblright" width="500"/>
-      <char name="quoteleft" width="333"/>
-      <char name="quoteright" width="333"/>
-      <char name="quotesinglbase" width="333"/>
-      <char name="quotesingle" width="278"/>
-      <char name="r" width="389"/>
-      <char name="registered" width="747"/>
-      <char name="ring" width="333"/>
-      <char name="s" width="389"/>
-      <char name="scaron" width="389"/>
-      <char name="section" width="500"/>
-      <char name="semicolon" width="333"/>
-      <char name="seven" width="500"/>
-      <char name="six" width="500"/>
-      <char name="slash" width="278"/>
-      <char name="space" width="250"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="250"/>
-      <char name="sterling" width="500"/>
-      <char name="t" width="278"/>
-      <char name="thorn" width="500"/>
-      <char name="three" width="500"/>
-      <char name="threequarters" width="750"/>
-      <char name="threesuperior" width="300"/>
-      <char name="tilde" width="333"/>
-      <char name="trademark" width="1000"/>
-      <char name="two" width="500"/>
-      <char name="twosuperior" width="300"/>
-      <char name="u" width="556"/>
-      <char name="uacute" width="556"/>
-      <char name="ucircumflex" width="556"/>
-      <char name="udieresis" width="556"/>
-      <char name="ugrave" width="556"/>
-      <char name="underscore" width="500"/>
-      <char name="v" width="444"/>
-      <char name="w" width="667"/>
-      <char name="x" width="500"/>
-      <char name="y" width="444"/>
-      <char name="yacute" width="444"/>
-      <char name="ydieresis" width="444"/>
-      <char name="yen" width="500"/>
-      <char name="z" width="389"/>
-      <char name="zcaron" width="389"/>
-      <char name="zero" width="500"/>
-   </widths>
-  <kerning kpx1="79">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-50" kpx2="87"/>
-    <pair kern="-50" kpx2="89"/>
-    <pair kern="-40" kpx2="84"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="-50" kpx2="86"/>
-    <pair kern="-40" kpx2="88"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="107">
-    <pair kern="-10" kpx2="111"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-30" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="112">
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="80">
-    <pair kern="-55" kpx2="111"/>
-    <pair kern="-40" kpx2="97"/>
-    <pair kern="-85" kpx2="65"/>
-    <pair kern="-129" kpx2="46"/>
-    <pair kern="-50" kpx2="101"/>
-    <pair kern="-129" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="86">
-    <pair kern="-111" kpx2="111"/>
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-74" kpx2="58"/>
-    <pair kern="-10" kpx2="71"/>
-    <pair kern="-129" kpx2="44"/>
-    <pair kern="-74" kpx2="59"/>
-    <pair kern="-70" kpx2="45"/>
-    <pair kern="-55" kpx2="105"/>
-    <pair kern="-85" kpx2="65"/>
-    <pair kern="-111" kpx2="97"/>
-    <pair kern="-55" kpx2="117"/>
-    <pair kern="-129" kpx2="46"/>
-    <pair kern="-111" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="118">
-    <pair kern="-15" kpx2="111"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="-37" kpx2="46"/>
-    <pair kern="-15" kpx2="101"/>
-    <pair kern="-37" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="32">
-    <pair kern="-37" kpx2="65"/>
-    <pair kern="-70" kpx2="87"/>
-    <pair kern="0" kpx2="147"/>
-    <pair kern="-70" kpx2="89"/>
-    <pair kern="0" kpx2="84"/>
-    <pair kern="0" kpx2="145"/>
-    <pair kern="-70" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="97">
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="116"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="0" kpx2="98"/>
-    <pair kern="0" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="70">
-    <pair kern="-70" kpx2="111"/>
-    <pair kern="-40" kpx2="105"/>
-    <pair kern="-50" kpx2="114"/>
-    <pair kern="-95" kpx2="97"/>
-    <pair kern="-100" kpx2="65"/>
-    <pair kern="-129" kpx2="46"/>
-    <pair kern="-100" kpx2="101"/>
-    <pair kern="-129" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="85">
-    <pair kern="-45" kpx2="65"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="100">
-    <pair kern="0" kpx2="100"/>
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="83">
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="122">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="68">
-    <pair kern="-25" kpx2="65"/>
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-50" kpx2="89"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="-50" kpx2="86"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="146">
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-15" kpx2="100"/>
-    <pair kern="-74" kpx2="32"/>
-    <pair kern="-74" kpx2="146"/>
-    <pair kern="-15" kpx2="114"/>
-    <pair kern="-37" kpx2="116"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="-74" kpx2="115"/>
-    <pair kern="-15" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="58">
-    <pair kern="0" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="119">
-    <pair kern="-15" kpx2="111"/>
-    <pair kern="-10" kpx2="97"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-37" kpx2="46"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-37" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="75">
-    <pair kern="-25" kpx2="111"/>
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-20" kpx2="121"/>
-    <pair kern="-25" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="82">
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-18" kpx2="87"/>
-    <pair kern="-40" kpx2="85"/>
-    <pair kern="-18" kpx2="89"/>
-    <pair kern="-30" kpx2="84"/>
-    <pair kern="-18" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="145">
-    <pair kern="0" kpx2="65"/>
-    <pair kern="-74" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="103">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="0" kpx2="114"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="66">
-    <pair kern="-25" kpx2="65"/>
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="98">
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="-10" kpx2="98"/>
-    <pair kern="0" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="81">
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="44">
-    <pair kern="-95" kpx2="148"/>
-    <pair kern="0" kpx2="32"/>
-    <pair kern="-95" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="102">
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-10" kpx2="111"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="55" kpx2="146"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="-18" kpx2="102"/>
-    <pair kern="-10" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-10" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="84">
-    <pair kern="-95" kpx2="111"/>
-    <pair kern="-18" kpx2="79"/>
-    <pair kern="-37" kpx2="119"/>
-    <pair kern="-74" kpx2="58"/>
-    <pair kern="-37" kpx2="114"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-92" kpx2="44"/>
-    <pair kern="-74" kpx2="59"/>
-    <pair kern="-92" kpx2="45"/>
-    <pair kern="-37" kpx2="105"/>
-    <pair kern="-55" kpx2="65"/>
-    <pair kern="-92" kpx2="97"/>
-    <pair kern="-37" kpx2="117"/>
-    <pair kern="-37" kpx2="121"/>
-    <pair kern="-92" kpx2="46"/>
-    <pair kern="-92" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="121">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="-37" kpx2="46"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-37" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="120">
-    <pair kern="-10" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="101">
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="-10" kpx2="98"/>
-    <pair kern="0" kpx2="120"/>
-    <pair kern="0" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="99">
-    <pair kern="-10" kpx2="107"/>
-    <pair kern="-10" kpx2="104"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="87">
-    <pair kern="-80" kpx2="111"/>
-    <pair kern="-15" kpx2="79"/>
-    <pair kern="-55" kpx2="58"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-74" kpx2="44"/>
-    <pair kern="-55" kpx2="59"/>
-    <pair kern="-50" kpx2="45"/>
-    <pair kern="-37" kpx2="105"/>
-    <pair kern="-74" kpx2="65"/>
-    <pair kern="-85" kpx2="97"/>
-    <pair kern="-55" kpx2="117"/>
-    <pair kern="-55" kpx2="121"/>
-    <pair kern="-74" kpx2="46"/>
-    <pair kern="-90" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="104">
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="71">
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="105">
-    <pair kern="0" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="65">
-    <pair kern="-50" kpx2="79"/>
-    <pair kern="-74" kpx2="146"/>
-    <pair kern="-74" kpx2="119"/>
-    <pair kern="-100" kpx2="87"/>
-    <pair kern="-65" kpx2="67"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="-55" kpx2="81"/>
-    <pair kern="-60" kpx2="71"/>
-    <pair kern="-95" kpx2="86"/>
-    <pair kern="-74" kpx2="118"/>
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-50" kpx2="85"/>
-    <pair kern="-30" kpx2="117"/>
-    <pair kern="-70" kpx2="89"/>
-    <pair kern="-74" kpx2="121"/>
-    <pair kern="-55" kpx2="84"/>
-  </kerning>
-  <kerning kpx1="147">
-    <pair kern="0" kpx2="65"/>
-    <pair kern="0" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="78">
-    <pair kern="-30" kpx2="65"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="115">
-    <pair kern="0" kpx2="119"/>
-  </kerning>
-  <kerning kpx1="111">
-    <pair kern="-25" kpx2="119"/>
-    <pair kern="-10" kpx2="121"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="-10" kpx2="120"/>
-    <pair kern="-15" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="114">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="100"/>
-    <pair kern="0" kpx2="107"/>
-    <pair kern="0" kpx2="114"/>
-    <pair kern="0" kpx2="99"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="113"/>
-    <pair kern="0" kpx2="118"/>
-    <pair kern="-65" kpx2="44"/>
-    <pair kern="0" kpx2="45"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="0" kpx2="109"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="116"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-65" kpx2="46"/>
-    <pair kern="0" kpx2="110"/>
-    <pair kern="0" kpx2="115"/>
-    <pair kern="0" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="108">
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="76">
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-55" kpx2="146"/>
-    <pair kern="-37" kpx2="87"/>
-    <pair kern="-37" kpx2="89"/>
-    <pair kern="-37" kpx2="121"/>
-    <pair kern="-18" kpx2="84"/>
-    <pair kern="-37" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="148">
-    <pair kern="0" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="109">
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="89">
-    <pair kern="-111" kpx2="111"/>
-    <pair kern="-92" kpx2="45"/>
-    <pair kern="-55" kpx2="105"/>
-    <pair kern="-25" kpx2="79"/>
-    <pair kern="-92" kpx2="58"/>
-    <pair kern="-92" kpx2="97"/>
-    <pair kern="-74" kpx2="65"/>
-    <pair kern="-92" kpx2="117"/>
-    <pair kern="-74" kpx2="46"/>
-    <pair kern="-111" kpx2="101"/>
-    <pair kern="-92" kpx2="59"/>
-    <pair kern="-92" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="74">
-    <pair kern="-40" kpx2="111"/>
-    <pair kern="-40" kpx2="97"/>
-    <pair kern="-25" kpx2="65"/>
-    <pair kern="-40" kpx2="117"/>
-    <pair kern="-10" kpx2="46"/>
-    <pair kern="-40" kpx2="101"/>
-    <pair kern="-10" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="46">
-    <pair kern="-95" kpx2="148"/>
-    <pair kern="-95" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="110">
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-40" kpx2="118"/>
-  </kerning>
-</font-metrics>
diff --git a/src/codegen/TimesItalic.xml b/src/codegen/TimesItalic.xml
deleted file mode 100644 (file)
index 4868aed..0000000
+++ /dev/null
@@ -1,642 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Times-Italic</font-name>
-   <class-name>TimesItalic</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>653</cap-height>
-   <x-height>441</x-height>
-   <ascender>683</ascender>
-   <descender>-205</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="611"/>
-      <char name="AE" width="889"/>
-      <char name="Aacute" width="611"/>
-      <char name="Acircumflex" width="611"/>
-      <char name="Adieresis" width="611"/>
-      <char name="Agrave" width="611"/>
-      <char name="Aring" width="611"/>
-      <char name="Atilde" width="611"/>
-      <char name="B" width="611"/>
-      <char name="C" width="667"/>
-      <char name="Ccedilla" width="667"/>
-      <char name="D" width="722"/>
-      <char name="E" width="611"/>
-      <char name="Eacute" width="611"/>
-      <char name="Ecircumflex" width="611"/>
-      <char name="Edieresis" width="611"/>
-      <char name="Egrave" width="611"/>
-      <char name="Eth" width="722"/>
-      <char name="Euro" width="500"/>
-      <char name="F" width="611"/>
-      <char name="G" width="722"/>
-      <char name="H" width="722"/>
-      <char name="I" width="333"/>
-      <char name="Iacute" width="333"/>
-      <char name="Icircumflex" width="333"/>
-      <char name="Idieresis" width="333"/>
-      <char name="Igrave" width="333"/>
-      <char name="J" width="444"/>
-      <char name="K" width="667"/>
-      <char name="L" width="556"/>
-      <char name="Lslash" width="556"/>
-      <char name="M" width="833"/>
-      <char name="N" width="667"/>
-      <char name="Ntilde" width="667"/>
-      <char name="O" width="722"/>
-      <char name="OE" width="944"/>
-      <char name="Oacute" width="722"/>
-      <char name="Ocircumflex" width="722"/>
-      <char name="Odieresis" width="722"/>
-      <char name="Ograve" width="722"/>
-      <char name="Oslash" width="722"/>
-      <char name="Otilde" width="722"/>
-      <char name="P" width="611"/>
-      <char name="Q" width="722"/>
-      <char name="R" width="611"/>
-      <char name="S" width="500"/>
-      <char name="Scaron" width="500"/>
-      <char name="T" width="556"/>
-      <char name="Thorn" width="611"/>
-      <char name="U" width="722"/>
-      <char name="Uacute" width="722"/>
-      <char name="Ucircumflex" width="722"/>
-      <char name="Udieresis" width="722"/>
-      <char name="Ugrave" width="722"/>
-      <char name="V" width="611"/>
-      <char name="W" width="833"/>
-      <char name="X" width="611"/>
-      <char name="Y" width="556"/>
-      <char name="Yacute" width="556"/>
-      <char name="Ydieresis" width="556"/>
-      <char name="Z" width="556"/>
-      <char name="Zcaron" width="556"/>
-      <char name="a" width="500"/>
-      <char name="aacute" width="500"/>
-      <char name="acircumflex" width="500"/>
-      <char name="acute" width="333"/>
-      <char name="adieresis" width="500"/>
-      <char name="ae" width="667"/>
-      <char name="agrave" width="500"/>
-      <char name="ampersand" width="778"/>
-      <char name="aring" width="500"/>
-      <char name="asciicircum" width="422"/>
-      <char name="asciitilde" width="541"/>
-      <char name="asterisk" width="500"/>
-      <char name="at" width="920"/>
-      <char name="atilde" width="500"/>
-      <char name="b" width="500"/>
-      <char name="backslash" width="278"/>
-      <char name="bar" width="275"/>
-      <char name="braceleft" width="400"/>
-      <char name="braceright" width="400"/>
-      <char name="bracketleft" width="389"/>
-      <char name="bracketright" width="389"/>
-      <char name="breve" width="333"/>
-      <char name="brokenbar" width="275"/>
-      <char name="bullet" width="350"/>
-      <char name="c" width="444"/>
-      <char name="caron" width="333"/>
-      <char name="ccedilla" width="444"/>
-      <char name="cedilla" width="333"/>
-      <char name="cent" width="500"/>
-      <char name="circumflex" width="333"/>
-      <char name="colon" width="333"/>
-      <char name="comma" width="250"/>
-      <char name="copyright" width="760"/>
-      <char name="currency" width="500"/>
-      <char name="d" width="500"/>
-      <char name="dagger" width="500"/>
-      <char name="daggerdbl" width="500"/>
-      <char name="degree" width="400"/>
-      <char name="dieresis" width="333"/>
-      <char name="divide" width="675"/>
-      <char name="dollar" width="500"/>
-      <char name="dotaccent" width="333"/>
-      <char name="dotlessi" width="278"/>
-      <char name="e" width="444"/>
-      <char name="eacute" width="444"/>
-      <char name="ecircumflex" width="444"/>
-      <char name="edieresis" width="444"/>
-      <char name="egrave" width="444"/>
-      <char name="eight" width="500"/>
-      <char name="ellipsis" width="889"/>
-      <char name="emdash" width="889"/>
-      <char name="endash" width="500"/>
-      <char name="equal" width="675"/>
-      <char name="eth" width="500"/>
-      <char name="exclam" width="333"/>
-      <char name="exclamdown" width="389"/>
-      <char name="f" width="278"/>
-      <char name="fi" width="500"/>
-      <char name="five" width="500"/>
-      <char name="fl" width="500"/>
-      <char name="florin" width="500"/>
-      <char name="four" width="500"/>
-      <char name="fraction" width="167"/>
-      <char name="g" width="500"/>
-      <char name="germandbls" width="500"/>
-      <char name="grave" width="333"/>
-      <char name="greater" width="675"/>
-      <char name="guillemotleft" width="500"/>
-      <char name="guillemotright" width="500"/>
-      <char name="guilsinglleft" width="333"/>
-      <char name="guilsinglright" width="333"/>
-      <char name="h" width="500"/>
-      <char name="hungarumlaut" width="333"/>
-      <char name="hyphen" width="333"/>
-      <char name="i" width="278"/>
-      <char name="iacute" width="278"/>
-      <char name="icircumflex" width="278"/>
-      <char name="idieresis" width="278"/>
-      <char name="igrave" width="278"/>
-      <char name="j" width="278"/>
-      <char name="k" width="444"/>
-      <char name="l" width="278"/>
-      <char name="less" width="675"/>
-      <char name="logicalnot" width="675"/>
-      <char name="lslash" width="278"/>
-      <char name="m" width="722"/>
-      <char name="macron" width="333"/>
-      <char name="minus" width="675"/>
-      <char name="mu" width="500"/>
-      <char name="multiply" width="675"/>
-      <char name="n" width="500"/>
-      <char name="nine" width="500"/>
-      <char name="ntilde" width="500"/>
-      <char name="numbersign" width="500"/>
-      <char name="o" width="500"/>
-      <char name="oacute" width="500"/>
-      <char name="ocircumflex" width="500"/>
-      <char name="odieresis" width="500"/>
-      <char name="oe" width="667"/>
-      <char name="ogonek" width="333"/>
-      <char name="ograve" width="500"/>
-      <char name="one" width="500"/>
-      <char name="onehalf" width="750"/>
-      <char name="onequarter" width="750"/>
-      <char name="onesuperior" width="300"/>
-      <char name="ordfeminine" width="276"/>
-      <char name="ordmasculine" width="310"/>
-      <char name="oslash" width="500"/>
-      <char name="otilde" width="500"/>
-      <char name="p" width="500"/>
-      <char name="paragraph" width="523"/>
-      <char name="parenleft" width="333"/>
-      <char name="parenright" width="333"/>
-      <char name="percent" width="833"/>
-      <char name="period" width="250"/>
-      <char name="periodcentered" width="250"/>
-      <char name="perthousand" width="1000"/>
-      <char name="plus" width="675"/>
-      <char name="plusminus" width="675"/>
-      <char name="q" width="500"/>
-      <char name="question" width="500"/>
-      <char name="questiondown" width="500"/>
-      <char name="quotedbl" width="420"/>
-      <char name="quotedblbase" width="556"/>
-      <char name="quotedblleft" width="556"/>
-      <char name="quotedblright" width="556"/>
-      <char name="quoteleft" width="333"/>
-      <char name="quoteright" width="333"/>
-      <char name="quotesinglbase" width="333"/>
-      <char name="quotesingle" width="214"/>
-      <char name="r" width="389"/>
-      <char name="registered" width="760"/>
-      <char name="ring" width="333"/>
-      <char name="s" width="389"/>
-      <char name="scaron" width="389"/>
-      <char name="section" width="500"/>
-      <char name="semicolon" width="333"/>
-      <char name="seven" width="500"/>
-      <char name="six" width="500"/>
-      <char name="slash" width="278"/>
-      <char name="space" width="250"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="250"/>
-      <char name="sterling" width="500"/>
-      <char name="t" width="278"/>
-      <char name="thorn" width="500"/>
-      <char name="three" width="500"/>
-      <char name="threequarters" width="750"/>
-      <char name="threesuperior" width="300"/>
-      <char name="tilde" width="333"/>
-      <char name="trademark" width="980"/>
-      <char name="two" width="500"/>
-      <char name="twosuperior" width="300"/>
-      <char name="u" width="500"/>
-      <char name="uacute" width="500"/>
-      <char name="ucircumflex" width="500"/>
-      <char name="udieresis" width="500"/>
-      <char name="ugrave" width="500"/>
-      <char name="underscore" width="500"/>
-      <char name="v" width="444"/>
-      <char name="w" width="667"/>
-      <char name="x" width="444"/>
-      <char name="y" width="444"/>
-      <char name="yacute" width="444"/>
-      <char name="ydieresis" width="444"/>
-      <char name="yen" width="500"/>
-      <char name="z" width="389"/>
-      <char name="zcaron" width="389"/>
-      <char name="zero" width="500"/>
-   </widths>
-  <kerning kpx1="79">
-    <pair kern="-55" kpx2="65"/>
-    <pair kern="-50" kpx2="87"/>
-    <pair kern="-50" kpx2="89"/>
-    <pair kern="-40" kpx2="84"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="-50" kpx2="86"/>
-    <pair kern="-40" kpx2="88"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="107">
-    <pair kern="-10" kpx2="111"/>
-    <pair kern="-10" kpx2="121"/>
-    <pair kern="-10" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="112">
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="80">
-    <pair kern="-80" kpx2="111"/>
-    <pair kern="-80" kpx2="97"/>
-    <pair kern="-90" kpx2="65"/>
-    <pair kern="-135" kpx2="46"/>
-    <pair kern="-80" kpx2="101"/>
-    <pair kern="-135" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="86">
-    <pair kern="-111" kpx2="111"/>
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-65" kpx2="58"/>
-    <pair kern="0" kpx2="71"/>
-    <pair kern="-129" kpx2="44"/>
-    <pair kern="-74" kpx2="59"/>
-    <pair kern="-55" kpx2="45"/>
-    <pair kern="-74" kpx2="105"/>
-    <pair kern="-60" kpx2="65"/>
-    <pair kern="-111" kpx2="97"/>
-    <pair kern="-74" kpx2="117"/>
-    <pair kern="-129" kpx2="46"/>
-    <pair kern="-111" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="118">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="-74" kpx2="46"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-74" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="32">
-    <pair kern="-18" kpx2="65"/>
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="0" kpx2="147"/>
-    <pair kern="-75" kpx2="89"/>
-    <pair kern="-18" kpx2="84"/>
-    <pair kern="0" kpx2="145"/>
-    <pair kern="-35" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="97">
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="116"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="-10" kpx2="103"/>
-    <pair kern="0" kpx2="98"/>
-    <pair kern="0" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="70">
-    <pair kern="-105" kpx2="111"/>
-    <pair kern="-45" kpx2="105"/>
-    <pair kern="-55" kpx2="114"/>
-    <pair kern="-75" kpx2="97"/>
-    <pair kern="-115" kpx2="65"/>
-    <pair kern="-135" kpx2="46"/>
-    <pair kern="-75" kpx2="101"/>
-    <pair kern="-135" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="85">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-25" kpx2="46"/>
-    <pair kern="-25" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="100">
-    <pair kern="0" kpx2="100"/>
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="83">
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="122">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="68">
-    <pair kern="-35" kpx2="65"/>
-    <pair kern="-40" kpx2="87"/>
-    <pair kern="-40" kpx2="89"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="-40" kpx2="86"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="146">
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-25" kpx2="100"/>
-    <pair kern="-111" kpx2="32"/>
-    <pair kern="-111" kpx2="146"/>
-    <pair kern="-25" kpx2="114"/>
-    <pair kern="-30" kpx2="116"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="-40" kpx2="115"/>
-    <pair kern="-10" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="58">
-    <pair kern="0" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="119">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-74" kpx2="46"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-74" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="75">
-    <pair kern="-40" kpx2="111"/>
-    <pair kern="-50" kpx2="79"/>
-    <pair kern="-40" kpx2="117"/>
-    <pair kern="-40" kpx2="121"/>
-    <pair kern="-35" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="82">
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-18" kpx2="87"/>
-    <pair kern="-40" kpx2="85"/>
-    <pair kern="-18" kpx2="89"/>
-    <pair kern="0" kpx2="84"/>
-    <pair kern="-18" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="145">
-    <pair kern="0" kpx2="65"/>
-    <pair kern="-111" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="103">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="0" kpx2="114"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-15" kpx2="46"/>
-    <pair kern="-10" kpx2="103"/>
-    <pair kern="-10" kpx2="101"/>
-    <pair kern="-10" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="66">
-    <pair kern="-25" kpx2="65"/>
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="98">
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="98"/>
-    <pair kern="0" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="81">
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="44">
-    <pair kern="-140" kpx2="148"/>
-    <pair kern="0" kpx2="32"/>
-    <pair kern="-140" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="102">
-    <pair kern="0" kpx2="148"/>
-    <pair kern="0" kpx2="111"/>
-    <pair kern="-20" kpx2="105"/>
-    <pair kern="92" kpx2="146"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="-18" kpx2="102"/>
-    <pair kern="-15" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-10" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="84">
-    <pair kern="-92" kpx2="111"/>
-    <pair kern="-18" kpx2="79"/>
-    <pair kern="-74" kpx2="119"/>
-    <pair kern="-55" kpx2="58"/>
-    <pair kern="-55" kpx2="114"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-74" kpx2="44"/>
-    <pair kern="-65" kpx2="59"/>
-    <pair kern="-74" kpx2="45"/>
-    <pair kern="-55" kpx2="105"/>
-    <pair kern="-50" kpx2="65"/>
-    <pair kern="-92" kpx2="97"/>
-    <pair kern="-55" kpx2="117"/>
-    <pair kern="-74" kpx2="121"/>
-    <pair kern="-74" kpx2="46"/>
-    <pair kern="-92" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="121">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="-55" kpx2="46"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-55" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="120">
-    <pair kern="0" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="101">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="-15" kpx2="46"/>
-    <pair kern="-40" kpx2="103"/>
-    <pair kern="0" kpx2="98"/>
-    <pair kern="-20" kpx2="120"/>
-    <pair kern="-15" kpx2="118"/>
-    <pair kern="-10" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="99">
-    <pair kern="-20" kpx2="107"/>
-    <pair kern="-15" kpx2="104"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="87">
-    <pair kern="-92" kpx2="111"/>
-    <pair kern="-25" kpx2="79"/>
-    <pair kern="-65" kpx2="58"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-92" kpx2="44"/>
-    <pair kern="-65" kpx2="59"/>
-    <pair kern="-37" kpx2="45"/>
-    <pair kern="-55" kpx2="105"/>
-    <pair kern="-60" kpx2="65"/>
-    <pair kern="-92" kpx2="97"/>
-    <pair kern="-55" kpx2="117"/>
-    <pair kern="-70" kpx2="121"/>
-    <pair kern="-92" kpx2="46"/>
-    <pair kern="-92" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="104">
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="71">
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="105">
-    <pair kern="0" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="65">
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-37" kpx2="146"/>
-    <pair kern="-55" kpx2="119"/>
-    <pair kern="-95" kpx2="87"/>
-    <pair kern="-30" kpx2="67"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="-40" kpx2="81"/>
-    <pair kern="-35" kpx2="71"/>
-    <pair kern="-105" kpx2="86"/>
-    <pair kern="-55" kpx2="118"/>
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-50" kpx2="85"/>
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="-55" kpx2="89"/>
-    <pair kern="-55" kpx2="121"/>
-    <pair kern="-37" kpx2="84"/>
-  </kerning>
-  <kerning kpx1="147">
-    <pair kern="0" kpx2="65"/>
-    <pair kern="0" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="78">
-    <pair kern="-27" kpx2="65"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="115">
-    <pair kern="0" kpx2="119"/>
-  </kerning>
-  <kerning kpx1="111">
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-10" kpx2="103"/>
-    <pair kern="0" kpx2="120"/>
-    <pair kern="-10" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="114">
-    <pair kern="-45" kpx2="111"/>
-    <pair kern="-37" kpx2="100"/>
-    <pair kern="0" kpx2="107"/>
-    <pair kern="0" kpx2="114"/>
-    <pair kern="-37" kpx2="99"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="-37" kpx2="103"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="-37" kpx2="113"/>
-    <pair kern="0" kpx2="118"/>
-    <pair kern="-111" kpx2="44"/>
-    <pair kern="-20" kpx2="45"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="0" kpx2="109"/>
-    <pair kern="-15" kpx2="97"/>
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="116"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-111" kpx2="46"/>
-    <pair kern="0" kpx2="110"/>
-    <pair kern="-10" kpx2="115"/>
-    <pair kern="-37" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="108">
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="76">
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-37" kpx2="146"/>
-    <pair kern="-55" kpx2="87"/>
-    <pair kern="-20" kpx2="89"/>
-    <pair kern="-30" kpx2="121"/>
-    <pair kern="-20" kpx2="84"/>
-    <pair kern="-55" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="148">
-    <pair kern="0" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="109">
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="89">
-    <pair kern="-92" kpx2="111"/>
-    <pair kern="-74" kpx2="45"/>
-    <pair kern="-74" kpx2="105"/>
-    <pair kern="-15" kpx2="79"/>
-    <pair kern="-65" kpx2="58"/>
-    <pair kern="-92" kpx2="97"/>
-    <pair kern="-50" kpx2="65"/>
-    <pair kern="-92" kpx2="117"/>
-    <pair kern="-92" kpx2="46"/>
-    <pair kern="-92" kpx2="101"/>
-    <pair kern="-65" kpx2="59"/>
-    <pair kern="-92" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="74">
-    <pair kern="-25" kpx2="111"/>
-    <pair kern="-35" kpx2="97"/>
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-35" kpx2="117"/>
-    <pair kern="-25" kpx2="46"/>
-    <pair kern="-25" kpx2="101"/>
-    <pair kern="-25" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="46">
-    <pair kern="-140" kpx2="148"/>
-    <pair kern="-140" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="110">
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-40" kpx2="118"/>
-  </kerning>
-</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/TimesRoman.xml b/src/codegen/TimesRoman.xml
deleted file mode 100644 (file)
index 1f21290..0000000
+++ /dev/null
@@ -1,642 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
-<font-metrics>
-   <font-name>Times-Roman</font-name>
-   <class-name>TimesRoman</class-name>
-   <encoding>StandardEncoding</encoding>
-   <cap-height>662</cap-height>
-   <x-height>450</x-height>
-   <ascender>683</ascender>
-   <descender>-217</descender>
-   <first-char>32</first-char>
-   <last-char>255</last-char>
-   <widths>
-      <char name="A" width="722"/>
-      <char name="AE" width="889"/>
-      <char name="Aacute" width="722"/>
-      <char name="Acircumflex" width="722"/>
-      <char name="Adieresis" width="722"/>
-      <char name="Agrave" width="722"/>
-      <char name="Aring" width="722"/>
-      <char name="Atilde" width="722"/>
-      <char name="B" width="667"/>
-      <char name="C" width="667"/>
-      <char name="Ccedilla" width="667"/>
-      <char name="D" width="722"/>
-      <char name="E" width="611"/>
-      <char name="Eacute" width="611"/>
-      <char name="Ecircumflex" width="611"/>
-      <char name="Edieresis" width="611"/>
-      <char name="Egrave" width="611"/>
-      <char name="Eth" width="722"/>
-      <char name="Euro" width="500"/>
-      <char name="F" width="556"/>
-      <char name="G" width="722"/>
-      <char name="H" width="722"/>
-      <char name="I" width="333"/>
-      <char name="Iacute" width="333"/>
-      <char name="Icircumflex" width="333"/>
-      <char name="Idieresis" width="333"/>
-      <char name="Igrave" width="333"/>
-      <char name="J" width="389"/>
-      <char name="K" width="722"/>
-      <char name="L" width="611"/>
-      <char name="Lslash" width="611"/>
-      <char name="M" width="889"/>
-      <char name="N" width="722"/>
-      <char name="Ntilde" width="722"/>
-      <char name="O" width="722"/>
-      <char name="OE" width="889"/>
-      <char name="Oacute" width="722"/>
-      <char name="Ocircumflex" width="722"/>
-      <char name="Odieresis" width="722"/>
-      <char name="Ograve" width="722"/>
-      <char name="Oslash" width="722"/>
-      <char name="Otilde" width="722"/>
-      <char name="P" width="556"/>
-      <char name="Q" width="722"/>
-      <char name="R" width="667"/>
-      <char name="S" width="556"/>
-      <char name="Scaron" width="556"/>
-      <char name="T" width="611"/>
-      <char name="Thorn" width="556"/>
-      <char name="U" width="722"/>
-      <char name="Uacute" width="722"/>
-      <char name="Ucircumflex" width="722"/>
-      <char name="Udieresis" width="722"/>
-      <char name="Ugrave" width="722"/>
-      <char name="V" width="722"/>
-      <char name="W" width="944"/>
-      <char name="X" width="722"/>
-      <char name="Y" width="722"/>
-      <char name="Yacute" width="722"/>
-      <char name="Ydieresis" width="722"/>
-      <char name="Z" width="611"/>
-      <char name="Zcaron" width="611"/>
-      <char name="a" width="444"/>
-      <char name="aacute" width="444"/>
-      <char name="acircumflex" width="444"/>
-      <char name="acute" width="333"/>
-      <char name="adieresis" width="444"/>
-      <char name="ae" width="667"/>
-      <char name="agrave" width="444"/>
-      <char name="ampersand" width="778"/>
-      <char name="aring" width="444"/>
-      <char name="asciicircum" width="469"/>
-      <char name="asciitilde" width="541"/>
-      <char name="asterisk" width="500"/>
-      <char name="at" width="921"/>
-      <char name="atilde" width="444"/>
-      <char name="b" width="500"/>
-      <char name="backslash" width="278"/>
-      <char name="bar" width="200"/>
-      <char name="braceleft" width="480"/>
-      <char name="braceright" width="480"/>
-      <char name="bracketleft" width="333"/>
-      <char name="bracketright" width="333"/>
-      <char name="breve" width="333"/>
-      <char name="brokenbar" width="200"/>
-      <char name="bullet" width="350"/>
-      <char name="c" width="444"/>
-      <char name="caron" width="333"/>
-      <char name="ccedilla" width="444"/>
-      <char name="cedilla" width="333"/>
-      <char name="cent" width="500"/>
-      <char name="circumflex" width="333"/>
-      <char name="colon" width="278"/>
-      <char name="comma" width="250"/>
-      <char name="copyright" width="760"/>
-      <char name="currency" width="500"/>
-      <char name="d" width="500"/>
-      <char name="dagger" width="500"/>
-      <char name="daggerdbl" width="500"/>
-      <char name="degree" width="400"/>
-      <char name="dieresis" width="333"/>
-      <char name="divide" width="564"/>
-      <char name="dollar" width="500"/>
-      <char name="dotaccent" width="333"/>
-      <char name="dotlessi" width="278"/>
-      <char name="e" width="444"/>
-      <char name="eacute" width="444"/>
-      <char name="ecircumflex" width="444"/>
-      <char name="edieresis" width="444"/>
-      <char name="egrave" width="444"/>
-      <char name="eight" width="500"/>
-      <char name="ellipsis" width="1000"/>
-      <char name="emdash" width="1000"/>
-      <char name="endash" width="500"/>
-      <char name="equal" width="564"/>
-      <char name="eth" width="500"/>
-      <char name="exclam" width="333"/>
-      <char name="exclamdown" width="333"/>
-      <char name="f" width="333"/>
-      <char name="fi" width="556"/>
-      <char name="five" width="500"/>
-      <char name="fl" width="556"/>
-      <char name="florin" width="500"/>
-      <char name="four" width="500"/>
-      <char name="fraction" width="167"/>
-      <char name="g" width="500"/>
-      <char name="germandbls" width="500"/>
-      <char name="grave" width="333"/>
-      <char name="greater" width="564"/>
-      <char name="guillemotleft" width="500"/>
-      <char name="guillemotright" width="500"/>
-      <char name="guilsinglleft" width="333"/>
-      <char name="guilsinglright" width="333"/>
-      <char name="h" width="500"/>
-      <char name="hungarumlaut" width="333"/>
-      <char name="hyphen" width="333"/>
-      <char name="i" width="278"/>
-      <char name="iacute" width="278"/>
-      <char name="icircumflex" width="278"/>
-      <char name="idieresis" width="278"/>
-      <char name="igrave" width="278"/>
-      <char name="j" width="278"/>
-      <char name="k" width="500"/>
-      <char name="l" width="278"/>
-      <char name="less" width="564"/>
-      <char name="logicalnot" width="564"/>
-      <char name="lslash" width="278"/>
-      <char name="m" width="778"/>
-      <char name="macron" width="333"/>
-      <char name="minus" width="324"/>
-      <char name="mu" width="500"/>
-      <char name="multiply" width="564"/>
-      <char name="n" width="500"/>
-      <char name="nine" width="500"/>
-      <char name="ntilde" width="500"/>
-      <char name="numbersign" width="500"/>
-      <char name="o" width="500"/>
-      <char name="oacute" width="500"/>
-      <char name="ocircumflex" width="500"/>
-      <char name="odieresis" width="500"/>
-      <char name="oe" width="722"/>
-      <char name="ogonek" width="333"/>
-      <char name="ograve" width="500"/>
-      <char name="one" width="500"/>
-      <char name="onehalf" width="750"/>
-      <char name="onequarter" width="750"/>
-      <char name="onesuperior" width="300"/>
-      <char name="ordfeminine" width="276"/>
-      <char name="ordmasculine" width="310"/>
-      <char name="oslash" width="500"/>
-      <char name="otilde" width="500"/>
-      <char name="p" width="500"/>
-      <char name="paragraph" width="453"/>
-      <char name="parenleft" width="333"/>
-      <char name="parenright" width="333"/>
-      <char name="percent" width="833"/>
-      <char name="period" width="250"/>
-      <char name="periodcentered" width="250"/>
-      <char name="perthousand" width="1000"/>
-      <char name="plus" width="564"/>
-      <char name="plusminus" width="564"/>
-      <char name="q" width="500"/>
-      <char name="question" width="444"/>
-      <char name="questiondown" width="444"/>
-      <char name="quotedbl" width="408"/>
-      <char name="quotedblbase" width="444"/>
-      <char name="quotedblleft" width="444"/>
-      <char name="quotedblright" width="444"/>
-      <char name="quoteleft" width="333"/>
-      <char name="quoteright" width="333"/>
-      <char name="quotesinglbase" width="333"/>
-      <char name="quotesingle" width="180"/>
-      <char name="r" width="333"/>
-      <char name="registered" width="760"/>
-      <char name="ring" width="333"/>
-      <char name="s" width="389"/>
-      <char name="scaron" width="389"/>
-      <char name="section" width="500"/>
-      <char name="semicolon" width="278"/>
-      <char name="seven" width="500"/>
-      <char name="six" width="500"/>
-      <char name="slash" width="278"/>
-      <char name="space" width="250"/>
-      <!-- JKT: the following has been manually added -->
-      <char name="nbsp" width="250"/>
-      <char name="sterling" width="500"/>
-      <char name="t" width="278"/>
-      <char name="thorn" width="500"/>
-      <char name="three" width="500"/>
-      <char name="threequarters" width="750"/>
-      <char name="threesuperior" width="300"/>
-      <char name="tilde" width="333"/>
-      <char name="trademark" width="980"/>
-      <char name="two" width="500"/>
-      <char name="twosuperior" width="300"/>
-      <char name="u" width="500"/>
-      <char name="uacute" width="500"/>
-      <char name="ucircumflex" width="500"/>
-      <char name="udieresis" width="500"/>
-      <char name="ugrave" width="500"/>
-      <char name="underscore" width="500"/>
-      <char name="v" width="500"/>
-      <char name="w" width="722"/>
-      <char name="x" width="500"/>
-      <char name="y" width="500"/>
-      <char name="yacute" width="500"/>
-      <char name="ydieresis" width="500"/>
-      <char name="yen" width="500"/>
-      <char name="z" width="444"/>
-      <char name="zcaron" width="444"/>
-      <char name="zero" width="500"/>
-   </widths>
-  <kerning kpx1="79">
-    <pair kern="-35" kpx2="65"/>
-    <pair kern="-35" kpx2="87"/>
-    <pair kern="-50" kpx2="89"/>
-    <pair kern="-40" kpx2="84"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="-50" kpx2="86"/>
-    <pair kern="-40" kpx2="88"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="107">
-    <pair kern="-10" kpx2="111"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="-10" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="112">
-    <pair kern="-10" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="80">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="-15" kpx2="97"/>
-    <pair kern="-92" kpx2="65"/>
-    <pair kern="-111" kpx2="46"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-111" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="86">
-    <pair kern="-129" kpx2="111"/>
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-74" kpx2="58"/>
-    <pair kern="-15" kpx2="71"/>
-    <pair kern="-129" kpx2="44"/>
-    <pair kern="-74" kpx2="59"/>
-    <pair kern="-100" kpx2="45"/>
-    <pair kern="-60" kpx2="105"/>
-    <pair kern="-135" kpx2="65"/>
-    <pair kern="-111" kpx2="97"/>
-    <pair kern="-75" kpx2="117"/>
-    <pair kern="-129" kpx2="46"/>
-    <pair kern="-111" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="118">
-    <pair kern="-20" kpx2="111"/>
-    <pair kern="-25" kpx2="97"/>
-    <pair kern="-65" kpx2="46"/>
-    <pair kern="-15" kpx2="101"/>
-    <pair kern="-65" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="32">
-    <pair kern="-55" kpx2="65"/>
-    <pair kern="-30" kpx2="87"/>
-    <pair kern="0" kpx2="147"/>
-    <pair kern="-90" kpx2="89"/>
-    <pair kern="-18" kpx2="84"/>
-    <pair kern="0" kpx2="145"/>
-    <pair kern="-50" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="97">
-    <pair kern="-15" kpx2="119"/>
-    <pair kern="0" kpx2="116"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="0" kpx2="98"/>
-    <pair kern="-20" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="70">
-    <pair kern="-15" kpx2="111"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="0" kpx2="114"/>
-    <pair kern="-15" kpx2="97"/>
-    <pair kern="-74" kpx2="65"/>
-    <pair kern="-80" kpx2="46"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-80" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="85">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="100">
-    <pair kern="0" kpx2="100"/>
-    <pair kern="0" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="83">
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="122">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="68">
-    <pair kern="-40" kpx2="65"/>
-    <pair kern="-30" kpx2="87"/>
-    <pair kern="-55" kpx2="89"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="-40" kpx2="86"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="146">
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-50" kpx2="100"/>
-    <pair kern="-74" kpx2="32"/>
-    <pair kern="-74" kpx2="146"/>
-    <pair kern="-50" kpx2="114"/>
-    <pair kern="-18" kpx2="116"/>
-    <pair kern="-10" kpx2="108"/>
-    <pair kern="-55" kpx2="115"/>
-    <pair kern="-50" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="58">
-    <pair kern="0" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="119">
-    <pair kern="-10" kpx2="111"/>
-    <pair kern="-10" kpx2="97"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-65" kpx2="46"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-65" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="75">
-    <pair kern="-35" kpx2="111"/>
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-15" kpx2="117"/>
-    <pair kern="-25" kpx2="121"/>
-    <pair kern="-25" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="82">
-    <pair kern="-40" kpx2="79"/>
-    <pair kern="-55" kpx2="87"/>
-    <pair kern="-40" kpx2="85"/>
-    <pair kern="-65" kpx2="89"/>
-    <pair kern="-60" kpx2="84"/>
-    <pair kern="-80" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="145">
-    <pair kern="-80" kpx2="65"/>
-    <pair kern="-74" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="103">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="0" kpx2="114"/>
-    <pair kern="-5" kpx2="97"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="66">
-    <pair kern="-35" kpx2="65"/>
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="98">
-    <pair kern="-20" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-40" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="98"/>
-    <pair kern="-15" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="81">
-    <pair kern="-10" kpx2="85"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="44">
-    <pair kern="-70" kpx2="148"/>
-    <pair kern="0" kpx2="32"/>
-    <pair kern="-70" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="102">
-    <pair kern="0" kpx2="148"/>
-    <pair kern="0" kpx2="111"/>
-    <pair kern="-20" kpx2="105"/>
-    <pair kern="55" kpx2="146"/>
-    <pair kern="-10" kpx2="97"/>
-    <pair kern="-25" kpx2="102"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="84">
-    <pair kern="-80" kpx2="111"/>
-    <pair kern="-18" kpx2="79"/>
-    <pair kern="-80" kpx2="119"/>
-    <pair kern="-50" kpx2="58"/>
-    <pair kern="-35" kpx2="114"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-74" kpx2="44"/>
-    <pair kern="-55" kpx2="59"/>
-    <pair kern="-92" kpx2="45"/>
-    <pair kern="-35" kpx2="105"/>
-    <pair kern="-93" kpx2="65"/>
-    <pair kern="-80" kpx2="97"/>
-    <pair kern="-45" kpx2="117"/>
-    <pair kern="-80" kpx2="121"/>
-    <pair kern="-74" kpx2="46"/>
-    <pair kern="-70" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="121">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="-65" kpx2="46"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="-65" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="120">
-    <pair kern="-15" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="101">
-    <pair kern="-25" kpx2="119"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="-15" kpx2="103"/>
-    <pair kern="0" kpx2="98"/>
-    <pair kern="-15" kpx2="120"/>
-    <pair kern="-25" kpx2="118"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="99">
-    <pair kern="0" kpx2="107"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="87">
-    <pair kern="-80" kpx2="111"/>
-    <pair kern="-10" kpx2="79"/>
-    <pair kern="-37" kpx2="58"/>
-    <pair kern="0" kpx2="104"/>
-    <pair kern="-92" kpx2="44"/>
-    <pair kern="-37" kpx2="59"/>
-    <pair kern="-65" kpx2="45"/>
-    <pair kern="-40" kpx2="105"/>
-    <pair kern="-120" kpx2="65"/>
-    <pair kern="-80" kpx2="97"/>
-    <pair kern="-50" kpx2="117"/>
-    <pair kern="-73" kpx2="121"/>
-    <pair kern="-92" kpx2="46"/>
-    <pair kern="-80" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="104">
-    <pair kern="-5" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="71">
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="105">
-    <pair kern="-25" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="65">
-    <pair kern="-55" kpx2="79"/>
-    <pair kern="-111" kpx2="146"/>
-    <pair kern="-92" kpx2="119"/>
-    <pair kern="-90" kpx2="87"/>
-    <pair kern="-40" kpx2="67"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="-55" kpx2="81"/>
-    <pair kern="-40" kpx2="71"/>
-    <pair kern="-135" kpx2="86"/>
-    <pair kern="-74" kpx2="118"/>
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-55" kpx2="85"/>
-    <pair kern="0" kpx2="117"/>
-    <pair kern="-105" kpx2="89"/>
-    <pair kern="-92" kpx2="121"/>
-    <pair kern="-111" kpx2="84"/>
-  </kerning>
-  <kerning kpx1="147">
-    <pair kern="-80" kpx2="65"/>
-    <pair kern="0" kpx2="145"/>
-  </kerning>
-  <kerning kpx1="78">
-    <pair kern="-35" kpx2="65"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="115">
-    <pair kern="0" kpx2="119"/>
-  </kerning>
-  <kerning kpx1="111">
-    <pair kern="-25" kpx2="119"/>
-    <pair kern="-10" kpx2="121"/>
-    <pair kern="0" kpx2="103"/>
-    <pair kern="0" kpx2="120"/>
-    <pair kern="-15" kpx2="118"/>
-  </kerning>
-  <kerning kpx1="114">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="100"/>
-    <pair kern="0" kpx2="107"/>
-    <pair kern="0" kpx2="114"/>
-    <pair kern="0" kpx2="99"/>
-    <pair kern="0" kpx2="112"/>
-    <pair kern="-18" kpx2="103"/>
-    <pair kern="0" kpx2="108"/>
-    <pair kern="0" kpx2="113"/>
-    <pair kern="0" kpx2="118"/>
-    <pair kern="-40" kpx2="44"/>
-    <pair kern="-20" kpx2="45"/>
-    <pair kern="0" kpx2="105"/>
-    <pair kern="0" kpx2="109"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="116"/>
-    <pair kern="0" kpx2="121"/>
-    <pair kern="-55" kpx2="46"/>
-    <pair kern="0" kpx2="110"/>
-    <pair kern="0" kpx2="115"/>
-    <pair kern="0" kpx2="101"/>
-  </kerning>
-  <kerning kpx1="108">
-    <pair kern="-10" kpx2="119"/>
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="76">
-    <pair kern="0" kpx2="148"/>
-    <pair kern="-92" kpx2="146"/>
-    <pair kern="-74" kpx2="87"/>
-    <pair kern="-100" kpx2="89"/>
-    <pair kern="-55" kpx2="121"/>
-    <pair kern="-92" kpx2="84"/>
-    <pair kern="-100" kpx2="86"/>
-  </kerning>
-  <kerning kpx1="148">
-    <pair kern="0" kpx2="32"/>
-  </kerning>
-  <kerning kpx1="109">
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="121"/>
-  </kerning>
-  <kerning kpx1="89">
-    <pair kern="-110" kpx2="111"/>
-    <pair kern="-111" kpx2="45"/>
-    <pair kern="-55" kpx2="105"/>
-    <pair kern="-30" kpx2="79"/>
-    <pair kern="-92" kpx2="58"/>
-    <pair kern="-100" kpx2="97"/>
-    <pair kern="-120" kpx2="65"/>
-    <pair kern="-111" kpx2="117"/>
-    <pair kern="-129" kpx2="46"/>
-    <pair kern="-100" kpx2="101"/>
-    <pair kern="-92" kpx2="59"/>
-    <pair kern="-129" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="74">
-    <pair kern="0" kpx2="111"/>
-    <pair kern="0" kpx2="97"/>
-    <pair kern="-60" kpx2="65"/>
-    <pair kern="0" kpx2="117"/>
-    <pair kern="0" kpx2="46"/>
-    <pair kern="0" kpx2="101"/>
-    <pair kern="0" kpx2="44"/>
-  </kerning>
-  <kerning kpx1="46">
-    <pair kern="-70" kpx2="148"/>
-    <pair kern="-70" kpx2="146"/>
-  </kerning>
-  <kerning kpx1="110">
-    <pair kern="0" kpx2="117"/>
-    <pair kern="-15" kpx2="121"/>
-    <pair kern="-40" kpx2="118"/>
-  </kerning>
-</font-metrics>
diff --git a/src/codegen/ZapfDingbats.xml b/src/codegen/ZapfDingbats.xml
deleted file mode 100644 (file)
index 0420908..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-<!--
-  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$ -->
-<font-metrics>
-  <font-name>ZapfDingbats</font-name>
-  <class-name>ZapfDingbats</class-name>
-  <encoding>ZapfDingbatsEncoding</encoding>
-  <cap-height>820</cap-height>
-  <x-height>426</x-height>
-  <ascender>820</ascender>
-  <descender>-143</descender>
-  <first-char>32</first-char>
-  <last-char>255</last-char>
-  <widths>
-    <char name="space" width="278"/>
-    <char name="a1" width="974"/>
-    <char name="a2" width="961"/>
-    <char name="a202" width="974"/>
-    <char name="a3" width="980"/>
-    <char name="a4" width="719"/>
-    <char name="a5" width="789"/>
-    <char name="a119" width="790"/>
-    <char name="a118" width="791"/>
-    <char name="a117" width="690"/>
-    <char name="a11" width="960"/>
-    <char name="a12" width="939"/>
-    <char name="a13" width="549"/>
-    <char name="a14" width="855"/>
-    <char name="a15" width="911"/>
-    <char name="a16" width="933"/>
-    <char name="a105" width="911"/>
-    <char name="a17" width="945"/>
-    <char name="a18" width="974"/>
-    <char name="a19" width="755"/>
-    <char name="a20" width="846"/>
-    <char name="a21" width="762"/>
-    <char name="a22" width="761"/>
-    <char name="a23" width="571"/>
-    <char name="a24" width="677"/>
-    <char name="a25" width="763"/>
-    <char name="a26" width="760"/>
-    <char name="a27" width="759"/>
-    <char name="a28" width="754"/>
-    <char name="a6" width="494"/>
-    <char name="a7" width="552"/>
-    <char name="a8" width="537"/>
-    <char name="a9" width="577"/>
-    <char name="a10" width="692"/>
-    <char name="a29" width="786"/>
-    <char name="a30" width="788"/>
-    <char name="a31" width="788"/>
-    <char name="a32" width="790"/>
-    <char name="a33" width="793"/>
-    <char name="a34" width="794"/>
-    <char name="a35" width="816"/>
-    <char name="a36" width="823"/>
-    <char name="a37" width="789"/>
-    <char name="a38" width="841"/>
-    <char name="a39" width="823"/>
-    <char name="a40" width="833"/>
-    <char name="a41" width="816"/>
-    <char name="a42" width="831"/>
-    <char name="a43" width="923"/>
-    <char name="a44" width="744"/>
-    <char name="a45" width="723"/>
-    <char name="a46" width="749"/>
-    <char name="a47" width="790"/>
-    <char name="a48" width="792"/>
-    <char name="a49" width="695"/>
-    <char name="a50" width="776"/>
-    <char name="a51" width="768"/>
-    <char name="a52" width="792"/>
-    <char name="a53" width="759"/>
-    <char name="a54" width="707"/>
-    <char name="a55" width="708"/>
-    <char name="a56" width="682"/>
-    <char name="a57" width="701"/>
-    <char name="a58" width="826"/>
-    <char name="a59" width="815"/>
-    <char name="a60" width="789"/>
-    <char name="a61" width="789"/>
-    <char name="a62" width="707"/>
-    <char name="a63" width="687"/>
-    <char name="a64" width="696"/>
-    <char name="a65" width="689"/>
-    <char name="a66" width="786"/>
-    <char name="a67" width="787"/>
-    <char name="a68" width="713"/>
-    <char name="a69" width="791"/>
-    <char name="a70" width="785"/>
-    <char name="a71" width="791"/>
-    <char name="a72" width="873"/>
-    <char name="a73" width="761"/>
-    <char name="a74" width="762"/>
-    <char name="a203" width="762"/>
-    <char name="a75" width="759"/>
-    <char name="a204" width="759"/>
-    <char name="a76" width="892"/>
-    <char name="a77" width="892"/>
-    <char name="a78" width="788"/>
-    <char name="a79" width="784"/>
-    <char name="a81" width="438"/>
-    <char name="a82" width="138"/>
-    <char name="a83" width="277"/>
-    <char name="a84" width="415"/>
-    <char name="a97" width="392"/>
-    <char name="a98" width="392"/>
-    <char name="a99" width="668"/>
-    <char name="a100" width="668"/>
-    <char name="a101" width="732"/>
-    <char name="a102" width="544"/>
-    <char name="a103" width="544"/>
-    <char name="a104" width="910"/>
-    <char name="a106" width="667"/>
-    <char name="a107" width="760"/>
-    <char name="a108" width="760"/>
-    <char name="a112" width="776"/>
-    <char name="a111" width="595"/>
-    <char name="a110" width="694"/>
-    <char name="a109" width="626"/>
-    <char name="a120" width="788"/>
-    <char name="a121" width="788"/>
-    <char name="a122" width="788"/>
-    <char name="a123" width="788"/>
-    <char name="a124" width="788"/>
-    <char name="a125" width="788"/>
-    <char name="a126" width="788"/>
-    <char name="a127" width="788"/>
-    <char name="a128" width="788"/>
-    <char name="a129" width="788"/>
-    <char name="a130" width="788"/>
-    <char name="a131" width="788"/>
-    <char name="a132" width="788"/>
-    <char name="a133" width="788"/>
-    <char name="a134" width="788"/>
-    <char name="a135" width="788"/>
-    <char name="a136" width="788"/>
-    <char name="a137" width="788"/>
-    <char name="a138" width="788"/>
-    <char name="a139" width="788"/>
-    <char name="a140" width="788"/>
-    <char name="a141" width="788"/>
-    <char name="a142" width="788"/>
-    <char name="a143" width="788"/>
-    <char name="a144" width="788"/>
-    <char name="a145" width="788"/>
-    <char name="a146" width="788"/>
-    <char name="a147" width="788"/>
-    <char name="a148" width="788"/>
-    <char name="a149" width="788"/>
-    <char name="a150" width="788"/>
-    <char name="a151" width="788"/>
-    <char name="a152" width="788"/>
-    <char name="a153" width="788"/>
-    <char name="a154" width="788"/>
-    <char name="a155" width="788"/>
-    <char name="a156" width="788"/>
-    <char name="a157" width="788"/>
-    <char name="a158" width="788"/>
-    <char name="a159" width="788"/>
-    <char name="a160" width="894"/>
-    <char name="a161" width="838"/>
-    <char name="a163" width="1016"/>
-    <char name="a164" width="458"/>
-    <char name="a196" width="748"/>
-    <char name="a165" width="924"/>
-    <char name="a192" width="748"/>
-    <char name="a166" width="918"/>
-    <char name="a167" width="927"/>
-    <char name="a168" width="928"/>
-    <char name="a169" width="928"/>
-    <char name="a170" width="834"/>
-    <char name="a171" width="873"/>
-    <char name="a172" width="828"/>
-    <char name="a173" width="924"/>
-    <char name="a162" width="924"/>
-    <char name="a174" width="917"/>
-    <char name="a175" width="930"/>
-    <char name="a176" width="931"/>
-    <char name="a177" width="463"/>
-    <char name="a178" width="883"/>
-    <char name="a179" width="836"/>
-    <char name="a193" width="836"/>
-    <char name="a180" width="867"/>
-    <char name="a199" width="867"/>
-    <char name="a181" width="696"/>
-    <char name="a200" width="696"/>
-    <char name="a182" width="874"/>
-    <char name="a201" width="874"/>
-    <char name="a183" width="760"/>
-    <char name="a184" width="946"/>
-    <char name="a197" width="771"/>
-    <char name="a185" width="865"/>
-    <char name="a194" width="771"/>
-    <char name="a198" width="888"/>
-    <char name="a186" width="967"/>
-    <char name="a195" width="888"/>
-    <char name="a187" width="831"/>
-    <char name="a188" width="873"/>
-    <char name="a189" width="927"/>
-    <char name="a190" width="970"/>
-    <char name="a191" width="918"/>
-    <char name="a86" width="410"/>
-    <char name="a85" width="509"/>
-    <char name="a95" width="334"/>
-    <char name="a205" width="509"/>
-    <char name="a89" width="390"/>
-    <char name="a87" width="234"/>
-    <char name="a91" width="276"/>
-    <char name="a90" width="390"/>
-    <char name="a206" width="410"/>
-    <char name="a94" width="317"/>
-    <char name="a93" width="317"/>
-    <char name="a92" width="276"/>
-    <char name="a96" width="334"/>
-    <char name="a88" width="234"/>
-  </widths>
-</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/charlist.xml b/src/codegen/charlist.xml
deleted file mode 100644 (file)
index 110714a..0000000
+++ /dev/null
@@ -1,633 +0,0 @@
-<!--
-  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$ -->
-<!-- JKT: these mappings were kindly produced by Fotis Jannidis -->
-<font-mappings>
-   <map adobe-name="A" win-ansi="0x0041" unicode="0x0041"/>
-   <map adobe-name="AE" win-ansi="0x00C6" unicode="0x00C6"/>
-   <map adobe-name="Aacute" win-ansi="0x00C1" unicode="0x00C1"/>
-   <map adobe-name="Acircumflex" win-ansi="0x00C2" unicode="0x00C2"/>
-   <map adobe-name="Adieresis" win-ansi="0x00C4" unicode="0x00C4"/>
-   <map adobe-name="Agrave" win-ansi="0x00C0" unicode="0x00C0"/>
-   <map adobe-name="Aring" win-ansi="0x00C5" unicode="0x00C5"/>
-   <map adobe-name="Atilde" win-ansi="0x00C3" unicode="0x00C3"/>
-   <map adobe-name="B" win-ansi="0x0042" unicode="0x0042"/>
-   <map adobe-name="C" win-ansi="0x0043" unicode="0x0043"/>
-   <map adobe-name="Ccedilla" win-ansi="0x00C7" unicode="0x00C7"/>
-   <map adobe-name="D" win-ansi="0x0044" unicode="0x0044"/>
-   <map adobe-name="E" win-ansi="0x0045" unicode="0x0045"/>
-   <map adobe-name="Eacute" win-ansi="0x00C9" unicode="0x00C9"/>
-   <map adobe-name="Ecircumflex" win-ansi="0x00CA" unicode="0x00CA"/>
-   <map adobe-name="Edieresis" win-ansi="0x00CB" unicode="0x00CB"/>
-   <map adobe-name="Egrave" win-ansi="0x00C8" unicode="0x00C8"/>
-   <map adobe-name="Eth" win-ansi="0x00D0" unicode="0x00D0"/>
-   <map adobe-name="Euro" win-ansi="0x0080" unicode="0x20AC"/>
-   <map adobe-name="F" win-ansi="0x0046" unicode="0x0046"/>
-   <map adobe-name="G" win-ansi="0x0047" unicode="0x0047"/>
-   <map adobe-name="Gcaron" win-ansi="-1" unicode="0x01E6"/>
-   <map adobe-name="H" win-ansi="0x0048" unicode="0x0048"/>
-   <map adobe-name="I" win-ansi="0x0049" unicode="0x0049"/>
-   <map adobe-name="Iacute" win-ansi="0x00CD" unicode="0x00CD"/>
-   <map adobe-name="Icircumflex" win-ansi="0x00CE" unicode="0x00CE"/>
-   <map adobe-name="Idieresis" win-ansi="0x00CF" unicode="0x00CF"/>
-   <map adobe-name="Idot" win-ansi="-1" unicode="0x0130"/>
-   <map adobe-name="Igrave" win-ansi="0x00CC" unicode="0x00CC"/>
-   <map adobe-name="IJ" win-ansi="-1" unicode="0x0132"/>
-   <map adobe-name="J" win-ansi="0x004A" unicode="0x004A"/>
-   <map adobe-name="K" win-ansi="0x004B" unicode="0x004B"/>
-   <map adobe-name="L" win-ansi="0x004C" unicode="0x004C"/>
-   <map adobe-name="Lslash" win-ansi="-1" unicode="0x0141"/>
-   <map adobe-name="M" win-ansi="0x004D" unicode="0x004D"/>
-   <map adobe-name="N" win-ansi="0x004E" unicode="0x004E"/>
-   <map adobe-name="Ntilde" win-ansi="0x00D1" unicode="0x00D1"/>
-   <map adobe-name="O" win-ansi="0x004F" unicode="0x004F"/>
-   <map adobe-name="OE" win-ansi="0x008C" unicode="0x0152"/>
-   <map adobe-name="Oacute" win-ansi="0x00D3" unicode="0x00D3"/>
-   <map adobe-name="Ocircumflex" win-ansi="0x00D4" unicode="0x00D4"/>
-   <map adobe-name="Odieresis" win-ansi="0x00D6" unicode="0x00D6"/>
-   <map adobe-name="Ograve" win-ansi="0x00D2" unicode="0x00D2"/>
-   <map adobe-name="Oslash" win-ansi="0x00D8" unicode="0x00D8"/>
-   <map adobe-name="Otilde" win-ansi="0x00D5" unicode="0x00D5"/>
-   <map adobe-name="P" win-ansi="0x0050" unicode="0x0050"/>
-   <map adobe-name="Q" win-ansi="0x0051" unicode="0x0051"/>
-   <map adobe-name="R" win-ansi="0x0052" unicode="0x0052"/>
-   <map adobe-name="S" win-ansi="0x0053" unicode="0x0053"/>
-   <map adobe-name="Scaron" win-ansi="0x008A" unicode="0x0160"/>
-   <map adobe-name="Scedilla" win-ansi="-1" unicode="0x015E"/>
-   <map adobe-name="T" win-ansi="0x0054" unicode="0x0054"/>
-   <map adobe-name="Thorn" win-ansi="0x00DE" unicode="0x00DE"/>
-   <map adobe-name="U" win-ansi="0x0055" unicode="0x0055"/>
-   <map adobe-name="Uacute" win-ansi="0x00DA" unicode="0x00DA"/>
-   <map adobe-name="Ucircumflex" win-ansi="0x00DB" unicode="0x00DB"/>
-   <map adobe-name="Udieresis" win-ansi="0x00DC" unicode="0x00DC"/>
-   <map adobe-name="Ugrave" win-ansi="0x00D9" unicode="0x00D9"/>
-   <map adobe-name="V" win-ansi="0x0056" unicode="0x0056"/>
-   <map adobe-name="W" win-ansi="0x0057" unicode="0x0057"/>
-   <map adobe-name="X" win-ansi="0x0058" unicode="0x0058"/>
-   <map adobe-name="Y" win-ansi="0x0059" unicode="0x0059"/>
-   <map adobe-name="Yacute" win-ansi="0x00DD" unicode="0x00DD"/>
-   <map adobe-name="Ydieresis" win-ansi="0x009F" unicode="0x0178"/>
-   <map adobe-name="Z" win-ansi="0x005A" unicode="0x005A"/>
-   <map adobe-name="Zcaron" win-ansi="-1" unicode="0x017D"/>
-   <map adobe-name="a" win-ansi="0x0061" unicode="0x0061"/>
-   <map adobe-name="aacute" win-ansi="0x00E1" unicode="0x00E1"/>
-   <map adobe-name="acircumflex" win-ansi="0x00E2" unicode="0x00E2"/>
-   <map adobe-name="acute" win-ansi="0x00B4" unicode="0x00B4"/>
-   <map adobe-name="adieresis" win-ansi="0x00E4" unicode="0x00E4"/>
-   <map adobe-name="ae" win-ansi="0x00E6" unicode="0x00E6"/>
-   <map adobe-name="agrave" win-ansi="0x00E0" unicode="0x00E0"/>
-   <map adobe-name="ampersand" win-ansi="0x0026" unicode="0x0026"/>
-   <map adobe-name="aring" win-ansi="0x00E5" unicode="0x00E5"/>
-   <!--  fj  <map adobe-name="arrowboth" win-ansi="-1" unicode="0x2195"/>-->
-   <!--  fj     <map adobe-name="arrowdown" win-ansi="-1" unicode="0x2193"/>-->
-   <!--  fj     <map adobe-name="arrowleft" win-ansi="-1" unicode="0x2194"/>-->
-   <!--  fj     <map adobe-name="arrowright" win-ansi="-1" unicode="0x2192"/>-->
-   <!--  fj     <map adobe-name="arrowup" win-ansi="-1" unicode="0x2191"/>-->
-   <map adobe-name="asciicircum" win-ansi="0x005E" unicode="0x005E"/>
-   <map adobe-name="asciitilde" win-ansi="0x007E" unicode="0x007E"/>
-   <map adobe-name="asterisk" win-ansi="0x002A" unicode="0x002A"/>
-   <map adobe-name="at" win-ansi="0x0040" unicode="0x0040"/>
-   <map adobe-name="atilde" win-ansi="0x00E3" unicode="0x00E3"/>
-   <map adobe-name="b" win-ansi="0x0062" unicode="0x0062"/>
-   <map adobe-name="backslash" win-ansi="0x005C" unicode="0x005C"/>
-   <map adobe-name="bar" win-ansi="0x007C" unicode="0x007C"/>
-   <map adobe-name="braceleft" win-ansi="0x007B" unicode="0x007B"/>
-   <map adobe-name="braceright" win-ansi="0x007D" unicode="0x007D"/>
-   <map adobe-name="bracketleft" win-ansi="0x005B" unicode="0x005B"/>
-   <map adobe-name="bracketright" win-ansi="0x005D" unicode="0x005D"/>
-   <map adobe-name="breve" win-ansi="-1" unicode="0x02D8"/>
-   <map adobe-name="brokenbar" win-ansi="0x00A6" unicode="0x00A6"/>
-   <map adobe-name="bullet" win-ansi="0x0095" unicode="0x2022"/>
-   <map adobe-name="c" win-ansi="0x0063" unicode="0x0063"/>
-   <map adobe-name="caron" win-ansi="-1" unicode="0x02C7"/>
-   <map adobe-name="ccedilla" win-ansi="0x00E7" unicode="0x00E7"/>
-   <map adobe-name="cedilla" win-ansi="0x00B8" unicode="0x00B8"/>
-   <map adobe-name="cent" win-ansi="0x00A2" unicode="0x00A2"/>
-   <map adobe-name="circumflex" win-ansi="0x0088" unicode="0x02C6"/>
-   <map adobe-name="colon" win-ansi="0x003A" unicode="0x003A"/>
-   <map adobe-name="comma" win-ansi="0x002C" unicode="0x002C"/>
-   <map adobe-name="copyright" win-ansi="0x00A9" unicode="0x00A9"/>
-   <map adobe-name="currency" win-ansi="0x00A4" unicode="0x00A4"/>
-   <map adobe-name="d" win-ansi="0x0064" unicode="0x0064"/>
-   <map adobe-name="dagger" win-ansi="0x0086" unicode="0x2020"/>
-   <map adobe-name="daggerdbl" win-ansi="0x0087" unicode="0x2021"/>
-   <map adobe-name="degree" win-ansi="0x00B0" unicode="0x00B0"/>
-   <map adobe-name="dieresis" win-ansi="0x00A8" unicode="0x00A8"/>
-   <map adobe-name="divide" win-ansi="0x00F7" unicode="0x00F7"/>
-   <map adobe-name="dollar" win-ansi="0x0024" unicode="0x0024"/>
-   <map adobe-name="dotaccent" win-ansi="-1" unicode="0x02D9"/>
-   <map adobe-name="dotlessi" win-ansi="-1" unicode="0x0269"/>
-   <map adobe-name="e" win-ansi="0x0065" unicode="0x0065"/>
-   <map adobe-name="eacute" win-ansi="0x00E9" unicode="0x00E9"/>
-   <map adobe-name="ecircumflex" win-ansi="0x00EA" unicode="0x00EA"/>
-   <map adobe-name="edieresis" win-ansi="0x00EB" unicode="0x00EB"/>
-   <map adobe-name="egrave" win-ansi="0x00E8" unicode="0x00E8"/>
-   <map adobe-name="eight" win-ansi="0x0038" unicode="0x0038"/>
-   <map adobe-name="ellipsis" win-ansi="0x0085" unicode="0x2026"/>
-   <map adobe-name="emdash" win-ansi="0x0097" unicode="0x2014"/>
-   <map adobe-name="endash" win-ansi="0x0096" unicode="0x2013"/>
-   <map adobe-name="equal" win-ansi="0x003D" unicode="0x003D"/>
-   <map adobe-name="eth" win-ansi="0x00F0" unicode="0x00F0"/>
-   <map adobe-name="exclam" win-ansi="0x0021" unicode="0x0021"/>
-   <map adobe-name="exclamdown" win-ansi="0x00A1" unicode="0x00A1"/>
-   <map adobe-name="f" win-ansi="0x0066" unicode="0x0066"/>
-   <map adobe-name="fi" win-ansi="-1" unicode="-1"/>
-   <map adobe-name="five" win-ansi="0x0035" unicode="0x0035"/>
-   <map adobe-name="fl" win-ansi="-1" unicode="-1"/>
-   <map adobe-name="florin" win-ansi="0x0083" unicode="0x0083"/>
-   <map adobe-name="four" win-ansi="0x0034" unicode="0x0034"/>
-   <!-- fj   <map adobe-name="fraction" win-ansi="-1" unicode="0x2044"/> -->
-   <map adobe-name="g" win-ansi="0x0067" unicode="0x0067"/>
-   <map adobe-name="gcaron" win-ansi="-1" unicode="0x01E7"/>
-   <map adobe-name="germandbls" win-ansi="0x00DF" unicode="0x00DF"/>
-   <map adobe-name="grave" win-ansi="0x0060" unicode="0x0060"/>
-   <map adobe-name="greater" win-ansi="0x003E" unicode="0x003E"/>
-   <map adobe-name="guillemotleft" win-ansi="0x00AB" unicode="0x00AB"/>
-   <map adobe-name="guillemotright" win-ansi="0x00BB" unicode="0x00BB"/>
-   <map adobe-name="guilsinglleft" win-ansi="0x008B" unicode="0x2039"/>
-   <map adobe-name="guilsinglright" win-ansi="0x009B" unicode="0x203A"/>
-   <map adobe-name="h" win-ansi="0x0068" unicode="0x0068"/>
-   <map adobe-name="hungarumlaut" win-ansi="-1" unicode="0x02DD"/>
-   <map adobe-name="hyphen" win-ansi="0x002D" unicode="0x002D"/>
-   <map adobe-name="i" win-ansi="0x0069" unicode="0x0069"/>
-   <map adobe-name="iacute" win-ansi="0x00ED" unicode="0x00ED"/>
-   <map adobe-name="icircumflex" win-ansi="0x00EE" unicode="0x00EE"/>
-   <map adobe-name="idieresis" win-ansi="0x00EF" unicode="0x00EF"/>
-   <map adobe-name="igrave" win-ansi="0x00EC" unicode="0x00EC"/>
-   <map adobe-name="ij" win-ansi="-1" unicode="0x0133"/>
-   <map adobe-name="j" win-ansi="0x006A" unicode="0x006A"/>
-   <map adobe-name="k" win-ansi="0x006B" unicode="0x006B"/>
-   <map adobe-name="l" win-ansi="0x006C" unicode="0x006C"/>
-   <map adobe-name="less" win-ansi="0x003C" unicode="0x003C"/>
-   <map adobe-name="lira" win-ansi="-1" unicode="0x20A4"/>
-   <map adobe-name="logicalnot" win-ansi="0x00AC" unicode="0x00AC"/>
-   <map adobe-name="lslash" win-ansi="-1" unicode="0x0142"/>
-   <map adobe-name="m" win-ansi="0x006D" unicode="0x006D"/>
-   <map adobe-name="macron" win-ansi="0x00AF" unicode="0x00AF"/>
-   <!-- fj <map adobe-name="minus" win-ansi="-1" unicode="0x2212"/>-->
-   <map adobe-name="mu" win-ansi="0x00B5" unicode="0x00B5"/>
-   <map adobe-name="multiply" win-ansi="0x00D7" unicode="0x00D7"/>
-   <map adobe-name="n" win-ansi="0x006E" unicode="0x006E"/>
-   <!-- JKT: the following is not actually an adobe named character -->
-   <map adobe-name="nbsp" win-ansi="0x00A0" unicode="0x00A0"/>
-   <map adobe-name="nine" win-ansi="0x0039" unicode="0x0039"/>
-   <map adobe-name="ntilde" win-ansi="0x00F1" unicode="0x00F1"/>
-   <map adobe-name="numbersign" win-ansi="0x0023" unicode="0x0023"/>
-   <map adobe-name="o" win-ansi="0x006F" unicode="0x006F"/>
-   <map adobe-name="oacute" win-ansi="0x00F3" unicode="0x00F3"/>
-   <map adobe-name="ocircumflex" win-ansi="0x00F4" unicode="0x00F4"/>
-   <map adobe-name="odieresis" win-ansi="0x00F6" unicode="0x00F6"/>
-   <map adobe-name="oe" win-ansi="0x009C" unicode="0x0153"/>
-   <map adobe-name="ogonek" win-ansi="-1" unicode="0x02DB"/>
-   <map adobe-name="ograve" win-ansi="0x00F2" unicode="0x00F2"/>
-   <map adobe-name="one" win-ansi="0x0031" unicode="0x0031"/>
-   <map adobe-name="onehalf" win-ansi="0x00BD" unicode="0x00BD"/>
-   <map adobe-name="onequarter" win-ansi="0x00BC" unicode="0x00BC"/>
-   <map adobe-name="onesuperior" win-ansi="0x00B9" unicode="0x00B9"/>
-   <map adobe-name="ordfeminine" win-ansi="0x00AA" unicode="0x00AA"/>
-   <map adobe-name="ordmasculine" win-ansi="0x00BA" unicode="0x00BA"/>
-   <map adobe-name="oslash" win-ansi="0x00F8" unicode="0x00F8"/>
-   <map adobe-name="otilde" win-ansi="0x00F5" unicode="0x00F5"/>
-   <map adobe-name="p" win-ansi="0x0070" unicode="0x0070"/>
-   <map adobe-name="paragraph" win-ansi="0x00B6" unicode="0x00B6"/>
-   <map adobe-name="parenleft" win-ansi="0x0028" unicode="0x0028"/>
-   <map adobe-name="parenright" win-ansi="0x0029" unicode="0x0029"/>
-   <map adobe-name="percent" win-ansi="0x0025" unicode="0x0025"/>
-   <map adobe-name="period" win-ansi="0x002E" unicode="0x002E"/>
-   <map adobe-name="periodcentered" win-ansi="0x00B7" unicode="0x00B7"/>
-   <map adobe-name="perthousand" win-ansi="0x0089" unicode="0x2030"/>
-   <map adobe-name="plus" win-ansi="0x002B" unicode="0x002B"/>
-   <map adobe-name="plusminus" win-ansi="0x00B1" unicode="0x00B1"/>
-   <map adobe-name="q" win-ansi="0x0071" unicode="0x0071"/>
-   <map adobe-name="question" win-ansi="0x003F" unicode="0x003F"/>
-   <map adobe-name="questiondown" win-ansi="0x00BF" unicode="0x00BF"/>
-   <map adobe-name="quotedbl" win-ansi="0x0022" unicode="0x0022"/>
-   <map adobe-name="quotedblbase" win-ansi="0x0084" unicode="0x201E"/>
-   <map adobe-name="quotedblleft" win-ansi="0x0093" unicode="0x201C"/>
-   <map adobe-name="quotedblright" win-ansi="0x0094" unicode="0x201D"/>
-   <map adobe-name="quoteleft" win-ansi="0x0091" unicode="0x2018"/>
-   <map adobe-name="quoteright" win-ansi="0x0092" unicode="0x2019"/>
-   <map adobe-name="quotesinglbase" win-ansi="0x0082" unicode="0x201A"/>
-   <map adobe-name="quotesingle" win-ansi="0x0027" unicode="0x0027"/>
-   <map adobe-name="r" win-ansi="0x0072" unicode="0x0072"/>
-   <map adobe-name="registered" win-ansi="0x00AE" unicode="0x00AE"/>
-   <map adobe-name="s" win-ansi="0x0073" unicode="0x0073"/>
-   <map adobe-name="scaron" win-ansi="0x009A" unicode="0x0161"/>
-   <map adobe-name="scedilla" win-ansi="-1" unicode="0x015F"/>
-   <map adobe-name="section" win-ansi="0x00A7" unicode="0x00A7"/>
-   <map adobe-name="semicolon" win-ansi="0x003B" unicode="0x003B"/>
-   <map adobe-name="seven" win-ansi="0x0037" unicode="0x0037"/>
-   <map adobe-name="six" win-ansi="0x0036" unicode="0x0036"/>
-   <map adobe-name="slash" win-ansi="0x002F" unicode="0x002F"/>
-   <map adobe-name="space" win-ansi="0x0020" unicode="0x0020"/>
-   <map adobe-name="sterling" win-ansi="0x00A3" unicode="0x00A3"/>
-   <map adobe-name="t" win-ansi="0x0074" unicode="0x0074"/>
-   <map adobe-name="thorn" win-ansi="0x00FE" unicode="0x00FE"/>
-   <map adobe-name="three" win-ansi="0x0033" unicode="0x0033"/>
-   <map adobe-name="threequarters" win-ansi="0x00BE" unicode="0x00BE"/>
-   <map adobe-name="threesuperior" win-ansi="0x00B3" unicode="0x00B3"/>
-   <map adobe-name="tilde" win-ansi="0x0098" unicode="0x02DC"/>
-   <map adobe-name="trademark" win-ansi="0x0099" unicode="0x2122"/>
-   <map adobe-name="two" win-ansi="0x0032" unicode="0x0032"/>
-   <map adobe-name="twosuperior" win-ansi="0x00B2" unicode="0x00B2"/>
-   <map adobe-name="u" win-ansi="0x0075" unicode="0x0075"/>
-   <map adobe-name="uacute" win-ansi="0x00FA" unicode="0x00FA"/>
-   <map adobe-name="ucircumflex" win-ansi="0x00FB" unicode="0x00FB"/>
-   <map adobe-name="udieresis" win-ansi="0x00FC" unicode="0x00FC"/>
-   <map adobe-name="ugrave" win-ansi="0x00F9" unicode="0x00F9"/>
-   <map adobe-name="underscore" win-ansi="0x005F" unicode="0x005F"/>
-   <map adobe-name="v" win-ansi="0x0076" unicode="0x0076"/>
-   <map adobe-name="w" win-ansi="0x0077" unicode="0x0077"/>
-   <map adobe-name="x" win-ansi="0x0078" unicode="0x0078"/>
-   <map adobe-name="y" win-ansi="0x0079" unicode="0x0079"/>
-   <map adobe-name="yacute" win-ansi="0x00FD" unicode="0x00FD"/>
-   <map adobe-name="ydieresis" win-ansi="0x00FF" unicode="0x00FF"/>
-   <map adobe-name="yen" win-ansi="0x00A5" unicode="0x00A5"/>
-   <map adobe-name="z" win-ansi="0x007A" unicode="0x007A"/>
-   <map adobe-name="zcaron" win-ansi="-1" unicode="0x017E"/>
-   <map adobe-name="zero" win-ansi="0x0030" unicode="0x0030"/>
-   <!-- the following mappings are used for the font zapfdingbats -->
-   <map adobe-name="a1" win-ansi="0x0021" unicode="0x2701" unicodeName="UPPER BLADE SCISSORS"/>
-   <map adobe-name="a2" win-ansi="0x0022" unicode="0x2702" unicodeName="BLACK SCISSORS"/>
-   <map adobe-name="a202" win-ansi="0x0023" unicode="0x2703" unicodeName="LOWER BLADE SCISSORS"/>
-   <map adobe-name="a3" win-ansi="0x0024" unicode="0x2704" unicodeName="WHITE SCISSORS"/>
-   <map adobe-name="a4" win-ansi="0x0025" unicode="0x260E" unicodeName="BLACK TELEPHONE"/>
-   <map adobe-name="a5" win-ansi="0x0026" unicode="0x2706" unicodeName="TELEPHONE LOCATION SIGN"/>
-   <map adobe-name="a119" win-ansi="0x0027" unicode="0x2707" unicodeName="TAPE DRIVE"/>
-   <map adobe-name="a118" win-ansi="0x0028" unicode="0x2708" unicodeName="AIRPLANE"/>
-   <map adobe-name="a117" win-ansi="0x0029" unicode="0x2709" unicodeName="ENVELOPE"/>
-   <map adobe-name="a11" win-ansi="0x002A" unicode="0x261B" unicodeName="BLACK RIGHT POINTING INDEX"/>
-   <map adobe-name="a12" win-ansi="0x002B" unicode="0x261E" unicodeName="WHITE RIGHT POINTING INDEX"/>
-   <map adobe-name="a13" win-ansi="0x002C" unicode="0x270C" unicodeName="VICTORY HAND"/>
-   <map adobe-name="a14" win-ansi="0x002D" unicode="0x270D" unicodeName="WRITING HAND"/>
-   <map adobe-name="a15" win-ansi="0x002E" unicode="0x270E" unicodeName="LOWER RIGHT PENCIL"/>
-   <map adobe-name="a16" win-ansi="0x002F" unicode="0x270F" unicodeName="PENCIL"/>
-   <map adobe-name="a105" win-ansi="0x0030" unicode="0x2710" unicodeName="UPPER RIGHT PENCIL"/>
-   <map adobe-name="a17" win-ansi="0x0031" unicode="0x2711" unicodeName="WHITE NIB"/>
-   <map adobe-name="a18" win-ansi="0x0032" unicode="0x2712" unicodeName="BLACK NIB"/>
-   <map adobe-name="a19" win-ansi="0x0033" unicode="0x2713" unicodeName="CHECK MARK"/>
-   <map adobe-name="a20" win-ansi="0x0034" unicode="0x2714" unicodeName="HEAVY CHECK MARK"/>
-   <map adobe-name="a21" win-ansi="0x0035" unicode="0x2715" unicodeName="MULTIPLICATION X"/>
-   <map adobe-name="a22" win-ansi="0x0036" unicode="0x2716" unicodeName="HEAVY MULTIPLICATION X"/>
-   <map adobe-name="a23" win-ansi="0x0037" unicode="0x2717" unicodeName="BALLOT X"/>
-   <map adobe-name="a24" win-ansi="0x0038" unicode="0x2718" unicodeName="HEAVY BALLOT X"/>
-   <map adobe-name="a25" win-ansi="0x0039" unicode="0x2719" unicodeName="OUTLINED GREEK CROSS"/>
-   <map adobe-name="a26" win-ansi="0x003A" unicode="0x271A" unicodeName="HEAVY GREEK CROSS"/>
-   <map adobe-name="a27" win-ansi="0x003B" unicode="0x271B" unicodeName="OPEN CENTRE CROSS"/>
-   <map adobe-name="a28" win-ansi="0x003C" unicode="0x271C" unicodeName="HEAVY OPEN CENTRE CROSS"/>
-   <map adobe-name="a6" win-ansi="0x003D" unicode="0x271D" unicodeName="LATIN CROSS"/>
-   <map adobe-name="a7" win-ansi="0x003E" unicode="0x271E" unicodeName="SHADOWED WHITE LATIN CROSS"/>
-   <map adobe-name="a8" win-ansi="0x003F" unicode="0x271F" unicodeName="OUTLINED LATIN CROSS"/>
-   <map adobe-name="a9" win-ansi="0x0040" unicode="0x2720" unicodeName="MALTESE CROSS"/>
-   <map adobe-name="a10" win-ansi="0x0041" unicode="0x2721" unicodeName="STAR OF DAVID"/>
-   <map adobe-name="a29" win-ansi="0x0042" unicode="0x2722" unicodeName="FOUR TEARDROP-SPOKED ASTERISK"/>
-   <map adobe-name="a30" win-ansi="0x0043" unicode="0x2723" unicodeName="FOUR BALLOON-SPOKED ASTERISK"/>
-   <map adobe-name="a31" win-ansi="0x0044" unicode="0x2724" unicodeName="HEAVY FOUR BALLOON-SPOKED ASTERISK"/>
-   <map adobe-name="a32" win-ansi="0x0045" unicode="0x2725" unicodeName="FOUR CLUB-SPOKED ASTERISK"/>
-   <map adobe-name="a33" win-ansi="0x0046" unicode="0x2726" unicodeName="BLACK FOUR POINTED STAR"/>
-   <map adobe-name="a34" win-ansi="0x0047" unicode="0x2727" unicodeName="WHITE FOUR POINTED STAR"/>
-   <map adobe-name="a35" win-ansi="0x0048" unicode="0x2605" unicodeName="BLACK STAR"/>
-   <map adobe-name="a36" win-ansi="0x0049" unicode="0x2729" unicodeName="STRESS OUTLINED WHITE STAR"/>
-   <map adobe-name="a37" win-ansi="0x004A" unicode="0x272A" unicodeName="CIRCLED WHITE STAR"/>
-   <map adobe-name="a38" win-ansi="0x004B" unicode="0x272B" unicodeName="OPEN CENTRE BLACK STAR"/>
-   <map adobe-name="a39" win-ansi="0x004C" unicode="0x272C" unicodeName="BLACK CENTRE WHITE STAR"/>
-   <map adobe-name="a40" win-ansi="0x004D" unicode="0x272D" unicodeName="OUTLINED BLACK STAR"/>
-   <map adobe-name="a41" win-ansi="0x004E" unicode="0x272E" unicodeName="HEAVY OUTLINED BLACK STAR"/>
-   <map adobe-name="a42" win-ansi="0x004F" unicode="0x272F" unicodeName="PINWHEEL STAR"/>
-   <map adobe-name="a43" win-ansi="0x0050" unicode="0x2730" unicodeName="SHADOWED WHITE STAR"/>
-   <map adobe-name="a44" win-ansi="0x0051" unicode="0x2731" unicodeName="HEAVY ASTERISK"/>
-   <map adobe-name="a45" win-ansi="0x0052" unicode="0x2732" unicodeName="OPEN CENTRE ASTERISK"/>
-   <map adobe-name="a46" win-ansi="0x0053" unicode="0x2733" unicodeName="EIGHT SPOKED ASTERISK"/>
-   <map adobe-name="a47" win-ansi="0x0054" unicode="0x2734" unicodeName="EIGHT POINTED BLACK STAR"/>
-   <map adobe-name="a48" win-ansi="0x0055" unicode="0x2735" unicodeName="EIGHT POINTED PINWHEEL STAR"/>
-   <map adobe-name="a49" win-ansi="0x0056" unicode="0x2736" unicodeName="SIX POINTED BLACK STAR"/>
-   <map adobe-name="a50" win-ansi="0x0057" unicode="0x2737" unicodeName="EIGHT POINTED RECTILINEAR BLACK STAR"/>
-   <map adobe-name="a51" win-ansi="0x0058" unicode="0x2738" unicodeName="HEAVY EIGHT POINTED RECTILINEAR BLACK STAR"/>
-   <map adobe-name="a52" win-ansi="0x0059" unicode="0x2739" unicodeName="TWELVE POINTED BLACK STAR"/>
-   <map adobe-name="a53" win-ansi="0x005A" unicode="0x273A" unicodeName="SIXTEEN POINTED ASTERISK"/>
-   <map adobe-name="a54" win-ansi="0x005B" unicode="0x273B" unicodeName="TEARDROP-SPOKED ASTERISK"/>
-   <map adobe-name="a55" win-ansi="0x005C" unicode="0x273C" unicodeName="OPEN CENTRE TEARDROP-SPOKED ASTERISK"/>
-   <map adobe-name="a56" win-ansi="0x005D" unicode="0x273D" unicodeName="HEAVY TEARDROP-SPOKED ASTERISK"/>
-   <map adobe-name="a57" win-ansi="0x005E" unicode="0x273E" unicodeName="SIX PETALLED BLACK AND WHITE FLORETTE"/>
-   <map adobe-name="a58" win-ansi="0x005F" unicode="0x273F" unicodeName="BLACK FLORETTE"/>
-   <map adobe-name="a59" win-ansi="0x0060" unicode="0x2740" unicodeName="WHITE FLORETTE"/>
-   <map adobe-name="a60" win-ansi="0x0061" unicode="0x2741" unicodeName="EIGHT PETALLED OUTLINED BLACK FLORETTE"/>
-   <map adobe-name="a61" win-ansi="0x0062" unicode="0x2742" unicodeName="CIRCLED OPEN CENTRE EIGHT POINTED STAR"/>
-   <map adobe-name="a62" win-ansi="0x0063" unicode="0x2743" unicodeName="HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK"/>
-   <map adobe-name="a63" win-ansi="0x0064" unicode="0x2744" unicodeName="SNOWFLAKE"/>
-   <map adobe-name="a64" win-ansi="0x0065" unicode="0x2745" unicodeName="TIGHT TRIFOLIATE SNOWFLAKE"/>
-   <map adobe-name="a65" win-ansi="0x0066" unicode="0x2746" unicodeName="HEAVY CHEVRON SNOWFLAKE"/>
-   <map adobe-name="a66" win-ansi="0x0067" unicode="0x2747" unicodeName="SPARKLE"/>
-   <map adobe-name="a67" win-ansi="0x0068" unicode="0x2748" unicodeName="HEAVY SPARKLE"/>
-   <map adobe-name="a68" win-ansi="0x0069" unicode="0x2749" unicodeName="BALLOON-SPOKED ASTERISK"/>
-   <map adobe-name="a69" win-ansi="0x006A" unicode="0x274A" unicodeName="EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"/>
-   <map adobe-name="a70" win-ansi="0x006B" unicode="0x274B" unicodeName="HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"/>
-   <map adobe-name="a71" win-ansi="0x006C" unicode="0x25CF" unicodeName="BLACK CIRCLE"/>
-   <map adobe-name="a72" win-ansi="0x006D" unicode="0x274D" unicodeName="SHADOWED WHITE CIRCLE"/>
-   <map adobe-name="a73" win-ansi="0x006E" unicode="0x25A0" unicodeName="BLACK SQUARE"/>
-   <map adobe-name="a74" win-ansi="0x006F" unicode="0x274F" unicodeName="LOWER RIGHT DROP-SHADOWED WHITE SQUARE"/>
-   <map adobe-name="a203" win-ansi="0x0070" unicode="0x2750" unicodeName="UPPER RIGHT DROP-SHADOWED WHITE SQUARE"/>
-   <map adobe-name="a75" win-ansi="0x0071" unicode="0x2751" unicodeName="LOWER RIGHT SHADOWED WHITE SQUARE"/>
-   <map adobe-name="a204" win-ansi="0x0072" unicode="0x2752" unicodeName="UPPER RIGHT SHADOWED WHITE SQUARE"/>
-   <map adobe-name="a76" win-ansi="0x0073" unicode="0x25B2" unicodeName="BLACK UP-POINTING TRIANGLE"/>
-   <map adobe-name="a77" win-ansi="0x0074" unicode="0x25BC" unicodeName="BLACK DOWN-POINTING TRIANGLE"/>
-   <map adobe-name="a78" win-ansi="0x0075" unicode="0x25C6" unicodeName="BLACK DIAMOND"/>
-   <map adobe-name="a79" win-ansi="0x0076" unicode="0x2756" unicodeName="BLACK DIAMOND MINUS WHITE X"/>
-   <map adobe-name="a81" win-ansi="0x0077" unicode="0x25D7" unicodeName="RIGHT HALF BLACK CIRCLE"/>
-   <map adobe-name="a82" win-ansi="0x0078" unicode="0x2758" unicodeName="LIGHT VERTICAL BAR"/>
-   <map adobe-name="a83" win-ansi="0x0079" unicode="0x2759" unicodeName="MEDIUM VERTICAL BAR"/>
-   <map adobe-name="a84" win-ansi="0x007A" unicode="0x275A" unicodeName="HEAVY VERTICAL BAR"/>
-   <map adobe-name="a97" win-ansi="0x007B" unicode="0x275B" unicodeName="HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT"/>
-   <map adobe-name="a98" win-ansi="0x007C" unicode="0x275C" unicodeName="HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT"/>
-   <map adobe-name="a99" win-ansi="0x007D" unicode="0x275D" unicodeName="HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT"/>
-   <map adobe-name="a100" win-ansi="0x007E" unicode="0x275E" unicodeName="HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT"/>
-   <map adobe-name="a89" win-ansi="0x0080" unicode="0xF8D7" unicodeName="MEDIUM LEFT PARENTHESIS ORNAMENT"/>
-   <map adobe-name="a90" win-ansi="0x0081" unicode="0xF8D8" unicodeName="MEDIUM RIGHT PARENTHESIS ORNAMENT"/>
-   <map adobe-name="a93" win-ansi="0x0082" unicode="0xF8D9" unicodeName="MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT"/>
-   <map adobe-name="a94" win-ansi="0x0083" unicode="0xF8DA" unicodeName="MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT"/>
-   <map adobe-name="a91" win-ansi="0x0084" unicode="0xF8DB" unicodeName="MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT"/>
-   <map adobe-name="a92" win-ansi="0x0085" unicode="0xF8DC" unicodeName="MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT"/>
-   <map adobe-name="a205" win-ansi="0x0086" unicode="0xF8DD" unicodeName="HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT"/>
-   <map adobe-name="a85" win-ansi="0x0087" unicode="0xF8DE" unicodeName="HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT"/>
-   <map adobe-name="a206" win-ansi="0x0088" unicode="0xF8DF" unicodeName="HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT"/>
-   <map adobe-name="a86" win-ansi="0x0089" unicode="0xF8E0" unicodeName="HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT"/>
-   <map adobe-name="a87" win-ansi="0x008A" unicode="0xF8E1" unicodeName="LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT"/>
-   <map adobe-name="a88" win-ansi="0x008B" unicode="0xF8E2" unicodeName="LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT"/>
-   <map adobe-name="a95" win-ansi="0x008C" unicode="0xF8E3" unicodeName="MEDIUM LEFT CURLY BRACKET ORNAMENT"/>
-   <map adobe-name="a96" win-ansi="0x008D" unicode="0xF8E4" unicodeName="MEDIUM RIGHT CURLY BRACKET ORNAMENT"/>
-   <map adobe-name="a101" win-ansi="0x00A1" unicode="0x2761" unicodeName="CURVED STEM PARAGRAPH SIGN ORNAMENT"/>
-   <map adobe-name="a102" win-ansi="0x00A2" unicode="0x2762" unicodeName="HEAVY EXCLAMATION MARK ORNAMENT"/>
-   <map adobe-name="a103" win-ansi="0x00A3" unicode="0x2763" unicodeName="HEAVY HEART EXCLAMATION MARK ORNAMENT"/>
-   <map adobe-name="a104" win-ansi="0x00A4" unicode="0x2764" unicodeName="HEAVY BLACK HEART"/>
-   <map adobe-name="a106" win-ansi="0x00A5" unicode="0x2765" unicodeName="ROTATED HEAVY BLACK HEART BULLET"/>
-   <map adobe-name="a107" win-ansi="0x00A6" unicode="0x2766" unicodeName="FLORAL HEART"/>
-   <map adobe-name="a108" win-ansi="0x00A7" unicode="0x2767" unicodeName="ROTATED FLORAL HEART BULLET"/>
-   <map adobe-name="a120" win-ansi="0x00AC" unicode="0x2460" unicodeName="CIRCLED DIGIT ONE"/>
-   <map adobe-name="a121" win-ansi="0x00AD" unicode="0x2461" unicodeName="CIRCLED DIGIT TWO"/>
-   <map adobe-name="a122" win-ansi="0x00AE" unicode="0x2462" unicodeName="CIRCLED DIGIT THREE"/>
-   <map adobe-name="a123" win-ansi="0x00AF" unicode="0x2463" unicodeName="CIRCLED DIGIT FOUR"/>
-   <map adobe-name="a124" win-ansi="0x00B0" unicode="0x2464" unicodeName="CIRCLED DIGIT FIVE"/>
-   <map adobe-name="a125" win-ansi="0x00B1" unicode="0x2465" unicodeName="CIRCLED DIGIT SIX"/>
-   <map adobe-name="a126" win-ansi="0x00B2" unicode="0x2466" unicodeName="CIRCLED DIGIT SEVEN"/>
-   <map adobe-name="a127" win-ansi="0x00B3" unicode="0x2467" unicodeName="CIRCLED DIGIT EIGHT"/>
-   <map adobe-name="a128" win-ansi="0x00B4" unicode="0x2468" unicodeName="CIRCLED DIGIT NINE"/>
-   <map adobe-name="a129" win-ansi="0x00B5" unicode="0x2469" unicodeName="CIRCLED NUMBER TEN"/>
-   <map adobe-name="a130" win-ansi="0x00B6" unicode="0x2776" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT ONE"/>
-   <map adobe-name="a131" win-ansi="0x00B7" unicode="0x2777" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT TWO"/>
-   <map adobe-name="a132" win-ansi="0x00B8" unicode="0x2778" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT THREE"/>
-   <map adobe-name="a133" win-ansi="0x00B9" unicode="0x2779" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT FOUR"/>
-   <map adobe-name="a134" win-ansi="0x00BA" unicode="0x277A" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT FIVE"/>
-   <map adobe-name="a135" win-ansi="0x00BB" unicode="0x277B" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT SIX"/>
-   <map adobe-name="a136" win-ansi="0x00BC" unicode="0x277C" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT SEVEN"/>
-   <map adobe-name="a137" win-ansi="0x00BD" unicode="0x277D" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT EIGHT"/>
-   <map adobe-name="a138" win-ansi="0x00BE" unicode="0x277E" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT NINE"/>
-   <map adobe-name="a139" win-ansi="0x00BF" unicode="0x277F" unicodeName="DINGBAT NEGATIVE CIRCLED NUMBER TEN"/>
-   <map adobe-name="a140" win-ansi="0x00C0" unicode="0x2780" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT ONE"/>
-   <map adobe-name="a141" win-ansi="0x00C1" unicode="0x2781" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT TWO"/>
-   <map adobe-name="a142" win-ansi="0x00C2" unicode="0x2782" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT THREE"/>
-   <map adobe-name="a143" win-ansi="0x00C3" unicode="0x2783" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT FOUR"/>
-   <map adobe-name="a144" win-ansi="0x00C4" unicode="0x2784" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT FIVE"/>
-   <map adobe-name="a145" win-ansi="0x00C5" unicode="0x2785" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT SIX"/>
-   <map adobe-name="a146" win-ansi="0x00C6" unicode="0x2786" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN"/>
-   <map adobe-name="a147" win-ansi="0x00C7" unicode="0x2787" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT"/>
-   <map adobe-name="a148" win-ansi="0x00C8" unicode="0x2788" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT NINE"/>
-   <map adobe-name="a149" win-ansi="0x00C9" unicode="0x2789" unicodeName="DINGBAT CIRCLED SANS-SERIF NUMBER TEN"/>
-   <map adobe-name="a150" win-ansi="0x00CA" unicode="0x278A" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE"/>
-   <map adobe-name="a151" win-ansi="0x00CB" unicode="0x278B" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO"/>
-   <map adobe-name="a152" win-ansi="0x00CC" unicode="0x278C" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE"/>
-   <map adobe-name="a153" win-ansi="0x00CD" unicode="0x278D" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR"/>
-   <map adobe-name="a154" win-ansi="0x00CE" unicode="0x278E" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE"/>
-   <map adobe-name="a155" win-ansi="0x00CF" unicode="0x278F" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX"/>
-   <map adobe-name="a156" win-ansi="0x00D0" unicode="0x2790" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN"/>
-   <map adobe-name="a157" win-ansi="0x00D1" unicode="0x2791" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT"/>
-   <map adobe-name="a158" win-ansi="0x00D2" unicode="0x2792" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE"/>
-   <map adobe-name="a159" win-ansi="0x00D3" unicode="0x2793" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN"/>
-   <map adobe-name="a160" win-ansi="0x00D4" unicode="0x2794" unicodeName="HEAVY WIDE-HEADED RIGHTWARDS ARROW"/>
-   <map adobe-name="a164" win-ansi="0x00D7" unicode="0x2195" unicodeName="UP DOWN ARROW"/>
-   <map adobe-name="a196" win-ansi="0x00D8" unicode="0x2798" unicodeName="HEAVY SOUTH EAST ARROW"/>
-   <map adobe-name="a165" win-ansi="0x00D9" unicode="0x2799" unicodeName="HEAVY RIGHTWARDS ARROW"/>
-   <map adobe-name="a192" win-ansi="0x00DA" unicode="0x279A" unicodeName="HEAVY NORTH EAST ARROW"/>
-   <map adobe-name="a166" win-ansi="0x00DB" unicode="0x279B" unicodeName="DRAFTING POINT RIGHTWARDS ARROW"/>
-   <map adobe-name="a167" win-ansi="0x00DC" unicode="0x279C" unicodeName="HEAVY ROUND-TIPPED RIGHTWARDS ARROW"/>
-   <map adobe-name="a168" win-ansi="0x00DD" unicode="0x279D" unicodeName="TRIANGLE-HEADED RIGHTWARDS ARROW"/>
-   <map adobe-name="a169" win-ansi="0x00DE" unicode="0x279E" unicodeName="HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW"/>
-   <map adobe-name="a170" win-ansi="0x00DF" unicode="0x279F" unicodeName="DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"/>
-   <map adobe-name="a171" win-ansi="0x00E0" unicode="0x27A0" unicodeName="HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"/>
-   <map adobe-name="a172" win-ansi="0x00E1" unicode="0x27A1" unicodeName="BLACK RIGHTWARDS ARROW"/>
-   <map adobe-name="a173" win-ansi="0x00E2" unicode="0x27A2" unicodeName="THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD"/>
-   <map adobe-name="a162" win-ansi="0x00E3" unicode="0x27A3" unicodeName="THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD"/>
-   <map adobe-name="a174" win-ansi="0x00E4" unicode="0x27A4" unicodeName="BLACK RIGHTWARDS ARROWHEAD"/>
-   <map adobe-name="a175" win-ansi="0x00E5" unicode="0x27A5" unicodeName="HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW"/>
-   <map adobe-name="a176" win-ansi="0x00E6" unicode="0x27A6" unicodeName="HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW"/>
-   <map adobe-name="a177" win-ansi="0x00E7" unicode="0x27A7" unicodeName="SQUAT BLACK RIGHTWARDS ARROW"/>
-   <map adobe-name="a178" win-ansi="0x00E8" unicode="0x27A8" unicodeName="HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW"/>
-   <map adobe-name="a179" win-ansi="0x00E9" unicode="0x27A9" unicodeName="RIGHT-SHADED WHITE RIGHTWARDS ARROW"/>
-   <map adobe-name="a193" win-ansi="0x00EA" unicode="0x27AA" unicodeName="LEFT-SHADED WHITE RIGHTWARDS ARROW"/>
-   <map adobe-name="a180" win-ansi="0x00EB" unicode="0x27AB" unicodeName="BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW"/>
-   <map adobe-name="a199" win-ansi="0x00EC" unicode="0x27AC" unicodeName="FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW"/>
-   <map adobe-name="a181" win-ansi="0x00ED" unicode="0x27AD" unicodeName="HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"/>
-   <map adobe-name="a200" win-ansi="0x00EE" unicode="0x27AE" unicodeName="HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"/>
-   <map adobe-name="a182" win-ansi="0x00EF" unicode="0x27AF" unicodeName="NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"/>
-   <map adobe-name="a201" win-ansi="0x00F1" unicode="0x27B1" unicodeName="NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"/>
-   <map adobe-name="a183" win-ansi="0x00F2" unicode="0x27B2" unicodeName="CIRCLED HEAVY WHITE RIGHTWARDS ARROW"/>
-   <map adobe-name="a184" win-ansi="0x00F3" unicode="0x27B3" unicodeName="WHITE-FEATHERED RIGHTWARDS ARROW"/>
-   <map adobe-name="a197" win-ansi="0x00F4" unicode="0x27B4" unicodeName="BLACK-FEATHERED SOUTH EAST ARROW"/>
-   <map adobe-name="a185" win-ansi="0x00F5" unicode="0x27B5" unicodeName="BLACK-FEATHERED RIGHTWARDS ARROW"/>
-   <map adobe-name="a194" win-ansi="0x00F6" unicode="0x27B6" unicodeName="BLACK-FEATHERED NORTH EAST ARROW"/>
-   <map adobe-name="a198" win-ansi="0x00F7" unicode="0x27B7" unicodeName="HEAVY BLACK-FEATHERED SOUTH EAST ARROW"/>
-   <map adobe-name="a186" win-ansi="0x00F8" unicode="0x27B8" unicodeName="HEAVY BLACK-FEATHERED RIGHTWARDS ARROW"/>
-   <map adobe-name="a195" win-ansi="0x00F9" unicode="0x27B9" unicodeName="HEAVY BLACK-FEATHERED NORTH EAST ARROW"/>
-   <map adobe-name="a187" win-ansi="0x00FA" unicode="0x27BA" unicodeName="TEARDROP-BARBED RIGHTWARDS ARROW"/>
-   <map adobe-name="a188" win-ansi="0x00FB" unicode="0x27BB" unicodeName="HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW"/>
-   <map adobe-name="a189" win-ansi="0x00FC" unicode="0x27BC" unicodeName="WEDGE-TAILED RIGHTWARDS ARROW"/>
-   <map adobe-name="a190" win-ansi="0x00FD" unicode="0x27BD" unicodeName="HEAVY WEDGE-TAILED RIGHTWARDS ARROW"/>
-   <map adobe-name="a191" win-ansi="0x00FE" unicode="0x27BE" unicodeName="OPEN-OUTLINED RIGHTWARDS ARROW"/>
-   <!-- the following mappings are used for the Symbol font
-    TBD: remove doublettes  -->
-   <map adobe-name="universal" win-ansi="0x22" unicode="0x2200"/>
-   <map adobe-name="existential" win-ansi="0x24" unicode="0x2203"/>
-   <map adobe-name="suchthat" win-ansi="0x27" unicode="0x220B"/>
-   <map adobe-name="asteriskmath" win-ansi="0x2A" unicode="0x2217"/>
-   <map adobe-name="minus" win-ansi="0x2D" unicode="0x2212"/>
-   <map adobe-name="congruent" win-ansi="0x40" unicode="0x2245"/>
-   <map adobe-name="Alpha" win-ansi="0x41" unicode="0x0391"/>
-   <map adobe-name="Beta" win-ansi="0x42" unicode="0x0392"/>
-   <map adobe-name="Chi" win-ansi="0x43" unicode="0x03A7"/>
-   <map adobe-name="Delta" win-ansi="0x44" unicode="0x2206"/>
-   <map adobe-name="Epsilon" win-ansi="0x45" unicode="0x0395"/>
-   <map adobe-name="Phi" win-ansi="0x46" unicode="0x03A6"/>
-   <map adobe-name="Gamma" win-ansi="0x47" unicode="0x0393"/>
-   <map adobe-name="Eta" win-ansi="0x48" unicode="0x0397"/>
-   <map adobe-name="Iota" win-ansi="0x49" unicode="0x0399"/>
-   <map adobe-name="theta1" win-ansi="0x4A" unicode="0x03D1"/>
-   <map adobe-name="Kappa" win-ansi="0x4B" unicode="0x039A"/>
-   <map adobe-name="Lambda" win-ansi="0x4C" unicode="0x039B"/>
-   <map adobe-name="Mu" win-ansi="0x4D" unicode="0x039C"/>
-   <map adobe-name="Nu" win-ansi="0x4E" unicode="0x039D"/>
-   <map adobe-name="Omicron" win-ansi="0x4F" unicode="0x039F"/>
-   <map adobe-name="Pi" win-ansi="0x50" unicode="0x03A0"/>
-   <map adobe-name="Theta" win-ansi="0x51" unicode="0x0398"/>
-   <map adobe-name="Rho" win-ansi="0x52" unicode="0x03A1"/>
-   <map adobe-name="Sigma" win-ansi="0x53" unicode="0x03A3"/>
-   <map adobe-name="Tau" win-ansi="0x54" unicode="0x03A4"/>
-   <map adobe-name="Upsilon" win-ansi="0x55" unicode="0x03A5"/>
-   <map adobe-name="sigma1" win-ansi="0x56" unicode="0x03C2"/>
-   <map adobe-name="Omega" win-ansi="0x57" unicode="0x2126"/>
-   <map adobe-name="Xi" win-ansi="0x58" unicode="0x039E"/>
-   <map adobe-name="Psi" win-ansi="0x59" unicode="0x03A8"/>
-   <map adobe-name="Zeta" win-ansi="0x5A" unicode="0x0396"/>
-   <map adobe-name="therefore" win-ansi="0x5C" unicode="0x2234"/>
-   <map adobe-name="perpendicular" win-ansi="0x5E" unicode="0x22A5"/>
-   <map adobe-name="radicalex" win-ansi="0x60" unicode="0xF8E5"/>
-   <map adobe-name="alpha" win-ansi="0x61" unicode="0x03B1"/>
-   <map adobe-name="beta" win-ansi="0x62" unicode="0x03B2"/>
-   <map adobe-name="chi" win-ansi="0x63" unicode="0x03C7"/>
-   <map adobe-name="delta" win-ansi="0x64" unicode="0x03B4"/>
-   <map adobe-name="epsilon" win-ansi="0x65" unicode="0x03B5"/>
-   <map adobe-name="phi" win-ansi="0x66" unicode="0x03C6"/>
-   <map adobe-name="gamma" win-ansi="0x67" unicode="0x03B3"/>
-   <map adobe-name="eta" win-ansi="0x68" unicode="0x03B7"/>
-   <map adobe-name="iota" win-ansi="0x69" unicode="0x03B9"/>
-   <map adobe-name="phi1" win-ansi="0x6A" unicode="0x03D5"/>
-   <map adobe-name="kappa" win-ansi="0x6B" unicode="0x03BA"/>
-   <map adobe-name="lambda" win-ansi="0x6C" unicode="0x03BB"/>
-   <map adobe-name="nu" win-ansi="0x6E" unicode="0x03BD"/>
-   <map adobe-name="omicron" win-ansi="0x6F" unicode="0x03BF"/>
-   <map adobe-name="pi" win-ansi="0x70" unicode="0x03C0"/>
-   <map adobe-name="theta" win-ansi="0x71" unicode="0x03B8"/>
-   <map adobe-name="rho" win-ansi="0x72" unicode="0x03C1"/>
-   <map adobe-name="sigma" win-ansi="0x73" unicode="0x03C3"/>
-   <map adobe-name="tau" win-ansi="0x74" unicode="0x03C4"/>
-   <map adobe-name="upsilon" win-ansi="0x75" unicode="0x03C5"/>
-   <map adobe-name="omega1" win-ansi="0x76" unicode="0x03D6"/>
-   <map adobe-name="omega" win-ansi="0x77" unicode="0x03C9"/>
-   <map adobe-name="xi" win-ansi="0x78" unicode="0x03BE"/>
-   <map adobe-name="psi" win-ansi="0x79" unicode="0x03C8"/>
-   <map adobe-name="zeta" win-ansi="0x7A" unicode="0x03B6"/>
-   <map adobe-name="similar" win-ansi="0x7E" unicode="0x223C"/>
-   <map adobe-name="Upsilon1" win-ansi="0xA1" unicode="0x03D2"/>
-   <map adobe-name="minute" win-ansi="0xA2" unicode="0x2032"/>
-   <map adobe-name="lessequal" win-ansi="0xA3" unicode="0x2264"/>
-   <map adobe-name="fraction" win-ansi="0xA4" unicode="0x2044"/>
-   <map adobe-name="infinity" win-ansi="0xA5" unicode="0x221E"/>
-   <map adobe-name="florin" win-ansi="0xA6" unicode="0x0192"/>
-   <map adobe-name="club" win-ansi="0xA7" unicode="0x2663"/>
-   <map adobe-name="diamond" win-ansi="0xA8" unicode="0x2666"/>
-   <map adobe-name="heart" win-ansi="0xA9" unicode="0x2665"/>
-   <map adobe-name="spade" win-ansi="0xAA" unicode="0x2660"/>
-   <map adobe-name="arrowboth" win-ansi="0xAB" unicode="0x2194"/>
-   <map adobe-name="arrowleft" win-ansi="0xAC" unicode="0x2190"/>
-   <map adobe-name="arrowup" win-ansi="0xAD" unicode="0x2191"/>
-   <map adobe-name="arrowright" win-ansi="0xAE" unicode="0x2192"/>
-   <map adobe-name="arrowdown" win-ansi="0xAF" unicode="0x2193"/>
-   <map adobe-name="second" win-ansi="0xB2" unicode="0x2033"/>
-   <map adobe-name="greaterequal" win-ansi="0xB3" unicode="0x2265"/>
-   <map adobe-name="proportional" win-ansi="0xB5" unicode="0x221D"/>
-   <map adobe-name="partialdiff" win-ansi="0xB6" unicode="0x2202"/>
-   <map adobe-name="notequal" win-ansi="0xB9" unicode="0x2260"/>
-   <map adobe-name="equivalence" win-ansi="0xBA" unicode="0x2261"/>
-   <map adobe-name="approxequal" win-ansi="0xBB" unicode="0x2248"/>
-   <map adobe-name="arrowvertex" win-ansi="0xBD" unicode="0xF8E6"/>
-   <map adobe-name="arrowhorizex" win-ansi="0xBE" unicode="0xF8E7"/>
-   <map adobe-name="carriagereturn" win-ansi="0xBF" unicode="0x21B5"/>
-   <map adobe-name="aleph" win-ansi="0xC0" unicode="0x2135"/>
-   <map adobe-name="Ifraktur" win-ansi="0xC1" unicode="0x2111"/>
-   <map adobe-name="Rfraktur" win-ansi="0xC2" unicode="0x211C"/>
-   <map adobe-name="weierstrass" win-ansi="0xC3" unicode="0x2118"/>
-   <map adobe-name="circlemultiply" win-ansi="0xC4" unicode="0x2297"/>
-   <map adobe-name="circleplus" win-ansi="0xC5" unicode="0x2295"/>
-   <map adobe-name="emptyset" win-ansi="0xC6" unicode="0x2205"/>
-   <map adobe-name="intersection" win-ansi="0xC7" unicode="0x2229"/>
-   <map adobe-name="union" win-ansi="0xC8" unicode="0x222A"/>
-   <map adobe-name="propersuperset" win-ansi="0xC9" unicode="0x2283"/>
-   <map adobe-name="reflexsuperset" win-ansi="0xCA" unicode="0x2287"/>
-   <map adobe-name="notsubset" win-ansi="0xCB" unicode="0x2284"/>
-   <map adobe-name="propersubset" win-ansi="0xCC" unicode="0x2282"/>
-   <map adobe-name="reflexsubset" win-ansi="0xCD" unicode="0x2286"/>
-   <map adobe-name="element" win-ansi="0xCE" unicode="0x2208"/>
-   <map adobe-name="notelement" win-ansi="0xCF" unicode="0x2209"/>
-   <map adobe-name="angle" win-ansi="0xD0" unicode="0x2220"/>
-   <map adobe-name="gradient" win-ansi="0xD1" unicode="0x2207"/>
-   <map adobe-name="registerserif" win-ansi="0xD2" unicode="0xF6DA"/>
-   <map adobe-name="copyrightserif" win-ansi="0xD3" unicode="0xF6D9"/>
-   <map adobe-name="trademarkserif" win-ansi="0xD4" unicode="0xF6DB"/>
-   <map adobe-name="product" win-ansi="0xD5" unicode="0x220F"/>
-   <map adobe-name="radical" win-ansi="0xD6" unicode="0x221A"/>
-   <map adobe-name="dotmath" win-ansi="0xD7" unicode="0x22C5"/>
-   <map adobe-name="logicaland" win-ansi="0xD9" unicode="0x2227"/>
-   <map adobe-name="logicalor" win-ansi="0xDA" unicode="0x2228"/>
-   <map adobe-name="arrowdblboth" win-ansi="0xDB" unicode="0x21D4"/>
-   <map adobe-name="arrowdblleft" win-ansi="0xDC" unicode="0x21D0"/>
-   <map adobe-name="arrowdblup" win-ansi="0xDD" unicode="0x21D1"/>
-   <map adobe-name="arrowdblright" win-ansi="0xDE" unicode="0x21D2"/>
-   <map adobe-name="arrowdbldown" win-ansi="0xDF" unicode="0x21D3"/>
-   <map adobe-name="lozenge" win-ansi="0xE0" unicode="0x25CA"/>
-   <map adobe-name="angleleft" win-ansi="0xE1" unicode="0x2329"/>
-   <map adobe-name="registersans" win-ansi="0xE2" unicode="0xF8E8"/>
-   <map adobe-name="copyrightsans" win-ansi="0xE3" unicode="0xF8E9"/>
-   <map adobe-name="trademarksans" win-ansi="0xE4" unicode="0xF8EA"/>
-   <map adobe-name="summation" win-ansi="0xE5" unicode="0x2211"/>
-   <map adobe-name="parenlefttp" win-ansi="0xE6" unicode="0xF8EB"/>
-   <map adobe-name="parenleftex" win-ansi="0xE7" unicode="0xF8EC"/>
-   <map adobe-name="parenleftbt" win-ansi="0xE8" unicode="0xF8ED"/>
-   <map adobe-name="bracketlefttp" win-ansi="0xE9" unicode="0xF8EE"/>
-   <map adobe-name="bracketleftex" win-ansi="0xEA" unicode="0xF8EF"/>
-   <map adobe-name="bracketleftbt" win-ansi="0xEB" unicode="0xF8F0"/>
-   <map adobe-name="bracelefttp" win-ansi="0xEC" unicode="0xF8F1"/>
-   <map adobe-name="braceleftmid" win-ansi="0xED" unicode="0xF8F2"/>
-   <map adobe-name="braceleftbt" win-ansi="0xEE" unicode="0xF8F3"/>
-   <map adobe-name="braceex" win-ansi="0xEF" unicode="0xF8F4"/>
-   <map adobe-name="angleright" win-ansi="0xF1" unicode="0x232A"/>
-   <map adobe-name="integral" win-ansi="0xF2" unicode="0x222B"/>
-   <map adobe-name="integraltp" win-ansi="0xF3" unicode="0x2320"/>
-   <map adobe-name="integralex" win-ansi="0xF4" unicode="0xF8F5"/>
-   <map adobe-name="integralbt" win-ansi="0xF5" unicode="0x2321"/>
-   <map adobe-name="parenrighttp" win-ansi="0xF6" unicode="0xF8F6"/>
-   <map adobe-name="parenrightex" win-ansi="0xF7" unicode="0xF8F7"/>
-   <map adobe-name="parenrightbt" win-ansi="0xF8" unicode="0xF8F8"/>
-   <map adobe-name="bracketrighttp" win-ansi="0xF9" unicode="0xF8F9"/>
-   <map adobe-name="bracketrightex" win-ansi="0xFA" unicode="0xF8FA"/>
-   <map adobe-name="bracketrightbt" win-ansi="0xFB" unicode="0xF8FB"/>
-   <map adobe-name="bracerighttp" win-ansi="0xFC" unicode="0xF8FC"/>
-   <map adobe-name="bracerightmid" win-ansi="0xFD" unicode="0xF8FD"/>
-   <map adobe-name="bracerightbt" win-ansi="0xFE" unicode="0xF8FE"/>
-   <map adobe-name="apple" win-ansi="-1" unicode="0xF8FE"/>
-</font-mappings>
-<!--  I couldn't find the following characters in the unicode tables -->
-<!--
-   <map adobe-name="center" win-ansi="-1" unicode=""/>
-   <map adobe-name="dectab" win-ansi="-1" unicode=""/>
-   <map adobe-name="down" win-ansi="-1" unicode=""/>
-   <map adobe-name="format" win-ansi="-1" unicode=""/>
-   <map adobe-name="graybox" win-ansi="-1" unicode=""/>
-   <map adobe-name="indent" win-ansi="-1" unicode=""/>
-   <map adobe-name="largebullet" win-ansi="-1" unicode=""/>
-   <map adobe-name="left" win-ansi="-1" unicode=""/>
-   <map adobe-name="ll" win-ansi="-1" unicode=""/>
-   <map adobe-name="LL" win-ansi="-1" unicode=""/>
-   <map adobe-name="merge" win-ansi="-1" unicode=""/>
-   <map adobe-name="notegraphic" win-ansi="-1" unicode=""/>
-   <map adobe-name="overscore" win-ansi="-1" unicode=""/>
-   <map adobe-name="prescription" win-ansi="-1" unicode=""/>
-   <map adobe-name="return" win-ansi="-1" unicode=""/>
-   <map adobe-name="square" win-ansi="-1" unicode=""/>
-   <map adobe-name="stop" win-ansi="-1" unicode=""/>
-   <map adobe-name="tab" win-ansi="-1" unicode=""/>
-   <map adobe-name="up" win-ansi="-1" unicode=""/>
-   <map adobe-name="zer" win-ansi="-1" unicode=""/>
-
--->
diff --git a/src/codegen/code-point-mapping.xsl b/src/codegen/code-point-mapping.xsl
deleted file mode 100644 (file)
index 7d0d6cd..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-<!--
-  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$ -->
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-  <xsl:output method="text"/>
-  <xsl:variable name='glyphlists'
-                select="document('glyphlist.xml')/glyphlist-set"/>
-
-  <xsl:template match="encoding-set">
-package org.apache.fop.fonts;
-
-import java.util.Map;
-import java.util.Collections;
-
-public class CodePointMapping {
-    private char[] latin1Map;
-    private char[] characters;
-    private char[] codepoints;
-    private CodePointMapping(int [] table) {
-        int nonLatin1 = 0;
-        latin1Map = new char[256];
-        for(int i = 0; i &lt; table.length; i += 2) {
-           if(table[i+1] &lt; 256)
-               latin1Map[table[i+1]] = (char) table[i];
-           else
-               ++nonLatin1;
-        }
-        characters = new char[nonLatin1];
-        codepoints = new char[nonLatin1];
-        int top = 0;
-        for(int i = 0; i &lt; table.length; i += 2) {
-            char c = (char) table[i+1];
-            if(c >= 256) {
-               ++top;
-               for(int j = top - 1; j >= 0; --j) {
-                   if(j > 0 &amp;&amp; characters[j-1] >= c) {
-                       characters[j] = characters[j-1];
-                       codepoints[j] = codepoints[j-1];
-                   } else {
-                       characters[j] = c;
-                       codepoints[j] = (char) table[i];
-                       break;
-                   }
-               }
-            }
-        }
-    }
-    public final char mapChar(char c) {
-        if(c &lt; 256) {
-            return latin1Map[c];
-        } else {
-            int bot = 0, top = characters.length - 1;
-            while(top >= bot) {
-                int mid = (bot + top) / 2;
-                char mc = characters[mid];
-
-                if(c == mc)
-                    return codepoints[mid];
-                else if(c &lt; mc)
-                    top = mid - 1;
-                else
-                    bot = mid + 1;
-            }
-            return 0;
-        }
-    }
-
-    private static Map mappings;
-    static {
-        mappings = Collections.synchronizedMap(new java.util.HashMap());
-    }
-    public static CodePointMapping getMapping(String encoding) {
-        CodePointMapping mapping = (CodePointMapping) mappings.get(encoding);
-        if(mapping != null) {
-            return mapping;
-        } <xsl:apply-templates mode="get"/>
-        else {
-            return null;
-        }
-    }
-<xsl:apply-templates mode="table"/>
-}
-  </xsl:template>
-
-  <xsl:template match="encoding" mode="get">
-        else if(encoding.equals("<xsl:value-of select="@id"/>")) {
-            mapping = new CodePointMapping(enc<xsl:value-of select="@id"/>);
-            mappings.put("<xsl:value-of select="@id"/>", mapping);
-            return mapping;
-        }
-  </xsl:template>
-
-  <xsl:template match="encoding" mode="table">
-    <xsl:variable name="glyphlist-name" select="@glyphlist"/>
-    <xsl:variable name="glyphlist"
-                  select="$glyphlists/glyphlist[@id=$glyphlist-name]"/>
-    private static final int[] enc<xsl:value-of select="@id"/>
-        = {<xsl:for-each select="glyph">
-  <xsl:variable name="codepoint" select="@codepoint"/>
-  <xsl:variable name="name" select="@name"/><xsl:for-each select="$glyphlist/glyph[@name=$name]">
-            0x<xsl:value-of select="$codepoint"/>, 0x<xsl:value-of select="@codepoint"/>, // <xsl:value-of select="$name"/>
-</xsl:for-each></xsl:for-each>
-        };
-  </xsl:template>
-</xsl:stylesheet>
diff --git a/src/codegen/colorkw.xml b/src/codegen/colorkw.xml
deleted file mode 100644 (file)
index 0a0c271..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-<!--
-  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$ -->
-<toto>
-<keyword-equiv match="aliceblue">#f0f8ff</keyword-equiv>
-<keyword-equiv match="antiquewhite">#faebd7</keyword-equiv>
-<keyword-equiv match="aqua">#00ffff</keyword-equiv>
-<keyword-equiv match="aquamarine">#7fffd4</keyword-equiv>
-<keyword-equiv match="azure">#f0ffff</keyword-equiv>
-<keyword-equiv match="beige">#f5f5dc</keyword-equiv>
-<keyword-equiv match="bisque">#ffe4c4</keyword-equiv>
-<keyword-equiv match="black">#000000</keyword-equiv>
-<keyword-equiv match="blanchedalmond">#ffebcd</keyword-equiv>
-<keyword-equiv match="blue">#0000ff</keyword-equiv>
-<keyword-equiv match="blueviolet">#8a2be2</keyword-equiv>
-<keyword-equiv match="brown">#a52a2a</keyword-equiv>
-<keyword-equiv match="burlywood">#deb887</keyword-equiv>
-<keyword-equiv match="cadetblue">#5f9ea0</keyword-equiv>
-<keyword-equiv match="chartreuse">#7fff00</keyword-equiv>
-<keyword-equiv match="chocolate">#d2691e</keyword-equiv>
-<keyword-equiv match="coral">#ff7f50</keyword-equiv>
-<keyword-equiv match="cornflowerblue">#6495ed</keyword-equiv>
-<keyword-equiv match="cornsilk">#fff8dc</keyword-equiv>
-<keyword-equiv match="crimson">#dc143c</keyword-equiv>
-<keyword-equiv match="cyan">#00ffff</keyword-equiv>
-<keyword-equiv match="darkblue">#00008b</keyword-equiv>
-<keyword-equiv match="darkcyan">#008b8b</keyword-equiv>
-<keyword-equiv match="darkgoldenrod">#b8860b</keyword-equiv>
-<keyword-equiv match="darkgray">#a9a9a9</keyword-equiv>
-<keyword-equiv match="darkgreen">#006400</keyword-equiv>
-<keyword-equiv match="darkgrey">#a9a9a9</keyword-equiv>
-<keyword-equiv match="darkkhaki">#bdb76b</keyword-equiv>
-<keyword-equiv match="darkmagenta">#8b008b</keyword-equiv>
-<keyword-equiv match="darkolivegreen">#556b2f</keyword-equiv>
-<keyword-equiv match="darkorange">#ff8c00</keyword-equiv>
-<keyword-equiv match="darkorchid">#9932cc</keyword-equiv>
-<keyword-equiv match="darkred">#8b0000</keyword-equiv>
-<keyword-equiv match="darksalmon">#e9967a</keyword-equiv>
-<keyword-equiv match="darkseagreen">#8fbc8f</keyword-equiv>
-<keyword-equiv match="darkslateblue">#483d8b</keyword-equiv>
-<keyword-equiv match="darkslategray">#2f4f4f</keyword-equiv>
-<keyword-equiv match="darkslategrey">#2f4f4f</keyword-equiv>
-<keyword-equiv match="darkturquoise">#00ced1</keyword-equiv>
-<keyword-equiv match="darkviolet">#9400d3</keyword-equiv>
-<keyword-equiv match="deeppink">#ff1493</keyword-equiv>
-<keyword-equiv match="deepskyblue">#00bfff</keyword-equiv>
-<keyword-equiv match="dimgray">#696969</keyword-equiv>
-<keyword-equiv match="dimgrey">#696969</keyword-equiv>
-<keyword-equiv match="dodgerblue">#1e90ff</keyword-equiv>
-<keyword-equiv match="firebrick">#b22222</keyword-equiv>
-<keyword-equiv match="floralwhite">#fffaf0</keyword-equiv>
-<keyword-equiv match="forestgreen">#228b22</keyword-equiv>
-<keyword-equiv match="fuchsia">#ff00ff</keyword-equiv>
-<keyword-equiv match="gainsboro">#dcdcdc</keyword-equiv>
-<keyword-equiv match="lightpink">#ffb6c1</keyword-equiv>
-<keyword-equiv match="lightsalmon">#ffa07a</keyword-equiv>
-<keyword-equiv match="lightseagreen">#20b2aa</keyword-equiv>
-<keyword-equiv match="lightskyblue">#87cefa</keyword-equiv>
-<keyword-equiv match="lightslategray">#778899</keyword-equiv>
-<keyword-equiv match="lightslategrey">#778899</keyword-equiv>
-<keyword-equiv match="lightsteelblue">#b0c4de</keyword-equiv>
-<keyword-equiv match="lightyellow">#ffffe0</keyword-equiv>
-<keyword-equiv match="lime">#00ff00</keyword-equiv>
-<keyword-equiv match="limegreen">#32cd32</keyword-equiv>
-<keyword-equiv match="linen">#faf0e6</keyword-equiv>
-<keyword-equiv match="magenta">#ff00ff</keyword-equiv>
-<keyword-equiv match="maroon">#800000</keyword-equiv>
-<keyword-equiv match="mediumaquamarine">#66cdaa</keyword-equiv>
-<keyword-equiv match="mediumblue">#0000cd</keyword-equiv>
-<keyword-equiv match="mediumorchid">#ba55d3</keyword-equiv>
-<keyword-equiv match="mediumpurple">#9370db</keyword-equiv>
-<keyword-equiv match="mediumseagreen">#3cb371</keyword-equiv>
-<keyword-equiv match="mediumslateblue">#7b68ee</keyword-equiv>
-<keyword-equiv match="mediumspringgreen">#00fa9a</keyword-equiv>
-<keyword-equiv match="mediumturquoise">#48d1cc</keyword-equiv>
-<keyword-equiv match="mediumvioletred">#c71585</keyword-equiv>
-<keyword-equiv match="midnightblue">#191970</keyword-equiv>
-<keyword-equiv match="mintcream">#f5fffa</keyword-equiv>
-<keyword-equiv match="mistyrose">#ffe4e1</keyword-equiv>
-<keyword-equiv match="moccasin">#ffe4b5</keyword-equiv>
-<keyword-equiv match="navajowhite">#ffdead</keyword-equiv>
-<keyword-equiv match="navy">#000080</keyword-equiv>
-<keyword-equiv match="oldlace">#fdf5e6</keyword-equiv>
-<keyword-equiv match="olive">#808000</keyword-equiv>
-<keyword-equiv match="olivedrab">#6b8e23</keyword-equiv>
-<keyword-equiv match="orange">#ffa500</keyword-equiv>
-<keyword-equiv match="orangered">#ff4500</keyword-equiv>
-<keyword-equiv match="orchid">#da70d6</keyword-equiv>
-<keyword-equiv match="palegoldenrod">#eee8aa</keyword-equiv>
-<keyword-equiv match="palegreen">#98fb98</keyword-equiv>
-<keyword-equiv match="paleturquoise">#afeeee</keyword-equiv>
-<keyword-equiv match="palevioletred">#db7093</keyword-equiv>
-<keyword-equiv match="papayawhip">#ffefd5</keyword-equiv>
-<keyword-equiv match="peachpuff">#ffdab9</keyword-equiv>
-<keyword-equiv match="peru">#cd853f</keyword-equiv>
-<keyword-equiv match="pink">#ffc0cb</keyword-equiv>
-<keyword-equiv match="plum">#dda0dd</keyword-equiv>
-<keyword-equiv match="powderblue">#b0e0e6</keyword-equiv>
-<keyword-equiv match="purple">#800080</keyword-equiv>
-<keyword-equiv match="red">#ff0000</keyword-equiv>
-<keyword-equiv match="rosybrown">#bc8f8f</keyword-equiv>
-<keyword-equiv match="royalblue">#4169e1</keyword-equiv>
-<keyword-equiv match="saddlebrown">#8b4513</keyword-equiv>
-<keyword-equiv match="salmon">#fa8072</keyword-equiv>
-<keyword-equiv match="ghostwhite">#f8f8ff</keyword-equiv>
-<keyword-equiv match="gold">#ffd700</keyword-equiv>
-<keyword-equiv match="goldenrod">#daa520</keyword-equiv>
-<keyword-equiv match="gray">#808080</keyword-equiv>
-<keyword-equiv match="grey">#808080</keyword-equiv>
-<keyword-equiv match="green">#008000</keyword-equiv>
-<keyword-equiv match="greenyellow">#adff2f</keyword-equiv>
-<keyword-equiv match="honeydew">#f0fff0</keyword-equiv>
-<keyword-equiv match="hotpink">#ff69b4</keyword-equiv>
-<keyword-equiv match="indianred">#cd5c5c</keyword-equiv>
-<keyword-equiv match="indigo">#4b0082</keyword-equiv>
-<keyword-equiv match="ivory">#fffff0</keyword-equiv>
-<keyword-equiv match="khaki">#f0e68c</keyword-equiv>
-<keyword-equiv match="lavender">#e6e6fa</keyword-equiv>
-<keyword-equiv match="lavenderblush">#fff0f5</keyword-equiv>
-<keyword-equiv match="lawngreen">#7cfc00</keyword-equiv>
-<keyword-equiv match="lemonchiffon">#fffacd</keyword-equiv>
-<keyword-equiv match="lightblue">#add8e6</keyword-equiv>
-<keyword-equiv match="lightcoral">#f08080</keyword-equiv>
-<keyword-equiv match="lightcyan">#e0ffff</keyword-equiv>
-<keyword-equiv match="lightgoldenrodyellow">#fafad2</keyword-equiv>
-<keyword-equiv match="lightgray">#d3d3d3</keyword-equiv>
-<keyword-equiv match="lightgreen">#90ee90</keyword-equiv>
-<keyword-equiv match="lightgrey">#d3d3d3</keyword-equiv>
-<keyword-equiv match="sandybrown">#f4a460</keyword-equiv>
-<keyword-equiv match="seagreen">#2e8b57</keyword-equiv>
-<keyword-equiv match="seashell">#fff5ee</keyword-equiv>
-<keyword-equiv match="sienna">#a0522d</keyword-equiv>
-<keyword-equiv match="silver">#c0c0c0</keyword-equiv>
-<keyword-equiv match="skyblue">#87ceeb</keyword-equiv>
-<keyword-equiv match="slateblue">#6a5acd</keyword-equiv>
-<keyword-equiv match="slategray">#708090</keyword-equiv>
-<keyword-equiv match="slategrey">#708090</keyword-equiv>
-<keyword-equiv match="snow">#fffafa</keyword-equiv>
-<keyword-equiv match="springgreen">#00ff7f</keyword-equiv>
-<keyword-equiv match="steelblue">#4682b4</keyword-equiv>
-<keyword-equiv match="tan">#d2b48c</keyword-equiv>
-<keyword-equiv match="teal">#008080</keyword-equiv>
-<keyword-equiv match="thistle">#d8bfd8</keyword-equiv>
-<keyword-equiv match="tomato">#ff6347</keyword-equiv>
-<keyword-equiv match="turquoise">#40e0d0</keyword-equiv>
-<keyword-equiv match="violet">#ee82ee</keyword-equiv>
-<keyword-equiv match="wheat">#f5deb3</keyword-equiv>
-<keyword-equiv match="white">#ffffff</keyword-equiv>
-<keyword-equiv match="whitesmoke">#f5f5f5</keyword-equiv>
-<keyword-equiv match="yellow">#ffff00</keyword-equiv>
-<keyword-equiv match="yellowgreen">#9acd32</keyword-equiv>
-</toto>
diff --git a/src/codegen/constants.xml b/src/codegen/constants.xml
deleted file mode 100644 (file)
index d477506..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  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$ -->
-<allprops>
-<propfile>foproperties.xml</propfile>
-<elementfile>foelements.xml</elementfile>
-</allprops>
diff --git a/src/codegen/constants.xsl b/src/codegen/constants.xsl
deleted file mode 100644 (file)
index af51489..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-<!--
-  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$ -->
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<xsl:include href="./propinc.xsl"/>
-
-<xsl:output method="text" />
-
-<xsl:template match="allprops">
-<xsl:variable name="constlist">
-  <xsl:for-each select="document(propfile)//generic-property-list
-    //enumeration/value">
-    <xsl:sort select="@const"/>
-  <xsl:value-of select="@const"/>:</xsl:for-each>
-</xsl:variable>
-
-<xsl:variable name="propertylist">
-  <xsl:for-each select="document(propfile)//generic-property-list//
-    property[not(@type = 'generic')]">
-    <xsl:sort select="name"/>
-    <xsl:text>PR_</xsl:text>
-    <xsl:call-template name="makeEnumConstant">
-      <xsl:with-param name="propstr" select="name" />
-    </xsl:call-template>
-    <xsl:text>:</xsl:text>
-  </xsl:for-each>
-</xsl:variable>
-
-<xsl:variable name="compoundpropertylist">
-  <xsl:for-each select="document(propfile)//generic-property-list//
-    property/compound/subproperty">
-    <xsl:sort select="name"/>
-    <xsl:text>CP_</xsl:text>
-    <xsl:call-template name="makeEnumConstant">
-      <xsl:with-param name="propstr" select="name" />
-    </xsl:call-template>
-    <xsl:text>:</xsl:text>
-  </xsl:for-each>
-</xsl:variable>
-
-<xsl:variable name="elementlist">
-  <xsl:for-each select="document(elementfile)//element">
-    <xsl:sort select="name"/>
-    <xsl:text>FO_</xsl:text>
-    <xsl:call-template name="makeEnumConstant">
-      <xsl:with-param name="propstr" select="name" />
-    </xsl:call-template>
-    <xsl:text>:</xsl:text>
-  </xsl:for-each>
-</xsl:variable>
-
-<xsl:text>
-
-package org.apache.fop.fo;
-
-public interface Constants {</xsl:text>
-
-    // element constants
-<xsl:call-template name="sortconsts">
-  <xsl:with-param name="consts" select="$elementlist"/>
-  <xsl:with-param name="counter" select="'ELEMENT'"/>
-</xsl:call-template>
-
-    // Masks
-    int COMPOUND_SHIFT = 9;
-    int PROPERTY_MASK = (1 &lt;&lt; COMPOUND_SHIFT)-1;
-    int COMPOUND_MASK = ~PROPERTY_MASK;
-    int COMPOUND_COUNT = 11;
-    
-    // property constants
-<xsl:call-template name="sortconsts">
-  <xsl:with-param name="consts" select="$propertylist"/>
-  <xsl:with-param name="counter" select="'PROPERTY'"/>
-</xsl:call-template>
-
-    // compound property constants
-<xsl:call-template name="sortconsts">
-  <xsl:with-param name="consts" select="$compoundpropertylist"/>
-  <xsl:with-param name="suffix" select="' &lt;&lt; COMPOUND_SHIFT'"/>
-</xsl:call-template>
-
-    // Enumeration constants
-<xsl:call-template name="sortconsts">
-  <xsl:with-param name="consts" select="$constlist"/>
-</xsl:call-template>
-
-   // Enumeration Interfaces
-   
-    public interface GenericBooleanInterface {
-        int TRUE =  Constants.TRUE;
-        int FALSE =  Constants.FALSE;
-    }
-     
-    public interface GenericBorderStyleInterface {
-        int NONE =  Constants.NONE;
-        int HIDDEN =  Constants.HIDDEN;
-        int DOTTED =  Constants.DOTTED;
-        int DASHED =  Constants.DASHED;
-        int SOLID =  Constants.SOLID;
-        int DOUBLE =  Constants.DOUBLE;
-        int GROOVE =  Constants.GROOVE;
-        int RIDGE =  Constants.RIDGE;
-        int INSET =  Constants.INSET;
-        int OUTSET =  Constants.OUTSET;
-    }
-    
-    public interface GenericBreakInterface {
-        int AUTO =  Constants.AUTO;
-        int COLUMN =  Constants.COLUMN;
-        int PAGE =  Constants.PAGE;
-        int EVEN_PAGE =  Constants.EVEN_PAGE;
-        int ODD_PAGE =  Constants.ODD_PAGE;
-    }
-    
-    public interface GenericCondBorderWidthInterface {
-        public interface Conditionality {
-            int DISCARD = Constants.DISCARD;
-            int RETAIN = Constants.RETAIN;
-        }
-    }
-    
-    public interface GenericCondPaddingInterface {
-        public interface Conditionality {
-            int DISCARD = Constants.DISCARD;
-            int RETAIN = Constants.RETAIN;
-        }
-    }
-        
-    public interface GenericKeepInterface {
-        public interface WithinPage {
-            int AUTO = Constants.AUTO;
-            int ALWAYS = Constants.ALWAYS;
-        }
-        public interface WithinLine {
-            int AUTO = Constants.AUTO;
-            int ALWAYS = Constants.ALWAYS;
-        }
-        public interface WithinColumn {
-            int AUTO = Constants.AUTO;
-            int ALWAYS = Constants.ALWAYS;
-        }
-    }
-    
-    public interface GenericSpaceInterface {
-        public interface Precedence {
-            int FORCE = Constants.FORCE;
-        }
-        public interface Conditionality {
-            int DISCARD = Constants.DISCARD;
-            int RETAIN = Constants.RETAIN;
-        }
-    }
-   
-<xsl:apply-templates select = "document(propfile)//property[not(@type='generic')]">
-   <xsl:sort select="name"/>
-</xsl:apply-templates>
-
-<xsl:text>
-}
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="property">
-  <xsl:variable name="classname">
-    <xsl:choose>
-      <xsl:when test="class-name">
-        <xsl:value-of select="class-name"/>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:call-template name="makeClassName">
-          <xsl:with-param name="propstr" select="name"/>
-        </xsl:call-template>
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:variable>
-  <xsl:variable name="bEnum">
-    <xsl:call-template name="hasEnum"/>
-  </xsl:variable>
-  <xsl:variable name="bSubpropEnum">
-    <xsl:call-template name="hasSubpropEnum"/>
-  </xsl:variable>
-
-  <xsl:if test="$bEnum='true' or contains($bSubpropEnum, 'true')">
-    <!--redirect:write select="concat($classname, '.java')"-->
-      <!-- Handle enumeration values -->
-      <xsl:text>
-    public interface </xsl:text>
-      <xsl:value-of select="$classname"/>
-      <xsl:if test="use-generic">
-        <xsl:text> extends </xsl:text>
-        <xsl:value-of select="use-generic"/>
-        <xsl:text>Interface</xsl:text>
-      </xsl:if>
-      <xsl:text> {</xsl:text>
-      <xsl:for-each select="enumeration/value">
-        <xsl:text>
-        int </xsl:text>
-        <xsl:value-of select="@const"/>
-        <xsl:text> = Constants.</xsl:text>
-        <xsl:value-of select="@const"/>
-        <xsl:text>;</xsl:text>
-      </xsl:for-each>
-      <xsl:text> }
-</xsl:text>
-  </xsl:if>
-</xsl:template>
-
-<xsl:template name="sortconsts">
-<xsl:param name="consts"/>
-<xsl:param name="prevconst"/>
-<xsl:param name="num" select="1"/>
-<xsl:param name="suffix" select="''"/>
-<xsl:param name="counter" select="''"/>
-<xsl:variable name="cval" select="substring-before($consts,':')"/>
-<xsl:choose>
-  <xsl:when test="$consts = ''">
-    <xsl:if test="$counter != ''">
-      <xsl:text>
-    int </xsl:text>
-      <xsl:value-of select="$counter"/>_COUNT = <xsl:value-of select="$num - 1"/>;
-    </xsl:if>
-  </xsl:when>
-  <xsl:when test="$cval = $prevconst">
-    <xsl:call-template name="sortconsts">
-      <xsl:with-param name="consts" select="substring-after($consts,concat($cval, ':'))"/>
-      <xsl:with-param name="num" select="$num"/>
-      <xsl:with-param name="prevconst" select="$cval"/>
-      <xsl:with-param name="counter" select="$counter"/>
-      <xsl:with-param name="suffix" select="$suffix"/>
-    </xsl:call-template>
-  </xsl:when>
-  <xsl:otherwise>
-    <xsl:text>
-    int </xsl:text>
-    <xsl:value-of select="$cval"/>
-    <xsl:text> = </xsl:text>
-    <xsl:value-of select="$num"/>
-    <xsl:value-of select="$suffix"/>
-    <xsl:text>;</xsl:text>
-    <xsl:call-template name="sortconsts">
-      <xsl:with-param name="consts" select="substring-after($consts,concat($cval, ':'))"/>
-      <xsl:with-param name="num" select="$num + 1"/>
-      <xsl:with-param name="prevconst" select="$cval"/>
-      <xsl:with-param name="counter" select="$counter"/>
-      <xsl:with-param name="suffix" select="$suffix"/>
-    </xsl:call-template>
-  </xsl:otherwise>
-</xsl:choose>
-</xsl:template>
-</xsl:stylesheet>
diff --git a/src/codegen/encodings.xml b/src/codegen/encodings.xml
deleted file mode 100644 (file)
index 85aabb2..0000000
+++ /dev/null
@@ -1,1650 +0,0 @@
-<?xml version='1.0'?>
-<!--
-  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$ -->
-<!DOCTYPE encoding-set [
-  <!ELEMENT encoding-set (encoding+)>
-  <!ELEMENT encoding (glyph+)>
-  <!ATTLIST encoding id ID #REQUIRED glyphlist CDATA "AGL">
-  <!ELEMENT glyph EMPTY>
-  <!ATTLIST glyph codepoint CDATA #REQUIRED name CDATA #REQUIRED>
-]>
-<encoding-set>
-  <encoding id='StandardEncoding' glyphlist='AGL'>
-    <glyph codepoint='20' name='space'/>
-    <glyph codepoint='21' name='exclam'/>
-    <glyph codepoint='22' name='quotedbl'/>
-    <glyph codepoint='23' name='numbersign'/>
-    <glyph codepoint='24' name='dollar'/>
-    <glyph codepoint='25' name='percent'/>
-    <glyph codepoint='26' name='ampersand'/>
-    <glyph codepoint='27' name='quoteright'/>
-    <glyph codepoint='28' name='parenleft'/>
-    <glyph codepoint='29' name='parenright'/>
-    <glyph codepoint='2a' name='asterisk'/>
-    <glyph codepoint='2b' name='plus'/>
-    <glyph codepoint='2c' name='comma'/>
-    <glyph codepoint='2d' name='hyphen'/>
-    <glyph codepoint='2e' name='period'/>
-    <glyph codepoint='2f' name='slash'/>
-    <glyph codepoint='30' name='zero'/>
-    <glyph codepoint='31' name='one'/>
-    <glyph codepoint='32' name='two'/>
-    <glyph codepoint='33' name='three'/>
-    <glyph codepoint='34' name='four'/>
-    <glyph codepoint='35' name='five'/>
-    <glyph codepoint='36' name='six'/>
-    <glyph codepoint='37' name='seven'/>
-    <glyph codepoint='38' name='eight'/>
-    <glyph codepoint='39' name='nine'/>
-    <glyph codepoint='3a' name='colon'/>
-    <glyph codepoint='3b' name='semicolon'/>
-    <glyph codepoint='3c' name='less'/>
-    <glyph codepoint='3d' name='equal'/>
-    <glyph codepoint='3e' name='greater'/>
-    <glyph codepoint='3f' name='question'/>
-    <glyph codepoint='40' name='at'/>
-    <glyph codepoint='41' name='A'/>
-    <glyph codepoint='42' name='B'/>
-    <glyph codepoint='43' name='C'/>
-    <glyph codepoint='44' name='D'/>
-    <glyph codepoint='45' name='E'/>
-    <glyph codepoint='46' name='F'/>
-    <glyph codepoint='47' name='G'/>
-    <glyph codepoint='48' name='H'/>
-    <glyph codepoint='49' name='I'/>
-    <glyph codepoint='4a' name='J'/>
-    <glyph codepoint='4b' name='K'/>
-    <glyph codepoint='4c' name='L'/>
-    <glyph codepoint='4d' name='M'/>
-    <glyph codepoint='4e' name='N'/>
-    <glyph codepoint='4f' name='O'/>
-    <glyph codepoint='50' name='P'/>
-    <glyph codepoint='51' name='Q'/>
-    <glyph codepoint='52' name='R'/>
-    <glyph codepoint='53' name='S'/>
-    <glyph codepoint='54' name='T'/>
-    <glyph codepoint='55' name='U'/>
-    <glyph codepoint='56' name='V'/>
-    <glyph codepoint='57' name='W'/>
-    <glyph codepoint='58' name='X'/>
-    <glyph codepoint='59' name='Y'/>
-    <glyph codepoint='5a' name='Z'/>
-    <glyph codepoint='5b' name='bracketleft'/>
-    <glyph codepoint='5c' name='backslash'/>
-    <glyph codepoint='5d' name='bracketright'/>
-    <glyph codepoint='5e' name='asciicircum'/>
-    <glyph codepoint='5f' name='underscore'/>
-    <glyph codepoint='60' name='quoteleft'/>
-    <glyph codepoint='61' name='a'/>
-    <glyph codepoint='62' name='b'/>
-    <glyph codepoint='63' name='c'/>
-    <glyph codepoint='64' name='d'/>
-    <glyph codepoint='65' name='e'/>
-    <glyph codepoint='66' name='f'/>
-    <glyph codepoint='67' name='g'/>
-    <glyph codepoint='68' name='h'/>
-    <glyph codepoint='69' name='i'/>
-    <glyph codepoint='6a' name='j'/>
-    <glyph codepoint='6b' name='k'/>
-    <glyph codepoint='6c' name='l'/>
-    <glyph codepoint='6d' name='m'/>
-    <glyph codepoint='6e' name='n'/>
-    <glyph codepoint='6f' name='o'/>
-    <glyph codepoint='70' name='p'/>
-    <glyph codepoint='71' name='q'/>
-    <glyph codepoint='72' name='r'/>
-    <glyph codepoint='73' name='s'/>
-    <glyph codepoint='74' name='t'/>
-    <glyph codepoint='75' name='u'/>
-    <glyph codepoint='76' name='v'/>
-    <glyph codepoint='77' name='w'/>
-    <glyph codepoint='78' name='x'/>
-    <glyph codepoint='79' name='y'/>
-    <glyph codepoint='7a' name='z'/>
-    <glyph codepoint='7b' name='braceleft'/>
-    <glyph codepoint='7c' name='bar'/>
-    <glyph codepoint='7d' name='braceright'/>
-    <glyph codepoint='7e' name='asciitilde'/>
-    <glyph codepoint='a1' name='exclamdown'/>
-    <glyph codepoint='a2' name='cent'/>
-    <glyph codepoint='a3' name='sterling'/>
-    <glyph codepoint='a4' name='fraction'/>
-    <glyph codepoint='a5' name='yen'/>
-    <glyph codepoint='a6' name='florin'/>
-    <glyph codepoint='a7' name='section'/>
-    <glyph codepoint='a8' name='currency'/>
-    <glyph codepoint='a9' name='quotesingle'/>
-    <glyph codepoint='aa' name='quotedblleft'/>
-    <glyph codepoint='ab' name='guillemotleft'/>
-    <glyph codepoint='ac' name='guilsinglleft'/>
-    <glyph codepoint='ad' name='guilsinglright'/>
-    <glyph codepoint='ae' name='fi'/>
-    <glyph codepoint='af' name='fl'/>
-    <glyph codepoint='b1' name='endash'/>
-    <glyph codepoint='b2' name='dagger'/>
-    <glyph codepoint='b3' name='daggerdbl'/>
-    <glyph codepoint='b4' name='periodcentered'/>
-    <glyph codepoint='b6' name='paragraph'/>
-    <glyph codepoint='b7' name='bullet'/>
-    <glyph codepoint='b8' name='quotesinglbase'/>
-    <glyph codepoint='b9' name='quotedblbase'/>
-    <glyph codepoint='ba' name='quotedblright'/>
-    <glyph codepoint='bb' name='guillemotright'/>
-    <glyph codepoint='bc' name='ellipsis'/>
-    <glyph codepoint='bd' name='perthousand'/>
-    <glyph codepoint='bf' name='questiondown'/>
-    <glyph codepoint='c1' name='grave'/>
-    <glyph codepoint='c2' name='acute'/>
-    <glyph codepoint='c3' name='circumflex'/>
-    <glyph codepoint='c4' name='tilde'/>
-    <glyph codepoint='c5' name='macron'/>
-    <glyph codepoint='c6' name='breve'/>
-    <glyph codepoint='c7' name='dotaccent'/>
-    <glyph codepoint='c8' name='dieresis'/>
-    <glyph codepoint='ca' name='ring'/>
-    <glyph codepoint='cb' name='cedilla'/>
-    <glyph codepoint='cd' name='hungarumlaut'/>
-    <glyph codepoint='ce' name='ogonek'/>
-    <glyph codepoint='cf' name='caron'/>
-    <glyph codepoint='d0' name='emdash'/>
-    <glyph codepoint='e1' name='AE'/>
-    <glyph codepoint='e3' name='ordfeminine'/>
-    <glyph codepoint='e8' name='Lslash'/>
-    <glyph codepoint='e9' name='Oslash'/>
-    <glyph codepoint='ea' name='OE'/>
-    <glyph codepoint='eb' name='ordmasculine'/>
-    <glyph codepoint='f1' name='ae'/>
-    <glyph codepoint='f5' name='dotlessi'/>
-    <glyph codepoint='f8' name='lslash'/>
-    <glyph codepoint='f9' name='oslash'/>
-    <glyph codepoint='fa' name='oe'/>
-    <glyph codepoint='fb' name='germandbls'/>
-  </encoding>
-  <encoding id='ISOLatin1Encoding' glyphlist='AGL'>
-    <glyph codepoint='20' name='space'/>
-    <glyph codepoint='21' name='exclam'/>
-    <glyph codepoint='22' name='quotedbl'/>
-    <glyph codepoint='23' name='numbersign'/>
-    <glyph codepoint='24' name='dollar'/>
-    <glyph codepoint='25' name='percent'/>
-    <glyph codepoint='26' name='ampersand'/>
-    <glyph codepoint='27' name='quoteright'/>
-    <glyph codepoint='28' name='parenleft'/>
-    <glyph codepoint='29' name='parenright'/>
-    <glyph codepoint='2a' name='asterisk'/>
-    <glyph codepoint='2b' name='plus'/>
-    <glyph codepoint='2c' name='comma'/>
-    <glyph codepoint='2d' name='minus'/>
-    <glyph codepoint='2e' name='period'/>
-    <glyph codepoint='2f' name='slash'/>
-    <glyph codepoint='30' name='zero'/>
-    <glyph codepoint='31' name='one'/>
-    <glyph codepoint='32' name='two'/>
-    <glyph codepoint='33' name='three'/>
-    <glyph codepoint='34' name='four'/>
-    <glyph codepoint='35' name='five'/>
-    <glyph codepoint='36' name='six'/>
-    <glyph codepoint='37' name='seven'/>
-    <glyph codepoint='38' name='eight'/>
-    <glyph codepoint='39' name='nine'/>
-    <glyph codepoint='3a' name='colon'/>
-    <glyph codepoint='3b' name='semicolon'/>
-    <glyph codepoint='3c' name='less'/>
-    <glyph codepoint='3d' name='equal'/>
-    <glyph codepoint='3e' name='greater'/>
-    <glyph codepoint='3f' name='question'/>
-    <glyph codepoint='40' name='at'/>
-    <glyph codepoint='41' name='A'/>
-    <glyph codepoint='42' name='B'/>
-    <glyph codepoint='43' name='C'/>
-    <glyph codepoint='44' name='D'/>
-    <glyph codepoint='45' name='E'/>
-    <glyph codepoint='46' name='F'/>
-    <glyph codepoint='47' name='G'/>
-    <glyph codepoint='48' name='H'/>
-    <glyph codepoint='49' name='I'/>
-    <glyph codepoint='4a' name='J'/>
-    <glyph codepoint='4b' name='K'/>
-    <glyph codepoint='4c' name='L'/>
-    <glyph codepoint='4d' name='M'/>
-    <glyph codepoint='4e' name='N'/>
-    <glyph codepoint='4f' name='O'/>
-    <glyph codepoint='50' name='P'/>
-    <glyph codepoint='51' name='Q'/>
-    <glyph codepoint='52' name='R'/>
-    <glyph codepoint='53' name='S'/>
-    <glyph codepoint='54' name='T'/>
-    <glyph codepoint='55' name='U'/>
-    <glyph codepoint='56' name='V'/>
-    <glyph codepoint='57' name='W'/>
-    <glyph codepoint='58' name='X'/>
-    <glyph codepoint='59' name='Y'/>
-    <glyph codepoint='5a' name='Z'/>
-    <glyph codepoint='5b' name='bracketleft'/>
-    <glyph codepoint='5c' name='backslash'/>
-    <glyph codepoint='5d' name='bracketright'/>
-    <glyph codepoint='5e' name='asciicircum'/>
-    <glyph codepoint='5f' name='underscore'/>
-    <glyph codepoint='60' name='quoteleft'/>
-    <glyph codepoint='61' name='a'/>
-    <glyph codepoint='62' name='b'/>
-    <glyph codepoint='63' name='c'/>
-    <glyph codepoint='64' name='d'/>
-    <glyph codepoint='65' name='e'/>
-    <glyph codepoint='66' name='f'/>
-    <glyph codepoint='67' name='g'/>
-    <glyph codepoint='68' name='h'/>
-    <glyph codepoint='69' name='i'/>
-    <glyph codepoint='6a' name='j'/>
-    <glyph codepoint='6b' name='k'/>
-    <glyph codepoint='6c' name='l'/>
-    <glyph codepoint='6d' name='m'/>
-    <glyph codepoint='6e' name='n'/>
-    <glyph codepoint='6f' name='o'/>
-    <glyph codepoint='70' name='p'/>
-    <glyph codepoint='71' name='q'/>
-    <glyph codepoint='72' name='r'/>
-    <glyph codepoint='73' name='s'/>
-    <glyph codepoint='74' name='t'/>
-    <glyph codepoint='75' name='u'/>
-    <glyph codepoint='76' name='v'/>
-    <glyph codepoint='77' name='w'/>
-    <glyph codepoint='78' name='x'/>
-    <glyph codepoint='79' name='y'/>
-    <glyph codepoint='7a' name='z'/>
-    <glyph codepoint='7b' name='braceleft'/>
-    <glyph codepoint='7c' name='bar'/>
-    <glyph codepoint='7d' name='braceright'/>
-    <glyph codepoint='7e' name='asciitilde'/>
-    <glyph codepoint='90' name='dotlessi'/>
-    <glyph codepoint='91' name='grave'/>
-    <glyph codepoint='93' name='circumflex'/>
-    <glyph codepoint='94' name='tilde'/>
-    <glyph codepoint='96' name='breve'/>
-    <glyph codepoint='97' name='dotaccent'/>
-    <glyph codepoint='9a' name='ring'/>
-    <glyph codepoint='9d' name='hungarumlaut'/>
-    <glyph codepoint='9e' name='ogonek'/>
-    <glyph codepoint='9f' name='caron'/>
-    <glyph codepoint='a1' name='exclamdown'/>
-    <glyph codepoint='a2' name='cent'/>
-    <glyph codepoint='a3' name='sterling'/>
-    <glyph codepoint='a4' name='currency'/>
-    <glyph codepoint='a5' name='yen'/>
-    <glyph codepoint='a6' name='brokenbar'/>
-    <glyph codepoint='a7' name='section'/>
-    <glyph codepoint='a8' name='dieresis'/>
-    <glyph codepoint='a9' name='copyright'/>
-    <glyph codepoint='aa' name='ordfeminine'/>
-    <glyph codepoint='ab' name='guillemotleft'/>
-    <glyph codepoint='ac' name='logicalnot'/>
-    <glyph codepoint='ad' name='hyphen'/>
-    <glyph codepoint='ae' name='registered'/>
-    <glyph codepoint='af' name='macron'/>
-    <glyph codepoint='b0' name='degree'/>
-    <glyph codepoint='b1' name='plusminus'/>
-    <glyph codepoint='b2' name='twosuperior'/>
-    <glyph codepoint='b3' name='threesuperior'/>
-    <glyph codepoint='b4' name='acute'/>
-    <glyph codepoint='b5' name='mu'/>
-    <glyph codepoint='b6' name='paragraph'/>
-    <glyph codepoint='b7' name='periodcentered'/>
-    <glyph codepoint='b8' name='cedilla'/>
-    <glyph codepoint='b9' name='onesuperior'/>
-    <glyph codepoint='ba' name='ordmasculine'/>
-    <glyph codepoint='bb' name='guillemotright'/>
-    <glyph codepoint='bc' name='onequarter'/>
-    <glyph codepoint='bd' name='onehalf'/>
-    <glyph codepoint='be' name='threequarters'/>
-    <glyph codepoint='bf' name='questiondown'/>
-    <glyph codepoint='c0' name='Agrave'/>
-    <glyph codepoint='c1' name='Aacute'/>
-    <glyph codepoint='c2' name='Acircumflex'/>
-    <glyph codepoint='c3' name='Atilde'/>
-    <glyph codepoint='c4' name='Adieresis'/>
-    <glyph codepoint='c5' name='Aring'/>
-    <glyph codepoint='c6' name='AE'/>
-    <glyph codepoint='c7' name='Ccedilla'/>
-    <glyph codepoint='c8' name='Egrave'/>
-    <glyph codepoint='c9' name='Eacute'/>
-    <glyph codepoint='ca' name='Ecircumflex'/>
-    <glyph codepoint='cb' name='Edieresis'/>
-    <glyph codepoint='cc' name='Igrave'/>
-    <glyph codepoint='cd' name='Iacute'/>
-    <glyph codepoint='ce' name='Icircumflex'/>
-    <glyph codepoint='cf' name='Idieresis'/>
-    <glyph codepoint='d0' name='Eth'/>
-    <glyph codepoint='d1' name='Ntilde'/>
-    <glyph codepoint='d2' name='Ograve'/>
-    <glyph codepoint='d3' name='Oacute'/>
-    <glyph codepoint='d4' name='Ocircumflex'/>
-    <glyph codepoint='d5' name='Otilde'/>
-    <glyph codepoint='d6' name='Odieresis'/>
-    <glyph codepoint='d7' name='multiply'/>
-    <glyph codepoint='d8' name='Oslash'/>
-    <glyph codepoint='d9' name='Ugrave'/>
-    <glyph codepoint='da' name='Uacute'/>
-    <glyph codepoint='db' name='Ucircumflex'/>
-    <glyph codepoint='dc' name='Udieresis'/>
-    <glyph codepoint='dd' name='Yacute'/>
-    <glyph codepoint='de' name='Thorn'/>
-    <glyph codepoint='df' name='germandbls'/>
-    <glyph codepoint='e0' name='agrave'/>
-    <glyph codepoint='e1' name='aacute'/>
-    <glyph codepoint='e2' name='acircumflex'/>
-    <glyph codepoint='e3' name='atilde'/>
-    <glyph codepoint='e4' name='adieresis'/>
-    <glyph codepoint='e5' name='aring'/>
-    <glyph codepoint='e6' name='ae'/>
-    <glyph codepoint='e7' name='ccedilla'/>
-    <glyph codepoint='e8' name='egrave'/>
-    <glyph codepoint='e9' name='eacute'/>
-    <glyph codepoint='ea' name='ecircumflex'/>
-    <glyph codepoint='eb' name='edieresis'/>
-    <glyph codepoint='ec' name='igrave'/>
-    <glyph codepoint='ed' name='iacute'/>
-    <glyph codepoint='ee' name='icircumflex'/>
-    <glyph codepoint='ef' name='idieresis'/>
-    <glyph codepoint='f0' name='eth'/>
-    <glyph codepoint='f1' name='ntilde'/>
-    <glyph codepoint='f2' name='ograve'/>
-    <glyph codepoint='f3' name='oacute'/>
-    <glyph codepoint='f4' name='ocircumflex'/>
-    <glyph codepoint='f5' name='otilde'/>
-    <glyph codepoint='f6' name='odieresis'/>
-    <glyph codepoint='f7' name='divide'/>
-    <glyph codepoint='f8' name='oslash'/>
-    <glyph codepoint='f9' name='ugrave'/>
-    <glyph codepoint='fa' name='uacute'/>
-    <glyph codepoint='fb' name='ucircumflex'/>
-    <glyph codepoint='fc' name='udieresis'/>
-    <glyph codepoint='fd' name='yacute'/>
-    <glyph codepoint='fe' name='thorn'/>
-    <glyph codepoint='ff' name='ydieresis'/>
-  </encoding>
-  <encoding id='CEEncoding' glyphlist='AGL'>
-    <glyph codepoint='20' name='space'/>
-    <glyph codepoint='21' name='exclam'/>
-    <glyph codepoint='22' name='quotedbl'/>
-    <glyph codepoint='23' name='numbersign'/>
-    <glyph codepoint='24' name='dollar'/>
-    <glyph codepoint='25' name='percent'/>
-    <glyph codepoint='26' name='ampersand'/>
-    <glyph codepoint='27' name='quotesingle'/>
-    <glyph codepoint='28' name='parenleft'/>
-    <glyph codepoint='29' name='parenright'/>
-    <glyph codepoint='2a' name='asterisk'/>
-    <glyph codepoint='2b' name='plus'/>
-    <glyph codepoint='2c' name='comma'/>
-    <glyph codepoint='2d' name='hyphen'/>
-    <glyph codepoint='2e' name='period'/>
-    <glyph codepoint='2f' name='slash'/>
-    <glyph codepoint='30' name='zero'/>
-    <glyph codepoint='31' name='one'/>
-    <glyph codepoint='32' name='two'/>
-    <glyph codepoint='33' name='three'/>
-    <glyph codepoint='34' name='four'/>
-    <glyph codepoint='35' name='five'/>
-    <glyph codepoint='36' name='six'/>
-    <glyph codepoint='37' name='seven'/>
-    <glyph codepoint='38' name='eight'/>
-    <glyph codepoint='39' name='nine'/>
-    <glyph codepoint='3a' name='colon'/>
-    <glyph codepoint='3b' name='semicolon'/>
-    <glyph codepoint='3c' name='less'/>
-    <glyph codepoint='3d' name='equal'/>
-    <glyph codepoint='3e' name='greater'/>
-    <glyph codepoint='3f' name='question'/>
-    <glyph codepoint='40' name='at'/>
-    <glyph codepoint='41' name='A'/>
-    <glyph codepoint='42' name='B'/>
-    <glyph codepoint='43' name='C'/>
-    <glyph codepoint='44' name='D'/>
-    <glyph codepoint='45' name='E'/>
-    <glyph codepoint='46' name='F'/>
-    <glyph codepoint='47' name='G'/>
-    <glyph codepoint='48' name='H'/>
-    <glyph codepoint='49' name='I'/>
-    <glyph codepoint='4a' name='J'/>
-    <glyph codepoint='4b' name='K'/>
-    <glyph codepoint='4c' name='L'/>
-    <glyph codepoint='4d' name='M'/>
-    <glyph codepoint='4e' name='N'/>
-    <glyph codepoint='4f' name='O'/>
-    <glyph codepoint='50' name='P'/>
-    <glyph codepoint='51' name='Q'/>
-    <glyph codepoint='52' name='R'/>
-    <glyph codepoint='53' name='S'/>
-    <glyph codepoint='54' name='T'/>
-    <glyph codepoint='55' name='U'/>
-    <glyph codepoint='56' name='V'/>
-    <glyph codepoint='57' name='W'/>
-    <glyph codepoint='58' name='X'/>
-    <glyph codepoint='59' name='Y'/>
-    <glyph codepoint='5a' name='Z'/>
-    <glyph codepoint='5b' name='bracketleft'/>
-    <glyph codepoint='5c' name='backslash'/>
-    <glyph codepoint='5d' name='bracketright'/>
-    <glyph codepoint='5e' name='asciicircum'/>
-    <glyph codepoint='5f' name='underscore'/>
-    <glyph codepoint='60' name='grave'/>
-    <glyph codepoint='61' name='a'/>
-    <glyph codepoint='62' name='b'/>
-    <glyph codepoint='63' name='c'/>
-    <glyph codepoint='64' name='d'/>
-    <glyph codepoint='65' name='e'/>
-    <glyph codepoint='66' name='f'/>
-    <glyph codepoint='67' name='g'/>
-    <glyph codepoint='68' name='h'/>
-    <glyph codepoint='69' name='i'/>
-    <glyph codepoint='6a' name='j'/>
-    <glyph codepoint='6b' name='k'/>
-    <glyph codepoint='6c' name='l'/>
-    <glyph codepoint='6d' name='m'/>
-    <glyph codepoint='6e' name='n'/>
-    <glyph codepoint='6f' name='o'/>
-    <glyph codepoint='70' name='p'/>
-    <glyph codepoint='71' name='q'/>
-    <glyph codepoint='72' name='r'/>
-    <glyph codepoint='73' name='s'/>
-    <glyph codepoint='74' name='t'/>
-    <glyph codepoint='75' name='u'/>
-    <glyph codepoint='76' name='v'/>
-    <glyph codepoint='77' name='w'/>
-    <glyph codepoint='78' name='x'/>
-    <glyph codepoint='79' name='y'/>
-    <glyph codepoint='7a' name='z'/>
-    <glyph codepoint='7b' name='braceleft'/>
-    <glyph codepoint='7c' name='bar'/>
-    <glyph codepoint='7d' name='braceright'/>
-    <glyph codepoint='7e' name='asciitilde'/>
-    <glyph codepoint='82' name='quotesinglbase'/>
-    <glyph codepoint='84' name='quotedblbase'/>
-    <glyph codepoint='85' name='ellipsis'/>
-    <glyph codepoint='86' name='dagger'/>
-    <glyph codepoint='87' name='daggerdbl'/>
-    <glyph codepoint='89' name='perthousand'/>
-    <glyph codepoint='8a' name='Scaron'/>
-    <glyph codepoint='8b' name='guilsinglleft'/>
-    <glyph codepoint='8c' name='Sacute'/>
-    <glyph codepoint='8d' name='Tcaron'/>
-    <glyph codepoint='8e' name='Zcaron'/>
-    <glyph codepoint='8f' name='Zacute'/>
-    <glyph codepoint='91' name='quoteleft'/>
-    <glyph codepoint='92' name='quoteright'/>
-    <glyph codepoint='93' name='quotedblleft'/>
-    <glyph codepoint='94' name='quotedblright'/>
-    <glyph codepoint='95' name='bullet'/>
-    <glyph codepoint='96' name='endash'/>
-    <glyph codepoint='97' name='emdash'/>
-    <glyph codepoint='99' name='trademark'/>
-    <glyph codepoint='9a' name='scaron'/>
-    <glyph codepoint='9b' name='guilsinglright'/>
-    <glyph codepoint='9c' name='sacute'/>
-    <glyph codepoint='9d' name='tcaron'/>
-    <glyph codepoint='9e' name='zcaron'/>
-    <glyph codepoint='9f' name='zacute'/>
-    <glyph codepoint='a1' name='caron'/>
-    <glyph codepoint='a2' name='breve'/>
-    <glyph codepoint='a3' name='Lslash'/>
-    <glyph codepoint='a4' name='currency'/>
-    <glyph codepoint='a5' name='Aogonek'/>
-    <glyph codepoint='a6' name='brokenbar'/>
-    <glyph codepoint='a7' name='section'/>
-    <glyph codepoint='a8' name='dieresis'/>
-    <glyph codepoint='a9' name='copyright'/>
-    <glyph codepoint='aa' name='Scommaaccent'/>
-    <glyph codepoint='ab' name='guillemotleft'/>
-    <glyph codepoint='ac' name='logicalnot'/>
-    <glyph codepoint='ae' name='registered'/>
-    <glyph codepoint='af' name='Zdotaccent'/>
-    <glyph codepoint='b0' name='degree'/>
-    <glyph codepoint='b1' name='plusminus'/>
-    <glyph codepoint='b2' name='ogonek'/>
-    <glyph codepoint='b3' name='lslash'/>
-    <glyph codepoint='b4' name='acute'/>
-    <glyph codepoint='b5' name='mu'/>
-    <glyph codepoint='b6' name='paragraph'/>
-    <glyph codepoint='b7' name='periodcentered'/>
-    <glyph codepoint='b8' name='cedilla'/>
-    <glyph codepoint='b9' name='aogonek'/>
-    <glyph codepoint='ba' name='scommaaccent'/>
-    <glyph codepoint='bb' name='guillemotright'/>
-    <glyph codepoint='bc' name='Lcaron'/>
-    <glyph codepoint='bd' name='hungarumlaut'/>
-    <glyph codepoint='be' name='lcaron'/>
-    <glyph codepoint='bf' name='zdotaccent'/>
-    <glyph codepoint='c0' name='Racute'/>
-    <glyph codepoint='c1' name='Aacute'/>
-    <glyph codepoint='c2' name='Acircumflex'/>
-    <glyph codepoint='c3' name='Abreve'/>
-    <glyph codepoint='c4' name='Adieresis'/>
-    <glyph codepoint='c5' name='Lacute'/>
-    <glyph codepoint='c6' name='Cacute'/>
-    <glyph codepoint='c7' name='Ccedilla'/>
-    <glyph codepoint='c8' name='Ccaron'/>
-    <glyph codepoint='c9' name='Eacute'/>
-    <glyph codepoint='ca' name='Eogonek'/>
-    <glyph codepoint='cb' name='Edieresis'/>
-    <glyph codepoint='cc' name='Ecaron'/>
-    <glyph codepoint='cd' name='Iacute'/>
-    <glyph codepoint='ce' name='Icircumflex'/>
-    <glyph codepoint='cf' name='Dcaron'/>
-    <glyph codepoint='d0' name='Dcroat'/>
-    <glyph codepoint='d1' name='Nacute'/>
-    <glyph codepoint='d2' name='Ncaron'/>
-    <glyph codepoint='d3' name='Oacute'/>
-    <glyph codepoint='d4' name='Ocircumflex'/>
-    <glyph codepoint='d5' name='Ohungarumlaut'/>
-    <glyph codepoint='d6' name='Odieresis'/>
-    <glyph codepoint='d7' name='multiply'/>
-    <glyph codepoint='d8' name='Rcaron'/>
-    <glyph codepoint='d9' name='Uring'/>
-    <glyph codepoint='da' name='Uacute'/>
-    <glyph codepoint='db' name='Uhungarumlaut'/>
-    <glyph codepoint='dc' name='Udieresis'/>
-    <glyph codepoint='dd' name='Yacute'/>
-    <glyph codepoint='de' name='Tcommaaccent'/>
-    <glyph codepoint='df' name='germandbls'/>
-    <glyph codepoint='e0' name='racute'/>
-    <glyph codepoint='e1' name='aacute'/>
-    <glyph codepoint='e2' name='acircumflex'/>
-    <glyph codepoint='e3' name='abreve'/>
-    <glyph codepoint='e4' name='adieresis'/>
-    <glyph codepoint='e5' name='lacute'/>
-    <glyph codepoint='e6' name='cacute'/>
-    <glyph codepoint='e7' name='ccedilla'/>
-    <glyph codepoint='e8' name='ccaron'/>
-    <glyph codepoint='e9' name='eacute'/>
-    <glyph codepoint='ea' name='eogonek'/>
-    <glyph codepoint='eb' name='edieresis'/>
-    <glyph codepoint='ec' name='ecaron'/>
-    <glyph codepoint='ed' name='iacute'/>
-    <glyph codepoint='ee' name='icircumflex'/>
-    <glyph codepoint='ef' name='dcaron'/>
-    <glyph codepoint='f0' name='dcroat'/>
-    <glyph codepoint='f1' name='nacute'/>
-    <glyph codepoint='f2' name='ncaron'/>
-    <glyph codepoint='f3' name='oacute'/>
-    <glyph codepoint='f4' name='ocircumflex'/>
-    <glyph codepoint='f5' name='ohungarumlaut'/>
-    <glyph codepoint='f6' name='odieresis'/>
-    <glyph codepoint='f7' name='divide'/>
-    <glyph codepoint='f8' name='rcaron'/>
-    <glyph codepoint='f9' name='uring'/>
-    <glyph codepoint='fa' name='uacute'/>
-    <glyph codepoint='fb' name='uhungarumlaut'/>
-    <glyph codepoint='fc' name='udieresis'/>
-    <glyph codepoint='fd' name='yacute'/>
-    <glyph codepoint='fe' name='tcommaaccent'/>
-    <glyph codepoint='ff' name='dotaccent'/>
-  </encoding>
-  <encoding id='MacRomanEncoding' glyphlist='AGL'>
-    <glyph codepoint='20' name='space'/>
-    <glyph codepoint='21' name='exclam'/>
-    <glyph codepoint='22' name='quotedbl'/>
-    <glyph codepoint='23' name='numbersign'/>
-    <glyph codepoint='24' name='dollar'/>
-    <glyph codepoint='25' name='percent'/>
-    <glyph codepoint='26' name='ampersand'/>
-    <glyph codepoint='27' name='quotesingle'/>
-    <glyph codepoint='28' name='parenleft'/>
-    <glyph codepoint='29' name='parenright'/>
-    <glyph codepoint='2a' name='asterisk'/>
-    <glyph codepoint='2b' name='plus'/>
-    <glyph codepoint='2c' name='comma'/>
-    <glyph codepoint='2d' name='hyphen'/>
-    <glyph codepoint='2e' name='period'/>
-    <glyph codepoint='2f' name='slash'/>
-    <glyph codepoint='30' name='zero'/>
-    <glyph codepoint='31' name='one'/>
-    <glyph codepoint='32' name='two'/>
-    <glyph codepoint='33' name='three'/>
-    <glyph codepoint='34' name='four'/>
-    <glyph codepoint='35' name='five'/>
-    <glyph codepoint='36' name='six'/>
-    <glyph codepoint='37' name='seven'/>
-    <glyph codepoint='38' name='eight'/>
-    <glyph codepoint='39' name='nine'/>
-    <glyph codepoint='3a' name='colon'/>
-    <glyph codepoint='3b' name='semicolon'/>
-    <glyph codepoint='3c' name='less'/>
-    <glyph codepoint='3d' name='equal'/>
-    <glyph codepoint='3e' name='greater'/>
-    <glyph codepoint='3f' name='question'/>
-    <glyph codepoint='40' name='at'/>
-    <glyph codepoint='41' name='A'/>
-    <glyph codepoint='42' name='B'/>
-    <glyph codepoint='43' name='C'/>
-    <glyph codepoint='44' name='D'/>
-    <glyph codepoint='45' name='E'/>
-    <glyph codepoint='46' name='F'/>
-    <glyph codepoint='47' name='G'/>
-    <glyph codepoint='48' name='H'/>
-    <glyph codepoint='49' name='I'/>
-    <glyph codepoint='4a' name='J'/>
-    <glyph codepoint='4b' name='K'/>
-    <glyph codepoint='4c' name='L'/>
-    <glyph codepoint='4d' name='M'/>
-    <glyph codepoint='4e' name='N'/>
-    <glyph codepoint='4f' name='O'/>
-    <glyph codepoint='50' name='P'/>
-    <glyph codepoint='51' name='Q'/>
-    <glyph codepoint='52' name='R'/>
-    <glyph codepoint='53' name='S'/>
-    <glyph codepoint='54' name='T'/>
-    <glyph codepoint='55' name='U'/>
-    <glyph codepoint='56' name='V'/>
-    <glyph codepoint='57' name='W'/>
-    <glyph codepoint='58' name='X'/>
-    <glyph codepoint='59' name='Y'/>
-    <glyph codepoint='5a' name='Z'/>
-    <glyph codepoint='5b' name='bracketleft'/>
-    <glyph codepoint='5c' name='backslash'/>
-    <glyph codepoint='5d' name='bracketright'/>
-    <glyph codepoint='5e' name='asciicircum'/>
-    <glyph codepoint='5f' name='underscore'/>
-    <glyph codepoint='60' name='grave'/>
-    <glyph codepoint='61' name='a'/>
-    <glyph codepoint='62' name='b'/>
-    <glyph codepoint='63' name='c'/>
-    <glyph codepoint='64' name='d'/>
-    <glyph codepoint='65' name='e'/>
-    <glyph codepoint='66' name='f'/>
-    <glyph codepoint='67' name='g'/>
-    <glyph codepoint='68' name='h'/>
-    <glyph codepoint='69' name='i'/>
-    <glyph codepoint='6a' name='j'/>
-    <glyph codepoint='6b' name='k'/>
-    <glyph codepoint='6c' name='l'/>
-    <glyph codepoint='6d' name='m'/>
-    <glyph codepoint='6e' name='n'/>
-    <glyph codepoint='6f' name='o'/>
-    <glyph codepoint='70' name='p'/>
-    <glyph codepoint='71' name='q'/>
-    <glyph codepoint='72' name='r'/>
-    <glyph codepoint='73' name='s'/>
-    <glyph codepoint='74' name='t'/>
-    <glyph codepoint='75' name='u'/>
-    <glyph codepoint='76' name='v'/>
-    <glyph codepoint='77' name='w'/>
-    <glyph codepoint='78' name='x'/>
-    <glyph codepoint='79' name='y'/>
-    <glyph codepoint='7b' name='braceleft'/>
-    <glyph codepoint='7c' name='bar'/>
-    <glyph codepoint='7d' name='braceright'/>
-    <glyph codepoint='7e' name='asciitilde'/>
-    <glyph codepoint='80' name='Adieresis'/>
-    <glyph codepoint='81' name='Aring'/>
-    <glyph codepoint='82' name='Ccedilla'/>
-    <glyph codepoint='83' name='Eacute'/>
-    <glyph codepoint='84' name='Ntilde'/>
-    <glyph codepoint='85' name='Odieresis'/>
-    <glyph codepoint='86' name='Udieresis'/>
-    <glyph codepoint='87' name='aacute'/>
-    <glyph codepoint='88' name='agrave'/>
-    <glyph codepoint='89' name='acircumflex'/>
-    <glyph codepoint='8a' name='adieresis'/>
-    <glyph codepoint='8b' name='atilde'/>
-    <glyph codepoint='8c' name='aring'/>
-    <glyph codepoint='8d' name='ccedilla'/>
-    <glyph codepoint='8e' name='eacute'/>
-    <glyph codepoint='8f' name='egrave'/>
-    <glyph codepoint='90' name='ecircumflex'/>
-    <glyph codepoint='91' name='edieresis'/>
-    <glyph codepoint='92' name='iacute'/>
-    <glyph codepoint='93' name='igrave'/>
-    <glyph codepoint='94' name='icircumflex'/>
-    <glyph codepoint='95' name='idieresis'/>
-    <glyph codepoint='96' name='ntilde'/>
-    <glyph codepoint='97' name='oacute'/>
-    <glyph codepoint='98' name='ograve'/>
-    <glyph codepoint='99' name='ocircumflex'/>
-    <glyph codepoint='9a' name='odieresis'/>
-    <glyph codepoint='9b' name='otilde'/>
-    <glyph codepoint='9c' name='uacute'/>
-    <glyph codepoint='9d' name='ugrave'/>
-    <glyph codepoint='9e' name='ucircumflex'/>
-    <glyph codepoint='9f' name='udieresis'/>
-    <glyph codepoint='a0' name='dagger'/>
-    <glyph codepoint='a1' name='degree'/>
-    <glyph codepoint='a2' name='cent'/>
-    <glyph codepoint='a3' name='sterling'/>
-    <glyph codepoint='a4' name='section'/>
-    <glyph codepoint='a5' name='bullet'/>
-    <glyph codepoint='a6' name='paragraph'/>
-    <glyph codepoint='a7' name='germandbls'/>
-    <glyph codepoint='a8' name='registered'/>
-    <glyph codepoint='a9' name='copyright'/>
-    <glyph codepoint='aa' name='trademark'/>
-    <glyph codepoint='ab' name='acute'/>
-    <glyph codepoint='ac' name='dieresis'/>
-    <glyph codepoint='ae' name='AE'/>
-    <glyph codepoint='af' name='Oslash'/>
-    <glyph codepoint='b1' name='plusminus'/>
-    <glyph codepoint='b5' name='mu'/>
-    <glyph codepoint='bb' name='ordfeminine'/>
-    <glyph codepoint='bc' name='ordmasculine'/>
-    <glyph codepoint='be' name='ae'/>
-    <glyph codepoint='bf' name='oslash'/>
-    <glyph codepoint='c0' name='questiondown'/>
-    <glyph codepoint='c1' name='exclamdown'/>
-    <glyph codepoint='c2' name='logicalnot'/>
-    <glyph codepoint='c4' name='florin'/>
-    <glyph codepoint='c7' name='guillemotleft'/>
-    <glyph codepoint='c8' name='guillemotright'/>
-    <glyph codepoint='c9' name='ellipsis'/>
-    <glyph codepoint='cb' name='Agrave'/>
-    <glyph codepoint='cc' name='Atilde'/>
-    <glyph codepoint='cd' name='Otilde'/>
-    <glyph codepoint='ce' name='OE'/>
-    <glyph codepoint='cf' name='oe'/>
-    <glyph codepoint='d0' name='endash'/>
-    <glyph codepoint='d1' name='emdash'/>
-    <glyph codepoint='d2' name='quotedblleft'/>
-    <glyph codepoint='d3' name='quotedblright'/>
-    <glyph codepoint='d4' name='quoteleft'/>
-    <glyph codepoint='d5' name='quoteright'/>
-    <glyph codepoint='d6' name='divide'/>
-    <glyph codepoint='d9' name='Ydieresis'/>
-    <glyph codepoint='da' name='fraction'/>
-    <glyph codepoint='db' name='currency'/>
-    <glyph codepoint='dc' name='guilsinglleft'/>
-    <glyph codepoint='dd' name='guilsinglright'/>
-    <glyph codepoint='de' name='fi'/>
-    <glyph codepoint='df' name='fl'/>
-    <glyph codepoint='e0' name='daggerdbl'/>
-    <glyph codepoint='e1' name='periodcentered'/>
-    <glyph codepoint='e2' name='quotesinglbase'/>
-    <glyph codepoint='e3' name='quotedblbase'/>
-    <glyph codepoint='e4' name='perthousand'/>
-    <glyph codepoint='e5' name='Acircumflex'/>
-    <glyph codepoint='e6' name='Ecircumflex'/>
-    <glyph codepoint='e7' name='Aacute'/>
-    <glyph codepoint='e8' name='Edieresis'/>
-    <glyph codepoint='e9' name='Egrave'/>
-    <glyph codepoint='ea' name='Iacute'/>
-    <glyph codepoint='eb' name='Icircumflex'/>
-    <glyph codepoint='ec' name='Idieresis'/>
-    <glyph codepoint='ed' name='Igrave'/>
-    <glyph codepoint='ee' name='Oacute'/>
-    <glyph codepoint='ef' name='Ocircumflex'/>
-    <glyph codepoint='f1' name='Ograve'/>
-    <glyph codepoint='f2' name='Uacute'/>
-    <glyph codepoint='f3' name='Ucircumflex'/>
-    <glyph codepoint='f4' name='Ugrave'/>
-    <glyph codepoint='f5' name='dotlessi'/>
-    <glyph codepoint='f6' name='circumflex'/>
-    <glyph codepoint='f7' name='tilde'/>
-    <glyph codepoint='f8' name='macron'/>
-    <glyph codepoint='f9' name='breve'/>
-    <glyph codepoint='fa' name='dotaccent'/>
-    <glyph codepoint='fb' name='ring'/>
-    <glyph codepoint='fc' name='cedilla'/>
-    <glyph codepoint='fd' name='hungarumlaut'/>
-    <glyph codepoint='fe' name='ogonek'/>
-    <glyph codepoint='ff' name='caron'/>
-    <glyph codepoint='d8' name='ydieresis'/>
-    <glyph codepoint='b4' name='yen'/>
-    <glyph codepoint='7a' name='z'/>
-  </encoding>
-  <encoding id='WinAnsiEncoding' glyphlist='AGL'>
-    <glyph codepoint='20' name='space'/>
-    <glyph codepoint='21' name='exclam'/>
-    <glyph codepoint='22' name='quotedbl'/>
-    <glyph codepoint='23' name='numbersign'/>
-    <glyph codepoint='24' name='dollar'/>
-    <glyph codepoint='25' name='percent'/>
-    <glyph codepoint='26' name='ampersand'/>
-    <glyph codepoint='27' name='quotesingle'/>
-    <glyph codepoint='28' name='parenleft'/>
-    <glyph codepoint='29' name='parenright'/>
-    <glyph codepoint='2a' name='asterisk'/>
-    <glyph codepoint='2b' name='plus'/>
-    <glyph codepoint='2c' name='comma'/>
-    <glyph codepoint='2d' name='hyphen'/>
-    <glyph codepoint='2e' name='period'/>
-    <glyph codepoint='2f' name='slash'/>
-    <glyph codepoint='30' name='zero'/>
-    <glyph codepoint='31' name='one'/>
-    <glyph codepoint='32' name='two'/>
-    <glyph codepoint='33' name='three'/>
-    <glyph codepoint='34' name='four'/>
-    <glyph codepoint='35' name='five'/>
-    <glyph codepoint='36' name='six'/>
-    <glyph codepoint='37' name='seven'/>
-    <glyph codepoint='38' name='eight'/>
-    <glyph codepoint='39' name='nine'/>
-    <glyph codepoint='3a' name='colon'/>
-    <glyph codepoint='3b' name='semicolon'/>
-    <glyph codepoint='3c' name='less'/>
-    <glyph codepoint='3d' name='equal'/>
-    <glyph codepoint='3e' name='greater'/>
-    <glyph codepoint='3f' name='question'/>
-    <glyph codepoint='40' name='at'/>
-    <glyph codepoint='41' name='A'/>
-    <glyph codepoint='42' name='B'/>
-    <glyph codepoint='43' name='C'/>
-    <glyph codepoint='44' name='D'/>
-    <glyph codepoint='45' name='E'/>
-    <glyph codepoint='46' name='F'/>
-    <glyph codepoint='47' name='G'/>
-    <glyph codepoint='48' name='H'/>
-    <glyph codepoint='49' name='I'/>
-    <glyph codepoint='4a' name='J'/>
-    <glyph codepoint='4b' name='K'/>
-    <glyph codepoint='4c' name='L'/>
-    <glyph codepoint='4d' name='M'/>
-    <glyph codepoint='4e' name='N'/>
-    <glyph codepoint='4f' name='O'/>
-    <glyph codepoint='50' name='P'/>
-    <glyph codepoint='51' name='Q'/>
-    <glyph codepoint='52' name='R'/>
-    <glyph codepoint='53' name='S'/>
-    <glyph codepoint='54' name='T'/>
-    <glyph codepoint='55' name='U'/>
-    <glyph codepoint='56' name='V'/>
-    <glyph codepoint='57' name='W'/>
-    <glyph codepoint='58' name='X'/>
-    <glyph codepoint='59' name='Y'/>
-    <glyph codepoint='5a' name='Z'/>
-    <glyph codepoint='5b' name='bracketleft'/>
-    <glyph codepoint='5c' name='backslash'/>
-    <glyph codepoint='5d' name='bracketright'/>
-    <glyph codepoint='5e' name='asciicircum'/>
-    <glyph codepoint='5f' name='underscore'/>
-    <glyph codepoint='60' name='grave'/>
-    <glyph codepoint='61' name='a'/>
-    <glyph codepoint='62' name='b'/>
-    <glyph codepoint='63' name='c'/>
-    <glyph codepoint='64' name='d'/>
-    <glyph codepoint='65' name='e'/>
-    <glyph codepoint='66' name='f'/>
-    <glyph codepoint='67' name='g'/>
-    <glyph codepoint='68' name='h'/>
-    <glyph codepoint='69' name='i'/>
-    <glyph codepoint='6a' name='j'/>
-    <glyph codepoint='6b' name='k'/>
-    <glyph codepoint='6c' name='l'/>
-    <glyph codepoint='6d' name='m'/>
-    <glyph codepoint='6e' name='n'/>
-    <glyph codepoint='6f' name='o'/>
-    <glyph codepoint='70' name='p'/>
-    <glyph codepoint='71' name='q'/>
-    <glyph codepoint='72' name='r'/>
-    <glyph codepoint='73' name='s'/>
-    <glyph codepoint='74' name='t'/>
-    <glyph codepoint='75' name='u'/>
-    <glyph codepoint='76' name='v'/>
-    <glyph codepoint='77' name='w'/>
-    <glyph codepoint='78' name='x'/>
-    <glyph codepoint='79' name='y'/>
-    <glyph codepoint='7a' name='z'/>
-    <glyph codepoint='7b' name='braceleft'/>
-    <glyph codepoint='7c' name='bar'/>
-    <glyph codepoint='7d' name='braceright'/>
-    <glyph codepoint='7e' name='asciitilde'/>
-    <glyph codepoint='80' name='Euro'/>
-    <glyph codepoint='82' name='quotesinglbase'/>
-    <glyph codepoint='83' name='florin'/>
-    <glyph codepoint='84' name='quotedblbase'/>
-    <glyph codepoint='85' name='ellipsis'/>
-    <glyph codepoint='86' name='dagger'/>
-    <glyph codepoint='87' name='daggerdbl'/>
-    <glyph codepoint='88' name='circumflex'/>
-    <glyph codepoint='89' name='perthousand'/>
-    <glyph codepoint='8a' name='Scaron'/>
-    <glyph codepoint='8b' name='guilsinglleft'/>
-    <glyph codepoint='8c' name='OE'/>
-    <glyph codepoint='8e' name='Zcaron'/>
-    <glyph codepoint='91' name='quoteleft'/>
-    <glyph codepoint='92' name='quoteright'/>
-    <glyph codepoint='93' name='quotedblleft'/>
-    <glyph codepoint='94' name='quotedblright'/>
-    <glyph codepoint='95' name='bullet'/>
-    <glyph codepoint='96' name='endash'/>
-    <glyph codepoint='97' name='emdash'/>
-    <glyph codepoint='98' name='tilde'/>
-    <glyph codepoint='99' name='trademark'/>
-    <glyph codepoint='9a' name='scaron'/>
-    <glyph codepoint='9b' name='guilsinglright'/>
-    <glyph codepoint='9c' name='oe'/>
-    <glyph codepoint='9e' name='zcaron'/>
-    <glyph codepoint='9f' name='Ydieresis'/>
-    <glyph codepoint='a1' name='exclamdown'/>
-    <glyph codepoint='a2' name='cent'/>
-    <glyph codepoint='a3' name='sterling'/>
-    <glyph codepoint='a4' name='currency'/>
-    <glyph codepoint='a5' name='yen'/>
-    <glyph codepoint='a6' name='brokenbar'/>
-    <glyph codepoint='a7' name='section'/>
-    <glyph codepoint='a8' name='dieresis'/>
-    <glyph codepoint='a9' name='copyright'/>
-    <glyph codepoint='aa' name='ordfeminine'/>
-    <glyph codepoint='ab' name='guillemotleft'/>
-    <glyph codepoint='ac' name='logicalnot'/>
-    <glyph codepoint='ae' name='registered'/>
-    <glyph codepoint='af' name='macron'/>
-    <glyph codepoint='b0' name='degree'/>
-    <glyph codepoint='b1' name='plusminus'/>
-    <glyph codepoint='b2' name='twosuperior'/>
-    <glyph codepoint='b3' name='threesuperior'/>
-    <glyph codepoint='b4' name='acute'/>
-    <glyph codepoint='b5' name='mu'/>
-    <glyph codepoint='b6' name='paragraph'/>
-    <glyph codepoint='b7' name='periodcentered'/>
-    <glyph codepoint='b8' name='cedilla'/>
-    <glyph codepoint='b9' name='onesuperior'/>
-    <glyph codepoint='ba' name='ordmasculine'/>
-    <glyph codepoint='bb' name='guillemotright'/>
-    <glyph codepoint='bc' name='onequarter'/>
-    <glyph codepoint='bd' name='onehalf'/>
-    <glyph codepoint='be' name='threequarters'/>
-    <glyph codepoint='bf' name='questiondown'/>
-    <glyph codepoint='c0' name='Agrave'/>
-    <glyph codepoint='c1' name='Aacute'/>
-    <glyph codepoint='c2' name='Acircumflex'/>
-    <glyph codepoint='c3' name='Atilde'/>
-    <glyph codepoint='c4' name='Adieresis'/>
-    <glyph codepoint='c5' name='Aring'/>
-    <glyph codepoint='c6' name='AE'/>
-    <glyph codepoint='c7' name='Ccedilla'/>
-    <glyph codepoint='c8' name='Egrave'/>
-    <glyph codepoint='c9' name='Eacute'/>
-    <glyph codepoint='ca' name='Ecircumflex'/>
-    <glyph codepoint='cb' name='Edieresis'/>
-    <glyph codepoint='cc' name='Igrave'/>
-    <glyph codepoint='cd' name='Iacute'/>
-    <glyph codepoint='ce' name='Icircumflex'/>
-    <glyph codepoint='cf' name='Idieresis'/>
-    <glyph codepoint='d0' name='Eth'/>
-    <glyph codepoint='d1' name='Ntilde'/>
-    <glyph codepoint='d2' name='Ograve'/>
-    <glyph codepoint='d3' name='Oacute'/>
-    <glyph codepoint='d4' name='Ocircumflex'/>
-    <glyph codepoint='d5' name='Otilde'/>
-    <glyph codepoint='d6' name='Odieresis'/>
-    <glyph codepoint='d7' name='multiply'/>
-    <glyph codepoint='d8' name='Oslash'/>
-    <glyph codepoint='d9' name='Ugrave'/>
-    <glyph codepoint='da' name='Uacute'/>
-    <glyph codepoint='db' name='Ucircumflex'/>
-    <glyph codepoint='dc' name='Udieresis'/>
-    <glyph codepoint='dd' name='Yacute'/>
-    <glyph codepoint='de' name='Thorn'/>
-    <glyph codepoint='df' name='germandbls'/>
-    <glyph codepoint='e0' name='agrave'/>
-    <glyph codepoint='e1' name='aacute'/>
-    <glyph codepoint='e2' name='acircumflex'/>
-    <glyph codepoint='e3' name='atilde'/>
-    <glyph codepoint='e4' name='adieresis'/>
-    <glyph codepoint='e5' name='aring'/>
-    <glyph codepoint='e6' name='ae'/>
-    <glyph codepoint='e7' name='ccedilla'/>
-    <glyph codepoint='e8' name='egrave'/>
-    <glyph codepoint='e9' name='eacute'/>
-    <glyph codepoint='ea' name='ecircumflex'/>
-    <glyph codepoint='eb' name='edieresis'/>
-    <glyph codepoint='ec' name='igrave'/>
-    <glyph codepoint='ed' name='iacute'/>
-    <glyph codepoint='ee' name='icircumflex'/>
-    <glyph codepoint='ef' name='idieresis'/>
-    <glyph codepoint='f0' name='eth'/>
-    <glyph codepoint='f1' name='ntilde'/>
-    <glyph codepoint='f2' name='ograve'/>
-    <glyph codepoint='f3' name='oacute'/>
-    <glyph codepoint='f4' name='ocircumflex'/>
-    <glyph codepoint='f5' name='otilde'/>
-    <glyph codepoint='f6' name='odieresis'/>
-    <glyph codepoint='f7' name='divide'/>
-    <glyph codepoint='f8' name='oslash'/>
-    <glyph codepoint='f9' name='ugrave'/>
-    <glyph codepoint='fa' name='uacute'/>
-    <glyph codepoint='fb' name='ucircumflex'/>
-    <glyph codepoint='fc' name='udieresis'/>
-    <glyph codepoint='fd' name='yacute'/>
-    <glyph codepoint='fe' name='thorn'/>
-    <glyph codepoint='ff' name='ydieresis'/>
-  </encoding>
-  <encoding id='PDFDocEncoding' glyphlist='AGL'>
-    <glyph codepoint='18' name='breve'/>
-    <glyph codepoint='19' name='caron'/>
-    <glyph codepoint='1a' name='circumflex'/>
-    <glyph codepoint='1b' name='dotaccent'/>
-    <glyph codepoint='1c' name='hungarumlaut'/>
-    <glyph codepoint='1d' name='ogonek'/>
-    <glyph codepoint='1e' name='ring'/>
-    <glyph codepoint='1f' name='tilde'/>
-    <glyph codepoint='20' name='space'/>
-    <glyph codepoint='21' name='exclam'/>
-    <glyph codepoint='22' name='quotedbl'/>
-    <glyph codepoint='23' name='numbersign'/>
-    <glyph codepoint='24' name='dollar'/>
-    <glyph codepoint='25' name='percent'/>
-    <glyph codepoint='26' name='ampersand'/>
-    <glyph codepoint='27' name='quotesingle'/>
-    <glyph codepoint='28' name='parenleft'/>
-    <glyph codepoint='29' name='parenright'/>
-    <glyph codepoint='2a' name='asterisk'/>
-    <glyph codepoint='2b' name='plus'/>
-    <glyph codepoint='2c' name='comma'/>
-    <glyph codepoint='2d' name='hyphen'/>
-    <glyph codepoint='2e' name='period'/>
-    <glyph codepoint='2f' name='slash'/>
-    <glyph codepoint='30' name='zero'/>
-    <glyph codepoint='31' name='one'/>
-    <glyph codepoint='32' name='two'/>
-    <glyph codepoint='33' name='three'/>
-    <glyph codepoint='34' name='four'/>
-    <glyph codepoint='35' name='five'/>
-    <glyph codepoint='36' name='six'/>
-    <glyph codepoint='37' name='seven'/>
-    <glyph codepoint='38' name='eight'/>
-    <glyph codepoint='39' name='nine'/>
-    <glyph codepoint='3a' name='colon'/>
-    <glyph codepoint='3b' name='semicolon'/>
-    <glyph codepoint='3c' name='less'/>
-    <glyph codepoint='3d' name='equal'/>
-    <glyph codepoint='3e' name='greater'/>
-    <glyph codepoint='3f' name='question'/>
-    <glyph codepoint='40' name='at'/>
-    <glyph codepoint='41' name='A'/>
-    <glyph codepoint='42' name='B'/>
-    <glyph codepoint='43' name='C'/>
-    <glyph codepoint='44' name='D'/>
-    <glyph codepoint='45' name='E'/>
-    <glyph codepoint='46' name='F'/>
-    <glyph codepoint='47' name='G'/>
-    <glyph codepoint='48' name='H'/>
-    <glyph codepoint='49' name='I'/>
-    <glyph codepoint='4a' name='J'/>
-    <glyph codepoint='4b' name='K'/>
-    <glyph codepoint='4c' name='L'/>
-    <glyph codepoint='4d' name='M'/>
-    <glyph codepoint='4e' name='N'/>
-    <glyph codepoint='4f' name='O'/>
-    <glyph codepoint='50' name='P'/>
-    <glyph codepoint='51' name='Q'/>
-    <glyph codepoint='52' name='R'/>
-    <glyph codepoint='53' name='S'/>
-    <glyph codepoint='54' name='T'/>
-    <glyph codepoint='55' name='U'/>
-    <glyph codepoint='56' name='V'/>
-    <glyph codepoint='57' name='W'/>
-    <glyph codepoint='58' name='X'/>
-    <glyph codepoint='59' name='Y'/>
-    <glyph codepoint='5a' name='Z'/>
-    <glyph codepoint='5b' name='bracketleft'/>
-    <glyph codepoint='5c' name='backslash'/>
-    <glyph codepoint='5d' name='bracketright'/>
-    <glyph codepoint='5e' name='asciicircum'/>
-    <glyph codepoint='5f' name='underscore'/>
-    <glyph codepoint='60' name='grave'/>
-    <glyph codepoint='61' name='a'/>
-    <glyph codepoint='62' name='b'/>
-    <glyph codepoint='63' name='c'/>
-    <glyph codepoint='64' name='d'/>
-    <glyph codepoint='65' name='e'/>
-    <glyph codepoint='66' name='f'/>
-    <glyph codepoint='67' name='g'/>
-    <glyph codepoint='68' name='h'/>
-    <glyph codepoint='69' name='i'/>
-    <glyph codepoint='6a' name='j'/>
-    <glyph codepoint='6b' name='k'/>
-    <glyph codepoint='6c' name='l'/>
-    <glyph codepoint='6d' name='m'/>
-    <glyph codepoint='6e' name='n'/>
-    <glyph codepoint='6f' name='o'/>
-    <glyph codepoint='70' name='p'/>
-    <glyph codepoint='71' name='q'/>
-    <glyph codepoint='72' name='r'/>
-    <glyph codepoint='73' name='s'/>
-    <glyph codepoint='74' name='t'/>
-    <glyph codepoint='75' name='u'/>
-    <glyph codepoint='76' name='v'/>
-    <glyph codepoint='77' name='w'/>
-    <glyph codepoint='78' name='x'/>
-    <glyph codepoint='79' name='y'/>
-    <glyph codepoint='7a' name='z'/>
-    <glyph codepoint='7b' name='braceleft'/>
-    <glyph codepoint='7c' name='bar'/>
-    <glyph codepoint='7d' name='braceright'/>
-    <glyph codepoint='7e' name='asciitilde'/>
-    <glyph codepoint='80' name='bullet'/>
-    <glyph codepoint='81' name='dagger'/>
-    <glyph codepoint='82' name='daggerdbl'/>
-    <glyph codepoint='83' name='ellipsis'/>
-    <glyph codepoint='84' name='emdash'/>
-    <glyph codepoint='85' name='endash'/>
-    <glyph codepoint='86' name='florin'/>
-    <glyph codepoint='87' name='fraction'/>
-    <glyph codepoint='88' name='guilsinglleft'/>
-    <glyph codepoint='89' name='guilsinglright'/>
-    <glyph codepoint='8a' name='minus'/>
-    <glyph codepoint='8b' name='perthousand'/>
-    <glyph codepoint='8c' name='quotedblbase'/>
-    <glyph codepoint='8d' name='quotedblleft'/>
-    <glyph codepoint='8e' name='quotedblright'/>
-    <glyph codepoint='8f' name='quoteleft'/>
-    <glyph codepoint='90' name='quoteright'/>
-    <glyph codepoint='91' name='quotesinglbase'/>
-    <glyph codepoint='92' name='trademark'/>
-    <glyph codepoint='93' name='fi'/>
-    <glyph codepoint='94' name='fl'/>
-    <glyph codepoint='95' name='Lslash'/>
-    <glyph codepoint='96' name='OE'/>
-    <glyph codepoint='97' name='Scaron'/>
-    <glyph codepoint='98' name='Ydieresis'/>
-    <glyph codepoint='99' name='Zcaron'/>
-    <glyph codepoint='9a' name='dotlessi'/>
-    <glyph codepoint='9b' name='lslash'/>
-    <glyph codepoint='9c' name='oe'/>
-    <glyph codepoint='9d' name='scaron'/>
-    <glyph codepoint='9e' name='zcaron'/>
-    <glyph codepoint='a0' name='Euro'/>
-    <glyph codepoint='a1' name='exclamdown'/>
-    <glyph codepoint='a2' name='cent'/>
-    <glyph codepoint='a3' name='sterling'/>
-    <glyph codepoint='a4' name='currency'/>
-    <glyph codepoint='a5' name='yen'/>
-    <glyph codepoint='a6' name='brokenbar'/>
-    <glyph codepoint='a7' name='section'/>
-    <glyph codepoint='a8' name='dieresis'/>
-    <glyph codepoint='a9' name='copyright'/>
-    <glyph codepoint='aa' name='ordfeminine'/>
-    <glyph codepoint='ab' name='guillemotleft'/>
-    <glyph codepoint='ac' name='logicalnot'/>
-    <glyph codepoint='ae' name='registered'/>
-    <glyph codepoint='af' name='macron'/>
-    <glyph codepoint='b0' name='degree'/>
-    <glyph codepoint='b1' name='plusminus'/>
-    <glyph codepoint='b2' name='twosuperior'/>
-    <glyph codepoint='b3' name='threesuperior'/>
-    <glyph codepoint='b4' name='acute'/>
-    <glyph codepoint='b5' name='mu'/>
-    <glyph codepoint='b6' name='paragraph'/>
-    <glyph codepoint='b7' name='periodcentered'/>
-    <glyph codepoint='b8' name='cedilla'/>
-    <glyph codepoint='b9' name='onesuperior'/>
-    <glyph codepoint='ba' name='ordmasculine'/>
-    <glyph codepoint='bb' name='guillemotright'/>
-    <glyph codepoint='bc' name='onequarter'/>
-    <glyph codepoint='bd' name='onehalf'/>
-    <glyph codepoint='be' name='threequarters'/>
-    <glyph codepoint='bf' name='questiondown'/>
-    <glyph codepoint='c0' name='Agrave'/>
-    <glyph codepoint='c1' name='Aacute'/>
-    <glyph codepoint='c2' name='Acircumflex'/>
-    <glyph codepoint='c3' name='Atilde'/>
-    <glyph codepoint='c4' name='Adieresis'/>
-    <glyph codepoint='c5' name='Aring'/>
-    <glyph codepoint='c6' name='AE'/>
-    <glyph codepoint='c7' name='Ccedilla'/>
-    <glyph codepoint='c8' name='Egrave'/>
-    <glyph codepoint='c9' name='Eacute'/>
-    <glyph codepoint='ca' name='Ecircumflex'/>
-    <glyph codepoint='cb' name='Edieresis'/>
-    <glyph codepoint='cc' name='Igrave'/>
-    <glyph codepoint='cd' name='Iacute'/>
-    <glyph codepoint='ce' name='Icircumflex'/>
-    <glyph codepoint='cf' name='Idieresis'/>
-    <glyph codepoint='d0' name='Eth'/>
-    <glyph codepoint='d1' name='Ntilde'/>
-    <glyph codepoint='d2' name='Ograve'/>
-    <glyph codepoint='d3' name='Oacute'/>
-    <glyph codepoint='d4' name='Ocircumflex'/>
-    <glyph codepoint='d5' name='Otilde'/>
-    <glyph codepoint='d6' name='Odieresis'/>
-    <glyph codepoint='d7' name='multiply'/>
-    <glyph codepoint='d8' name='Oslash'/>
-    <glyph codepoint='d9' name='Ugrave'/>
-    <glyph codepoint='da' name='Uacute'/>
-    <glyph codepoint='db' name='Ucircumflex'/>
-    <glyph codepoint='dc' name='Udieresis'/>
-    <glyph codepoint='dd' name='Yacute'/>
-    <glyph codepoint='de' name='Thorn'/>
-    <glyph codepoint='df' name='germandbls'/>
-    <glyph codepoint='e0' name='agrave'/>
-    <glyph codepoint='e1' name='aacute'/>
-    <glyph codepoint='e2' name='acircumflex'/>
-    <glyph codepoint='e3' name='atilde'/>
-    <glyph codepoint='e4' name='adieresis'/>
-    <glyph codepoint='e5' name='aring'/>
-    <glyph codepoint='e6' name='ae'/>
-    <glyph codepoint='e7' name='ccedilla'/>
-    <glyph codepoint='e8' name='egrave'/>
-    <glyph codepoint='e9' name='eacute'/>
-    <glyph codepoint='ea' name='ecircumflex'/>
-    <glyph codepoint='eb' name='edieresis'/>
-    <glyph codepoint='ec' name='igrave'/>
-    <glyph codepoint='ed' name='iacute'/>
-    <glyph codepoint='ee' name='icircumflex'/>
-    <glyph codepoint='ef' name='idieresis'/>
-    <glyph codepoint='f0' name='eth'/>
-    <glyph codepoint='f1' name='ntilde'/>
-    <glyph codepoint='f2' name='ograve'/>
-    <glyph codepoint='f3' name='oacute'/>
-    <glyph codepoint='f4' name='ocircumflex'/>
-    <glyph codepoint='f5' name='otilde'/>
-    <glyph codepoint='f6' name='odieresis'/>
-    <glyph codepoint='f7' name='divide'/>
-    <glyph codepoint='f8' name='oslash'/>
-    <glyph codepoint='f9' name='ugrave'/>
-    <glyph codepoint='fa' name='uacute'/>
-    <glyph codepoint='fb' name='ucircumflex'/>
-    <glyph codepoint='fc' name='udieresis'/>
-    <glyph codepoint='fd' name='yacute'/>
-    <glyph codepoint='fe' name='thorn'/>
-    <glyph codepoint='ff' name='ydieresis'/>
-  </encoding>
-  <encoding id='SymbolEncoding' glyphlist='AGL'>
-    <glyph codepoint='20' name='space'/>
-    <glyph codepoint='21' name='exclam'/>
-    <glyph codepoint='22' name='universal'/>
-    <glyph codepoint='23' name='numbersign'/>
-    <glyph codepoint='24' name='existential'/>
-    <glyph codepoint='25' name='percent'/>
-    <glyph codepoint='26' name='ampersand'/>
-    <glyph codepoint='27' name='suchthat'/>
-    <glyph codepoint='28' name='parenleft'/>
-    <glyph codepoint='29' name='parenright'/>
-    <glyph codepoint='2a' name='asteriskmath'/>
-    <glyph codepoint='2b' name='plus'/>
-    <glyph codepoint='2c' name='comma'/>
-    <glyph codepoint='2d' name='minus'/>
-    <glyph codepoint='2e' name='period'/>
-    <glyph codepoint='2f' name='slash'/>
-    <glyph codepoint='30' name='zero'/>
-    <glyph codepoint='31' name='one'/>
-    <glyph codepoint='32' name='two'/>
-    <glyph codepoint='33' name='three'/>
-    <glyph codepoint='34' name='four'/>
-    <glyph codepoint='35' name='five'/>
-    <glyph codepoint='36' name='six'/>
-    <glyph codepoint='37' name='seven'/>
-    <glyph codepoint='38' name='eight'/>
-    <glyph codepoint='39' name='nine'/>
-    <glyph codepoint='3a' name='colon'/>
-    <glyph codepoint='3b' name='semicolon'/>
-    <glyph codepoint='3c' name='less'/>
-    <glyph codepoint='3d' name='equal'/>
-    <glyph codepoint='3e' name='greater'/>
-    <glyph codepoint='3f' name='question'/>
-    <glyph codepoint='40' name='congruent'/>
-    <glyph codepoint='41' name='Alpha'/>
-    <glyph codepoint='42' name='Beta'/>
-    <glyph codepoint='43' name='Chi'/>
-    <glyph codepoint='44' name='Delta'/>
-    <glyph codepoint='45' name='Epsilon'/>
-    <glyph codepoint='46' name='Phi'/>
-    <glyph codepoint='47' name='Gamma'/>
-    <glyph codepoint='48' name='Eta'/>
-    <glyph codepoint='49' name='Iota'/>
-    <glyph codepoint='4a' name='theta1'/>
-    <glyph codepoint='4b' name='Kappa'/>
-    <glyph codepoint='4c' name='Lambda'/>
-    <glyph codepoint='4d' name='Mu'/>
-    <glyph codepoint='4e' name='Nu'/>
-    <glyph codepoint='4f' name='Omicron'/>
-    <glyph codepoint='50' name='Pi'/>
-    <glyph codepoint='51' name='Theta'/>
-    <glyph codepoint='52' name='Rho'/>
-    <glyph codepoint='53' name='Sigma'/>
-    <glyph codepoint='54' name='Tau'/>
-    <glyph codepoint='55' name='Upsilon'/>
-    <glyph codepoint='56' name='sigma1'/>
-    <glyph codepoint='57' name='Omega'/>
-    <glyph codepoint='58' name='Xi'/>
-    <glyph codepoint='59' name='Psi'/>
-    <glyph codepoint='5a' name='Zeta'/>
-    <glyph codepoint='5b' name='bracketleft'/>
-    <glyph codepoint='5c' name='therefore'/>
-    <glyph codepoint='5d' name='bracketright'/>
-    <glyph codepoint='5e' name='perpendicular'/>
-    <glyph codepoint='5f' name='underscore'/>
-    <glyph codepoint='60' name='radicalex'/>
-    <glyph codepoint='61' name='alpha'/>
-    <glyph codepoint='62' name='beta'/>
-    <glyph codepoint='63' name='chi'/>
-    <glyph codepoint='64' name='delta'/>
-    <glyph codepoint='65' name='epsilon'/>
-    <glyph codepoint='66' name='phi'/>
-    <glyph codepoint='67' name='gamma'/>
-    <glyph codepoint='68' name='eta'/>
-    <glyph codepoint='69' name='iota'/>
-    <glyph codepoint='6a' name='phi1'/>
-    <glyph codepoint='6b' name='kappa'/>
-    <glyph codepoint='6c' name='lambda'/>
-    <glyph codepoint='6d' name='mu'/>
-    <glyph codepoint='6e' name='nu'/>
-    <glyph codepoint='6f' name='omicron'/>
-    <glyph codepoint='70' name='pi'/>
-    <glyph codepoint='71' name='theta'/>
-    <glyph codepoint='72' name='rho'/>
-    <glyph codepoint='73' name='sigma'/>
-    <glyph codepoint='74' name='tau'/>
-    <glyph codepoint='75' name='upsilon'/>
-    <glyph codepoint='76' name='omega1'/>
-    <glyph codepoint='77' name='omega'/>
-    <glyph codepoint='78' name='xi'/>
-    <glyph codepoint='79' name='psi'/>
-    <glyph codepoint='7a' name='zeta'/>
-    <glyph codepoint='7b' name='braceleft'/>
-    <glyph codepoint='7c' name='bar'/>
-    <glyph codepoint='7d' name='braceright'/>
-    <glyph codepoint='7e' name='similar'/>
-    <glyph codepoint='a0' name='Euro'/>
-    <glyph codepoint='a1' name='Upsilon1'/>
-    <glyph codepoint='a2' name='minute'/>
-    <glyph codepoint='a3' name='lessequal'/>
-    <glyph codepoint='a4' name='fraction'/>
-    <glyph codepoint='a5' name='infinity'/>
-    <glyph codepoint='a6' name='florin'/>
-    <glyph codepoint='a7' name='club'/>
-    <glyph codepoint='a8' name='diamond'/>
-    <glyph codepoint='a9' name='heart'/>
-    <glyph codepoint='aa' name='spade'/>
-    <glyph codepoint='ab' name='arrowboth'/>
-    <glyph codepoint='ac' name='arrowleft'/>
-    <glyph codepoint='ad' name='arrowup'/>
-    <glyph codepoint='ae' name='arrowright'/>
-    <glyph codepoint='af' name='arrowdown'/>
-    <glyph codepoint='b0' name='degree'/>
-    <glyph codepoint='b1' name='plusminus'/>
-    <glyph codepoint='b2' name='second'/>
-    <glyph codepoint='b3' name='greaterequal'/>
-    <glyph codepoint='b4' name='multiply'/>
-    <glyph codepoint='b5' name='proportional'/>
-    <glyph codepoint='b6' name='partialdiff'/>
-    <glyph codepoint='b7' name='bullet'/>
-    <glyph codepoint='b8' name='divide'/>
-    <glyph codepoint='b9' name='notequal'/>
-    <glyph codepoint='ba' name='equivalence'/>
-    <glyph codepoint='bb' name='approxequal'/>
-    <glyph codepoint='bc' name='ellipsis'/>
-    <glyph codepoint='bd' name='arrowvertex'/>
-    <glyph codepoint='be' name='arrowhorizex'/>
-    <glyph codepoint='bf' name='carriagereturn'/>
-    <glyph codepoint='c0' name='aleph'/>
-    <glyph codepoint='c1' name='Ifraktur'/>
-    <glyph codepoint='c2' name='Rfraktur'/>
-    <glyph codepoint='c3' name='weierstrass'/>
-    <glyph codepoint='c4' name='circlemultiply'/>
-    <glyph codepoint='c5' name='circleplus'/>
-    <glyph codepoint='c6' name='emptyset'/>
-    <glyph codepoint='c7' name='intersection'/>
-    <glyph codepoint='c8' name='union'/>
-    <glyph codepoint='c9' name='propersuperset'/>
-    <glyph codepoint='ca' name='reflexsuperset'/>
-    <glyph codepoint='cb' name='notsubset'/>
-    <glyph codepoint='cc' name='propersubset'/>
-    <glyph codepoint='cd' name='reflexsubset'/>
-    <glyph codepoint='ce' name='element'/>
-    <glyph codepoint='cf' name='notelement'/>
-    <glyph codepoint='d0' name='angle'/>
-    <glyph codepoint='d1' name='gradient'/>
-    <glyph codepoint='d2' name='registerserif'/>
-    <glyph codepoint='d3' name='copyrightserif'/>
-    <glyph codepoint='d4' name='trademarkserif'/>
-    <glyph codepoint='d5' name='product'/>
-    <glyph codepoint='d6' name='radical'/>
-    <glyph codepoint='d7' name='dotmath'/>
-    <glyph codepoint='d8' name='logicalnot'/>
-    <glyph codepoint='d9' name='logicaland'/>
-    <glyph codepoint='da' name='logicalor'/>
-    <glyph codepoint='db' name='arrowdblboth'/>
-    <glyph codepoint='dc' name='arrowdblleft'/>
-    <glyph codepoint='dd' name='arrowdblup'/>
-    <glyph codepoint='de' name='arrowdblright'/>
-    <glyph codepoint='df' name='arrowdbldown'/>
-    <glyph codepoint='e0' name='lozenge'/>
-    <glyph codepoint='e1' name='angleleft'/>
-    <glyph codepoint='e2' name='registersans'/>
-    <glyph codepoint='e3' name='copyrightsans'/>
-    <glyph codepoint='e4' name='trademarksans'/>
-    <glyph codepoint='e5' name='summation'/>
-    <glyph codepoint='e6' name='parenlefttp'/>
-    <glyph codepoint='e7' name='parenleftex'/>
-    <glyph codepoint='e8' name='parenleftbt'/>
-    <glyph codepoint='e9' name='bracketlefttp'/>
-    <glyph codepoint='ea' name='bracketleftex'/>
-    <glyph codepoint='eb' name='bracketleftbt'/>
-    <glyph codepoint='ec' name='bracelefttp'/>
-    <glyph codepoint='ed' name='braceleftmid'/>
-    <glyph codepoint='ee' name='braceleftbt'/>
-    <glyph codepoint='ef' name='braceex'/>
-    <glyph codepoint='f1' name='angleright'/>
-    <glyph codepoint='f2' name='integral'/>
-    <glyph codepoint='f3' name='integraltp'/>
-    <glyph codepoint='f4' name='integralex'/>
-    <glyph codepoint='f5' name='integralbt'/>
-    <glyph codepoint='f6' name='parenrighttp'/>
-    <glyph codepoint='f7' name='parenrightex'/>
-    <glyph codepoint='f8' name='parenrightbt'/>
-    <glyph codepoint='f9' name='bracketrighttp'/>
-    <glyph codepoint='fa' name='bracketrightex'/>
-    <glyph codepoint='fb' name='bracketrightbt'/>
-    <glyph codepoint='fc' name='bracerighttp'/>
-    <glyph codepoint='fd' name='bracerightmid'/>
-    <glyph codepoint='fe' name='bracerightbt'/>
-  </encoding>
-  <encoding id='ZapfDingbatsEncoding' glyphlist='ZGL'>
-    <glyph codepoint='20' name='space'/>
-    <glyph codepoint='21' name='a1'/>
-    <glyph codepoint='22' name='a2'/>
-    <glyph codepoint='23' name='a202'/>
-    <glyph codepoint='24' name='a3'/>
-    <glyph codepoint='25' name='a4'/>
-    <glyph codepoint='26' name='a5'/>
-    <glyph codepoint='27' name='a119'/>
-    <glyph codepoint='28' name='a118'/>
-    <glyph codepoint='29' name='a117'/>
-    <glyph codepoint='2A' name='a11'/>
-    <glyph codepoint='2B' name='a12'/>
-    <glyph codepoint='2C' name='a13'/>
-    <glyph codepoint='2D' name='a14'/>
-    <glyph codepoint='2E' name='a15'/>
-    <glyph codepoint='2F' name='a16'/>
-    <glyph codepoint='30' name='a105'/>
-    <glyph codepoint='31' name='a17'/>
-    <glyph codepoint='32' name='a18'/>
-    <glyph codepoint='33' name='a19'/>
-    <glyph codepoint='34' name='a20'/>
-    <glyph codepoint='35' name='a21'/>
-    <glyph codepoint='36' name='a22'/>
-    <glyph codepoint='37' name='a23'/>
-    <glyph codepoint='38' name='a24'/>
-    <glyph codepoint='39' name='a25'/>
-    <glyph codepoint='3A' name='a26'/>
-    <glyph codepoint='3B' name='a27'/>
-    <glyph codepoint='3C' name='a28'/>
-    <glyph codepoint='3D' name='a6'/>
-    <glyph codepoint='3E' name='a7'/>
-    <glyph codepoint='3F' name='a8'/>
-    <glyph codepoint='40' name='a9'/>
-    <glyph codepoint='41' name='a10'/>
-    <glyph codepoint='42' name='a29'/>
-    <glyph codepoint='43' name='a30'/>
-    <glyph codepoint='44' name='a31'/>
-    <glyph codepoint='45' name='a32'/>
-    <glyph codepoint='46' name='a33'/>
-    <glyph codepoint='47' name='a34'/>
-    <glyph codepoint='48' name='a35'/>
-    <glyph codepoint='49' name='a36'/>
-    <glyph codepoint='4A' name='a37'/>
-    <glyph codepoint='4B' name='a38'/>
-    <glyph codepoint='4C' name='a39'/>
-    <glyph codepoint='4D' name='a40'/>
-    <glyph codepoint='4E' name='a41'/>
-    <glyph codepoint='4F' name='a42'/>
-    <glyph codepoint='50' name='a43'/>
-    <glyph codepoint='51' name='a44'/>
-    <glyph codepoint='52' name='a45'/>
-    <glyph codepoint='53' name='a46'/>
-    <glyph codepoint='54' name='a47'/>
-    <glyph codepoint='55' name='a48'/>
-    <glyph codepoint='56' name='a49'/>
-    <glyph codepoint='57' name='a50'/>
-    <glyph codepoint='58' name='a51'/>
-    <glyph codepoint='59' name='a52'/>
-    <glyph codepoint='5A' name='a53'/>
-    <glyph codepoint='5B' name='a54'/>
-    <glyph codepoint='5C' name='a55'/>
-    <glyph codepoint='5D' name='a56'/>
-    <glyph codepoint='5E' name='a57'/>
-    <glyph codepoint='5F' name='a58'/>
-    <glyph codepoint='60' name='a59'/>
-    <glyph codepoint='61' name='a60'/>
-    <glyph codepoint='62' name='a61'/>
-    <glyph codepoint='63' name='a62'/>
-    <glyph codepoint='64' name='a63'/>
-    <glyph codepoint='65' name='a64'/>
-    <glyph codepoint='66' name='a65'/>
-    <glyph codepoint='67' name='a66'/>
-    <glyph codepoint='68' name='a67'/>
-    <glyph codepoint='69' name='a68'/>
-    <glyph codepoint='6A' name='a69'/>
-    <glyph codepoint='6B' name='a70'/>
-    <glyph codepoint='6C' name='a71'/>
-    <glyph codepoint='6D' name='a72'/>
-    <glyph codepoint='6E' name='a73'/>
-    <glyph codepoint='6F' name='a74'/>
-    <glyph codepoint='70' name='a203'/>
-    <glyph codepoint='71' name='a75'/>
-    <glyph codepoint='72' name='a204'/>
-    <glyph codepoint='73' name='a76'/>
-    <glyph codepoint='74' name='a77'/>
-    <glyph codepoint='75' name='a78'/>
-    <glyph codepoint='76' name='a79'/>
-    <glyph codepoint='77' name='a81'/>
-    <glyph codepoint='78' name='a82'/>
-    <glyph codepoint='79' name='a83'/>
-    <glyph codepoint='7A' name='a84'/>
-    <glyph codepoint='7B' name='a97'/>
-    <glyph codepoint='7C' name='a98'/>
-    <glyph codepoint='7D' name='a99'/>
-    <glyph codepoint='7E' name='a100'/>
-    <glyph codepoint='80' name='a89'/>
-    <glyph codepoint='81' name='a90'/>
-    <glyph codepoint='82' name='a93'/>
-    <glyph codepoint='83' name='a94'/>
-    <glyph codepoint='84' name='a91'/>
-    <glyph codepoint='85' name='a92'/>
-    <glyph codepoint='86' name='a205'/>
-    <glyph codepoint='87' name='a85'/>
-    <glyph codepoint='88' name='a206'/>
-    <glyph codepoint='89' name='a86'/>
-    <glyph codepoint='8A' name='a87'/>
-    <glyph codepoint='8B' name='a88'/>
-    <glyph codepoint='8C' name='a95'/>
-    <glyph codepoint='8D' name='a96'/>
-    <glyph codepoint='A1' name='a101'/>
-    <glyph codepoint='A2' name='a102'/>
-    <glyph codepoint='A3' name='a103'/>
-    <glyph codepoint='A4' name='a104'/>
-    <glyph codepoint='A5' name='a106'/>
-    <glyph codepoint='A6' name='a107'/>
-    <glyph codepoint='A7' name='a108'/>
-    <glyph codepoint='A8' name='a112'/>
-    <glyph codepoint='A9' name='a111'/>
-    <glyph codepoint='AA' name='a110'/>
-    <glyph codepoint='AB' name='a109'/>
-    <glyph codepoint='AC' name='a120'/>
-    <glyph codepoint='AD' name='a121'/>
-    <glyph codepoint='AE' name='a122'/>
-    <glyph codepoint='AF' name='a123'/>
-    <glyph codepoint='B0' name='a124'/>
-    <glyph codepoint='B1' name='a125'/>
-    <glyph codepoint='B2' name='a126'/>
-    <glyph codepoint='B3' name='a127'/>
-    <glyph codepoint='B4' name='a128'/>
-    <glyph codepoint='B5' name='a129'/>
-    <glyph codepoint='B6' name='a130'/>
-    <glyph codepoint='B7' name='a131'/>
-    <glyph codepoint='B8' name='a132'/>
-    <glyph codepoint='B9' name='a133'/>
-    <glyph codepoint='BA' name='a134'/>
-    <glyph codepoint='BB' name='a135'/>
-    <glyph codepoint='BC' name='a136'/>
-    <glyph codepoint='BD' name='a137'/>
-    <glyph codepoint='BE' name='a138'/>
-    <glyph codepoint='BF' name='a139'/>
-    <glyph codepoint='C0' name='a140'/>
-    <glyph codepoint='C1' name='a141'/>
-    <glyph codepoint='C2' name='a142'/>
-    <glyph codepoint='C3' name='a143'/>
-    <glyph codepoint='C4' name='a144'/>
-    <glyph codepoint='C5' name='a145'/>
-    <glyph codepoint='C6' name='a146'/>
-    <glyph codepoint='C7' name='a147'/>
-    <glyph codepoint='C8' name='a148'/>
-    <glyph codepoint='C9' name='a149'/>
-    <glyph codepoint='CA' name='a150'/>
-    <glyph codepoint='CB' name='a151'/>
-    <glyph codepoint='CC' name='a152'/>
-    <glyph codepoint='CD' name='a153'/>
-    <glyph codepoint='CE' name='a154'/>
-    <glyph codepoint='CF' name='a155'/>
-    <glyph codepoint='D0' name='a156'/>
-    <glyph codepoint='D1' name='a157'/>
-    <glyph codepoint='D2' name='a158'/>
-    <glyph codepoint='D3' name='a159'/>
-    <glyph codepoint='D4' name='a160'/>
-    <glyph codepoint='D5' name='a161'/>
-    <glyph codepoint='D6' name='a163'/>
-    <glyph codepoint='D7' name='a164'/>
-    <glyph codepoint='D8' name='a196'/>
-    <glyph codepoint='D9' name='a165'/>
-    <glyph codepoint='DA' name='a192'/>
-    <glyph codepoint='DB' name='a166'/>
-    <glyph codepoint='DC' name='a167'/>
-    <glyph codepoint='DD' name='a168'/>
-    <glyph codepoint='DE' name='a169'/>
-    <glyph codepoint='DF' name='a170'/>
-    <glyph codepoint='E0' name='a171'/>
-    <glyph codepoint='E1' name='a172'/>
-    <glyph codepoint='E2' name='a173'/>
-    <glyph codepoint='E3' name='a162'/>
-    <glyph codepoint='E4' name='a174'/>
-    <glyph codepoint='E5' name='a175'/>
-    <glyph codepoint='E6' name='a176'/>
-    <glyph codepoint='E7' name='a177'/>
-    <glyph codepoint='E8' name='a178'/>
-    <glyph codepoint='E9' name='a179'/>
-    <glyph codepoint='EA' name='a193'/>
-    <glyph codepoint='EB' name='a180'/>
-    <glyph codepoint='EC' name='a199'/>
-    <glyph codepoint='ED' name='a181'/>
-    <glyph codepoint='EE' name='a200'/>
-    <glyph codepoint='EF' name='a182'/>
-    <glyph codepoint='F1' name='a201'/>
-    <glyph codepoint='F2' name='a183'/>
-    <glyph codepoint='F3' name='a184'/>
-    <glyph codepoint='F4' name='a197'/>
-    <glyph codepoint='F5' name='a185'/>
-    <glyph codepoint='F6' name='a194'/>
-    <glyph codepoint='F7' name='a198'/>
-    <glyph codepoint='F8' name='a186'/>
-    <glyph codepoint='F9' name='a195'/>
-    <glyph codepoint='FA' name='a187'/>
-    <glyph codepoint='FB' name='a188'/>
-    <glyph codepoint='FC' name='a189'/>
-    <glyph codepoint='FD' name='a190'/>
-    <glyph codepoint='FE' name='a191'/>
-  </encoding>
-</encoding-set>
diff --git a/src/codegen/fo-property-mapping.xsl b/src/codegen/fo-property-mapping.xsl
deleted file mode 100644 (file)
index 408144a..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-<!--
-  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$ -->
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:lxslt="http://xml.apache.org/xslt">
-
-<xsl:include href="propinc.xsl"/>
-
-<xsl:output method="text" />
-
-
-<xsl:template name="genmaker">
-  <xsl:param name="prop" select="."/>
-  <xsl:param name="htname"/>
-
-  <xsl:variable name="makerclass">
-   <xsl:choose>
-    <xsl:when test="$prop/use-generic and count($prop/*)=2">
-     <xsl:value-of select="$prop/use-generic"/>
-    </xsl:when>
-    <xsl:when test="$prop/class-name">
-     <xsl:value-of select="$prop/class-name"/><xsl:text>Maker</xsl:text>
-    </xsl:when>
-    <xsl:otherwise> <!-- make from name -->
-      <xsl:call-template name="makeClassName">
-        <xsl:with-param name="propstr" select="$prop/name"/>
-      </xsl:call-template><xsl:text>Maker</xsl:text>
-    </xsl:otherwise>
-   </xsl:choose>
-  </xsl:variable>
-  <xsl:variable name="lcletters" select="'abcdefghijklmnopqrstuvwxyz-:'" />
-  <xsl:variable name="ucletters" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ__'" />
-  <xsl:variable name="enum" select="translate($prop/name, $lcletters, $ucletters)"/>
-<xsl:text>    addPropertyName("</xsl:text><xsl:value-of select="$prop/name"/>", PR_<xsl:value-of select="$enum"/>);
-<xsl:text>    </xsl:text><xsl:value-of select="$htname"/>[PR_<xsl:value-of select="$enum"/>] =<xsl:value-of select="$makerclass"/>.maker(PR_<xsl:value-of select="$enum"/>);
-</xsl:template>
-
-
-<xsl:template name="genenum">
-  <xsl:param name="prop" select="."/>
-  <xsl:variable name="lcletters" select="'abcdefghijklmnopqrstuvwxyz-:'" />
-  <xsl:variable name="ucletters" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ__'" />
-  <xsl:variable name="num" select="count(preceding-sibling::property)"/>
-  <xsl:variable name="enum" select="translate($prop/name, $lcletters, $ucletters)"/>
-<!--
-<xsl:text>  public final static short </xsl:text><xsl:value-of select="$enum"/> = <xsl:value-of select="$num"/>;
--->
-</xsl:template>
-
-
-<xsl:template match="text()"/>
-<xsl:template match="text()" mode="enums"/>
-
-<xsl:template match="property-list">
-package org.apache.fop.fo.properties;
-
-import java.util.HashMap;
-import java.util.Set;
-import org.apache.fop.fo.Constants;
-import org.apache.fop.fo.Property;
-//import org.apache.fop.svg.*;
-
-public class <xsl:value-of select="@family"/>PropertyMapping implements Constants {
-
-  private static Property.Maker[] s_htGeneric = new Property.Maker[PROPERTY_COUNT+1];
-  /* s_htElementLists not currently used; apparently for specifying element-specific
-   * property makers (instead of the default maker for a particular property); see
-   * former org.apache.fop.fo.PropertyListBuilder 
-   */
-  private static HashMap s_htElementLists = new HashMap();
-  private static HashMap s_htSubPropNames = new HashMap();
-  private static HashMap s_htPropNames = new HashMap();
-  private static HashMap s_htPropIds = new HashMap();
-  <xsl:for-each select="element-property-list">
-  private static HashMap s_ht<xsl:value-of select="localname[1]"/>;</xsl:for-each>
-
-  <xsl:apply-templates/>
-
-  public static Property.Maker[] getGenericMappings() {
-    return s_htGeneric;
-  }
-
-  public static Set getElementMappings() {
-    return s_htElementLists.keySet();
-  }
-
-  public static Property.Maker[] getElementMapping(int elemName) {
-    return (Property.Maker[])s_htElementLists.get(new Integer(elemName));
-  }
-
-  public static int getPropertyId(String name) {
-    // check to see if base.compound or just base property
-    int sepchar = name.indexOf('.');
-
-    if (sepchar > -1) {
-        Integer baseId = (Integer) s_htPropNames.get(name.substring(0, sepchar));
-        if (baseId == null) {
-            return -1;
-        } else {
-            int cmpdId = getSubPropertyId(name.substring(sepchar + 1));
-            if (cmpdId == -1) {
-                return -1;
-            } else {
-                return baseId.intValue() + cmpdId;
-            }
-        }
-    } else {
-        Integer baseId = (Integer) s_htPropNames.get(name);
-        if (baseId == null)
-            return -1;
-        return baseId.intValue();
-    }
-  }
-
-  public static int getSubPropertyId(String name) {
-       Integer i = (Integer) s_htSubPropNames.get(name);
-       if (i == null)
-               return -1;
-    return i.intValue();
-  }
-  
-  // returns a property, compound, or property.compound name
-  public static String getPropertyName(int id) {
-    if (((id &amp; Constants.COMPOUND_MASK) == 0) 
-        || ((id &amp; Constants.PROPERTY_MASK) == 0)) {
-        return (String) s_htPropIds.get(new Integer(id));
-    } else {
-        return (String) s_htPropIds.get(new Integer(
-            id &amp; Constants.PROPERTY_MASK)) + "." + s_htPropIds.get(
-            new Integer(id &amp; Constants.COMPOUND_MASK));
-    }
-  }
-
-  static {
-    addSubPropertyName("length", CP_LENGTH);
-    addSubPropertyName("conditionality", CP_CONDITIONALITY);
-    addSubPropertyName("block-progression-direction", CP_BLOCK_PROGRESSION_DIRECTION);
-    addSubPropertyName("inline-progression-direction", CP_INLINE_PROGRESSION_DIRECTION);
-    addSubPropertyName("within-line", CP_WITHIN_LINE);
-    addSubPropertyName("within-column", CP_WITHIN_COLUMN);
-    addSubPropertyName("within-page", CP_WITHIN_PAGE);
-    addSubPropertyName("minimum", CP_MINIMUM);
-    addSubPropertyName("maximum", CP_MAXIMUM);
-    addSubPropertyName("optimum", CP_OPTIMUM);
-    addSubPropertyName("precedence", CP_PRECEDENCE);
-  
-  }
-  
-  public static void addPropertyName(String name, int id) {
-    s_htPropNames.put(name, new Integer(id));
-    s_htPropIds.put(new Integer(id), name);
-  }
-
-  public static void addSubPropertyName(String name, int id) {
-    s_htSubPropNames.put(name, new Integer(id));
-    s_htPropIds.put(new Integer(id), name);
-  }
-}
-</xsl:template>
-
-<xsl:template match="generic-property-list">
-  <xsl:apply-templates mode="enums"/>
-  static {
-    // Generate the generic mapping
-<xsl:apply-templates>
-    <xsl:with-param name="htname" select='"s_htGeneric"'/>
-  </xsl:apply-templates>
-  }
-</xsl:template>
-
-<xsl:template match="element-property-list">
-  <xsl:variable name="ename" select="localname[1]"/>
-  static {
-    s_ht<xsl:value-of select="$ename"/> = new HashMap();
-   <xsl:for-each select="localname">
-    s_htElementLists.put("<xsl:value-of select='.'/>", s_ht<xsl:value-of select='$ename'/>);
-   </xsl:for-each>
-
-<xsl:apply-templates>
-    <xsl:with-param name='htname'>s_ht<xsl:value-of select="$ename"/></xsl:with-param>
-    </xsl:apply-templates>
-  }
-</xsl:template>
-
-<xsl:template match="property[@type='generic']" mode="enums">
-  /* PROPCLASS = <xsl:call-template name="propclass"/> */
-</xsl:template>
-
-<xsl:template match="property" mode="enums">
-  <xsl:param name="htname"/>
-  <xsl:variable name="refname" select="name"/>
-  <xsl:choose>
-    <xsl:when test="@type='ref'">
-      <xsl:call-template name="genenum">
-        <xsl:with-param name="htname" select="$htname"/>
-        <xsl:with-param name="prop"
-          select='document(concat(@family, "properties.xml"))//property[name=$refname]'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="not(@type)">
-      <xsl:call-template name="genenum">
-    <xsl:with-param name="htname" select="$htname"/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:otherwise/>
-  </xsl:choose>
-</xsl:template>
-
-<xsl:template match="subproperty" mode="enums">
-  <xsl:call-template name="genenum"/>
-</xsl:template>
-
-<xsl:template match="property">
-  <xsl:param name="htname"/>
-  <xsl:variable name="refname" select="name"/>
-  <xsl:choose>
-    <xsl:when test="@type='ref'">
-      <xsl:call-template name="genmaker">
-        <xsl:with-param name="htname" select="$htname"/>
-        <xsl:with-param name="prop"
-          select='document(concat(@family, "properties.xml"))//property[name=$refname]'/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="not(@type)">
-      <xsl:call-template name="genmaker">
-    <xsl:with-param name="htname" select="$htname"/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:otherwise/>
-  </xsl:choose>
-</xsl:template>
-
-<xsl:template match="property[@type='generic']">
-  /* PROPCLASS = <xsl:call-template name="propclass"/> */
-</xsl:template>
-
-</xsl:stylesheet>
-
-
diff --git a/src/codegen/fo/colorkw.xml b/src/codegen/fo/colorkw.xml
new file mode 100644 (file)
index 0000000..0a0c271
--- /dev/null
@@ -0,0 +1,166 @@
+<!--
+  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$ -->
+<toto>
+<keyword-equiv match="aliceblue">#f0f8ff</keyword-equiv>
+<keyword-equiv match="antiquewhite">#faebd7</keyword-equiv>
+<keyword-equiv match="aqua">#00ffff</keyword-equiv>
+<keyword-equiv match="aquamarine">#7fffd4</keyword-equiv>
+<keyword-equiv match="azure">#f0ffff</keyword-equiv>
+<keyword-equiv match="beige">#f5f5dc</keyword-equiv>
+<keyword-equiv match="bisque">#ffe4c4</keyword-equiv>
+<keyword-equiv match="black">#000000</keyword-equiv>
+<keyword-equiv match="blanchedalmond">#ffebcd</keyword-equiv>
+<keyword-equiv match="blue">#0000ff</keyword-equiv>
+<keyword-equiv match="blueviolet">#8a2be2</keyword-equiv>
+<keyword-equiv match="brown">#a52a2a</keyword-equiv>
+<keyword-equiv match="burlywood">#deb887</keyword-equiv>
+<keyword-equiv match="cadetblue">#5f9ea0</keyword-equiv>
+<keyword-equiv match="chartreuse">#7fff00</keyword-equiv>
+<keyword-equiv match="chocolate">#d2691e</keyword-equiv>
+<keyword-equiv match="coral">#ff7f50</keyword-equiv>
+<keyword-equiv match="cornflowerblue">#6495ed</keyword-equiv>
+<keyword-equiv match="cornsilk">#fff8dc</keyword-equiv>
+<keyword-equiv match="crimson">#dc143c</keyword-equiv>
+<keyword-equiv match="cyan">#00ffff</keyword-equiv>
+<keyword-equiv match="darkblue">#00008b</keyword-equiv>
+<keyword-equiv match="darkcyan">#008b8b</keyword-equiv>
+<keyword-equiv match="darkgoldenrod">#b8860b</keyword-equiv>
+<keyword-equiv match="darkgray">#a9a9a9</keyword-equiv>
+<keyword-equiv match="darkgreen">#006400</keyword-equiv>
+<keyword-equiv match="darkgrey">#a9a9a9</keyword-equiv>
+<keyword-equiv match="darkkhaki">#bdb76b</keyword-equiv>
+<keyword-equiv match="darkmagenta">#8b008b</keyword-equiv>
+<keyword-equiv match="darkolivegreen">#556b2f</keyword-equiv>
+<keyword-equiv match="darkorange">#ff8c00</keyword-equiv>
+<keyword-equiv match="darkorchid">#9932cc</keyword-equiv>
+<keyword-equiv match="darkred">#8b0000</keyword-equiv>
+<keyword-equiv match="darksalmon">#e9967a</keyword-equiv>
+<keyword-equiv match="darkseagreen">#8fbc8f</keyword-equiv>
+<keyword-equiv match="darkslateblue">#483d8b</keyword-equiv>
+<keyword-equiv match="darkslategray">#2f4f4f</keyword-equiv>
+<keyword-equiv match="darkslategrey">#2f4f4f</keyword-equiv>
+<keyword-equiv match="darkturquoise">#00ced1</keyword-equiv>
+<keyword-equiv match="darkviolet">#9400d3</keyword-equiv>
+<keyword-equiv match="deeppink">#ff1493</keyword-equiv>
+<keyword-equiv match="deepskyblue">#00bfff</keyword-equiv>
+<keyword-equiv match="dimgray">#696969</keyword-equiv>
+<keyword-equiv match="dimgrey">#696969</keyword-equiv>
+<keyword-equiv match="dodgerblue">#1e90ff</keyword-equiv>
+<keyword-equiv match="firebrick">#b22222</keyword-equiv>
+<keyword-equiv match="floralwhite">#fffaf0</keyword-equiv>
+<keyword-equiv match="forestgreen">#228b22</keyword-equiv>
+<keyword-equiv match="fuchsia">#ff00ff</keyword-equiv>
+<keyword-equiv match="gainsboro">#dcdcdc</keyword-equiv>
+<keyword-equiv match="lightpink">#ffb6c1</keyword-equiv>
+<keyword-equiv match="lightsalmon">#ffa07a</keyword-equiv>
+<keyword-equiv match="lightseagreen">#20b2aa</keyword-equiv>
+<keyword-equiv match="lightskyblue">#87cefa</keyword-equiv>
+<keyword-equiv match="lightslategray">#778899</keyword-equiv>
+<keyword-equiv match="lightslategrey">#778899</keyword-equiv>
+<keyword-equiv match="lightsteelblue">#b0c4de</keyword-equiv>
+<keyword-equiv match="lightyellow">#ffffe0</keyword-equiv>
+<keyword-equiv match="lime">#00ff00</keyword-equiv>
+<keyword-equiv match="limegreen">#32cd32</keyword-equiv>
+<keyword-equiv match="linen">#faf0e6</keyword-equiv>
+<keyword-equiv match="magenta">#ff00ff</keyword-equiv>
+<keyword-equiv match="maroon">#800000</keyword-equiv>
+<keyword-equiv match="mediumaquamarine">#66cdaa</keyword-equiv>
+<keyword-equiv match="mediumblue">#0000cd</keyword-equiv>
+<keyword-equiv match="mediumorchid">#ba55d3</keyword-equiv>
+<keyword-equiv match="mediumpurple">#9370db</keyword-equiv>
+<keyword-equiv match="mediumseagreen">#3cb371</keyword-equiv>
+<keyword-equiv match="mediumslateblue">#7b68ee</keyword-equiv>
+<keyword-equiv match="mediumspringgreen">#00fa9a</keyword-equiv>
+<keyword-equiv match="mediumturquoise">#48d1cc</keyword-equiv>
+<keyword-equiv match="mediumvioletred">#c71585</keyword-equiv>
+<keyword-equiv match="midnightblue">#191970</keyword-equiv>
+<keyword-equiv match="mintcream">#f5fffa</keyword-equiv>
+<keyword-equiv match="mistyrose">#ffe4e1</keyword-equiv>
+<keyword-equiv match="moccasin">#ffe4b5</keyword-equiv>
+<keyword-equiv match="navajowhite">#ffdead</keyword-equiv>
+<keyword-equiv match="navy">#000080</keyword-equiv>
+<keyword-equiv match="oldlace">#fdf5e6</keyword-equiv>
+<keyword-equiv match="olive">#808000</keyword-equiv>
+<keyword-equiv match="olivedrab">#6b8e23</keyword-equiv>
+<keyword-equiv match="orange">#ffa500</keyword-equiv>
+<keyword-equiv match="orangered">#ff4500</keyword-equiv>
+<keyword-equiv match="orchid">#da70d6</keyword-equiv>
+<keyword-equiv match="palegoldenrod">#eee8aa</keyword-equiv>
+<keyword-equiv match="palegreen">#98fb98</keyword-equiv>
+<keyword-equiv match="paleturquoise">#afeeee</keyword-equiv>
+<keyword-equiv match="palevioletred">#db7093</keyword-equiv>
+<keyword-equiv match="papayawhip">#ffefd5</keyword-equiv>
+<keyword-equiv match="peachpuff">#ffdab9</keyword-equiv>
+<keyword-equiv match="peru">#cd853f</keyword-equiv>
+<keyword-equiv match="pink">#ffc0cb</keyword-equiv>
+<keyword-equiv match="plum">#dda0dd</keyword-equiv>
+<keyword-equiv match="powderblue">#b0e0e6</keyword-equiv>
+<keyword-equiv match="purple">#800080</keyword-equiv>
+<keyword-equiv match="red">#ff0000</keyword-equiv>
+<keyword-equiv match="rosybrown">#bc8f8f</keyword-equiv>
+<keyword-equiv match="royalblue">#4169e1</keyword-equiv>
+<keyword-equiv match="saddlebrown">#8b4513</keyword-equiv>
+<keyword-equiv match="salmon">#fa8072</keyword-equiv>
+<keyword-equiv match="ghostwhite">#f8f8ff</keyword-equiv>
+<keyword-equiv match="gold">#ffd700</keyword-equiv>
+<keyword-equiv match="goldenrod">#daa520</keyword-equiv>
+<keyword-equiv match="gray">#808080</keyword-equiv>
+<keyword-equiv match="grey">#808080</keyword-equiv>
+<keyword-equiv match="green">#008000</keyword-equiv>
+<keyword-equiv match="greenyellow">#adff2f</keyword-equiv>
+<keyword-equiv match="honeydew">#f0fff0</keyword-equiv>
+<keyword-equiv match="hotpink">#ff69b4</keyword-equiv>
+<keyword-equiv match="indianred">#cd5c5c</keyword-equiv>
+<keyword-equiv match="indigo">#4b0082</keyword-equiv>
+<keyword-equiv match="ivory">#fffff0</keyword-equiv>
+<keyword-equiv match="khaki">#f0e68c</keyword-equiv>
+<keyword-equiv match="lavender">#e6e6fa</keyword-equiv>
+<keyword-equiv match="lavenderblush">#fff0f5</keyword-equiv>
+<keyword-equiv match="lawngreen">#7cfc00</keyword-equiv>
+<keyword-equiv match="lemonchiffon">#fffacd</keyword-equiv>
+<keyword-equiv match="lightblue">#add8e6</keyword-equiv>
+<keyword-equiv match="lightcoral">#f08080</keyword-equiv>
+<keyword-equiv match="lightcyan">#e0ffff</keyword-equiv>
+<keyword-equiv match="lightgoldenrodyellow">#fafad2</keyword-equiv>
+<keyword-equiv match="lightgray">#d3d3d3</keyword-equiv>
+<keyword-equiv match="lightgreen">#90ee90</keyword-equiv>
+<keyword-equiv match="lightgrey">#d3d3d3</keyword-equiv>
+<keyword-equiv match="sandybrown">#f4a460</keyword-equiv>
+<keyword-equiv match="seagreen">#2e8b57</keyword-equiv>
+<keyword-equiv match="seashell">#fff5ee</keyword-equiv>
+<keyword-equiv match="sienna">#a0522d</keyword-equiv>
+<keyword-equiv match="silver">#c0c0c0</keyword-equiv>
+<keyword-equiv match="skyblue">#87ceeb</keyword-equiv>
+<keyword-equiv match="slateblue">#6a5acd</keyword-equiv>
+<keyword-equiv match="slategray">#708090</keyword-equiv>
+<keyword-equiv match="slategrey">#708090</keyword-equiv>
+<keyword-equiv match="snow">#fffafa</keyword-equiv>
+<keyword-equiv match="springgreen">#00ff7f</keyword-equiv>
+<keyword-equiv match="steelblue">#4682b4</keyword-equiv>
+<keyword-equiv match="tan">#d2b48c</keyword-equiv>
+<keyword-equiv match="teal">#008080</keyword-equiv>
+<keyword-equiv match="thistle">#d8bfd8</keyword-equiv>
+<keyword-equiv match="tomato">#ff6347</keyword-equiv>
+<keyword-equiv match="turquoise">#40e0d0</keyword-equiv>
+<keyword-equiv match="violet">#ee82ee</keyword-equiv>
+<keyword-equiv match="wheat">#f5deb3</keyword-equiv>
+<keyword-equiv match="white">#ffffff</keyword-equiv>
+<keyword-equiv match="whitesmoke">#f5f5f5</keyword-equiv>
+<keyword-equiv match="yellow">#ffff00</keyword-equiv>
+<keyword-equiv match="yellowgreen">#9acd32</keyword-equiv>
+</toto>
diff --git a/src/codegen/fo/constants.xml b/src/codegen/fo/constants.xml
new file mode 100644 (file)
index 0000000..d477506
--- /dev/null
@@ -0,0 +1,21 @@
+<!--
+  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$ -->
+<allprops>
+<propfile>foproperties.xml</propfile>
+<elementfile>foelements.xml</elementfile>
+</allprops>
diff --git a/src/codegen/fo/constants.xsl b/src/codegen/fo/constants.xsl
new file mode 100644 (file)
index 0000000..af51489
--- /dev/null
@@ -0,0 +1,266 @@
+<!--
+  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$ -->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:include href="./propinc.xsl"/>
+
+<xsl:output method="text" />
+
+<xsl:template match="allprops">
+<xsl:variable name="constlist">
+  <xsl:for-each select="document(propfile)//generic-property-list
+    //enumeration/value">
+    <xsl:sort select="@const"/>
+  <xsl:value-of select="@const"/>:</xsl:for-each>
+</xsl:variable>
+
+<xsl:variable name="propertylist">
+  <xsl:for-each select="document(propfile)//generic-property-list//
+    property[not(@type = 'generic')]">
+    <xsl:sort select="name"/>
+    <xsl:text>PR_</xsl:text>
+    <xsl:call-template name="makeEnumConstant">
+      <xsl:with-param name="propstr" select="name" />
+    </xsl:call-template>
+    <xsl:text>:</xsl:text>
+  </xsl:for-each>
+</xsl:variable>
+
+<xsl:variable name="compoundpropertylist">
+  <xsl:for-each select="document(propfile)//generic-property-list//
+    property/compound/subproperty">
+    <xsl:sort select="name"/>
+    <xsl:text>CP_</xsl:text>
+    <xsl:call-template name="makeEnumConstant">
+      <xsl:with-param name="propstr" select="name" />
+    </xsl:call-template>
+    <xsl:text>:</xsl:text>
+  </xsl:for-each>
+</xsl:variable>
+
+<xsl:variable name="elementlist">
+  <xsl:for-each select="document(elementfile)//element">
+    <xsl:sort select="name"/>
+    <xsl:text>FO_</xsl:text>
+    <xsl:call-template name="makeEnumConstant">
+      <xsl:with-param name="propstr" select="name" />
+    </xsl:call-template>
+    <xsl:text>:</xsl:text>
+  </xsl:for-each>
+</xsl:variable>
+
+<xsl:text>
+
+package org.apache.fop.fo;
+
+public interface Constants {</xsl:text>
+
+    // element constants
+<xsl:call-template name="sortconsts">
+  <xsl:with-param name="consts" select="$elementlist"/>
+  <xsl:with-param name="counter" select="'ELEMENT'"/>
+</xsl:call-template>
+
+    // Masks
+    int COMPOUND_SHIFT = 9;
+    int PROPERTY_MASK = (1 &lt;&lt; COMPOUND_SHIFT)-1;
+    int COMPOUND_MASK = ~PROPERTY_MASK;
+    int COMPOUND_COUNT = 11;
+    
+    // property constants
+<xsl:call-template name="sortconsts">
+  <xsl:with-param name="consts" select="$propertylist"/>
+  <xsl:with-param name="counter" select="'PROPERTY'"/>
+</xsl:call-template>
+
+    // compound property constants
+<xsl:call-template name="sortconsts">
+  <xsl:with-param name="consts" select="$compoundpropertylist"/>
+  <xsl:with-param name="suffix" select="' &lt;&lt; COMPOUND_SHIFT'"/>
+</xsl:call-template>
+
+    // Enumeration constants
+<xsl:call-template name="sortconsts">
+  <xsl:with-param name="consts" select="$constlist"/>
+</xsl:call-template>
+
+   // Enumeration Interfaces
+   
+    public interface GenericBooleanInterface {
+        int TRUE =  Constants.TRUE;
+        int FALSE =  Constants.FALSE;
+    }
+     
+    public interface GenericBorderStyleInterface {
+        int NONE =  Constants.NONE;
+        int HIDDEN =  Constants.HIDDEN;
+        int DOTTED =  Constants.DOTTED;
+        int DASHED =  Constants.DASHED;
+        int SOLID =  Constants.SOLID;
+        int DOUBLE =  Constants.DOUBLE;
+        int GROOVE =  Constants.GROOVE;
+        int RIDGE =  Constants.RIDGE;
+        int INSET =  Constants.INSET;
+        int OUTSET =  Constants.OUTSET;
+    }
+    
+    public interface GenericBreakInterface {
+        int AUTO =  Constants.AUTO;
+        int COLUMN =  Constants.COLUMN;
+        int PAGE =  Constants.PAGE;
+        int EVEN_PAGE =  Constants.EVEN_PAGE;
+        int ODD_PAGE =  Constants.ODD_PAGE;
+    }
+    
+    public interface GenericCondBorderWidthInterface {
+        public interface Conditionality {
+            int DISCARD = Constants.DISCARD;
+            int RETAIN = Constants.RETAIN;
+        }
+    }
+    
+    public interface GenericCondPaddingInterface {
+        public interface Conditionality {
+            int DISCARD = Constants.DISCARD;
+            int RETAIN = Constants.RETAIN;
+        }
+    }
+        
+    public interface GenericKeepInterface {
+        public interface WithinPage {
+            int AUTO = Constants.AUTO;
+            int ALWAYS = Constants.ALWAYS;
+        }
+        public interface WithinLine {
+            int AUTO = Constants.AUTO;
+            int ALWAYS = Constants.ALWAYS;
+        }
+        public interface WithinColumn {
+            int AUTO = Constants.AUTO;
+            int ALWAYS = Constants.ALWAYS;
+        }
+    }
+    
+    public interface GenericSpaceInterface {
+        public interface Precedence {
+            int FORCE = Constants.FORCE;
+        }
+        public interface Conditionality {
+            int DISCARD = Constants.DISCARD;
+            int RETAIN = Constants.RETAIN;
+        }
+    }
+   
+<xsl:apply-templates select = "document(propfile)//property[not(@type='generic')]">
+   <xsl:sort select="name"/>
+</xsl:apply-templates>
+
+<xsl:text>
+}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="property">
+  <xsl:variable name="classname">
+    <xsl:choose>
+      <xsl:when test="class-name">
+        <xsl:value-of select="class-name"/>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:call-template name="makeClassName">
+          <xsl:with-param name="propstr" select="name"/>
+        </xsl:call-template>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+  <xsl:variable name="bEnum">
+    <xsl:call-template name="hasEnum"/>
+  </xsl:variable>
+  <xsl:variable name="bSubpropEnum">
+    <xsl:call-template name="hasSubpropEnum"/>
+  </xsl:variable>
+
+  <xsl:if test="$bEnum='true' or contains($bSubpropEnum, 'true')">
+    <!--redirect:write select="concat($classname, '.java')"-->
+      <!-- Handle enumeration values -->
+      <xsl:text>
+    public interface </xsl:text>
+      <xsl:value-of select="$classname"/>
+      <xsl:if test="use-generic">
+        <xsl:text> extends </xsl:text>
+        <xsl:value-of select="use-generic"/>
+        <xsl:text>Interface</xsl:text>
+      </xsl:if>
+      <xsl:text> {</xsl:text>
+      <xsl:for-each select="enumeration/value">
+        <xsl:text>
+        int </xsl:text>
+        <xsl:value-of select="@const"/>
+        <xsl:text> = Constants.</xsl:text>
+        <xsl:value-of select="@const"/>
+        <xsl:text>;</xsl:text>
+      </xsl:for-each>
+      <xsl:text> }
+</xsl:text>
+  </xsl:if>
+</xsl:template>
+
+<xsl:template name="sortconsts">
+<xsl:param name="consts"/>
+<xsl:param name="prevconst"/>
+<xsl:param name="num" select="1"/>
+<xsl:param name="suffix" select="''"/>
+<xsl:param name="counter" select="''"/>
+<xsl:variable name="cval" select="substring-before($consts,':')"/>
+<xsl:choose>
+  <xsl:when test="$consts = ''">
+    <xsl:if test="$counter != ''">
+      <xsl:text>
+    int </xsl:text>
+      <xsl:value-of select="$counter"/>_COUNT = <xsl:value-of select="$num - 1"/>;
+    </xsl:if>
+  </xsl:when>
+  <xsl:when test="$cval = $prevconst">
+    <xsl:call-template name="sortconsts">
+      <xsl:with-param name="consts" select="substring-after($consts,concat($cval, ':'))"/>
+      <xsl:with-param name="num" select="$num"/>
+      <xsl:with-param name="prevconst" select="$cval"/>
+      <xsl:with-param name="counter" select="$counter"/>
+      <xsl:with-param name="suffix" select="$suffix"/>
+    </xsl:call-template>
+  </xsl:when>
+  <xsl:otherwise>
+    <xsl:text>
+    int </xsl:text>
+    <xsl:value-of select="$cval"/>
+    <xsl:text> = </xsl:text>
+    <xsl:value-of select="$num"/>
+    <xsl:value-of select="$suffix"/>
+    <xsl:text>;</xsl:text>
+    <xsl:call-template name="sortconsts">
+      <xsl:with-param name="consts" select="substring-after($consts,concat($cval, ':'))"/>
+      <xsl:with-param name="num" select="$num + 1"/>
+      <xsl:with-param name="prevconst" select="$cval"/>
+      <xsl:with-param name="counter" select="$counter"/>
+      <xsl:with-param name="suffix" select="$suffix"/>
+    </xsl:call-template>
+  </xsl:otherwise>
+</xsl:choose>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/src/codegen/fo/fo-property-mapping.xsl b/src/codegen/fo/fo-property-mapping.xsl
new file mode 100644 (file)
index 0000000..408144a
--- /dev/null
@@ -0,0 +1,254 @@
+<!--
+  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$ -->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:lxslt="http://xml.apache.org/xslt">
+
+<xsl:include href="propinc.xsl"/>
+
+<xsl:output method="text" />
+
+
+<xsl:template name="genmaker">
+  <xsl:param name="prop" select="."/>
+  <xsl:param name="htname"/>
+
+  <xsl:variable name="makerclass">
+   <xsl:choose>
+    <xsl:when test="$prop/use-generic and count($prop/*)=2">
+     <xsl:value-of select="$prop/use-generic"/>
+    </xsl:when>
+    <xsl:when test="$prop/class-name">
+     <xsl:value-of select="$prop/class-name"/><xsl:text>Maker</xsl:text>
+    </xsl:when>
+    <xsl:otherwise> <!-- make from name -->
+      <xsl:call-template name="makeClassName">
+        <xsl:with-param name="propstr" select="$prop/name"/>
+      </xsl:call-template><xsl:text>Maker</xsl:text>
+    </xsl:otherwise>
+   </xsl:choose>
+  </xsl:variable>
+  <xsl:variable name="lcletters" select="'abcdefghijklmnopqrstuvwxyz-:'" />
+  <xsl:variable name="ucletters" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ__'" />
+  <xsl:variable name="enum" select="translate($prop/name, $lcletters, $ucletters)"/>
+<xsl:text>    addPropertyName("</xsl:text><xsl:value-of select="$prop/name"/>", PR_<xsl:value-of select="$enum"/>);
+<xsl:text>    </xsl:text><xsl:value-of select="$htname"/>[PR_<xsl:value-of select="$enum"/>] =<xsl:value-of select="$makerclass"/>.maker(PR_<xsl:value-of select="$enum"/>);
+</xsl:template>
+
+
+<xsl:template name="genenum">
+  <xsl:param name="prop" select="."/>
+  <xsl:variable name="lcletters" select="'abcdefghijklmnopqrstuvwxyz-:'" />
+  <xsl:variable name="ucletters" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ__'" />
+  <xsl:variable name="num" select="count(preceding-sibling::property)"/>
+  <xsl:variable name="enum" select="translate($prop/name, $lcletters, $ucletters)"/>
+<!--
+<xsl:text>  public final static short </xsl:text><xsl:value-of select="$enum"/> = <xsl:value-of select="$num"/>;
+-->
+</xsl:template>
+
+
+<xsl:template match="text()"/>
+<xsl:template match="text()" mode="enums"/>
+
+<xsl:template match="property-list">
+package org.apache.fop.fo.properties;
+
+import java.util.HashMap;
+import java.util.Set;
+import org.apache.fop.fo.Constants;
+import org.apache.fop.fo.Property;
+//import org.apache.fop.svg.*;
+
+public class <xsl:value-of select="@family"/>PropertyMapping implements Constants {
+
+  private static Property.Maker[] s_htGeneric = new Property.Maker[PROPERTY_COUNT+1];
+  /* s_htElementLists not currently used; apparently for specifying element-specific
+   * property makers (instead of the default maker for a particular property); see
+   * former org.apache.fop.fo.PropertyListBuilder 
+   */
+  private static HashMap s_htElementLists = new HashMap();
+  private static HashMap s_htSubPropNames = new HashMap();
+  private static HashMap s_htPropNames = new HashMap();
+  private static HashMap s_htPropIds = new HashMap();
+  <xsl:for-each select="element-property-list">
+  private static HashMap s_ht<xsl:value-of select="localname[1]"/>;</xsl:for-each>
+
+  <xsl:apply-templates/>
+
+  public static Property.Maker[] getGenericMappings() {
+    return s_htGeneric;
+  }
+
+  public static Set getElementMappings() {
+    return s_htElementLists.keySet();
+  }
+
+  public static Property.Maker[] getElementMapping(int elemName) {
+    return (Property.Maker[])s_htElementLists.get(new Integer(elemName));
+  }
+
+  public static int getPropertyId(String name) {
+    // check to see if base.compound or just base property
+    int sepchar = name.indexOf('.');
+
+    if (sepchar > -1) {
+        Integer baseId = (Integer) s_htPropNames.get(name.substring(0, sepchar));
+        if (baseId == null) {
+            return -1;
+        } else {
+            int cmpdId = getSubPropertyId(name.substring(sepchar + 1));
+            if (cmpdId == -1) {
+                return -1;
+            } else {
+                return baseId.intValue() + cmpdId;
+            }
+        }
+    } else {
+        Integer baseId = (Integer) s_htPropNames.get(name);
+        if (baseId == null)
+            return -1;
+        return baseId.intValue();
+    }
+  }
+
+  public static int getSubPropertyId(String name) {
+       Integer i = (Integer) s_htSubPropNames.get(name);
+       if (i == null)
+               return -1;
+    return i.intValue();
+  }
+  
+  // returns a property, compound, or property.compound name
+  public static String getPropertyName(int id) {
+    if (((id &amp; Constants.COMPOUND_MASK) == 0) 
+        || ((id &amp; Constants.PROPERTY_MASK) == 0)) {
+        return (String) s_htPropIds.get(new Integer(id));
+    } else {
+        return (String) s_htPropIds.get(new Integer(
+            id &amp; Constants.PROPERTY_MASK)) + "." + s_htPropIds.get(
+            new Integer(id &amp; Constants.COMPOUND_MASK));
+    }
+  }
+
+  static {
+    addSubPropertyName("length", CP_LENGTH);
+    addSubPropertyName("conditionality", CP_CONDITIONALITY);
+    addSubPropertyName("block-progression-direction", CP_BLOCK_PROGRESSION_DIRECTION);
+    addSubPropertyName("inline-progression-direction", CP_INLINE_PROGRESSION_DIRECTION);
+    addSubPropertyName("within-line", CP_WITHIN_LINE);
+    addSubPropertyName("within-column", CP_WITHIN_COLUMN);
+    addSubPropertyName("within-page", CP_WITHIN_PAGE);
+    addSubPropertyName("minimum", CP_MINIMUM);
+    addSubPropertyName("maximum", CP_MAXIMUM);
+    addSubPropertyName("optimum", CP_OPTIMUM);
+    addSubPropertyName("precedence", CP_PRECEDENCE);
+  
+  }
+  
+  public static void addPropertyName(String name, int id) {
+    s_htPropNames.put(name, new Integer(id));
+    s_htPropIds.put(new Integer(id), name);
+  }
+
+  public static void addSubPropertyName(String name, int id) {
+    s_htSubPropNames.put(name, new Integer(id));
+    s_htPropIds.put(new Integer(id), name);
+  }
+}
+</xsl:template>
+
+<xsl:template match="generic-property-list">
+  <xsl:apply-templates mode="enums"/>
+  static {
+    // Generate the generic mapping
+<xsl:apply-templates>
+    <xsl:with-param name="htname" select='"s_htGeneric"'/>
+  </xsl:apply-templates>
+  }
+</xsl:template>
+
+<xsl:template match="element-property-list">
+  <xsl:variable name="ename" select="localname[1]"/>
+  static {
+    s_ht<xsl:value-of select="$ename"/> = new HashMap();
+   <xsl:for-each select="localname">
+    s_htElementLists.put("<xsl:value-of select='.'/>", s_ht<xsl:value-of select='$ename'/>);
+   </xsl:for-each>
+
+<xsl:apply-templates>
+    <xsl:with-param name='htname'>s_ht<xsl:value-of select="$ename"/></xsl:with-param>
+    </xsl:apply-templates>
+  }
+</xsl:template>
+
+<xsl:template match="property[@type='generic']" mode="enums">
+  /* PROPCLASS = <xsl:call-template name="propclass"/> */
+</xsl:template>
+
+<xsl:template match="property" mode="enums">
+  <xsl:param name="htname"/>
+  <xsl:variable name="refname" select="name"/>
+  <xsl:choose>
+    <xsl:when test="@type='ref'">
+      <xsl:call-template name="genenum">
+        <xsl:with-param name="htname" select="$htname"/>
+        <xsl:with-param name="prop"
+          select='document(concat(@family, "properties.xml"))//property[name=$refname]'/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:when test="not(@type)">
+      <xsl:call-template name="genenum">
+    <xsl:with-param name="htname" select="$htname"/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:otherwise/>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="subproperty" mode="enums">
+  <xsl:call-template name="genenum"/>
+</xsl:template>
+
+<xsl:template match="property">
+  <xsl:param name="htname"/>
+  <xsl:variable name="refname" select="name"/>
+  <xsl:choose>
+    <xsl:when test="@type='ref'">
+      <xsl:call-template name="genmaker">
+        <xsl:with-param name="htname" select="$htname"/>
+        <xsl:with-param name="prop"
+          select='document(concat(@family, "properties.xml"))//property[name=$refname]'/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:when test="not(@type)">
+      <xsl:call-template name="genmaker">
+    <xsl:with-param name="htname" select="$htname"/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:otherwise/>
+  </xsl:choose>
+</xsl:template>
+
+<xsl:template match="property[@type='generic']">
+  /* PROPCLASS = <xsl:call-template name="propclass"/> */
+</xsl:template>
+
+</xsl:stylesheet>
+
+
diff --git a/src/codegen/fo/foelements.xml b/src/codegen/fo/foelements.xml
new file mode 100644 (file)
index 0000000..db1360a
--- /dev/null
@@ -0,0 +1,1102 @@
+<!--
+  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$ -->
+<root>
+<common>
+    <name>CommonAccessibilityProperties</name>
+    <property>source-document</property>
+    <property>role</property>
+</common>
+
+
+<common>
+    <name>CommonAbsolutePositionProperties</name>
+    <property>absolute-position</property>
+    <property>position</property>
+    <property>top</property>
+    <property>right</property>
+    <property>bottom</property>
+    <property>left</property>
+</common>
+    
+<common>
+    <name>CommonAuralProperties</name>
+    <property>azimuth</property>
+    <property>cue-after</property>
+    <property>cue-before</property>
+    <property>cue</property>
+    <property>elevation</property>
+    <property>pause-after</property>
+    <property>pause-before</property>
+    <property>pause</property>
+    <property>pitch</property>
+    <property>pitch-range</property>
+    <property>play-during</property>
+    <property>richness</property>
+    <property>speak</property>
+    <property>speak-header</property>
+    <property>speak-numeral</property>
+    <property>speak-punctuation</property>
+    <property>speech-rate</property>
+    <property>stress</property>
+    <property>voice-family</property>
+    <property>volume</property>
+</common>
+    
+<common>
+    <name>CommonBorderPaddingBackgroundProperties</name>
+    <property>background-attachment</property>
+    <property>background-color</property>
+    <property>background-image</property>
+    <property>background-repeat</property>
+    <property>background-position-horizontal</property>
+    <property>background-position-vertical</property>
+    <property>border-before-color</property>
+    <property>border-before-style</property>
+    <property>border-before-width</property>
+    <property>border-after-color</property>
+    <property>border-after-style</property>
+    <property>border-after-width</property>
+    <property>border-start-color</property>
+    <property>border-start-style</property>
+    <property>border-start-width</property>
+    <property>border-end-color</property>
+    <property>border-end-style</property>
+    <property>border-end-width</property>
+    <property>border-top-color</property>
+    <property>border-top-style</property>
+    <property>border-top-width</property>
+    <property>border-bottom-color</property>
+    <property>border-bottom-style</property>
+    <property>border-bottom-width</property>
+    <property>border-left-color</property>
+    <property>border-left-style</property>
+    <property>border-left-width</property>
+    <property>border-right-color</property>
+    <property>border-right-style</property>
+    <property>border-right-width</property>
+    <property>padding-before</property>
+    <property>padding-after</property>
+    <property>padding-start</property>
+    <property>padding-end</property>
+    <property>padding-top</property>
+    <property>padding-bottom</property>
+    <property>padding-left</property>
+    <property>padding-right</property>
+
+    <!-- shorthands -->
+    <property>border</property>
+    <property>border-style</property>
+    <property>border-width</property>
+    <property>border-color</property>
+    <property>border-top</property>
+    <property>border-bottom</property>
+    <property>border-left</property>
+    <property>border-right</property>
+    <property>padding</property>
+
+</common>
+    
+<common>
+    <name>CommonFontProperties</name>
+    <property>font</property>
+    <property>font-family</property>
+    <property>font-selection-strategy</property>
+    <property>font-size</property>
+    <property>font-stretch</property>
+    <property>font-size-adjust</property>
+    <property>font-style</property>
+    <property>font-variant</property>
+    <property>font-weight</property>
+</common>
+    
+<common>
+    <name>CommonHyphenationProperties</name>
+    <property>country</property>
+    <property>language</property>
+    <property>script</property>
+    <property>hyphenate</property>
+    <property>hyphenation-character</property>
+    <property>hyphenation-push-character-count</property>
+    <property>hyphenation-remain-character-count</property>
+</common>
+
+<common>
+    <name>CommonMarginPropertiesBlock</name>
+    <property>margin</property>
+    <property>margin-top</property>
+    <property>margin-bottom</property>
+    <property>margin-left</property>
+    <property>margin-right</property>
+    <property>space-before</property>
+    <property>space-after</property>
+    <property>start-indent</property>
+    <property>end-indent</property>
+</common>
+
+    
+<common>
+    <name>CommonMarginPropertiesInline</name>
+    <property>space-end</property>
+    <property>space-start</property>
+</common>
+    
+<common>
+    <name>CommonRelativePositionProperties</name>
+    <property>relative-position</property>
+</common>
+
+
+
+
+<element>
+    <name>root</name>
+    <property>media-usage</property>
+    <content>layout-master-set</content>
+    <content>declaration</content>
+    <content>page-sequence</content>
+</element>
+
+<element>
+    <name>declaration</name>
+    <content>color-profile</content>
+</element>
+
+<element>
+    <name>color-profile</name>
+    <property>src</property>
+    <property>color-profile-name</property>
+    <property>rendering-intent</property>
+</element>
+
+<element>
+    <name>page-sequence</name>
+    <property>country</property> 
+    <property>format</property> 
+    <property>language</property> 
+    <property>letter-value</property> 
+    <property>grouping-separator</property> 
+    <property>grouping-size</property> 
+    <property>id</property> 
+    <property>initial-page-number</property> 
+    <property>force-page-count</property> 
+    <property>master-reference</property> 
+    <content>title</content>
+    <content>static-content</content>
+    <content>flow</content>
+</element>
+
+<element>
+    <name>layout-master-set</name>
+    <property>master-name</property> 
+    <content>simple-page-master</content>
+    <content>page-sequence-master</content>
+</element>
+
+<element>
+    <name>page-sequence-master</name>
+    <property>master-name</property> 
+    <content>single-page-master-reference</content>
+    <content>repeatable-page-master-reference</content>
+    <content>repeatable-page-master-alternatives</content>
+</element>
+
+<element>
+    <name>single-page-master-reference</name>
+    <property>master-reference</property>
+</element>
+
+<element>
+    <name>repeatable-page-master-reference</name>
+    <property>master-reference</property> 
+    <property>maximum-repeats</property> 
+</element>
+
+<element>
+    <name>repeatable-page-master-alternatives</name>
+    <property>maximum-repeats</property> 
+    <content>conditional-page-master-reference</content>
+</element>
+
+<element>
+    <name>conditional-page-master-reference</name>
+    <property>master-reference</property> 
+    <property>page-position</property> 
+    <property>odd-or-even</property> 
+    <property>blank-or-not-blank</property> 
+</element>
+
+<element>
+    <name>simple-page-master</name>
+    <common-ref>CommonMarginPropertiesBlock</common-ref> 
+    <property>master-name</property> 
+    <property>page-height</property> 
+    <property>page-width</property> 
+    <property>reference-orientation</property> 
+    <property>writing-mode</property> 
+    <content>region-body</content>
+    <content>region-before</content>
+    <content>region-after</content>
+    <content>region-start</content>
+    <content>region-end</content>
+</element>
+
+<element>
+    <name>region-body</name>
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesBlock</common-ref> 
+    <property>clip</property> 
+    <property>column-count</property> 
+    <property>column-gap</property> 
+    <property>display-align</property> 
+    <property>overflow</property> 
+    <property>region-name</property> 
+    <property>reference-orientation</property> 
+    <property>writing-mode</property> 
+
+</element>
+
+<element>
+    <name>region-before</name>
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <property>clip</property> 
+    <property>display-align</property> 
+    <property>extent</property> 
+    <property>overflow</property> 
+    <property>precedence</property> 
+    <property>region-name</property> 
+    <property>reference-orientation</property> 
+    <property>writing-mode</property> 
+
+</element>
+
+<element>
+    <name>region-after</name>
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <property>clip</property> 
+    <property>display-align</property> 
+    <property>extent</property> 
+    <property>overflow</property> 
+    <property>precedence</property> 
+    <property>region-name</property> 
+    <property>reference-orientation</property> 
+    <property>writing-mode</property> 
+
+</element>
+
+<element>
+    <name>region-start</name>
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <property>clip</property> 
+    <property>display-align</property> 
+    <property>extent</property> 
+    <property>overflow</property> 
+    <property>region-name</property> 
+    <property>reference-orientation</property> 
+    <property>writing-mode</property> 
+
+</element>
+
+<element>
+    <name>region-end</name>
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <property>clip</property> 
+    <property>display-align</property> 
+    <property>extent</property> 
+    <property>overflow</property> 
+    <property>region-name</property> 
+    <property>reference-orientation</property> 
+    <property>writing-mode</property> 
+
+</element>
+
+<element>
+    <name>flow</name>
+    <property>flow-name</property> 
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>static-content</name>
+    <property>flow-name</property>
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>title</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonFontProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesInline</common-ref> 
+    <property>color</property> 
+    <property>line-height</property> 
+    <property>visibility</property> 
+    <content>%inline;</content>
+</element>
+
+<element>
+    <name>block</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonFontProperties</common-ref> 
+    <common-ref>CommonHyphenationProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesBlock</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>page-break-after</property> 
+    <property>page-break-before</property> 
+    <property>break-after</property> 
+    <property>break-before</property> 
+    <property>color</property> 
+    <property>text-depth</property> 
+    <property>text-altitude</property> 
+    <property>hyphenation-keep</property> 
+    <property>hyphenation-ladder-count</property> 
+    <property>id</property> 
+    <!-- property>intrusion-displace</property --> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>last-line-end-indent</property> 
+    <property>linefeed-treatment</property> 
+    <property>line-height</property> 
+    <property>line-height-shift-adjustment</property> 
+    <property>line-stacking-strategy</property> 
+    <property>orphans</property> 
+    <property>white-space-treatment</property> 
+    <property>span</property> 
+    <property>text-align</property> 
+    <property>text-align-last</property> 
+    <property>text-indent</property> 
+    <property>visibility</property> 
+    <property>white-space-collapse</property> 
+    <property>widows</property> 
+    <property>wrap-option</property> 
+    <content>%inline;</content>
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>block-container</name>
+    <common-ref>CommonAbsolutePositionProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesBlock</common-ref> 
+    <property>block-progression-dimension</property> 
+    <property>page-break-after</property> 
+    <property>page-break-before</property> 
+    <property>break-after</property> 
+    <property>break-before</property> 
+    <property>clip</property> 
+    <property>display-align</property> 
+    <property>height</property> 
+    <property>id</property> 
+    <property>inline-progression-dimension</property> 
+    <!--property>intrusion-displace</property --> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>overflow</property> 
+    <property>reference-orientation</property> 
+    <property>span</property> 
+    <property>width</property> 
+    <property>writing-mode</property> 
+    <property>z-index</property> 
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>bidi-override</name>
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonFontProperties</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>color</property> 
+    <property>direction</property> 
+    <property>id</property> 
+    <property>letter-spacing</property> 
+    <property>line-height</property> 
+    <property>score-spaces</property> 
+    <property>unicode-bidi</property> 
+    <property>word-spacing</property> 
+    <content>%inline;</content>
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>character</name>
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonFontProperties</common-ref> 
+    <common-ref>CommonHyphenationProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesInline</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>vertical-align</property> 
+    <property>alignment-adjust</property> 
+    <property>treat-as-word-space</property> 
+    <property>alignment-baseline</property> 
+    <property>baseline-shift</property> 
+    <property>character</property> 
+    <property>color</property> 
+    <property>dominant-baseline</property> 
+    <property>text-depth</property> 
+    <property>text-altitude</property> 
+    <property>glyph-orientation-horizontal</property> 
+    <property>glyph-orientation-vertical</property> 
+    <property>id</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>letter-spacing</property> 
+    <property>line-height</property> 
+    <property>score-spaces</property> 
+    <property>suppress-at-line-break</property> 
+    <property>text-decoration</property> 
+    <property>text-shadow</property> 
+    <property>text-transform</property> 
+    <property>visibility</property> 
+    <property>word-spacing</property> 
+
+</element>
+
+<element>
+    <name>initial-property-set</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonFontProperties</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>color</property> 
+    <property>id</property> 
+    <property>letter-spacing</property> 
+    <property>line-height</property> 
+    <property>score-spaces</property> 
+    <property>text-decoration</property> 
+    <property>text-shadow</property> 
+    <property>text-transform</property> 
+    <property>word-spacing</property> 
+
+</element>
+
+<element>
+    <name>external-graphic</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesInline</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>vertical-align</property> 
+    <property>alignment-adjust</property> 
+    <property>alignment-baseline</property> 
+    <property>baseline-shift</property> 
+    <property>block-progression-dimension</property> 
+    <property>clip</property> 
+    <property>content-height</property> 
+    <property>content-type</property> 
+    <property>content-width</property> 
+    <property>display-align</property> 
+    <property>dominant-baseline</property> 
+    <property>height</property> 
+    <property>id</property> 
+    <property>inline-progression-dimension</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>line-height</property> 
+    <property>overflow</property> 
+    <property>scaling</property> 
+    <property>scaling-method</property> 
+    <property>src</property> 
+    <property>text-align</property> 
+    <property>width</property> 
+
+</element>
+
+<element>
+    <name>instream-foreign-object</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesInline</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>vertical-align</property> 
+    <property>alignment-adjust</property> 
+    <property>alignment-baseline</property> 
+    <property>baseline-shift</property> 
+    <property>block-progression-dimension</property> 
+    <property>clip</property> 
+    <property>content-height</property> 
+    <property>content-type</property> 
+    <property>content-width</property> 
+    <property>display-align</property> 
+    <property>dominant-baseline</property> 
+    <property>height</property> 
+    <property>id</property> 
+    <property>inline-progression-dimension</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>line-height</property> 
+    <property>overflow</property> 
+    <property>scaling</property> 
+    <property>scaling-method</property> 
+    <property>text-align</property> 
+    <property>width</property> 
+
+</element>
+
+<element>
+    <name>inline</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonFontProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesInline</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>vertical-align</property> 
+    <property>alignment-adjust</property> 
+    <property>alignment-baseline</property> 
+    <property>baseline-shift</property> 
+    <property>block-progression-dimension</property> 
+    <property>color</property> 
+    <property>dominant-baseline</property> 
+    <property>height</property> 
+    <property>id</property> 
+    <property>inline-progression-dimension</property> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>line-height</property> 
+    <property>text-decoration</property> 
+    <property>visibility</property> 
+    <property>width</property> 
+    <property>wrap-option</property> 
+    <content>%inline;</content>
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>inline-container</name>
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesInline</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>vertical-align</property> 
+    <property>alignment-adjust</property> 
+    <property>alignment-baseline</property> 
+    <property>baseline-shift</property> 
+    <property>block-progression-dimension</property> 
+    <property>clip</property> 
+    <property>display-align</property> 
+    <property>dominant-baseline</property> 
+    <property>height</property> 
+    <property>id</property> 
+    <property>inline-progression-dimension</property> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>line-height</property> 
+    <property>overflow</property> 
+    <property>reference-orientation</property> 
+    <property>width</property> 
+    <property>writing-mode</property> 
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>leader</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonFontProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesInline</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>vertical-align</property> 
+    <property>alignment-adjust</property> 
+    <property>alignment-baseline</property> 
+    <property>baseline-shift</property> 
+    <property>color</property> 
+    <property>dominant-baseline</property> 
+    <property>text-depth</property> 
+    <property>text-altitude</property> 
+    <property>id</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>leader-alignment</property> 
+    <property>leader-length</property> 
+    <property>leader-pattern</property> 
+    <property>leader-pattern-width</property> 
+    <property>rule-style</property> 
+    <property>rule-thickness</property> 
+    <property>letter-spacing</property> 
+    <property>line-height</property> 
+    <property>text-shadow</property> 
+    <property>visibility</property> 
+    <property>word-spacing</property> 
+    <content>%inline;</content>
+</element>
+
+<element>
+    <name>page-number</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonFontProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesInline</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>vertical-align</property> 
+    <property>alignment-adjust</property> 
+    <property>alignment-baseline</property> 
+    <property>baseline-shift</property> 
+    <property>dominant-baseline</property> 
+    <property>id</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>letter-spacing</property> 
+    <property>line-height</property> 
+    <property>score-spaces</property> 
+    <property>text-altitude</property> 
+    <property>text-decoration</property> 
+    <property>text-depth</property> 
+    <property>text-shadow</property> 
+    <property>text-transform</property> 
+    <property>visibility</property> 
+    <property>word-spacing</property> 
+    <property>wrap-option</property> 
+
+</element>
+
+<element>
+    <name>page-number-citation</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonFontProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesInline</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>vertical-align</property> 
+    <property>alignment-adjust</property> 
+    <property>alignment-baseline</property> 
+    <property>baseline-shift</property> 
+    <property>dominant-baseline</property> 
+    <property>id</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>letter-spacing</property> 
+    <property>line-height</property> 
+    <property>ref-id</property> 
+    <property>score-spaces</property> 
+    <property>text-altitude</property> 
+    <property>text-decoration</property> 
+    <property>text-depth</property> 
+    <property>text-shadow</property> 
+    <property>text-transform</property> 
+    <property>visibility</property> 
+    <property>word-spacing</property> 
+    <property>wrap-option</property> 
+
+</element>
+
+<element>
+    <name>table-and-caption</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesBlock</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>page-break-after</property> 
+    <property>page-break-before</property> 
+    <property>break-after</property> 
+    <property>break-before</property> 
+    <property>caption-side</property> 
+    <property>id</property> 
+    <!--property>intrusion-displace</property --> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>text-align</property> 
+    <content>table-caption</content>
+    <content>table</content>
+</element>
+
+<element>
+    <name>table</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesBlock</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>block-progression-dimension</property> 
+    <property>border-after-precedence</property> 
+    <property>border-before-precedence</property> 
+    <property>border-spacing</property> 
+    <property>border-collapse</property> 
+    <property>border-end-precedence</property> 
+    <property>border-separation</property> 
+    <property>border-start-precedence</property> 
+    <property>page-break-after</property> 
+    <property>page-break-before</property> 
+    <property>break-after</property> 
+    <property>break-before</property> 
+    <property>id</property> 
+    <property>inline-progression-dimension</property> 
+    <!--property>intrusion-displace</property --> 
+    <property>height</property> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>table-layout</property> 
+    <property>table-omit-footer-at-break</property> 
+    <property>table-omit-header-at-break</property> 
+    <property>width</property> 
+    <property>writing-mode</property> 
+    <content>table-column</content>
+    <content>table-header</content>
+    <content>table-footer</content>
+    <content>table-body</content>
+</element>
+
+<element>
+    <name>table-column</name>
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+<!--
+NOTE: 
+Only the background properties from this set apply. If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the border properties also apply.
+-->
+    <property>border-after-precedence</property> 
+    <property>border-before-precedence</property> 
+    <property>border-end-precedence</property> 
+    <property>border-start-precedence</property> 
+    <property>column-number</property> 
+    <property>column-width</property> 
+    <property>number-columns-repeated</property> 
+    <property>number-columns-spanned</property> 
+    <property>visibility</property> 
+
+</element>
+
+<element>
+    <name>table-caption</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>block-progression-dimension</property> 
+    <property>height</property> 
+    <property>id</property> 
+    <property>inline-progression-dimension</property> 
+    <!--property>intrusion-displace</property --> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>width</property> 
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>table-header</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+<!--
+NOTE: 
+Only the background properties from this set apply. If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the border properties also apply.
+-->
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>border-after-precedence</property> 
+    <property>border-before-precedence</property> 
+    <property>border-end-precedence</property> 
+    <property>border-start-precedence</property> 
+    <property>id</property> 
+    <property>visibility</property> 
+    <content>table-row</content>
+    <content>table-cell</content>
+</element>
+
+<element>
+    <name>table-footer</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+<!--
+NOTE: 
+Only the background properties from this set apply. If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the border properties also apply.
+-->
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>border-after-precedence</property> 
+    <property>border-before-precedence</property> 
+    <property>border-end-precedence</property> 
+    <property>border-start-precedence</property> 
+    <property>id</property> 
+    <property>visibility</property> 
+    <content>table-row</content>
+    <content>table-cell</content>
+</element>
+
+<element>
+    <name>table-body</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+<!--
+NOTE: 
+Only the background properties from this set apply. If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the border properties also apply.
+-->
+
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>border-after-precedence</property> 
+    <property>border-before-precedence</property> 
+    <property>border-end-precedence</property> 
+    <property>border-start-precedence</property> 
+    <property>id</property> 
+    <property>visibility</property> 
+    <content>table-row</content>
+    <content>table-cell</content>
+</element>
+
+<element>
+    <name>table-row</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <property>block-progression-dimension</property> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+<!--
+NOTE: 
+Only the background properties from this set apply. If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the border properties also apply.
+-->
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>border-after-precedence</property> 
+    <property>border-before-precedence</property> 
+    <property>border-end-precedence</property> 
+    <property>border-start-precedence</property> 
+    <property>page-break-after</property> 
+    <property>page-break-before</property> 
+    <property>break-after</property> 
+    <property>break-before</property> 
+    <property>id</property> 
+    <property>height</property> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>visibility</property> 
+    <content>table-cell</content>
+</element>
+
+<element>
+    <name>table-cell</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>border-after-precedence</property> 
+    <property>border-before-precedence</property> 
+    <property>border-end-precedence</property> 
+    <property>border-start-precedence</property> 
+    <property>block-progression-dimension</property> 
+    <property>column-number</property> 
+    <property>display-align</property> 
+    <property>relative-align</property> 
+    <property>empty-cells</property> 
+    <property>ends-row</property> 
+    <property>height</property> 
+    <property>id</property> 
+    <property>inline-progression-dimension</property> 
+    <property>number-columns-spanned</property> 
+    <property>number-rows-spanned</property> 
+    <property>starts-row</property> 
+    <property>width</property> 
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>list-block</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesBlock</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>page-break-after</property> 
+    <property>page-break-before</property> 
+    <property>break-after</property> 
+    <property>break-before</property> 
+    <property>id</property> 
+    <!--property>intrusion-displace</property --> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>provisional-distance-between-starts</property> 
+    <property>provisional-label-separation</property> 
+    <content>list-item</content>
+</element>
+
+<element>
+    <name>list-item</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesBlock</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>page-break-after</property> 
+    <property>page-break-before</property> 
+    <property>break-after</property> 
+    <property>break-before</property> 
+    <property>id</property> 
+    <!--property>intrusion-displace</property --> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>relative-align</property> 
+    <content>list-item-label</content>
+    <content>list-item-body</content>
+</element>
+
+<element>
+    <name>list-item-body</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <property>id</property> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>list-item-label</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <property>id</property> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>basic-link</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <common-ref>CommonAuralProperties</common-ref> 
+    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
+    <common-ref>CommonMarginPropertiesInline</common-ref> 
+    <common-ref>CommonRelativePositionProperties</common-ref> 
+    <property>vertical-align</property> 
+    <property>alignment-adjust</property> 
+    <property>alignment-baseline</property> 
+    <property>baseline-shift</property> 
+    <property>destination-placement-offset</property> 
+    <property>dominant-baseline</property> 
+    <property>external-destination</property> 
+    <property>id</property> 
+    <property>indicate-destination</property> 
+    <property>internal-destination</property> 
+    <property>page-break-inside</property> 
+    <property>keep-together</property> 
+    <property>keep-with-next</property> 
+    <property>keep-with-previous</property> 
+    <property>line-height</property> 
+    <property>show-destination</property> 
+    <property>target-processing-context</property> 
+    <property>target-presentation-context</property> 
+    <property>target-stylesheet</property> 
+    <content>%inline;</content>
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>multi-switch</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <property>auto-restore</property> 
+    <property>id</property> 
+    <content>multi-case</content>
+</element>
+
+<element>
+    <name>multi-case</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <property>id</property> 
+    <property>starting-state</property> 
+    <property>case-name</property> 
+    <property>case-title</property> 
+    <content>%inline;</content>
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>multi-toggle</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <property>id</property> 
+    <property>switch-to</property> 
+    <content>%inline;</content>
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>multi-properties</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <property>id</property> 
+    <content>multi-property-set</content>
+    <content>wrapper</content>
+</element>
+
+<element>
+    <name>multi-property-set</name>
+    <property>id</property> 
+    <property>active-state</property>
+</element>
+
+<element>
+    <name>float</name>
+    <property>float</property> 
+    <property>clear</property>
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>footnote</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <content>inline</content>
+    <content>footnote-body</content>
+</element>
+
+<element>
+    <name>footnote-body</name>
+    <common-ref>CommonAccessibilityProperties</common-ref> 
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>wrapper</name>
+    <property>id</property>
+    <content>%inline;</content>
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>marker</name>
+    <property>marker-class-name</property>
+    <content>%inline;</content>
+    <content>%block;</content>
+</element>
+
+<element>
+    <name>retrieve-marker</name>
+    <property>retrieve-class-name</property> 
+    <property>retrieve-position</property> 
+    <property>retrieve-boundary</property> 
+</element>
+
+</root>
+
diff --git a/src/codegen/fo/foproperties.xml b/src/codegen/fo/foproperties.xml
new file mode 100644 (file)
index 0000000..f4a19eb
--- /dev/null
@@ -0,0 +1,2241 @@
+<?xml version="1.0" standalone="yes" ?>
+<!--
+  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$ -->
+<property-list family="FO">
+ <generic-property-list>
+  <property type="generic">
+    <name>generic-color</name>
+    <class-name>GenericColor</class-name>
+    <datatype>ColorType</datatype>
+    <extfile href="colorkw.xml"/>
+<!--
+    <datatype-conversion from-type="String" varname="strval">
+       new ColorType(strval)</datatype-conversion>
+-->
+  </property>
+  <property type="generic">
+    <name>generic-boolean</name>
+    <class-name>GenericBoolean</class-name>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="TRUE">true</value>
+        <value const="FALSE">false</value>
+      </enumeration>
+  </property>
+  <property type="generic">
+    <name>generic-keep</name>
+    <class-name>GenericKeep</class-name>
+    <datatype>Keep</datatype> <!-- CompoundDatatype -->
+    <compound>
+      <subproperty set-by-shorthand="true">
+        <name>within-page</name>
+    <datatype>Number</datatype>
+    <default>auto</default>
+      <enumeration>
+        <value const="AUTO">auto</value>
+        <value const="ALWAYS">always</value>
+      </enumeration>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>within-line</name>
+    <datatype>Number</datatype>
+    <default>auto</default>
+      <enumeration>
+        <value const="AUTO">auto</value>
+        <value const="ALWAYS">always</value>
+      </enumeration>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>within-column</name>
+    <datatype>Number</datatype>
+    <default>auto</default>
+      <enumeration>
+        <value const="AUTO">auto</value>
+        <value const="ALWAYS">always</value>
+      </enumeration>
+      </subproperty>
+    </compound>
+  </property>
+  <property type="generic">
+    <name>conditional-length-template</name>
+    <class-name>GenericCondLength</class-name>
+    <datatype>CondLength</datatype>
+    <compound>
+      <subproperty set-by-shorthand="true">
+        <name>length</name>
+        <datatype>Length</datatype>
+      </subproperty>
+      <subproperty>
+        <name>conditionality</name>
+        <datatype>Enum</datatype>
+        <enumeration>
+          <value const="DISCARD">discard</value>
+          <value const="RETAIN">retain</value>
+        </enumeration>
+      </subproperty>
+    </compound>
+  </property>
+  <property type="generic">
+    <name>padding-template</name>
+    <class-name>GenericCondPadding</class-name>
+    <use-generic>GenericCondLength</use-generic>
+    <inherited>false</inherited>
+    <default subproperty="length">0pt</default>
+  </property>
+  <property type="generic">
+    <name>padding-template</name>
+    <class-name>GenericPadding</class-name>
+    <datatype>Length</datatype>
+    <inherited>false</inherited>
+    <default>0pt</default>
+                <shorthand>padding</shorthand>
+  </property>
+
+<!-- Before, After, Start, End border width props -->
+<!-- CondLength, but adds keyword values both to the "shorthand" setting
+     and to the length component. So we redefine the components here,
+     rather than doing a "use-generic" on GenericCondLength.
+-->
+  <property type="generic">
+    <name>border-cond-width-template</name>
+    <class-name>GenericCondBorderWidth</class-name>
+    <keyword-equiv match="thin">0.5pt</keyword-equiv>
+    <keyword-equiv match="medium">1pt</keyword-equiv>
+    <keyword-equiv match="thick">2pt</keyword-equiv>
+    <inherited>false</inherited>
+    <datatype>CondLength</datatype>
+    <compound>
+      <subproperty set-by-shorthand="true">
+        <name>length</name>
+        <datatype>Length</datatype>
+        <keyword-equiv match="thin">0.5pt</keyword-equiv>
+        <keyword-equiv match="medium">1pt</keyword-equiv>
+        <keyword-equiv match="thick">2pt</keyword-equiv>
+        <default>medium</default>
+      </subproperty>
+      <subproperty>
+        <datatype>Enum</datatype>
+        <name>conditionality</name>
+        <enumeration>
+          <value const="DISCARD">discard</value>
+          <value const="RETAIN">retain</value>
+        </enumeration>
+      </subproperty>
+    </compound>
+  </property>
+<!-- Left, Right, Top, Bottom borderwidth props -->
+  <property type="generic">
+    <name>border-width-template</name>
+    <class-name>GenericBorderWidth</class-name>
+    <datatype>Length</datatype>
+    <keyword-equiv match="thin">0.5pt</keyword-equiv>
+    <keyword-equiv match="medium">1pt</keyword-equiv>
+    <keyword-equiv match="thick">2pt</keyword-equiv>
+    <inherited>false</inherited>
+    <default>0pt</default>
+    <shorthand>border-width</shorthand>
+  </property>
+  <property type="generic">
+    <name>border-style-template</name>
+    <class-name>GenericBorderStyle</class-name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="NONE">none</value>
+        <value const="HIDDEN">hidden</value>
+        <value const="DOTTED">dotted</value>
+        <value const="DASHED">dashed</value>
+        <value const="SOLID">solid</value>
+        <value const="DOUBLE">double</value>
+        <value const="GROOVE">groove</value>
+        <value const="RIDGE">ridge</value>
+        <value const="INSET">inset</value>
+        <value const="OUTSET">outset</value>
+      </enumeration>
+    <default>none</default>
+    <shorthand>border-style</shorthand>
+  </property>
+  <property type="generic">
+    <name>break-template</name>
+    <class-name>GenericBreak</class-name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="AUTO">auto</value>
+        <value const="COLUMN">column</value>
+        <value const="PAGE">page</value>
+        <value const="EVEN_PAGE">even-page</value>
+        <value const="ODD_PAGE">odd-page</value>
+      </enumeration>
+    <default>auto</default>
+  </property>
+  <property type="generic">
+    <name>generic-space</name>
+    <class-name>GenericSpace</class-name>
+    <inherited>false</inherited>
+    <datatype>Space</datatype>
+    <compound>
+      <subproperty set-by-shorthand="true">
+        <name>minimum</name>
+        <datatype>Length</datatype>
+        <default>0pt</default>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>optimum</name>
+        <datatype>Length</datatype>
+        <default>0pt</default>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>maximum</name>
+        <datatype>Length</datatype>
+        <default>0pt</default>
+      </subproperty>
+      <subproperty>
+        <name>precedence</name>
+        <datatype>Number</datatype>
+        <enumeration>
+          <value const="FORCE">force</value>
+        </enumeration>
+        <default>0</default>
+      </subproperty>
+      <subproperty>
+        <name>conditionality</name>
+        <datatype>Enum</datatype>
+        <enumeration>
+          <value const="DISCARD">discard</value>
+          <value const="RETAIN">retain</value>
+        </enumeration>
+        <default>discard</default>
+      </subproperty>
+    </compound>
+  </property>
+
+<!-- Common Accessibility Properties -->
+
+  <property>
+    <name>source-document</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>role</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default>none</default>
+  </property>
+
+<!-- Common Absolute Position Properties -->
+
+  <property>
+    <name>absolute-position</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="AUTO">auto</value>
+        <value const="FIXED">fixed</value>
+        <value const="ABSOLUTE">absolute</value>
+      </enumeration>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>top</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <auto-ok/>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>right</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <auto-ok/>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>bottom</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <auto-ok/>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>left</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <auto-ok/>
+    <default>auto</default>
+  </property>
+
+<!-- Common Aural Properties -->
+
+  <property>
+    <name>azimuth</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>center</default>
+  </property>
+  <property>
+    <name>cue-after</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>cue-before</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>elevation</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>level</default>
+  </property>
+  <property>
+    <name>pause-after</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>pause-before</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>pitch</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>medium</default>
+  </property>
+  <property>
+    <name>pitch-range</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>50</default>
+  </property>
+  <property>
+    <name>play-during</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>richness</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>50</default>
+  </property>
+  <property>
+    <name>speak</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>normal</default>
+  </property>
+  <property>
+    <name>speak-header</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>once</default>
+  </property>
+  <property>
+    <name>speak-numeral</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>continuous</default>
+  </property>
+  <property>
+    <name>speak-punctuation</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>speech-rate</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>medium</default>
+  </property>
+  <property>
+    <name>stress</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>50</default>
+  </property>
+  <property>
+    <name>voice-family</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>volume</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>medium</default>
+  </property>
+
+<!-- Common Border, Padding, and Background Properties -->
+
+  <property>
+    <name>background-attachment</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>scroll</default>
+  </property>
+  <property>
+    <name>background-color</name>
+    <inherited>false</inherited>
+    <use-generic>GenericColor</use-generic>
+    <default>transparent</default>
+    <!-- Handle transparent -->
+    <datatype-conversion from-type="NCname" vartype="String" varname="nameval">
+       new ColorType(nameval)</datatype-conversion>
+  </property>
+  <property>
+    <name>background-image</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>background-repeat</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="REPEAT">repeat</value>
+        <value const="REPEATX">repeat-x</value>
+        <value const="REPEATY">repeat-y</value>
+        <value const="NOREPEAT">no-repeat</value>
+      </enumeration>
+    <default>repeat</default>
+  </property>
+  <property>
+    <name>background-position-horizontal</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <default>0%</default>
+  </property>
+  <property>
+    <name>background-position-vertical</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <default>0%</default>
+  </property>
+  <property>
+    <name>border-before-color</name>
+    <inherited>false</inherited>
+    <use-generic>GenericColor</use-generic>
+    <default>black</default>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="BEFORE"/>-color</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-before-style</name>
+    <use-generic>GenericBorderStyle</use-generic>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="BEFORE"/>-style</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-before-width</name>
+    <use-generic>GenericCondBorderWidth</use-generic>
+    <default subproperty="conditionality">retain</default>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="BEFORE"/>-width</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-after-color</name>
+    <inherited>false</inherited>
+    <use-generic>GenericColor</use-generic>
+    <default>black</default>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="AFTER"/>-color</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-after-style</name>
+    <use-generic>GenericBorderStyle</use-generic>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="AFTER"/>-style</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-after-width</name>
+    <use-generic>GenericCondBorderWidth</use-generic>
+    <default subproperty="conditionality">retain</default>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="AFTER"/>-width</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-start-color</name>
+    <inherited>false</inherited>
+    <use-generic>GenericColor</use-generic>
+    <default>black</default>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="START"/>-color</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-start-style</name>
+    <use-generic>GenericBorderStyle</use-generic>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="START"/>-style</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-start-width</name>
+    <use-generic>GenericCondBorderWidth</use-generic>
+    <default subproperty="conditionality">discard</default>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="START"/>-width</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-end-color</name>
+    <inherited>false</inherited>
+    <use-generic>GenericColor</use-generic>
+    <default>black</default>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="END"/>-color</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-end-style</name>
+    <use-generic>GenericBorderStyle</use-generic>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="END"/>-style</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-end-width</name>
+    <use-generic>GenericCondBorderWidth</use-generic>
+    <default subproperty="conditionality">discard</default>
+    <corresponding use-if-specified="true">
+      <propval>border-<wmrel2abs dir="END"/>-width</propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>border-top-color</name>
+    <inherited>false</inherited>
+    <use-generic>GenericColor</use-generic>
+    <default>black</default>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="TOP"/>-color</propval>
+    </corresponding>
+                <shorthand>border-top</shorthand>
+                <shorthand>border-color</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-top-style</name>
+    <use-generic>GenericBorderStyle</use-generic>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="TOP"/>-style</propval>
+    </corresponding>
+                <shorthand>border-top</shorthand>
+                <shorthand>border-style</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-top-width</name>
+    <use-generic>GenericBorderWidth</use-generic>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="TOP"/>-width</propval>
+    </corresponding>
+                <shorthand>border-top</shorthand>
+                <shorthand>border-width</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-bottom-color</name>
+    <inherited>false</inherited>
+    <use-generic>GenericColor</use-generic>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="BOTTOM"/>-color</propval>
+    </corresponding>
+    <default>black</default>
+                <shorthand>border-bottom</shorthand>
+                <shorthand>border-color</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-bottom-style</name>
+    <use-generic>GenericBorderStyle</use-generic>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="BOTTOM"/>-style</propval>
+    </corresponding>
+                <shorthand>border-bottom</shorthand>
+                <shorthand>border-style</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-bottom-width</name>
+    <use-generic>GenericBorderWidth</use-generic>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="BOTTOM"/>-width</propval>
+    </corresponding>
+                <shorthand>border-bottom</shorthand>
+                <shorthand>border-width</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-left-color</name>
+    <inherited>false</inherited>
+    <use-generic>GenericColor</use-generic>
+    <default>black</default>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="LEFT"/>-color</propval>
+    </corresponding>
+                <shorthand>border-left</shorthand>
+                <shorthand>border-color</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-left-style</name>
+    <use-generic>GenericBorderStyle</use-generic>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="LEFT"/>-style</propval>
+    </corresponding>
+                <shorthand>border-left</shorthand>
+                <shorthand>border-style</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-left-width</name>
+    <use-generic>GenericBorderWidth</use-generic>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="LEFT"/>-width</propval>
+    </corresponding>
+                <shorthand>border-left</shorthand>
+                <shorthand>border-width</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-right-color</name>
+    <inherited>false</inherited>
+    <use-generic>GenericColor</use-generic>
+    <default>black</default>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="RIGHT"/>-color</propval>
+    </corresponding>
+                <shorthand>border-right</shorthand>
+                <shorthand>border-color</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-right-style</name>
+    <use-generic>GenericBorderStyle</use-generic>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="RIGHT"/>-style</propval>
+    </corresponding>
+                <shorthand>border-right</shorthand>
+                <shorthand>border-style</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>border-right-width</name>
+    <use-generic>GenericBorderWidth</use-generic>
+    <corresponding>
+      <propval>border-<wmabs2rel dir="RIGHT"/>-width</propval>
+    </corresponding>
+                <shorthand>border-right</shorthand>
+                <shorthand>border-width</shorthand>
+                <shorthand>border</shorthand>
+  </property>
+  <property>
+    <name>padding-before</name>
+    <use-generic>GenericCondPadding</use-generic>
+    <default subproperty="conditionality">retain</default>
+    <corresponding use-if-specified="true">
+      <propval>padding-<wmrel2abs dir="BEFORE"/></propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>padding-after</name>
+    <use-generic>GenericCondPadding</use-generic>
+    <default subproperty="conditionality">retain</default>
+    <corresponding use-if-specified="true">
+      <propval>padding-<wmrel2abs dir="AFTER"/></propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>padding-start</name>
+    <use-generic>GenericCondPadding</use-generic>
+    <default subproperty="conditionality">discard</default>
+    <corresponding use-if-specified="true">
+      <propval>padding-<wmrel2abs dir="START"/></propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>padding-end</name>
+    <use-generic>GenericCondPadding</use-generic>
+    <default subproperty="conditionality">discard</default>
+    <corresponding use-if-specified="true">
+      <propval>padding-<wmrel2abs dir="END"/></propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>padding-top</name>
+    <use-generic>GenericPadding</use-generic>
+    <corresponding>
+      <propval>padding-<wmabs2rel dir="TOP"/></propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>padding-bottom</name>
+    <use-generic>GenericPadding</use-generic>
+    <corresponding>
+      <propval>padding-<wmabs2rel dir="BOTTOM"/></propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>padding-left</name>
+    <use-generic>GenericPadding</use-generic>
+    <corresponding>
+      <propval>padding-<wmabs2rel dir="LEFT"/></propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>padding-right</name>
+    <use-generic>GenericPadding</use-generic>
+    <corresponding>
+      <propval>padding-<wmabs2rel dir="RIGHT"/></propval>
+    </corresponding>
+  </property>
+
+<!-- Common Font Properties -->
+
+  <property>
+    <name>font-family</name>
+    <inherited>true</inherited>
+    <datatype>String</datatype>
+    <default>sans-serif</default>
+  </property>
+  <property>
+    <name>font-selection-strategy</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>font-size</name>
+    <inherited>true</inherited>
+    <datatype>Length</datatype>
+    <default>12pt</default>
+    <!-- percent refers to inherited font size -->
+    <percent-ok base="INH_FONTSIZE"/>
+  </property>
+  <property>
+    <name>font-stretch</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>normal</default>
+  </property>
+  <property>
+    <name>font-size-adjust</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>font-style</name>
+    <inherited>true</inherited>
+    <datatype>String</datatype>
+    <default>normal</default>
+  </property>
+  <property>
+    <name>font-variant</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+        <enumeration>
+          <value const="NORMAL">normal</value>
+          <value const="SMALL_CAPS">small-caps</value>
+        </enumeration>
+    <default>normal</default>
+  </property>
+  <property>
+    <name>font-weight</name>
+    <inherited>true</inherited>
+    <datatype>String</datatype>
+    <keyword-equiv match="normal">400</keyword-equiv>
+    <keyword-equiv match="bold">700</keyword-equiv>
+    <default>400</default>
+  </property>
+
+<!-- Common Hyphenation Properties -->
+
+  <property>
+    <name>country</name>
+    <class-name>Country</class-name>
+    <inherited>true</inherited>
+    <datatype>String</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>language</name>
+    <class-name>Language</class-name>
+    <inherited>true</inherited>
+    <datatype>String</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>script</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>hyphenate</name>
+    <class-name>Hyphenate</class-name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="TRUE">true</value>
+        <value const="FALSE">false</value>
+      </enumeration>
+    <default>false</default>
+  </property>
+  <property>
+    <name>hyphenation-character</name>
+    <class-name>HyphenationCharacter</class-name>
+    <inherited>true</inherited>
+    <datatype>Character</datatype>
+    <default>-</default>
+  </property>
+  <property>
+    <name>hyphenation-push-character-count</name>
+    <class-name>HyphenationPushCharacterCount</class-name>
+    <inherited>true</inherited>
+    <datatype>Number</datatype>
+    <default>2</default>
+  </property>
+  <property>
+    <name>hyphenation-remain-character-count</name>
+    <class-name>HyphenationRemainCharacterCount</class-name>
+    <inherited>true</inherited>
+    <datatype>Number</datatype>
+    <default>2</default>
+  </property>
+
+<!-- Common Margin Properties-Block -->
+
+  <property>
+    <name>margin-top</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>margin-bottom</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>margin-left</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>margin-right</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>space-before</name>
+    <use-generic>GenericSpace</use-generic>
+    <!-- Get corresponding margin property using PARENT's writing-mode -->
+    <corresponding use-if-specified="true">
+      <propval>margin-<parwmrel2abs dir="BEFORE"/></propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>space-after</name>
+    <use-generic>GenericSpace</use-generic>
+    <!-- Get corresponding margin property using PARENT's writing-mode -->
+    <corresponding use-if-specified="true">
+      <propval>margin-<parwmrel2abs dir="AFTER"/></propval>
+    </corresponding>
+  </property>
+  <property>
+    <name>start-indent</name>
+    <inherited>true</inherited>
+    <datatype>Length</datatype>
+    <default>0pt</default>
+    <corresponding use-if-specified="true">
+      <propval>margin-<wmrel2abs dir="START"/></propval>
+      <propexpr>
+      <propval>margin-<wmrel2abs dir="START"/></propval>+
+      <propval>padding-<wmrel2abs dir="START"/></propval>+
+      <propval>border-<wmrel2abs dir="START"/>-width</propval>
+      <!-- + parent start-indent unless parent generates ref area (?) -->
+      </propexpr>
+    </corresponding>
+  </property>
+  <property>
+    <name>end-indent</name>
+    <inherited>true</inherited>
+    <datatype>Length</datatype>
+    <default>0pt</default>
+    <corresponding use-if-specified="true">
+      <propval>margin-<wmrel2abs dir="END"/></propval>
+      <propexpr>
+      <propval>margin-<wmrel2abs dir="END"/></propval>+
+      <propval>padding-<wmrel2abs dir="END"/></propval>+
+      <propval>border-<wmrel2abs dir="END"/>-width</propval>
+      </propexpr>
+    </corresponding>
+  </property>
+
+<!-- Common Margin Properties-Inline -->
+
+  <property>
+    <name>space-end</name>
+    <use-generic>GenericSpace</use-generic>
+  </property>
+  <property>
+    <name>space-start</name>
+    <use-generic>GenericSpace</use-generic>
+  </property>
+
+<!-- Common Relative Position Properties -->
+
+  <property>
+    <name>relative-position</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>static</default>
+  </property>
+
+<!-- Area Alignment Properties -->
+
+  <property>
+    <name>alignment-adjust</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>alignment-baseline</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>baseline-shift</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+      <enumeration>
+        <value const="BASELINE">baseline</value>
+        <value const="SUB">sub</value>
+        <value const="SUPER">super</value>
+      </enumeration>
+    <default>baseline</default>
+  </property>
+  <property>
+    <name>display-align</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="BEFORE">before</value>
+        <value const="AFTER">after</value>
+        <value const="CENTER">center</value>
+        <value const="AUTO">auto</value>
+      </enumeration>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>dominant-baseline</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>relative-align</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="BEFORE">before</value>
+        <value const="BASELINE">after</value>
+      </enumeration>
+    <default>before</default>
+  </property>
+
+<!-- Area Dimension Properties -->
+
+  <property>
+    <name>block-progression-dimension</name>
+    <inherited>false</inherited>
+    <datatype>LengthRange</datatype>
+    <corresponding use-if-specified="true">
+      <propval><wmrel2abs dir="BLOCKPROGDIM"/></propval>
+    </corresponding>
+    <compound>
+      <subproperty set-by-shorthand="true">
+        <name>minimum</name>
+        <datatype>Length</datatype>
+        <default>auto</default>
+        <auto-ok/>
+        <percent-ok base="CONTAINING_BOX"/>
+        <corresponding>
+          <propval>min-<wmrel2abs dir="BLOCKPROGDIM"/></propval>
+        </corresponding>>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>optimum</name>
+        <datatype>Length</datatype>
+        <default>auto</default>
+        <auto-ok/>
+        <percent-ok base="CONTAINING_BOX"/>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>maximum</name>
+        <datatype>Length</datatype>
+        <auto-ok/>
+        <default>auto</default>
+        <percent-ok base="CONTAINING_BOX"/>
+        <corresponding>
+          <propval>max-<wmrel2abs dir="BLOCKPROGDIM"/></propval>
+        </corresponding>>
+      </subproperty>
+    </compound>
+  </property>
+  <property>
+    <name>content-height</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <auto-ok/>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>content-width</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <auto-ok/>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>height</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <auto-ok/>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>inline-progression-dimension</name>
+    <inherited>false</inherited>
+    <datatype>LengthRange</datatype>
+    <corresponding use-if-specified="true">
+      <propval><wmrel2abs dir="INLINEPROGDIM"/></propval>
+    </corresponding>
+    <compound>
+      <subproperty set-by-shorthand="true">
+        <name>minimum</name>
+        <datatype>Length</datatype>
+        <default>auto</default>
+        <auto-ok/>
+        <percent-ok base="CONTAINING_BOX"/>
+        <corresponding>
+          <propval>min-<wmrel2abs dir="INLINEPROGDIM"/></propval>
+        </corresponding>>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>optimum</name>
+        <datatype>Length</datatype>
+        <default>auto</default>
+        <auto-ok/>
+        <percent-ok base="CONTAINING_BOX"/>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>maximum</name>
+        <datatype>Length</datatype>
+        <auto-ok/>
+        <default>auto</default>
+        <percent-ok base="CONTAINING_BOX"/>
+        <corresponding>
+          <propval>max-<wmrel2abs dir="INLINEPROGDIM"/></propval>
+        </corresponding>>
+      </subproperty>
+    </compound>
+  </property>  <property>
+    <name>max-height</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>max-width</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>min-height</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>min-width</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>scaling</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="UNIFORM">uniform</value>
+        <value const="NON_UNIFORM">non-uniform</value>
+      </enumeration>
+    <default>uniform</default>
+  </property>
+  <property>
+    <name>scaling-method</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>width</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <auto-ok/>
+    <percent-ok base="CONTAINING_BOX"/>
+    <default>auto</default>
+  </property>
+
+<!-- Block and Line-related Properties -->
+
+  <property>
+    <name>hyphenation-keep</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>hyphenation-ladder-count</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>no-limit</default>
+  </property>
+  <property>
+    <name>last-line-end-indent</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>line-height</name>
+    <inherited type="specified">true</inherited>
+    <datatype>Length</datatype>
+    <default contextdep="true">normal</default>
+    <keyword-equiv match="normal">1.2em</keyword-equiv>
+    <datatype-conversion from-type="Number" varname="numval">
+    new PercentLength(numval.doubleValue(),
+         getPercentBase(fo,propertyList))</datatype-conversion>
+    <!-- percent refers to font size -->
+    <percent-ok base="FONTSIZE"/>
+  </property>
+  <property>
+    <name>line-height-shift-adjustment</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>consider-shifts</default>
+  </property>
+  <property>
+    <name>line-stacking-strategy</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>line-height</default>
+  </property>
+  <property>
+    <name>linefeed-treatment</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="IGNORE">ignore</value>
+        <value const="PRESERVE">preserve</value>
+        <value const="TREAT_AS_SPACE">treat-as-space</value>
+        <value const="TREAT_AS_ZERO_WIDTH_SPACE">treat-as-zero-width-space</value>
+      </enumeration>
+    <default>treat-as-space</default>
+  </property>
+  <property>
+    <name>space-treatment</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>preserve</default>
+  </property>
+  <property>
+    <name>text-align</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+<!-- Note: both 'end' and 'right' are mapped to END -->
+<!--       both 'start' and 'left' are mapped to START -->
+      <enumeration>
+        <value const="CENTER">center</value>
+        <value const="END">end right</value>
+        <value const="START">start left</value>
+        <value const="JUSTIFY">justify</value>
+      </enumeration>
+    <default>start</default>
+  </property>
+  <property>
+    <name>text-align-last</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="CENTER">center</value>
+        <value const="END">end</value>
+        <value const="START">start</value>
+        <value const="JUSTIFY">justify</value>
+      </enumeration>
+    <default>start</default>
+    <derive from="text-align">
+      <if match="TextAlign.JUSTIFY">START</if>
+      <if match="TextAlign.END">END</if>
+      <if match="TextAlign.START">START</if>
+      <if match="TextAlign.CENTER">CENTER</if>
+    </derive>
+  </property>
+  <property>
+    <name>text-indent</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>white-space-collapse</name>
+    <inherited>true</inherited>
+    <use-generic>GenericBoolean</use-generic>
+    <default>true</default>
+  </property>
+  <property>
+    <name>wrap-option</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="WRAP">wrap</value>
+        <value const="NO_WRAP">no-wrap</value>
+      </enumeration>
+    <default>wrap</default>
+  </property>
+
+<!-- Character Properties -->
+
+  <property>
+    <name>character</name>
+    <class-name>Character</class-name>
+    <inherited>false</inherited>
+    <datatype>Character</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>letter-spacing</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>normal</default>
+  </property>
+  <property>
+    <name>suppress-at-line-break</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+   <property>
+    <name>text-decoration</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="NONE">none</value>
+        <value const="UNDERLINE">underline</value>
+        <value const="OVERLINE">overline</value>
+        <value const="LINE_THROUGH">line-through</value>
+        <value const="BLINK">blink</value>
+        <value const="NO_UNDERLINE">no-underline</value>
+        <value const="NO_OVERLINE">no-overline</value>
+        <value const="NO_LINE_THROUGH">no-line-through</value>
+        <value const="NO_BLINK">no-blink</value>
+      </enumeration>
+    <default>none</default>
+  </property>
+  <property>
+    <name>text-shadow</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>text-transform</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+    <enumeration>
+      <value const="NONE">none</value>
+      <value const="CAPITALIZE">capitalize</value>
+      <value const="UPPERCASE">uppercase</value>
+      <value const="LOWERCASE">lowercase</value>
+    </enumeration>
+    <default>none</default>
+  </property>
+  <property>
+    <name>treat-as-word-space</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>word-spacing</name>
+    <inherited>true</inherited>
+    <use-generic>GenericSpace</use-generic>
+    <default subproperty="precedence">force</default>
+    <default subproperty="conditionality">discard</default>
+    <default>0pt</default>
+    <!-- <default>normal</default> -->
+  </property>
+
+<!-- Color-related Properties -->
+
+  <property>
+    <name>color</name>
+    <inherited>true</inherited>
+    <use-generic>GenericColor</use-generic>
+    <default>black</default>
+  </property>
+  <property>
+    <name>color-profile-name</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>rendering-intent</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="AUTO">auto</value>
+        <value const="PERCEPTUAL">perceptual</value>
+        <value const="RELATIVE_COLOMETRIC">relative-colorimetric</value>
+        <value const="SATURATION">saturation</value>
+        <value const="ABSOLUTE_COLORMETRIC">absolute-colorimetric</value>
+      </enumeration>
+    <default>auto</default>
+  </property>
+
+<!-- Float-related Properties -->
+
+  <property>
+    <name>clear</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>float</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+
+<!-- Keeps and Breaks Properties -->
+
+  <property>
+    <name>break-after</name>
+    <use-generic>GenericBreak</use-generic>
+  </property>
+  <property>
+    <name>break-before</name>
+    <use-generic>GenericBreak</use-generic>
+  </property>
+  <property>
+    <name>keep-together</name>
+    <inherited>false</inherited>
+    <use-generic>GenericKeep</use-generic>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>keep-with-next</name>
+    <inherited>false</inherited>
+    <use-generic>GenericKeep</use-generic>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>keep-with-previous</name>
+    <inherited>false</inherited>
+    <use-generic>GenericKeep</use-generic>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>orphans</name>
+    <inherited>true</inherited>
+    <datatype>Number</datatype>
+    <default>2</default>
+  </property>
+  <property>
+    <name>widows</name>
+    <inherited>true</inherited>
+    <datatype>Number</datatype>
+    <default>2</default>
+  </property>
+
+<!-- Layout-related Properties -->
+
+  <property>
+    <name>clip</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>overflow</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="VISIBLE">visible</value>
+        <value const="HIDDEN">hidden</value>
+        <value const="SCROLL">scroll</value>
+        <value const="ERROR_IF_OVERFLOW">error-if-overflow</value>
+        <value const="AUTO">auto</value>
+      </enumeration>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>reference-orientation</name>
+    <inherited>true</inherited>
+    <datatype>Number</datatype>
+    <default>0</default>
+  </property>
+  <property>
+  <name>span</name>
+  <inherited>false</inherited>
+    <datatype>Enum</datatype>
+    <enumeration>
+        <value const="NONE">none</value>
+        <value const="ALL">all</value>
+      </enumeration>
+  <default>none</default>
+   </property>
+
+<!-- Leader and Rule Properties -->
+
+  <property>
+    <name>leader-alignment</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="NONE">none</value>
+        <value const="REFERENCE_AREA">reference-area</value>
+        <value const="PAGE">page</value>
+      </enumeration>
+    <default>none</default>
+  </property>
+  <property>
+  <name>leader-pattern</name>
+  <inherited>true</inherited>
+  <datatype>Enum</datatype>
+      <enumeration>
+        <value const="SPACE">space</value>
+        <value const="RULE">rule</value>
+        <value const="DOTS">dots</value>
+        <value const="USECONTENT">use-content</value>
+      </enumeration>
+  <default>space</default>
+  </property>
+  <property>
+    <name>leader-pattern-width</name>
+    <class-name>LeaderPatternWidth</class-name>
+    <inherited>true</inherited>
+    <datatype>Length</datatype>
+    <default contextdep="true">use-font-metrics</default>
+    <keyword-equiv match="use-font-metrics">0pt</keyword-equiv>
+    <percent-ok base="CONTAINING_BOX"/>
+
+   </property>
+  <property>
+  <name>leader-length</name>
+  <inherited>true</inherited>
+  <datatype>LengthRange</datatype>
+  <percent-ok base="CONTAINING_BOX"/>
+    <compound>
+      <subproperty set-by-shorthand="true">
+        <name>minimum</name>
+        <datatype>Length</datatype>
+  <default>0pt</default>
+  <percent-ok base="CONTAINING_BOX"/>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>optimum</name>
+        <datatype>Length</datatype>
+  <default>12.0pt</default>
+  <percent-ok base="CONTAINING_BOX"/>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>maximum</name>
+        <datatype>Length</datatype>
+  <default contextdep="true">100%</default>
+  <percent-ok base="CONTAINING_BOX"/>
+      </subproperty>
+    </compound>
+   </property>
+  <property>
+  <name>rule-style</name>
+  <inherited>true</inherited>
+  <datatype>Enum</datatype>
+      <enumeration>
+        <value const="NONE">none</value>
+        <value const="DOTTED">dotted</value>
+        <value const="DASHED">dashed</value>
+        <value const="SOLID">solid</value>
+        <value const="DOUBLE">double</value>
+        <value const="GROOVE">groove</value>
+        <value const="RIDGE">ridge</value>
+      </enumeration>
+  <default>solid</default>
+  </property>
+  <property>
+    <name>rule-thickness</name>
+    <inherited>true</inherited>
+    <datatype>Length</datatype>
+    <default>1.0pt</default>
+  </property>
+
+<!-- Properties for Dynamic Effects Formatting Objects -->
+
+  <property>
+    <name>active-state</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>auto-restore</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>false</default>
+  </property>
+  <property>
+    <name>case-name</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>case-title</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>destination-placement-offset</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>external-destination</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>indicate-destination</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>false</default>
+  </property>
+  <property>
+    <name>internal-destination</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>show-destination</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>replace</default>
+  </property>
+  <property>
+    <name>starting-state</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>show</default>
+  </property>
+  <property>
+    <name>switch-to</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>xsl-any</default>
+  </property>
+  <property>
+    <name>target-presentation-context</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>use-target-processing-context</default>
+  </property>
+  <property>
+    <name>target-processing-context</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>document-root</default>
+  </property>
+  <property>
+    <name>target-stylesheet</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>use-normal-stylesheet</default>
+  </property>
+
+<!-- Properties for Markers -->
+
+  <property>
+    <name>marker-class-name</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>retrieve-class-name</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>retrieve-position</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="FSWP">first-starting-within-page</value>
+        <value const="FIC">first-including-carryover</value>
+        <value const="LSWP">last-starting-within-page</value>
+        <value const="LEWP">last-ending-within-page</value>
+      </enumeration>
+    <default>first-starting-within-page</default>
+  </property>
+  <property>
+    <name>retrieve-boundary</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="PAGE">page</value>
+        <value const="PAGE_SEQUENCE">page-sequence</value>
+        <value const="DOCUMENT">document</value>
+      </enumeration>
+    <default>page-sequence</default>
+  </property>
+
+<!-- Properties for Number to String Conversion -->
+
+  <property>
+    <name>format</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default>1</default>
+  </property>
+  <property>
+    <name>grouping-separator</name>
+    <inherited>false</inherited>
+    <datatype>Character</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>grouping-size</name>
+    <inherited>false</inherited>
+    <datatype>Number</datatype>
+    <!-- 0 means no grouping -->
+    <default>0</default>
+  </property>
+  <property>
+    <name>letter-value</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="ALPHABETIC">alphabetic</value>
+        <value const="TRADITIONAL">traditional</value>
+        <value const="AUTO">auto</value>
+      </enumeration>
+    <default>auto</default>
+  </property>
+
+<!-- Pagination and Layout Properties -->
+
+  <property>
+  <name>blank-or-not-blank</name>
+  <inherited>false</inherited>
+  <datatype>Enum</datatype>
+      <enumeration>
+        <value const="BLANK">blank</value>
+        <value const="NOT_BLANK">not-blank</value>
+        <value const="ANY">any</value>
+      </enumeration>
+  <default>any</default>
+   </property>
+  <property>
+  <name>column-count</name>
+  <inherited>false</inherited>
+  <datatype>Number</datatype>
+  <default>1</default>
+   </property>
+  <property>
+  <name>column-gap</name>
+  <inherited>false</inherited>
+  <datatype>Length</datatype>
+  <auto-ok/>
+  <default>0.25in</default>
+   </property>
+  <property>
+    <name>extent</name>
+    <inherited>true</inherited>
+    <datatype>Length</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>flow-name</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>force-page-count</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="EVEN">even</value>
+        <value const="ODD">odd</value>
+        <value const="END_ON_EVEN">end-on-even</value>
+        <value const="END_ON_ODD">end-on-odd</value>
+        <value const="NO_FORCE">no-force</value>
+        <value const="AUTO">auto</value>
+      </enumeration>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>initial-page-number</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>master-name</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>master-reference</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default></default>
+  </property>
+  <property>
+  <name>maximum-repeats</name>
+  <inherited>false</inherited>
+  <datatype>String</datatype>
+  <default>no-limit</default>
+   </property>
+  <property>
+    <name>media-usage</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+  <name>odd-or-even</name>
+  <inherited>false</inherited>
+  <datatype>Enum</datatype>
+      <enumeration>
+        <value const="ODD">odd</value>
+        <value const="EVEN">even</value>
+        <value const="ANY">any</value>
+      </enumeration>
+  <default>any</default>
+   </property>
+  <property>
+    <name>page-height</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <auto-ok/>
+    <default>11in</default>
+  </property>
+  <property>
+  <name>page-position</name>
+  <inherited>false</inherited>
+  <datatype>Enum</datatype>
+      <enumeration>
+        <value const="FIRST">first</value>
+        <value const="LAST">last</value>
+        <value const="REST">rest</value>
+        <value const="ANY">any</value>
+      </enumeration>
+  <default>any</default>
+   </property>
+  <property>
+    <name>page-width</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <auto-ok/>
+    <default>8in</default>
+  </property>
+  <property>
+    <name>precedence</name>
+    <class-name>Precedence</class-name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="TRUE">true</value>
+        <value const="FALSE">false</value>
+      </enumeration>
+    <default>false</default>
+  </property>
+  <property>
+    <name>region-name</name>
+    <class-name>RegionName</class-name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default></default>
+  </property>
+
+<!-- Table Properties -->
+
+  <property>
+    <name>border-after-precedence</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>border-before-precedence</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>border-collapse</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+    <default>collapse</default>
+    <enumeration>
+      <value const="SEPARATE">separate</value>
+      <value const="COLLAPSE">collapse</value>
+    </enumeration>
+  </property>
+  <property>
+    <name>border-end-precedence</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>border-separation</name>
+    <inherited>true</inherited>
+    <datatype>LengthPair</datatype>
+    <compound>
+      <subproperty set-by-shorthand="true">
+        <name>block-progression-direction</name>
+        <datatype>Length</datatype>
+        <default>0pt</default>
+      </subproperty>
+      <subproperty set-by-shorthand="true">
+        <name>inline-progression-direction</name>
+        <datatype>Length</datatype>
+        <default>0pt</default>
+      </subproperty>
+    </compound>
+  </property>
+  <property>
+    <name>border-start-precedence</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>caption-side</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="BEFORE">before</value>
+        <value const="AFTER">after</value>
+        <value const="START">start</value>
+        <value const="END">end</value>
+        <value const="TOP">top</value>
+        <value const="BOTTOM">bottom</value>
+        <value const="LEFT">left</value>
+        <value const="RIGHT">right</value>
+      </enumeration>
+    <default>before</default>
+  </property>
+  <property>
+    <name>column-number</name>
+    <inherited>false</inherited>
+    <datatype>Number</datatype>
+    <default>0</default>
+  </property>
+  <property>
+    <name>column-width</name>
+    <inherited>false</inherited>
+    <datatype>Length</datatype>
+    <default contextdep="true">proportional-column-width(1)</default>
+  </property>
+  <property>
+    <name>empty-cells</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>show</default>
+  </property>
+  <property>
+    <name>ends-row</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>false</default>
+  </property>
+  <property>
+    <name>number-columns-repeated</name>
+    <inherited>false</inherited>
+    <datatype>Number</datatype>
+    <default>1</default>
+  </property>
+  <property>
+    <name>number-columns-spanned</name>
+    <inherited>false</inherited>
+    <datatype>Number</datatype>
+    <default>1</default>
+  </property>
+  <property>
+    <name>number-rows-spanned</name>
+    <inherited>false</inherited>
+    <datatype>Number</datatype>
+    <default>1</default>
+  </property>
+  <property>
+    <name>starts-row</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>false</default>
+  </property>
+  <property>
+    <name>table-layout</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+    <default>auto</default>
+    <enumeration>
+      <value const="AUTO">auto</value>
+      <value const="FIXED">fixed</value>
+    </enumeration>  </property>
+  <property>
+    <name>table-omit-footer-at-break</name>
+    <inherited>false</inherited>
+    <use-generic>GenericBoolean</use-generic>
+    <default>false</default>
+  </property>
+  <property>
+    <name>table-omit-header-at-break</name>
+    <inherited>false</inherited>
+    <use-generic>GenericBoolean</use-generic>
+    <default>false</default>
+  </property>
+
+<!-- Writing-mode-related Properties -->
+
+  <property>
+    <name>direction</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>ltr</default>
+  </property>
+  <property>
+    <name>glyph-orientation-horizontal</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>0deg</default>
+  </property>
+  <property>
+    <name>glyph-orientation-vertical</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>text-altitude</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>use-font-metrics</default>
+  </property>
+  <property>
+    <name>text-depth</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>use-font-metrics</default>
+  </property>
+  <property>
+    <name>unicode-bidi</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>normal</default>
+  </property>
+  <property>
+    <name>writing-mode</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+    <default>lr-tb</default>
+    <enumeration>
+      <value const="LR_TB">lr-tb</value>
+      <value const="RL_TB">rl-tb</value>
+      <value const="TB_RL">tb-rl</value>
+    </enumeration>
+  </property>
+
+<!-- Miscellaneous Properties -->
+
+  <property>
+    <name>content-type</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+  <name>id</name>
+  <inherited>false</inherited>
+  <datatype>String</datatype>
+  <default></default>
+   </property>
+  <property>
+    <name>provisional-label-separation</name>
+    <inherited>true</inherited>
+    <datatype>Length</datatype>
+    <default>6pt</default>
+  </property>
+  <property>
+    <name>provisional-distance-between-starts</name>
+    <inherited>true</inherited>
+    <datatype>Length</datatype>
+    <default>24pt</default>
+  </property>
+  <property>
+   <name>ref-id</name>
+  <inherited>false</inherited>
+  <datatype>String</datatype>
+  <default></default>
+  </property>
+  <property>
+    <name>score-spaces</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>true</default>
+  </property>
+  <property>
+    <name>src</name>
+    <inherited>false</inherited>
+    <datatype>String</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>visibility</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>visible</default>
+  </property>
+  <property>
+    <name>z-index</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+
+<!-- Shorthand Properties -->
+
+  <property>
+    <name>background</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>none</default>
+  </property>
+  <property>
+    <name>background-position</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>0%</default>
+  </property>
+  <property>
+    <name>border</name>
+    <inherited>false</inherited>
+    <datatype>List</datatype>
+    <datatype-parser>GenericShorthandParser</datatype-parser>
+  </property>
+  <property>
+    <name>border-bottom</name>
+    <inherited>false</inherited>
+    <datatype>List</datatype>
+    <datatype-parser>GenericShorthandParser</datatype-parser>
+  </property>
+  <property>
+    <name>border-color</name>
+    <inherited>false</inherited>
+    <datatype>List</datatype>
+    <datatype-parser>BoxPropShorthandParser</datatype-parser>
+  </property>
+  <property>
+    <name>border-left</name>
+    <inherited>false</inherited>
+    <datatype>List</datatype>
+    <datatype-parser>GenericShorthandParser</datatype-parser>
+  </property>
+  <property>
+    <name>border-right</name>
+    <inherited>false</inherited>
+    <datatype>List</datatype>
+    <datatype-parser>GenericShorthandParser</datatype-parser>
+  </property>
+  <property>
+    <name>border-style</name>
+    <inherited>false</inherited>
+    <datatype>List</datatype>
+    <datatype-parser>BoxPropShorthandParser</datatype-parser>
+  </property>
+  <property>
+    <name>border-spacing</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>0pt</default>
+  </property>
+  <property>
+    <name>border-top</name>
+    <inherited>false</inherited>
+    <datatype>List</datatype>
+    <datatype-parser>GenericShorthandParser</datatype-parser>
+  </property>
+  <property>
+    <name>border-width</name>
+    <inherited>false</inherited>
+    <datatype>List</datatype>
+    <datatype-parser>BoxPropShorthandParser</datatype-parser>
+  </property>
+  <property>
+    <name>cue</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>font</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>margin</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>padding</name>
+    <inherited>false</inherited>
+    <datatype>List</datatype>
+    <datatype-parser>BoxPropShorthandParser</datatype-parser>
+  </property>
+  <property>
+    <name>page-break-after</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>page-break-before</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>page-break-inside</name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>pause</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+  <property>
+    <name>position</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="STATIC">static</value>
+        <value const="RELATIVE">relative</value>
+        <value const="ABSOLUTE">absolute</value>
+        <value const="FIXED">fixed</value>
+      </enumeration>
+    <default>static</default>
+  </property>
+  <property>
+    <name>size</name>
+    <inherited>false</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default>auto</default>
+  </property>
+  <property>
+    <name>vertical-align</name>
+    <inherited>false</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="BASELINE">baseline</value>
+        <value const="MIDDLE">middle</value>
+        <value const="SUB">sub</value>
+        <value const="SUPER">super</value>
+        <value const="TEXT_TOP">text-top</value>
+        <value const="TEXT_BOTTOM">text-bottom</value>
+        <value const="TOP">top</value>
+        <value const="BOTTOM">bottom</value>
+      </enumeration>
+    <default>baseline</default>
+  </property>
+  <property>
+    <name>white-space-treatment</name>
+    <inherited>true</inherited>
+    <datatype>Enum</datatype>
+      <enumeration>
+        <value const="IGNORE">ignore</value>
+        <value const="PRESERVE">preserve</value>
+        <value const="IGNORE_IF_BEFORE_LINEFEED">ignore-if-before-linefeed</value>
+        <value const="IGNORE_IF_AFTER_LINEFEED">ignore-if-after-linefeed</value>
+        <value const="IGNORE_IF_SURROUNDING_LINEFEED">ignore-if-surrounding-linefeed</value>
+      </enumeration>
+    <default>ignore-if-surrounding-linefeed</default>
+  </property>
+  <property>
+    <name>xml:lang</name>
+    <class-name>XMLLang</class-name>
+    <inherited>true</inherited>
+    <datatype>ToBeImplemented</datatype>
+    <default></default>
+  </property>
+ </generic-property-list>
+</property-list>
+
diff --git a/src/codegen/fo/properties.dtd b/src/codegen/fo/properties.dtd
new file mode 100644 (file)
index 0000000..8ae36ac
--- /dev/null
@@ -0,0 +1,328 @@
+<!--
+  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$ -->
+<!--
+DTD for foproperties.xml and svgproperties.xml
+-->
+
+<!DOCTYPE property-list [
+<!ELEMENT property-list (generic-property-list?,  element-property-list*) >
+
+<!-- This defines properties which are generic: meaning they are valid for
+     any formatting object in the namespace associated with this properties
+     file.
+-->
+<!ELEMENT generic-property-list (property+) >
+
+<!-- This defines properties which are specific to a particular element.
+     The elements are specified in one or more localname elements. This
+     will generate code which can be used to set up element-specific
+     mappings for the PropertyListBuilder object.
+-->
+<!ELEMENT element-property-list (localname+, property+) >
+<!ELEMENT localname (#PCDATA) >
+
+<!-- Define a single property in the current namespace -->
+<!ELEMENT property (name, (use-generic | datatype), class-name?, inherited?,
+   default?, enumeration?, datatype-conversion*, compound?,
+   keyword-equiv*, percent-ok?, auto-ok?, derive?, corresponding? ) >
+
+<!-- If type is set to "ref", then this is not a new property definition,
+     but rather a reference to a property allready defined (should be in
+     another namespace). The "family" attribute then indicates in which
+     other property family the referenced attribute is defined. This is
+     used to let SVG reuse font-related properties defined in FO.
+     The family attribute is ignored if type isn't "ref".
+     If type = "generic", this is not a "real" property but rather a
+     template on which one or usually several other properties are
+     based. This reduces typing in the properties files and can reduce the
+     number and size of property classes created.
+-->
+<!ATTLIST property
+   type   (ref|generic|normal) "normal"
+   family (fo|svg) "fo"
+>
+<!-- Sub-elements of property. -->
+<!-- This gives the name of the attribute used to specify values for this
+     property in input FO or SVG files. It MUST be specified.
+-->
+<!ELEMENT name (#PCDATA) >
+
+<!-- This gives the class name of the Java class which will be created to
+     represent values for this property. It doesn't need to be specified if
+     it can be deduced from the "name". The rule is that the first letter
+     of the property name and any name following a "-" are capitalized and
+     the "-" characters are removed. If you want to force a name, use the
+     class-name sub-element.
+-->
+<!ELEMENT class-name (#PCDATA) >
+
+<!-- This indicates that this property is based on a generic property
+     datatype. This may be one hand-coded, such as SVGLengthProperty, or it
+     may be one which is created by a generic property definition in the
+     properties.xml file being processed. The content of this element is
+     the CLASSNAME of the generic property (NOTE: not its name). A property
+     can be based on a generic property and still override certain aspects
+     such as the default value, simply by specifying the appropriate
+     sub-elements.
+     If the "ispropclass" attribute = "true", then the contents of the
+     use-generic element is the name of a hard-coded Property subclass
+     and not of a generated Property.Maker subclass. This is currently
+     only used for the SVG properties, because they don't have a
+     rule-based relationship between the actual Property class name
+     and the name of the datatype stored by objects of that class.
+-->
+<!ELEMENT use-generic (#PCDATA) >
+<!ATTLIST use-generic
+  ispropclass (true | false ) "false"
+>
+
+<!-- This indicates whether the property is inherited or not. Use the value
+     true for inherited and false for non-inherited. If the attribute
+     "type" is set to "specified", the specified rather than the computed
+     value of the property is inherited. An example is line-height, which
+     if specified using relative units or a percent, is recalculated
+     relative to the FONTSIZE of the current FO.
+-->
+<!ELEMENT inherited (#PCDATA) >
+<!ATTLIST inherited
+  type  (specified | computed) "computed"
+>
+
+<!-- This gives the datatype of the stored property values. It shouldn't be
+     specified if the property has a use-generic element. The value of this
+     element should be the name of either a basic Java class (String,
+     Integer) or a class defined as a FOP or SVG datatype (eg. ColorType).
+     NOTE: the value "Enum" is special and indicates an enumerated
+     datatype, stored as a Java "int". There is an EnumProperty class, but
+     no corresponding Enum class.
+-->
+<!ELEMENT datatype (#PCDATA) >
+
+<!-- This element is used to specify the allowable values for enumerated
+     datatypes (<datatype>Enum</datatype>). Each value sub-element
+     specifies a possible value for the property. The "const" attribute for
+     each value is used to generate a public static constant value in the
+     class which can be referenced in code to test the property value. It
+     must be a legal Java identifier. By convention, use all caps.
+-->
+<!ELEMENT enumeration (value+) >
+<!ELEMENT value (#PCDATA) >
+<!ATTLIST value
+  const  CDATA  #REQUIRED
+>
+
+<!-- This gives the default value for a property if it is not specified on
+     a given FO. (The spec calls this the "initial" value.)
+
+     It may also be used to specify a default value for a particular
+     component of a compound property. This is used to give each component
+     its initial value if components are only partially specified in the
+     FO file.
+
+     NOTE: It should be an expression which can be parsed to give a legal
+     value for the property! This can't be checked by the generating
+     script, so if there is a problem, it will only be seen at runtime.
+     If the attribute "contextdep" is present and set to "true", the
+     generated code for the Maker will create a new Property object each
+     time it is asked to make the default value. Otherwise (the usual
+     case), it will only make one Property object with the default value
+     and return it on each call. Context-dependent default values include
+     those specified with relative units (eg. 1em).
+
+     The "subproperty" attribute can be used on properties which are
+     based on generic property specifications to specify a default value
+     for a particular component. For example, the border-end-width property
+     is based on GenericCondBorderWidth and specifies a specific default
+     for the "conditionality" component.
+-->
+<!ELEMENT default (#PCDATA) >
+<!ATTLIST default
+  contextdep  (true | false) "false"
+  subproperty  CDATA #IMPLIED
+>
+
+
+<!-- The datatype-conversion element(s) specify how to handle property
+     values which can be specified in several ways. For example, the
+     line-height property can be specified as a Length, or as a number or
+     as a percent, which are both interpreted as being a factor of the
+     current font-size. The datatype for this property is Length. The
+     datatype-conversion element is used to handle the cases in which the
+     Property parser returns a type which is not a Length. Each element
+     tests it against a possible property type. The content gives the
+     actual code which should be inserted in the generated class in order
+     to correctly initialize the property value.
+     NOTE: the use of this for Color properties is rather a hack. All color
+     properties can be specified by a large number of keywords. To be
+     consistent with my logic we should use the keyword-equiv element. But
+     that was a lot of work. So for now, if the value evaluates to a String
+     and not to a ColorType, the datatype-conversion just uses it to
+     directly initialize a ColorType object.
+-->
+<!ELEMENT datatype-conversion (#PCDATA) >
+
+<!-- The attribute from-type gives a possible property datatype, such as
+     Number or String. The varname gives the name of a variable which can
+     be used in the content of the datatype-conversion element. If the type
+     of the variable is not the same as from-type, it may be specified with
+     the attribute vartype.
+
+     An example of usage is from the line-height property. This should be
+     a Length object, but may be specified as a Number, which is interpreted
+     as though it were a percentage of the current font-size.
+-->
+<!ATTLIST datatype-conversion
+    from-type    CDATA   #REQUIRED
+    vartype      CDATA   #IMPLIED
+    varname      CDATA   #REQUIRED
+>
+
+<!-- The compound element indicates that the property is a "compound"
+     property as defined in the XSL specification. It is specified as one
+     or more individual attributes whose names are built up from the base
+     property name and the name of a compoent. Each "subproperty" element
+     describes a component of a compound property.
+     An example is space-before.
+-->
+<!ELEMENT compound (subproperty+) >
+
+<!-- Describe one component of a compound property. Only the name and the
+     datatype should be specified. For example, in the space-before
+     property, the optimum component has the name optimum and the datatype
+     Length.
+-->
+<!ELEMENT subproperty (name, datatype, auto-ok?, default?, corresponding?,
+   enumeration?, keyword-equiv? ) >
+
+<!-- This element which may be repeated, specifies keyword shorthands for
+     non-enumerated properties. For example, the border-width family of
+     properties can be specified either by a Length (eg. 1pt) or by one of
+     the keywords "thin", "medium", or "thick", each of which corresponds
+     to a "user-agent specific value" (XSL Spec.) These values are defined
+     by the keyword-equiv element. The "match" attribute gives the string
+     keyword value and the content is the replacement value, which should
+     be able to be evaluated to produce an object of the property's
+     datatype (such as Length). An example is:
+        <keyword-equiv match="thin" eval="true">0.5pt</keyword-equiv>
+     The "eval" attribute indicates whether the specified value must be
+     "parsed" using the Property parser or whether it can be used to
+     directly construct an object of the appropriate datatype. The default
+     is to evaluate the specified value (like the default specification).
+-->
+<!ELEMENT keyword-equiv (#PCDATA) >
+<!ATTLIST keyword-equiv
+  match  CDATA   #REQUIRED
+  eval  (true|false) "true"
+>
+
+<!-- This element if present indicates that percent specifications are
+     allowed as property values. The attribute "base" indicates how the
+     actual value is calculated.
+     FONTSIZE - the value is a percent of the current font-size
+     INH-FONTSIZE - the value is a percent of the inherited
+     font-size. This is necessary because font-size itself can be specified
+     as a percent!
+     CONTAINING-BOX - the value is a percent of the appropriate
+     dimension of the containing box of this FO.
+     If none of these is specified, the content of the element is
+     assumed to be a Java expression which can be used to calculate an
+     absolute value. This expression can assume that the variables
+     propertyList and fo are in scope and refer to the FO on which the
+     property was specified as a percent.
+-->
+<!ELEMENT   percent-ok (#PCDATA) >
+<!ATTLIST   percent-ok
+   base  (FONTSIZE | INH-FONTSIZE | CONTAINING-BOX) #IMPLIED
+>
+
+<!-- This element if present indicates that a value of "auto" for a Length
+     specification is allowed. If "auto" is specified, a LengthProperty object
+     is created which holds a Length object of type "AUTO".
+-->
+<!ELEMENT   auto-ok EMPTY >
+
+<!-- This element if present indicates that the value of the property may
+     be computed (derived) from other properties if it isn't specified. It
+     assumes that the property is an Enum datatype. (Currently only used
+     for text-align-last.)
+     The "from" attribute gives the name of the property from which this
+     property is derived.
+     Each "if" sub-element specifies a possible value. The "match"
+     attribute is compared with the value of the "derive-from" property. If
+     it is equal, the value of the current property is set to the value
+     specified by the content of the "if" element.
+-->
+<!ELEMENT   derive (if+) >
+<!ATTLIST   derive
+  from  CDATA  #REQUIRED
+>
+<!ELEMENT   if (#PCDATA) >
+<!ATTLIST   if
+  match  CDATA  #REQUIRED
+>
+
+<!-- This element indicates that the value of the property is the same as
+     that of a "corresponding" absolute or writing-mode-relative property.
+     if the "use-if-specified" attribute has the value "true", then the
+     corresponding property value takes precedence over the property on
+     which it is specified. To be conformant to the specification, all the
+     the "absolute" versions of properties have precedence.
+     Example: if a get() call is made on padding-end for a FO using lr-tb
+     writing-mode, then the padding-right property will be used if it is
+     specified, even if padding-end is actually specified.
+     However, if a get() is made on padding-right, the value of padding-end
+     will only be used if padding-right isn't specified on the FO.
+-->
+
+<!ELEMENT   corresponding (propval, propexpr?) >
+<!ATTLIST   corresponding
+    use-if-specified (true|false) "false"
+>
+
+<!-- If the value must be calculated using several other properties, the
+     propexpr element may be used. Then only example I know of are the
+     indent properties which are calculated based on the margin-* values
+     if those are specified, plus the corresponding padding and border-width
+     values.
+-->
+<!ELEMENT   propexpr (propval | #PCDATA)+ >
+
+<!-- The name of the corresponding property is given in the propval element.
+     The conversion between absolute and relative property names is
+     made using wmrel2abs or wm2bs2rel elements, intermixed with text.
+     For example, for the property "padding-left", the corresponding
+     property is "padding-start" if the inline progression direction is
+     left to right. This is expressed in the properties file with the
+     expression "padding-<wmabs2rel dir='LEFT'/>". The wmabs2rel element
+     is replaced by the writing-mode relative direction which corresponds
+     to the absolute direction LEFT using the writing-mode in effect for the
+     flow object where this property is specified.
+-->
+<!ELEMENT   propval (wmrel2abs | wmabs2rel | #PCDATA)+ >
+
+<!ELEMENT   wmrel2abs EMPTY>
+<!ATTLIST   wmrel2abs
+  dir (BEFORE | AFTER | START | END | BLOCKPROGDIM | INLINEPROGDIM)
+  #REQUIRED
+>
+
+<!ELEMENT   wmabs2rel EMPTY>
+<!ATTLIST   wmabs2rel
+  dir (TOP | BOTTOM | LEFT | RIGHT | HEIGHT | WIDTH )  #REQUIRED
+>
+
diff --git a/src/codegen/fo/property-sets.xsl b/src/codegen/fo/property-sets.xsl
new file mode 100644 (file)
index 0000000..761a2cd
--- /dev/null
@@ -0,0 +1,289 @@
+<!--
+  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$ -->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="text" />
+
+<xsl:include href="propinc.xsl"/>
+
+<xsl:template match="root">
+  <xsl:text>
+package org.apache.fop.fo;
+
+import org.apache.fop.fo.Constants;
+import java.util.BitSet;
+import java.util.ArrayList;
+
+public class PropertySets {
+    private static short[][] mapping = null;
+
+    private Element[] elements = new Element[Constants.ELEMENT_COUNT+1];
+    private BitSet block_elems = new BitSet();
+    private BitSet inline_elems = new BitSet();
+
+</xsl:text>
+  <xsl:apply-templates select="common" mode="decl"/>
+<xsl:text>
+    public void initializeElements() {
+        block_elems.set(Constants.FO_BLOCK);
+        block_elems.set(Constants.FO_BLOCK_CONTAINER);
+        block_elems.set(Constants.FO_TABLE_AND_CAPTION);
+        block_elems.set(Constants.FO_TABLE);
+        block_elems.set(Constants.FO_LIST_BLOCK);
+
+        inline_elems.set(Constants.FO_BIDI_OVERRIDE);
+        inline_elems.set(Constants.FO_CHARACTER);
+        inline_elems.set(Constants.FO_EXTERNAL_GRAPHIC);
+        inline_elems.set(Constants.FO_INSTREAM_FOREIGN_OBJECT);
+        inline_elems.set(Constants.FO_INLINE);
+        inline_elems.set(Constants.FO_INLINE_CONTAINER);
+        inline_elems.set(Constants.FO_LEADER);
+        inline_elems.set(Constants.FO_PAGE_NUMBER);
+        inline_elems.set(Constants.FO_PAGE_NUMBER_CITATION);
+        inline_elems.set(Constants.FO_BASIC_LINK);
+        inline_elems.set(Constants.FO_MULTI_TOGGLE);
+    }
+
+    public void initializeCommon() {
+</xsl:text>
+<xsl:apply-templates select="common"/>
+<xsl:text>
+    }
+
+    public void initialize() {
+        // define the fo: elements
+        for (int i = 1; i &lt; elements.length; i++) {
+            elements[i] = new Element(i);
+        }
+
+        // populate the elements with properties and content elements.
+        Element elem;
+</xsl:text>
+
+<xsl:apply-templates select="//element"/>
+<xsl:text>
+
+        // Merge the attributes from the children into the parent.
+        for (boolean dirty = true; dirty; ) {
+            dirty = false;
+            for (int i = 1; i &lt; elements.length; i++) {
+                dirty = dirty || elements[i].merge();
+            }
+        }
+        // Calculate the sparse indices for each element.
+        for (int i = 1; i &lt; elements.length; i++) {
+            mapping[i] = makeSparseIndices(elements[i].valid);
+        }
+    }
+
+    /**
+     * Turn a BitSet into an array of shorts with the first element
+     * on the array the number of set bits in the BitSet.
+     */
+    private static short[] makeSparseIndices(BitSet set) {
+        short[] indices = new short[Constants.PROPERTY_COUNT+1];
+        int j = 1;
+        for (int i = 0; i &lt; Constants.PROPERTY_COUNT+1; i++) {
+            if (set.get(i)) {
+                indices[i] = (short) j++;
+            }
+        }
+        indices[0] = (short)j;
+        return indices;
+    }
+
+
+    public static short[] getPropertySet(int elementId) {
+        if (mapping == null) {
+            mapping = new short[Constants.ELEMENT_COUNT+1][];
+            PropertySets ps = new PropertySets();
+            ps.initializeElements();
+            ps.initializeCommon();
+            ps.initialize();
+        }
+        return mapping[elementId];
+    }
+
+    /**
+     * An object that represent the properties and contents of a fo element
+     */
+    class Element {
+        BitSet relevant = new BitSet();
+        BitSet valid = new BitSet();
+        int elementId;
+        ArrayList children;
+
+        Element(int elementId) {
+            this.elementId = elementId;
+        }
+
+        /**
+         * Add a single property to the element.
+         */
+        public void addProperty(int propId) {
+            relevant.set(propId);
+            valid.set(propId);
+        }
+
+        /**
+         * Add a set of properties to the element.
+         */
+        public void addProperties(BitSet properties) {
+            relevant.or(properties);
+            valid.or(properties);
+        }
+
+        /**
+         * Add a single fo element as a content child.
+         */
+        public void addContent(int elementId) {
+            if (children == null) {
+                children = new ArrayList();
+            }
+            children.add(elements[elementId]);
+        }
+
+        /**
+         * Add a set of fo elements as content children.
+         */
+        public void addContent(BitSet elements) {
+            for (int i = 0; i &lt; elements.size(); i++) {
+                if (elements.get(i)) {
+                    addContent(i);
+                }
+            }
+        }
+
+        /**
+         * Merge the properties from the children into the set of valid
+         * properties. Return true if at least one property could be added.
+         */
+        public boolean merge() {
+            if (children == null) {
+                return false;
+            }
+            boolean dirty = false;
+            for (int i = 0; i &lt; children.size(); i++) {
+                Element child = (Element) children.get(i);
+                BitSet childValid = child.valid;
+                int n = childValid.length();
+                for (int j = 0; j &lt; n; j++) {
+                    if (childValid.get(j) &amp;&amp; !valid.get(j)) {
+                        dirty = true;
+                        valid.set(j);
+                    }
+                }
+            }
+            return dirty;
+        }
+    }
+}
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="common" mode="decl">
+  <xsl:variable name="name" select="name"/>
+  <xsl:text>    BitSet </xsl:text><xsl:value-of select="$name"/>
+  <xsl:text> = new BitSet();
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="common">
+  <xsl:variable name="name" select="name"/>
+  <xsl:apply-templates select="property">
+    <xsl:with-param name="setname" select="$name"/>
+  </xsl:apply-templates>
+  <xsl:text>
+</xsl:text>
+</xsl:template>
+
+<xsl:template match="common/property">
+  <xsl:param name="setname"/>
+
+  <xsl:text>        </xsl:text>
+  <xsl:value-of select="../name"/><xsl:text>.set(Constants.PR_</xsl:text>
+  <xsl:call-template name="makeEnumConstant">
+    <xsl:with-param name="propstr" select="." />
+  </xsl:call-template>);
+</xsl:template>
+
+
+<xsl:template match="element">
+  <xsl:variable name="name">
+    <xsl:call-template name="makeEnumConstant">
+      <xsl:with-param name="propstr" select="name" />
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:text>        elem = elements[Constants.FO_</xsl:text>
+  <xsl:value-of select="$name"/>
+  <xsl:text>];
+</xsl:text>
+  <xsl:apply-templates select="common-ref | property"/>
+  <xsl:apply-templates select="content"/>
+  <xsl:text>
+</xsl:text>
+</xsl:template>
+
+
+<xsl:template match="element/common-ref">
+  <xsl:param name="setname"/>
+
+  <xsl:text>        elem.addProperties(</xsl:text>
+  <xsl:value-of select="."/>);
+</xsl:template>
+
+<xsl:template match="element/property">
+  <xsl:param name="setname"/>
+
+  <xsl:text>        elem.addProperty(Constants.PR_</xsl:text>
+  <xsl:call-template name="makeEnumConstant">
+    <xsl:with-param name="propstr" select="." />
+  </xsl:call-template>);
+</xsl:template>
+
+<xsl:template match="element/content">
+  <xsl:variable name="name">
+    <xsl:text>Constants.FO_</xsl:text>
+    <xsl:call-template name="makeEnumConstant">
+      <xsl:with-param name="propstr" select="." />
+    </xsl:call-template>
+  </xsl:variable>
+
+  <xsl:choose>
+    <xsl:when test=". = '%block;'">
+       <xsl:text>        elem.addContent(block_elems);
+</xsl:text>
+    </xsl:when>
+    <xsl:when test=". = '%inline;'">
+       <xsl:text>        elem.addContent(inline_elems);
+</xsl:text>
+    </xsl:when>
+    <xsl:otherwise>
+       <xsl:text>        elem.addContent(</xsl:text>
+      <xsl:value-of select="$name"/>
+      <xsl:text>);
+</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+
+<xsl:template match="text()"/>
+
+</xsl:stylesheet>
+
diff --git a/src/codegen/fo/propinc.xsl b/src/codegen/fo/propinc.xsl
new file mode 100644 (file)
index 0000000..9f9adf9
--- /dev/null
@@ -0,0 +1,128 @@
+<!--
+  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$ -->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
+
+<xsl:key name="genericref" match="property[@type='generic']" use="class-name"/>
+<xsl:key name="shorthandref" match="property" use="name"/>
+
+<xsl:template name="capfirst">
+  <xsl:param name="str"/>
+  <xsl:variable name="lcletters" select="'abcdefghijklmnopqrstuvwxyz'" />
+  <xsl:variable name="ucletters" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
+     <xsl:value-of select="concat(translate(substring($str, 1, 1),
+              $lcletters, $ucletters), substring($str, 2))"/>
+</xsl:template>
+
+<xsl:template name="makeClassName">
+  <xsl:param name="propstr"/>
+  <xsl:choose>
+   <xsl:when test="contains($propstr, '-')">
+    <xsl:call-template name="capfirst">
+      <xsl:with-param name="str" select="substring-before($propstr, '-')"/>
+    </xsl:call-template>
+    <xsl:call-template name="makeClassName">
+      <xsl:with-param name="propstr" select="substring-after($propstr, '-')"/>
+    </xsl:call-template>
+   </xsl:when>
+   <xsl:otherwise>
+    <xsl:call-template name="capfirst">
+      <xsl:with-param name="str" select="$propstr"/>
+    </xsl:call-template>
+   </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- Generate enumeration constants for FO's, Properties, etc. -->
+<xsl:template name="makeEnumConstant">
+  <xsl:param name="propstr"/>
+  <xsl:variable name="lcletters" select="'abcdefghijklmnopqrstuvwxyz-:'" />
+  <xsl:variable name="ucletters" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ__'" />
+  <xsl:value-of select="translate($propstr, $lcletters, $ucletters)"/>
+</xsl:template>
+
+<!-- The name of the subclass of Property to be created -->
+<xsl:template name="propclass">
+  <xsl:param name="prop" select="."/>
+  <xsl:choose>
+    <xsl:when test="$prop/datatype">
+      <xsl:value-of select="$prop/datatype"/><xsl:text>Property</xsl:text>
+    </xsl:when>
+    <xsl:when test="$prop/use-generic[@ispropclass='true']">
+      <xsl:value-of select="$prop/use-generic"/>
+    </xsl:when>
+    <xsl:when test="$prop/use-generic">
+      <!-- If no datatype child, then the prop must use the same datatype as
+           its template. -->
+  <xsl:call-template name="propclass">
+    <xsl:with-param name="prop"
+     select="key('genericref', $prop/use-generic)"/>
+        </xsl:call-template>
+    </xsl:when>
+    <xsl:otherwise>
+      <!-- ERROR -->
+      <xsl:message terminate="yes">
+  No datatype found for property: <xsl:value-of select="$prop/name"/>
+      </xsl:message>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- return a boolean value -->
+<xsl:template name="hasEnum">
+  <xsl:param name="prop" select="."/>
+  <xsl:choose>
+    <xsl:when test="$prop/enumeration">true</xsl:when>
+    <xsl:when test="$prop/use-generic">
+      <!-- If no datatype child, then the prop must use the same datatype as
+           its template. -->
+  <xsl:call-template name="hasEnum">
+    <xsl:with-param name="prop"
+     select="key('genericref', $prop/use-generic)"/>
+        </xsl:call-template>
+    </xsl:when>
+    <xsl:otherwise>false</xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+<!-- return a boolean value -->
+<xsl:template name="hasSubpropEnum">
+  <xsl:param name="prop" select="."/>
+  <xsl:choose>
+    <xsl:when test="$prop/compound/subproperty/enumeration">true</xsl:when>
+    <xsl:when test="$prop/use-generic">
+      <!-- If no datatype child, then the prop must use the same datatype as
+           its template. -->
+  <xsl:call-template name="hasSubpropEnum">
+    <xsl:with-param name="prop"
+     select="key('genericref', $prop/use-generic)"/>
+        </xsl:call-template>
+    </xsl:when>
+    <xsl:when test="$prop/compound/subproperty/use-generic">
+  <xsl:for-each select="$prop/compound/subproperty[use-generic]">
+    <xsl:call-template name="hasEnum">
+      <xsl:with-param name="prop"
+       select="key('genericref', use-generic)"/>
+          </xsl:call-template>
+  </xsl:for-each>
+    </xsl:when>
+    <xsl:otherwise>false</xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/src/codegen/fo/propmaker.xsl b/src/codegen/fo/propmaker.xsl
new file mode 100644 (file)
index 0000000..21cde4c
--- /dev/null
@@ -0,0 +1,47 @@
+<!--
+  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$ -->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:lxslt="http://xml.apache.org/xslt"
+                xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
+                extension-element-prefixes="redirect">
+
+<xsl:import href="elements.xsl"/>
+
+<xsl:output method="xml" />
+
+<xsl:template match="elements">
+<property-list>
+<xsl:attribute name="family">
+<xsl:call-template name="capall"><xsl:with-param name="str" select="$prefixVal"/></xsl:call-template>
+</xsl:attribute>
+  <generic-property-list>
+    <xsl:apply-templates select="*//attribute"/>
+ </generic-property-list>
+</property-list>
+</xsl:template>
+
+<xsl:template match="*//attribute">
+  <property>
+  <name><xsl:apply-templates/></name>
+    <use-generic ispropclass="true">SVGStringProperty</use-generic>
+  </property>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/src/codegen/foelements.xml b/src/codegen/foelements.xml
deleted file mode 100644 (file)
index db1360a..0000000
+++ /dev/null
@@ -1,1102 +0,0 @@
-<!--
-  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$ -->
-<root>
-<common>
-    <name>CommonAccessibilityProperties</name>
-    <property>source-document</property>
-    <property>role</property>
-</common>
-
-
-<common>
-    <name>CommonAbsolutePositionProperties</name>
-    <property>absolute-position</property>
-    <property>position</property>
-    <property>top</property>
-    <property>right</property>
-    <property>bottom</property>
-    <property>left</property>
-</common>
-    
-<common>
-    <name>CommonAuralProperties</name>
-    <property>azimuth</property>
-    <property>cue-after</property>
-    <property>cue-before</property>
-    <property>cue</property>
-    <property>elevation</property>
-    <property>pause-after</property>
-    <property>pause-before</property>
-    <property>pause</property>
-    <property>pitch</property>
-    <property>pitch-range</property>
-    <property>play-during</property>
-    <property>richness</property>
-    <property>speak</property>
-    <property>speak-header</property>
-    <property>speak-numeral</property>
-    <property>speak-punctuation</property>
-    <property>speech-rate</property>
-    <property>stress</property>
-    <property>voice-family</property>
-    <property>volume</property>
-</common>
-    
-<common>
-    <name>CommonBorderPaddingBackgroundProperties</name>
-    <property>background-attachment</property>
-    <property>background-color</property>
-    <property>background-image</property>
-    <property>background-repeat</property>
-    <property>background-position-horizontal</property>
-    <property>background-position-vertical</property>
-    <property>border-before-color</property>
-    <property>border-before-style</property>
-    <property>border-before-width</property>
-    <property>border-after-color</property>
-    <property>border-after-style</property>
-    <property>border-after-width</property>
-    <property>border-start-color</property>
-    <property>border-start-style</property>
-    <property>border-start-width</property>
-    <property>border-end-color</property>
-    <property>border-end-style</property>
-    <property>border-end-width</property>
-    <property>border-top-color</property>
-    <property>border-top-style</property>
-    <property>border-top-width</property>
-    <property>border-bottom-color</property>
-    <property>border-bottom-style</property>
-    <property>border-bottom-width</property>
-    <property>border-left-color</property>
-    <property>border-left-style</property>
-    <property>border-left-width</property>
-    <property>border-right-color</property>
-    <property>border-right-style</property>
-    <property>border-right-width</property>
-    <property>padding-before</property>
-    <property>padding-after</property>
-    <property>padding-start</property>
-    <property>padding-end</property>
-    <property>padding-top</property>
-    <property>padding-bottom</property>
-    <property>padding-left</property>
-    <property>padding-right</property>
-
-    <!-- shorthands -->
-    <property>border</property>
-    <property>border-style</property>
-    <property>border-width</property>
-    <property>border-color</property>
-    <property>border-top</property>
-    <property>border-bottom</property>
-    <property>border-left</property>
-    <property>border-right</property>
-    <property>padding</property>
-
-</common>
-    
-<common>
-    <name>CommonFontProperties</name>
-    <property>font</property>
-    <property>font-family</property>
-    <property>font-selection-strategy</property>
-    <property>font-size</property>
-    <property>font-stretch</property>
-    <property>font-size-adjust</property>
-    <property>font-style</property>
-    <property>font-variant</property>
-    <property>font-weight</property>
-</common>
-    
-<common>
-    <name>CommonHyphenationProperties</name>
-    <property>country</property>
-    <property>language</property>
-    <property>script</property>
-    <property>hyphenate</property>
-    <property>hyphenation-character</property>
-    <property>hyphenation-push-character-count</property>
-    <property>hyphenation-remain-character-count</property>
-</common>
-
-<common>
-    <name>CommonMarginPropertiesBlock</name>
-    <property>margin</property>
-    <property>margin-top</property>
-    <property>margin-bottom</property>
-    <property>margin-left</property>
-    <property>margin-right</property>
-    <property>space-before</property>
-    <property>space-after</property>
-    <property>start-indent</property>
-    <property>end-indent</property>
-</common>
-
-    
-<common>
-    <name>CommonMarginPropertiesInline</name>
-    <property>space-end</property>
-    <property>space-start</property>
-</common>
-    
-<common>
-    <name>CommonRelativePositionProperties</name>
-    <property>relative-position</property>
-</common>
-
-
-
-
-<element>
-    <name>root</name>
-    <property>media-usage</property>
-    <content>layout-master-set</content>
-    <content>declaration</content>
-    <content>page-sequence</content>
-</element>
-
-<element>
-    <name>declaration</name>
-    <content>color-profile</content>
-</element>
-
-<element>
-    <name>color-profile</name>
-    <property>src</property>
-    <property>color-profile-name</property>
-    <property>rendering-intent</property>
-</element>
-
-<element>
-    <name>page-sequence</name>
-    <property>country</property> 
-    <property>format</property> 
-    <property>language</property> 
-    <property>letter-value</property> 
-    <property>grouping-separator</property> 
-    <property>grouping-size</property> 
-    <property>id</property> 
-    <property>initial-page-number</property> 
-    <property>force-page-count</property> 
-    <property>master-reference</property> 
-    <content>title</content>
-    <content>static-content</content>
-    <content>flow</content>
-</element>
-
-<element>
-    <name>layout-master-set</name>
-    <property>master-name</property> 
-    <content>simple-page-master</content>
-    <content>page-sequence-master</content>
-</element>
-
-<element>
-    <name>page-sequence-master</name>
-    <property>master-name</property> 
-    <content>single-page-master-reference</content>
-    <content>repeatable-page-master-reference</content>
-    <content>repeatable-page-master-alternatives</content>
-</element>
-
-<element>
-    <name>single-page-master-reference</name>
-    <property>master-reference</property>
-</element>
-
-<element>
-    <name>repeatable-page-master-reference</name>
-    <property>master-reference</property> 
-    <property>maximum-repeats</property> 
-</element>
-
-<element>
-    <name>repeatable-page-master-alternatives</name>
-    <property>maximum-repeats</property> 
-    <content>conditional-page-master-reference</content>
-</element>
-
-<element>
-    <name>conditional-page-master-reference</name>
-    <property>master-reference</property> 
-    <property>page-position</property> 
-    <property>odd-or-even</property> 
-    <property>blank-or-not-blank</property> 
-</element>
-
-<element>
-    <name>simple-page-master</name>
-    <common-ref>CommonMarginPropertiesBlock</common-ref> 
-    <property>master-name</property> 
-    <property>page-height</property> 
-    <property>page-width</property> 
-    <property>reference-orientation</property> 
-    <property>writing-mode</property> 
-    <content>region-body</content>
-    <content>region-before</content>
-    <content>region-after</content>
-    <content>region-start</content>
-    <content>region-end</content>
-</element>
-
-<element>
-    <name>region-body</name>
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesBlock</common-ref> 
-    <property>clip</property> 
-    <property>column-count</property> 
-    <property>column-gap</property> 
-    <property>display-align</property> 
-    <property>overflow</property> 
-    <property>region-name</property> 
-    <property>reference-orientation</property> 
-    <property>writing-mode</property> 
-
-</element>
-
-<element>
-    <name>region-before</name>
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <property>clip</property> 
-    <property>display-align</property> 
-    <property>extent</property> 
-    <property>overflow</property> 
-    <property>precedence</property> 
-    <property>region-name</property> 
-    <property>reference-orientation</property> 
-    <property>writing-mode</property> 
-
-</element>
-
-<element>
-    <name>region-after</name>
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <property>clip</property> 
-    <property>display-align</property> 
-    <property>extent</property> 
-    <property>overflow</property> 
-    <property>precedence</property> 
-    <property>region-name</property> 
-    <property>reference-orientation</property> 
-    <property>writing-mode</property> 
-
-</element>
-
-<element>
-    <name>region-start</name>
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <property>clip</property> 
-    <property>display-align</property> 
-    <property>extent</property> 
-    <property>overflow</property> 
-    <property>region-name</property> 
-    <property>reference-orientation</property> 
-    <property>writing-mode</property> 
-
-</element>
-
-<element>
-    <name>region-end</name>
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <property>clip</property> 
-    <property>display-align</property> 
-    <property>extent</property> 
-    <property>overflow</property> 
-    <property>region-name</property> 
-    <property>reference-orientation</property> 
-    <property>writing-mode</property> 
-
-</element>
-
-<element>
-    <name>flow</name>
-    <property>flow-name</property> 
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>static-content</name>
-    <property>flow-name</property>
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>title</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonFontProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesInline</common-ref> 
-    <property>color</property> 
-    <property>line-height</property> 
-    <property>visibility</property> 
-    <content>%inline;</content>
-</element>
-
-<element>
-    <name>block</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonFontProperties</common-ref> 
-    <common-ref>CommonHyphenationProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesBlock</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>page-break-after</property> 
-    <property>page-break-before</property> 
-    <property>break-after</property> 
-    <property>break-before</property> 
-    <property>color</property> 
-    <property>text-depth</property> 
-    <property>text-altitude</property> 
-    <property>hyphenation-keep</property> 
-    <property>hyphenation-ladder-count</property> 
-    <property>id</property> 
-    <!-- property>intrusion-displace</property --> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>last-line-end-indent</property> 
-    <property>linefeed-treatment</property> 
-    <property>line-height</property> 
-    <property>line-height-shift-adjustment</property> 
-    <property>line-stacking-strategy</property> 
-    <property>orphans</property> 
-    <property>white-space-treatment</property> 
-    <property>span</property> 
-    <property>text-align</property> 
-    <property>text-align-last</property> 
-    <property>text-indent</property> 
-    <property>visibility</property> 
-    <property>white-space-collapse</property> 
-    <property>widows</property> 
-    <property>wrap-option</property> 
-    <content>%inline;</content>
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>block-container</name>
-    <common-ref>CommonAbsolutePositionProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesBlock</common-ref> 
-    <property>block-progression-dimension</property> 
-    <property>page-break-after</property> 
-    <property>page-break-before</property> 
-    <property>break-after</property> 
-    <property>break-before</property> 
-    <property>clip</property> 
-    <property>display-align</property> 
-    <property>height</property> 
-    <property>id</property> 
-    <property>inline-progression-dimension</property> 
-    <!--property>intrusion-displace</property --> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>overflow</property> 
-    <property>reference-orientation</property> 
-    <property>span</property> 
-    <property>width</property> 
-    <property>writing-mode</property> 
-    <property>z-index</property> 
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>bidi-override</name>
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonFontProperties</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>color</property> 
-    <property>direction</property> 
-    <property>id</property> 
-    <property>letter-spacing</property> 
-    <property>line-height</property> 
-    <property>score-spaces</property> 
-    <property>unicode-bidi</property> 
-    <property>word-spacing</property> 
-    <content>%inline;</content>
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>character</name>
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonFontProperties</common-ref> 
-    <common-ref>CommonHyphenationProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesInline</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>vertical-align</property> 
-    <property>alignment-adjust</property> 
-    <property>treat-as-word-space</property> 
-    <property>alignment-baseline</property> 
-    <property>baseline-shift</property> 
-    <property>character</property> 
-    <property>color</property> 
-    <property>dominant-baseline</property> 
-    <property>text-depth</property> 
-    <property>text-altitude</property> 
-    <property>glyph-orientation-horizontal</property> 
-    <property>glyph-orientation-vertical</property> 
-    <property>id</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>letter-spacing</property> 
-    <property>line-height</property> 
-    <property>score-spaces</property> 
-    <property>suppress-at-line-break</property> 
-    <property>text-decoration</property> 
-    <property>text-shadow</property> 
-    <property>text-transform</property> 
-    <property>visibility</property> 
-    <property>word-spacing</property> 
-
-</element>
-
-<element>
-    <name>initial-property-set</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonFontProperties</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>color</property> 
-    <property>id</property> 
-    <property>letter-spacing</property> 
-    <property>line-height</property> 
-    <property>score-spaces</property> 
-    <property>text-decoration</property> 
-    <property>text-shadow</property> 
-    <property>text-transform</property> 
-    <property>word-spacing</property> 
-
-</element>
-
-<element>
-    <name>external-graphic</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesInline</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>vertical-align</property> 
-    <property>alignment-adjust</property> 
-    <property>alignment-baseline</property> 
-    <property>baseline-shift</property> 
-    <property>block-progression-dimension</property> 
-    <property>clip</property> 
-    <property>content-height</property> 
-    <property>content-type</property> 
-    <property>content-width</property> 
-    <property>display-align</property> 
-    <property>dominant-baseline</property> 
-    <property>height</property> 
-    <property>id</property> 
-    <property>inline-progression-dimension</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>line-height</property> 
-    <property>overflow</property> 
-    <property>scaling</property> 
-    <property>scaling-method</property> 
-    <property>src</property> 
-    <property>text-align</property> 
-    <property>width</property> 
-
-</element>
-
-<element>
-    <name>instream-foreign-object</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesInline</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>vertical-align</property> 
-    <property>alignment-adjust</property> 
-    <property>alignment-baseline</property> 
-    <property>baseline-shift</property> 
-    <property>block-progression-dimension</property> 
-    <property>clip</property> 
-    <property>content-height</property> 
-    <property>content-type</property> 
-    <property>content-width</property> 
-    <property>display-align</property> 
-    <property>dominant-baseline</property> 
-    <property>height</property> 
-    <property>id</property> 
-    <property>inline-progression-dimension</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>line-height</property> 
-    <property>overflow</property> 
-    <property>scaling</property> 
-    <property>scaling-method</property> 
-    <property>text-align</property> 
-    <property>width</property> 
-
-</element>
-
-<element>
-    <name>inline</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonFontProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesInline</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>vertical-align</property> 
-    <property>alignment-adjust</property> 
-    <property>alignment-baseline</property> 
-    <property>baseline-shift</property> 
-    <property>block-progression-dimension</property> 
-    <property>color</property> 
-    <property>dominant-baseline</property> 
-    <property>height</property> 
-    <property>id</property> 
-    <property>inline-progression-dimension</property> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>line-height</property> 
-    <property>text-decoration</property> 
-    <property>visibility</property> 
-    <property>width</property> 
-    <property>wrap-option</property> 
-    <content>%inline;</content>
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>inline-container</name>
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesInline</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>vertical-align</property> 
-    <property>alignment-adjust</property> 
-    <property>alignment-baseline</property> 
-    <property>baseline-shift</property> 
-    <property>block-progression-dimension</property> 
-    <property>clip</property> 
-    <property>display-align</property> 
-    <property>dominant-baseline</property> 
-    <property>height</property> 
-    <property>id</property> 
-    <property>inline-progression-dimension</property> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>line-height</property> 
-    <property>overflow</property> 
-    <property>reference-orientation</property> 
-    <property>width</property> 
-    <property>writing-mode</property> 
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>leader</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonFontProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesInline</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>vertical-align</property> 
-    <property>alignment-adjust</property> 
-    <property>alignment-baseline</property> 
-    <property>baseline-shift</property> 
-    <property>color</property> 
-    <property>dominant-baseline</property> 
-    <property>text-depth</property> 
-    <property>text-altitude</property> 
-    <property>id</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>leader-alignment</property> 
-    <property>leader-length</property> 
-    <property>leader-pattern</property> 
-    <property>leader-pattern-width</property> 
-    <property>rule-style</property> 
-    <property>rule-thickness</property> 
-    <property>letter-spacing</property> 
-    <property>line-height</property> 
-    <property>text-shadow</property> 
-    <property>visibility</property> 
-    <property>word-spacing</property> 
-    <content>%inline;</content>
-</element>
-
-<element>
-    <name>page-number</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonFontProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesInline</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>vertical-align</property> 
-    <property>alignment-adjust</property> 
-    <property>alignment-baseline</property> 
-    <property>baseline-shift</property> 
-    <property>dominant-baseline</property> 
-    <property>id</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>letter-spacing</property> 
-    <property>line-height</property> 
-    <property>score-spaces</property> 
-    <property>text-altitude</property> 
-    <property>text-decoration</property> 
-    <property>text-depth</property> 
-    <property>text-shadow</property> 
-    <property>text-transform</property> 
-    <property>visibility</property> 
-    <property>word-spacing</property> 
-    <property>wrap-option</property> 
-
-</element>
-
-<element>
-    <name>page-number-citation</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonFontProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesInline</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>vertical-align</property> 
-    <property>alignment-adjust</property> 
-    <property>alignment-baseline</property> 
-    <property>baseline-shift</property> 
-    <property>dominant-baseline</property> 
-    <property>id</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>letter-spacing</property> 
-    <property>line-height</property> 
-    <property>ref-id</property> 
-    <property>score-spaces</property> 
-    <property>text-altitude</property> 
-    <property>text-decoration</property> 
-    <property>text-depth</property> 
-    <property>text-shadow</property> 
-    <property>text-transform</property> 
-    <property>visibility</property> 
-    <property>word-spacing</property> 
-    <property>wrap-option</property> 
-
-</element>
-
-<element>
-    <name>table-and-caption</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesBlock</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>page-break-after</property> 
-    <property>page-break-before</property> 
-    <property>break-after</property> 
-    <property>break-before</property> 
-    <property>caption-side</property> 
-    <property>id</property> 
-    <!--property>intrusion-displace</property --> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>text-align</property> 
-    <content>table-caption</content>
-    <content>table</content>
-</element>
-
-<element>
-    <name>table</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesBlock</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>block-progression-dimension</property> 
-    <property>border-after-precedence</property> 
-    <property>border-before-precedence</property> 
-    <property>border-spacing</property> 
-    <property>border-collapse</property> 
-    <property>border-end-precedence</property> 
-    <property>border-separation</property> 
-    <property>border-start-precedence</property> 
-    <property>page-break-after</property> 
-    <property>page-break-before</property> 
-    <property>break-after</property> 
-    <property>break-before</property> 
-    <property>id</property> 
-    <property>inline-progression-dimension</property> 
-    <!--property>intrusion-displace</property --> 
-    <property>height</property> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>table-layout</property> 
-    <property>table-omit-footer-at-break</property> 
-    <property>table-omit-header-at-break</property> 
-    <property>width</property> 
-    <property>writing-mode</property> 
-    <content>table-column</content>
-    <content>table-header</content>
-    <content>table-footer</content>
-    <content>table-body</content>
-</element>
-
-<element>
-    <name>table-column</name>
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-<!--
-NOTE: 
-Only the background properties from this set apply. If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the border properties also apply.
--->
-    <property>border-after-precedence</property> 
-    <property>border-before-precedence</property> 
-    <property>border-end-precedence</property> 
-    <property>border-start-precedence</property> 
-    <property>column-number</property> 
-    <property>column-width</property> 
-    <property>number-columns-repeated</property> 
-    <property>number-columns-spanned</property> 
-    <property>visibility</property> 
-
-</element>
-
-<element>
-    <name>table-caption</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>block-progression-dimension</property> 
-    <property>height</property> 
-    <property>id</property> 
-    <property>inline-progression-dimension</property> 
-    <!--property>intrusion-displace</property --> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>width</property> 
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>table-header</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-<!--
-NOTE: 
-Only the background properties from this set apply. If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the border properties also apply.
--->
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>border-after-precedence</property> 
-    <property>border-before-precedence</property> 
-    <property>border-end-precedence</property> 
-    <property>border-start-precedence</property> 
-    <property>id</property> 
-    <property>visibility</property> 
-    <content>table-row</content>
-    <content>table-cell</content>
-</element>
-
-<element>
-    <name>table-footer</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-<!--
-NOTE: 
-Only the background properties from this set apply. If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the border properties also apply.
--->
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>border-after-precedence</property> 
-    <property>border-before-precedence</property> 
-    <property>border-end-precedence</property> 
-    <property>border-start-precedence</property> 
-    <property>id</property> 
-    <property>visibility</property> 
-    <content>table-row</content>
-    <content>table-cell</content>
-</element>
-
-<element>
-    <name>table-body</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-<!--
-NOTE: 
-Only the background properties from this set apply. If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the border properties also apply.
--->
-
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>border-after-precedence</property> 
-    <property>border-before-precedence</property> 
-    <property>border-end-precedence</property> 
-    <property>border-start-precedence</property> 
-    <property>id</property> 
-    <property>visibility</property> 
-    <content>table-row</content>
-    <content>table-cell</content>
-</element>
-
-<element>
-    <name>table-row</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <property>block-progression-dimension</property> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-<!--
-NOTE: 
-Only the background properties from this set apply. If the value of border-collapse is "collapse" or "collapse-with-precedence" for the table the border properties also apply.
--->
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>border-after-precedence</property> 
-    <property>border-before-precedence</property> 
-    <property>border-end-precedence</property> 
-    <property>border-start-precedence</property> 
-    <property>page-break-after</property> 
-    <property>page-break-before</property> 
-    <property>break-after</property> 
-    <property>break-before</property> 
-    <property>id</property> 
-    <property>height</property> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>visibility</property> 
-    <content>table-cell</content>
-</element>
-
-<element>
-    <name>table-cell</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>border-after-precedence</property> 
-    <property>border-before-precedence</property> 
-    <property>border-end-precedence</property> 
-    <property>border-start-precedence</property> 
-    <property>block-progression-dimension</property> 
-    <property>column-number</property> 
-    <property>display-align</property> 
-    <property>relative-align</property> 
-    <property>empty-cells</property> 
-    <property>ends-row</property> 
-    <property>height</property> 
-    <property>id</property> 
-    <property>inline-progression-dimension</property> 
-    <property>number-columns-spanned</property> 
-    <property>number-rows-spanned</property> 
-    <property>starts-row</property> 
-    <property>width</property> 
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>list-block</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesBlock</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>page-break-after</property> 
-    <property>page-break-before</property> 
-    <property>break-after</property> 
-    <property>break-before</property> 
-    <property>id</property> 
-    <!--property>intrusion-displace</property --> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>provisional-distance-between-starts</property> 
-    <property>provisional-label-separation</property> 
-    <content>list-item</content>
-</element>
-
-<element>
-    <name>list-item</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesBlock</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>page-break-after</property> 
-    <property>page-break-before</property> 
-    <property>break-after</property> 
-    <property>break-before</property> 
-    <property>id</property> 
-    <!--property>intrusion-displace</property --> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>relative-align</property> 
-    <content>list-item-label</content>
-    <content>list-item-body</content>
-</element>
-
-<element>
-    <name>list-item-body</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <property>id</property> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>list-item-label</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <property>id</property> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>basic-link</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <common-ref>CommonAuralProperties</common-ref> 
-    <common-ref>CommonBorderPaddingBackgroundProperties</common-ref> 
-    <common-ref>CommonMarginPropertiesInline</common-ref> 
-    <common-ref>CommonRelativePositionProperties</common-ref> 
-    <property>vertical-align</property> 
-    <property>alignment-adjust</property> 
-    <property>alignment-baseline</property> 
-    <property>baseline-shift</property> 
-    <property>destination-placement-offset</property> 
-    <property>dominant-baseline</property> 
-    <property>external-destination</property> 
-    <property>id</property> 
-    <property>indicate-destination</property> 
-    <property>internal-destination</property> 
-    <property>page-break-inside</property> 
-    <property>keep-together</property> 
-    <property>keep-with-next</property> 
-    <property>keep-with-previous</property> 
-    <property>line-height</property> 
-    <property>show-destination</property> 
-    <property>target-processing-context</property> 
-    <property>target-presentation-context</property> 
-    <property>target-stylesheet</property> 
-    <content>%inline;</content>
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>multi-switch</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <property>auto-restore</property> 
-    <property>id</property> 
-    <content>multi-case</content>
-</element>
-
-<element>
-    <name>multi-case</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <property>id</property> 
-    <property>starting-state</property> 
-    <property>case-name</property> 
-    <property>case-title</property> 
-    <content>%inline;</content>
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>multi-toggle</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <property>id</property> 
-    <property>switch-to</property> 
-    <content>%inline;</content>
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>multi-properties</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <property>id</property> 
-    <content>multi-property-set</content>
-    <content>wrapper</content>
-</element>
-
-<element>
-    <name>multi-property-set</name>
-    <property>id</property> 
-    <property>active-state</property>
-</element>
-
-<element>
-    <name>float</name>
-    <property>float</property> 
-    <property>clear</property>
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>footnote</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <content>inline</content>
-    <content>footnote-body</content>
-</element>
-
-<element>
-    <name>footnote-body</name>
-    <common-ref>CommonAccessibilityProperties</common-ref> 
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>wrapper</name>
-    <property>id</property>
-    <content>%inline;</content>
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>marker</name>
-    <property>marker-class-name</property>
-    <content>%inline;</content>
-    <content>%block;</content>
-</element>
-
-<element>
-    <name>retrieve-marker</name>
-    <property>retrieve-class-name</property> 
-    <property>retrieve-position</property> 
-    <property>retrieve-boundary</property> 
-</element>
-
-</root>
-
diff --git a/src/codegen/font-file.xsl b/src/codegen/font-file.xsl
deleted file mode 100644 (file)
index 72ee81a..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-<!--
-  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$ -->
-<!-- This file writes the class files for the fonts (Courier.java,
-     Helvetica.java etc.).  It uses the information in the font
-     description files (Courier.xml, Helvetica.xml) to do this.  In these
-     font description files each character is referenced by its adobe
-     glyph name:
-        <char name="A" width="667"/>
-     To resolve this name and to find the code for this character it looks
-     up the adobe name in the file encodings.xml and extracts the appropriate
-     code. -->
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-  <xsl:output method="text"/>
-
-  <xsl:param name="encoding" select="/font-metrics/encoding"/>
-  <xsl:variable name="native-encoding" select="/font-metrics/encoding"/>
-  <xsl:variable name="glyphs" select="document('encodings.xml')/encoding-set/encoding[@id=$encoding]/glyph"/>
-
-  <xsl:template match="font-metrics">
-package org.apache.fop.fonts.base14;
-
-<xsl:if test="count(kerning) &gt; 0">
-import java.util.Map;
-</xsl:if>
-import org.apache.fop.fonts.FontType;
-import org.apache.fop.fonts.Typeface;
-import org.apache.fop.fonts.CodePointMapping;
-
-public class <xsl:value-of select="class-name"/> extends Typeface {
-    private final static String fontName = "<xsl:value-of select="font-name"/>";
-    private final static String encoding = <xsl:choose><xsl:when test="$encoding != $native-encoding">"<xsl:value-of select="$encoding"/>"</xsl:when><xsl:otherwise>null</xsl:otherwise></xsl:choose>;
-    private final static int capHeight = <xsl:value-of select="cap-height"/>;
-    private final static int xHeight = <xsl:value-of select="x-height"/>;
-    private final static int ascender = <xsl:value-of select="ascender"/>;
-    private final static int descender = <xsl:value-of select="descender"/>;
-    private final static int firstChar = <xsl:value-of select="first-char"/>;
-    private final static int lastChar = <xsl:value-of select="last-char"/>;
-    private final static int[] width;
-    private final CodePointMapping mapping =
-        CodePointMapping.getMapping("<xsl:value-of select="$encoding"/>");
-<xsl:if test="count(kerning) &gt; 0">
-    private final static Map kerning;
-</xsl:if>
-
-    private boolean enableKerning = false;
-
-    static {
-        width = new int[256];
-        <xsl:apply-templates select="widths"/>
-<xsl:if test="count(kerning) &gt; 0">
-        kerning = new java.util.HashMap();
-        Integer first, second;
-        Map pairs;
-        <xsl:apply-templates select="kerning"/>
-</xsl:if>
-    }
-
-    public <xsl:value-of select="class-name"/>() {
-        this(false);
-    }
-
-    public <xsl:value-of select="class-name"/>(boolean enableKerning) {
-        this.enableKerning = enableKerning;
-    }
-
-    public String getEncoding() {
-        return encoding;
-    }
-
-    public String getFontName() {
-        return fontName;
-    }
-
-    public FontType getFontType() {
-        return FontType.TYPE1;
-    }
-
-    public int getAscender(int size) {
-        return size * ascender;
-    }
-
-    public int getCapHeight(int size) {
-        return size * capHeight;
-    }
-
-    public int getDescender(int size) {
-        return size * descender;
-    }
-
-    public int getXHeight(int size) {
-        return size * xHeight;
-    }
-
-    public int getFirstChar() {
-        return firstChar;
-    }
-
-    public int getLastChar() {
-        return lastChar;
-    }
-
-    public int getWidth(int i,int size) {
-        return size * width[i];
-    }
-
-    public int[] getWidths() {
-        int[] arr = new int[getLastChar() - getFirstChar() + 1];
-        System.arraycopy(width, getFirstChar(), arr, 0, getLastChar() - getFirstChar() + 1);
-        return arr;
-    }
-
-<xsl:choose>
-  <xsl:when test="count(kerning) &gt; 0">
-    public boolean hasKerningInfo() {
-        return enableKerning;
-    }
-
-    public java.util.Map getKerningInfo() {
-        return kerning;
-    }
-  </xsl:when>
-  <xsl:otherwise>
-    public boolean hasKerningInfo() {
-        return false;
-    }
-
-    public java.util.Map getKerningInfo() {
-        return java.util.Collections.EMPTY_MAP;
-    }
-  </xsl:otherwise>
-</xsl:choose>
-
-    public char mapChar(char c) {
-        char d = mapping.mapChar(c);
-        if(d != 0) {
-            return d;
-        } else {
-            return '#';
-        }
-    }
-
-    public boolean hasChar(char c) {
-        return (mapping.mapChar(c) > 0);
-    }
-
-}
-  </xsl:template>
-
-  <xsl:template match="widths/char"><xsl:variable name="char-name" select="@name"/><xsl:variable name="char-num" select="$glyphs[@name = $char-name]/@codepoint"/><xsl:if test="$char-num!=''">        width[0x<xsl:value-of select="$char-num"/>] = <xsl:value-of select="@width"/>;</xsl:if></xsl:template>
-  
-  <xsl:template match="kerning">
-        first = new Integer(<xsl:value-of select="@kpx1"/>);
-        pairs = (Map)kerning.get(first);
-        if (pairs == null) {
-            pairs = new java.util.HashMap();
-            kerning.put(first, pairs);
-        }
-        <xsl:apply-templates select="pair"/>
-  </xsl:template>
-  
-  <xsl:template match="pair">
-        second = new Integer(<xsl:value-of select="@kpx2"/>);
-        pairs.put(second, new Integer(<xsl:value-of select="@kern"/>));
-  </xsl:template>
-</xsl:stylesheet>
-
diff --git a/src/codegen/fonts/Courier.xml b/src/codegen/fonts/Courier.xml
new file mode 100644 (file)
index 0000000..89c7314
--- /dev/null
@@ -0,0 +1,294 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Courier</font-name>
+   <class-name>Courier</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>562</cap-height>
+   <x-height>426</x-height>
+   <ascender>629</ascender>
+   <descender>-157</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="600"/>
+      <char name="AE" width="600"/>
+      <char name="Aacute" width="600"/>
+      <char name="Acircumflex" width="600"/>
+      <char name="Adieresis" width="600"/>
+      <char name="Agrave" width="600"/>
+      <char name="Aring" width="600"/>
+      <char name="Atilde" width="600"/>
+      <char name="B" width="600"/>
+      <char name="C" width="600"/>
+      <char name="Ccedilla" width="600"/>
+      <char name="D" width="600"/>
+      <char name="E" width="600"/>
+      <char name="Eacute" width="600"/>
+      <char name="Ecircumflex" width="600"/>
+      <char name="Edieresis" width="600"/>
+      <char name="Egrave" width="600"/>
+      <char name="Eth" width="600"/>
+      <char name="Euro" width="600"/>
+      <char name="F" width="600"/>
+      <char name="G" width="600"/>
+      <char name="Gcaron" width="600"/>
+      <char name="H" width="600"/>
+      <char name="I" width="600"/>
+      <char name="IJ" width="600"/>
+      <char name="Iacute" width="600"/>
+      <char name="Icircumflex" width="600"/>
+      <char name="Idieresis" width="600"/>
+      <char name="Idot" width="600"/>
+      <char name="Igrave" width="600"/>
+      <char name="J" width="600"/>
+      <char name="K" width="600"/>
+      <char name="L" width="600"/>
+      <char name="LL" width="600"/>
+      <char name="Lslash" width="600"/>
+      <char name="M" width="600"/>
+      <char name="N" width="600"/>
+      <char name="Ntilde" width="600"/>
+      <char name="O" width="600"/>
+      <char name="OE" width="600"/>
+      <char name="Oacute" width="600"/>
+      <char name="Ocircumflex" width="600"/>
+      <char name="Odieresis" width="600"/>
+      <char name="Ograve" width="600"/>
+      <char name="Oslash" width="600"/>
+      <char name="Otilde" width="600"/>
+      <char name="P" width="600"/>
+      <char name="Q" width="600"/>
+      <char name="R" width="600"/>
+      <char name="S" width="600"/>
+      <char name="Scaron" width="600"/>
+      <char name="Scedilla" width="600"/>
+      <char name="T" width="600"/>
+      <char name="Thorn" width="600"/>
+      <char name="U" width="600"/>
+      <char name="Uacute" width="600"/>
+      <char name="Ucircumflex" width="600"/>
+      <char name="Udieresis" width="600"/>
+      <char name="Ugrave" width="600"/>
+      <char name="V" width="600"/>
+      <char name="W" width="600"/>
+      <char name="X" width="600"/>
+      <char name="Y" width="600"/>
+      <char name="Yacute" width="600"/>
+      <char name="Ydieresis" width="600"/>
+      <char name="Z" width="600"/>
+      <char name="Zcaron" width="600"/>
+      <char name="a" width="600"/>
+      <char name="aacute" width="600"/>
+      <char name="acircumflex" width="600"/>
+      <char name="acute" width="600"/>
+      <char name="adieresis" width="600"/>
+      <char name="ae" width="600"/>
+      <char name="agrave" width="600"/>
+      <char name="ampersand" width="600"/>
+      <char name="aring" width="600"/>
+      <char name="arrowboth" width="600"/>
+      <char name="arrowdown" width="600"/>
+      <char name="arrowleft" width="600"/>
+      <char name="arrowright" width="600"/>
+      <char name="arrowup" width="600"/>
+      <char name="asciicircum" width="600"/>
+      <char name="asciitilde" width="600"/>
+      <char name="asterisk" width="600"/>
+      <char name="at" width="600"/>
+      <char name="atilde" width="600"/>
+      <char name="b" width="600"/>
+      <char name="backslash" width="600"/>
+      <char name="bar" width="600"/>
+      <char name="braceleft" width="600"/>
+      <char name="braceright" width="600"/>
+      <char name="bracketleft" width="600"/>
+      <char name="bracketright" width="600"/>
+      <char name="breve" width="600"/>
+      <char name="brokenbar" width="600"/>
+      <char name="bullet" width="600"/>
+      <char name="c" width="600"/>
+      <char name="caron" width="600"/>
+      <char name="ccedilla" width="600"/>
+      <char name="cedilla" width="600"/>
+      <char name="cent" width="600"/>
+      <char name="center" width="600"/>
+      <char name="circumflex" width="600"/>
+      <char name="colon" width="600"/>
+      <char name="comma" width="600"/>
+      <char name="copyright" width="600"/>
+      <char name="currency" width="600"/>
+      <char name="d" width="600"/>
+      <char name="dagger" width="600"/>
+      <char name="daggerdbl" width="600"/>
+      <char name="dectab" width="600"/>
+      <char name="degree" width="600"/>
+      <char name="dieresis" width="600"/>
+      <char name="divide" width="600"/>
+      <char name="dollar" width="600"/>
+      <char name="dotaccent" width="600"/>
+      <char name="dotlessi" width="600"/>
+      <char name="down" width="600"/>
+      <char name="e" width="600"/>
+      <char name="eacute" width="600"/>
+      <char name="ecircumflex" width="600"/>
+      <char name="edieresis" width="600"/>
+      <char name="egrave" width="600"/>
+      <char name="eight" width="600"/>
+      <char name="ellipsis" width="600"/>
+      <char name="emdash" width="600"/>
+      <char name="endash" width="600"/>
+      <char name="equal" width="600"/>
+      <char name="eth" width="600"/>
+      <char name="exclam" width="600"/>
+      <char name="exclamdown" width="600"/>
+      <char name="f" width="600"/>
+      <char name="fi" width="600"/>
+      <char name="five" width="600"/>
+      <char name="fl" width="600"/>
+      <char name="florin" width="600"/>
+      <char name="format" width="600"/>
+      <char name="four" width="600"/>
+      <char name="fraction" width="600"/>
+      <char name="g" width="600"/>
+      <char name="gcaron" width="600"/>
+      <char name="germandbls" width="600"/>
+      <char name="grave" width="600"/>
+      <char name="graybox" width="600"/>
+      <char name="greater" width="600"/>
+      <char name="guillemotleft" width="600"/>
+      <char name="guillemotright" width="600"/>
+      <char name="guilsinglleft" width="600"/>
+      <char name="guilsinglright" width="600"/>
+      <char name="h" width="600"/>
+      <char name="hungarumlaut" width="600"/>
+      <char name="hyphen" width="600"/>
+      <char name="i" width="600"/>
+      <char name="iacute" width="600"/>
+      <char name="icircumflex" width="600"/>
+      <char name="idieresis" width="600"/>
+      <char name="igrave" width="600"/>
+      <char name="ij" width="600"/>
+      <char name="indent" width="600"/>
+      <char name="j" width="600"/>
+      <char name="k" width="600"/>
+      <char name="l" width="600"/>
+      <char name="largebullet" width="600"/>
+      <char name="left" width="600"/>
+      <char name="less" width="600"/>
+      <char name="lira" width="600"/>
+      <char name="ll" width="600"/>
+      <char name="logicalnot" width="600"/>
+      <char name="lslash" width="600"/>
+      <char name="m" width="600"/>
+      <char name="macron" width="600"/>
+      <char name="merge" width="600"/>
+      <char name="minus" width="600"/>
+      <char name="mu" width="600"/>
+      <char name="multiply" width="600"/>
+      <char name="n" width="600"/>
+      <char name="nine" width="600"/>
+      <char name="notegraphic" width="600"/>
+      <char name="ntilde" width="600"/>
+      <char name="numbersign" width="600"/>
+      <char name="o" width="600"/>
+      <char name="oacute" width="600"/>
+      <char name="ocircumflex" width="600"/>
+      <char name="odieresis" width="600"/>
+      <char name="oe" width="600"/>
+      <char name="ogonek" width="600"/>
+      <char name="ograve" width="600"/>
+      <char name="one" width="600"/>
+      <char name="onehalf" width="600"/>
+      <char name="onequarter" width="600"/>
+      <char name="onesuperior" width="600"/>
+      <char name="ordfeminine" width="600"/>
+      <char name="ordmasculine" width="600"/>
+      <char name="oslash" width="600"/>
+      <char name="otilde" width="600"/>
+      <char name="overscore" width="600"/>
+      <char name="p" width="600"/>
+      <char name="paragraph" width="600"/>
+      <char name="parenleft" width="600"/>
+      <char name="parenright" width="600"/>
+      <char name="percent" width="600"/>
+      <char name="period" width="600"/>
+      <char name="periodcentered" width="600"/>
+      <char name="perthousand" width="600"/>
+      <char name="plus" width="600"/>
+      <char name="plusminus" width="600"/>
+      <char name="prescription" width="600"/>
+      <char name="q" width="600"/>
+      <char name="question" width="600"/>
+      <char name="questiondown" width="600"/>
+      <char name="quotedbl" width="600"/>
+      <char name="quotedblbase" width="600"/>
+      <char name="quotedblleft" width="600"/>
+      <char name="quotedblright" width="600"/>
+      <char name="quoteleft" width="600"/>
+      <char name="quoteright" width="600"/>
+      <char name="quotesinglbase" width="600"/>
+      <char name="quotesingle" width="600"/>
+      <char name="r" width="600"/>
+      <char name="registered" width="600"/>
+      <char name="return" width="600"/>
+      <char name="ring" width="600"/>
+      <char name="s" width="600"/>
+      <char name="scaron" width="600"/>
+      <char name="scedilla" width="600"/>
+      <char name="section" width="600"/>
+      <char name="semicolon" width="600"/>
+      <char name="seven" width="600"/>
+      <char name="six" width="600"/>
+      <char name="slash" width="600"/>
+      <char name="space" width="600"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="600"/>
+      <char name="square" width="600"/>
+      <char name="sterling" width="600"/>
+      <char name="stop" width="600"/>
+      <char name="t" width="600"/>
+      <char name="tab" width="600"/>
+      <char name="thorn" width="600"/>
+      <char name="three" width="600"/>
+      <char name="threequarters" width="600"/>
+      <char name="threesuperior" width="600"/>
+      <char name="tilde" width="600"/>
+      <char name="trademark" width="600"/>
+      <char name="two" width="600"/>
+      <char name="twosuperior" width="600"/>
+      <char name="u" width="600"/>
+      <char name="uacute" width="600"/>
+      <char name="ucircumflex" width="600"/>
+      <char name="udieresis" width="600"/>
+      <char name="ugrave" width="600"/>
+      <char name="underscore" width="600"/>
+      <char name="up" width="600"/>
+      <char name="v" width="600"/>
+      <char name="w" width="600"/>
+      <char name="x" width="600"/>
+      <char name="y" width="600"/>
+      <char name="yacute" width="600"/>
+      <char name="ydieresis" width="600"/>
+      <char name="yen" width="600"/>
+      <char name="z" width="600"/>
+      <char name="zcaron" width="600"/>
+      <char name="zero" width="600"/>
+   </widths>
+</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/fonts/CourierBold.xml b/src/codegen/fonts/CourierBold.xml
new file mode 100644 (file)
index 0000000..92a777a
--- /dev/null
@@ -0,0 +1,294 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Courier-Bold</font-name>
+   <class-name>CourierBold</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>562</cap-height>
+   <x-height>439</x-height>
+   <ascender>626</ascender>
+   <descender>-142</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="600"/>
+      <char name="AE" width="600"/>
+      <char name="Aacute" width="600"/>
+      <char name="Acircumflex" width="600"/>
+      <char name="Adieresis" width="600"/>
+      <char name="Agrave" width="600"/>
+      <char name="Aring" width="600"/>
+      <char name="Atilde" width="600"/>
+      <char name="B" width="600"/>
+      <char name="C" width="600"/>
+      <char name="Ccedilla" width="600"/>
+      <char name="D" width="600"/>
+      <char name="E" width="600"/>
+      <char name="Eacute" width="600"/>
+      <char name="Ecircumflex" width="600"/>
+      <char name="Edieresis" width="600"/>
+      <char name="Egrave" width="600"/>
+      <char name="Eth" width="600"/>
+      <char name="Euro" width="600"/>
+      <char name="F" width="600"/>
+      <char name="G" width="600"/>
+      <char name="Gcaron" width="600"/>
+      <char name="H" width="600"/>
+      <char name="I" width="600"/>
+      <char name="IJ" width="600"/>
+      <char name="Iacute" width="600"/>
+      <char name="Icircumflex" width="600"/>
+      <char name="Idieresis" width="600"/>
+      <char name="Idot" width="600"/>
+      <char name="Igrave" width="600"/>
+      <char name="J" width="600"/>
+      <char name="K" width="600"/>
+      <char name="L" width="600"/>
+      <char name="LL" width="600"/>
+      <char name="Lslash" width="600"/>
+      <char name="M" width="600"/>
+      <char name="N" width="600"/>
+      <char name="Ntilde" width="600"/>
+      <char name="O" width="600"/>
+      <char name="OE" width="600"/>
+      <char name="Oacute" width="600"/>
+      <char name="Ocircumflex" width="600"/>
+      <char name="Odieresis" width="600"/>
+      <char name="Ograve" width="600"/>
+      <char name="Oslash" width="600"/>
+      <char name="Otilde" width="600"/>
+      <char name="P" width="600"/>
+      <char name="Q" width="600"/>
+      <char name="R" width="600"/>
+      <char name="S" width="600"/>
+      <char name="Scaron" width="600"/>
+      <char name="Scedilla" width="600"/>
+      <char name="T" width="600"/>
+      <char name="Thorn" width="600"/>
+      <char name="U" width="600"/>
+      <char name="Uacute" width="600"/>
+      <char name="Ucircumflex" width="600"/>
+      <char name="Udieresis" width="600"/>
+      <char name="Ugrave" width="600"/>
+      <char name="V" width="600"/>
+      <char name="W" width="600"/>
+      <char name="X" width="600"/>
+      <char name="Y" width="600"/>
+      <char name="Yacute" width="600"/>
+      <char name="Ydieresis" width="600"/>
+      <char name="Z" width="600"/>
+      <char name="Zcaron" width="600"/>
+      <char name="a" width="600"/>
+      <char name="aacute" width="600"/>
+      <char name="acircumflex" width="600"/>
+      <char name="acute" width="600"/>
+      <char name="adieresis" width="600"/>
+      <char name="ae" width="600"/>
+      <char name="agrave" width="600"/>
+      <char name="ampersand" width="600"/>
+      <char name="aring" width="600"/>
+      <char name="arrowboth" width="600"/>
+      <char name="arrowdown" width="600"/>
+      <char name="arrowleft" width="600"/>
+      <char name="arrowright" width="600"/>
+      <char name="arrowup" width="600"/>
+      <char name="asciicircum" width="600"/>
+      <char name="asciitilde" width="600"/>
+      <char name="asterisk" width="600"/>
+      <char name="at" width="600"/>
+      <char name="atilde" width="600"/>
+      <char name="b" width="600"/>
+      <char name="backslash" width="600"/>
+      <char name="bar" width="600"/>
+      <char name="braceleft" width="600"/>
+      <char name="braceright" width="600"/>
+      <char name="bracketleft" width="600"/>
+      <char name="bracketright" width="600"/>
+      <char name="breve" width="600"/>
+      <char name="brokenbar" width="600"/>
+      <char name="bullet" width="600"/>
+      <char name="c" width="600"/>
+      <char name="caron" width="600"/>
+      <char name="ccedilla" width="600"/>
+      <char name="cedilla" width="600"/>
+      <char name="cent" width="600"/>
+      <char name="center" width="600"/>
+      <char name="circumflex" width="600"/>
+      <char name="colon" width="600"/>
+      <char name="comma" width="600"/>
+      <char name="copyright" width="600"/>
+      <char name="currency" width="600"/>
+      <char name="d" width="600"/>
+      <char name="dagger" width="600"/>
+      <char name="daggerdbl" width="600"/>
+      <char name="dectab" width="600"/>
+      <char name="degree" width="600"/>
+      <char name="dieresis" width="600"/>
+      <char name="divide" width="600"/>
+      <char name="dollar" width="600"/>
+      <char name="dotaccent" width="600"/>
+      <char name="dotlessi" width="600"/>
+      <char name="down" width="600"/>
+      <char name="e" width="600"/>
+      <char name="eacute" width="600"/>
+      <char name="ecircumflex" width="600"/>
+      <char name="edieresis" width="600"/>
+      <char name="egrave" width="600"/>
+      <char name="eight" width="600"/>
+      <char name="ellipsis" width="600"/>
+      <char name="emdash" width="600"/>
+      <char name="endash" width="600"/>
+      <char name="equal" width="600"/>
+      <char name="eth" width="600"/>
+      <char name="exclam" width="600"/>
+      <char name="exclamdown" width="600"/>
+      <char name="f" width="600"/>
+      <char name="fi" width="600"/>
+      <char name="five" width="600"/>
+      <char name="fl" width="600"/>
+      <char name="florin" width="600"/>
+      <char name="format" width="600"/>
+      <char name="four" width="600"/>
+      <char name="fraction" width="600"/>
+      <char name="g" width="600"/>
+      <char name="gcaron" width="600"/>
+      <char name="germandbls" width="600"/>
+      <char name="grave" width="600"/>
+      <char name="graybox" width="600"/>
+      <char name="greater" width="600"/>
+      <char name="guillemotleft" width="600"/>
+      <char name="guillemotright" width="600"/>
+      <char name="guilsinglleft" width="600"/>
+      <char name="guilsinglright" width="600"/>
+      <char name="h" width="600"/>
+      <char name="hungarumlaut" width="600"/>
+      <char name="hyphen" width="600"/>
+      <char name="i" width="600"/>
+      <char name="iacute" width="600"/>
+      <char name="icircumflex" width="600"/>
+      <char name="idieresis" width="600"/>
+      <char name="igrave" width="600"/>
+      <char name="ij" width="600"/>
+      <char name="indent" width="600"/>
+      <char name="j" width="600"/>
+      <char name="k" width="600"/>
+      <char name="l" width="600"/>
+      <char name="largebullet" width="600"/>
+      <char name="left" width="600"/>
+      <char name="less" width="600"/>
+      <char name="lira" width="600"/>
+      <char name="ll" width="600"/>
+      <char name="logicalnot" width="600"/>
+      <char name="lslash" width="600"/>
+      <char name="m" width="600"/>
+      <char name="macron" width="600"/>
+      <char name="merge" width="600"/>
+      <char name="minus" width="600"/>
+      <char name="mu" width="600"/>
+      <char name="multiply" width="600"/>
+      <char name="n" width="600"/>
+      <char name="nine" width="600"/>
+      <char name="notegraphic" width="600"/>
+      <char name="ntilde" width="600"/>
+      <char name="numbersign" width="600"/>
+      <char name="o" width="600"/>
+      <char name="oacute" width="600"/>
+      <char name="ocircumflex" width="600"/>
+      <char name="odieresis" width="600"/>
+      <char name="oe" width="600"/>
+      <char name="ogonek" width="600"/>
+      <char name="ograve" width="600"/>
+      <char name="one" width="600"/>
+      <char name="onehalf" width="600"/>
+      <char name="onequarter" width="600"/>
+      <char name="onesuperior" width="600"/>
+      <char name="ordfeminine" width="600"/>
+      <char name="ordmasculine" width="600"/>
+      <char name="oslash" width="600"/>
+      <char name="otilde" width="600"/>
+      <char name="overscore" width="600"/>
+      <char name="p" width="600"/>
+      <char name="paragraph" width="600"/>
+      <char name="parenleft" width="600"/>
+      <char name="parenright" width="600"/>
+      <char name="percent" width="600"/>
+      <char name="period" width="600"/>
+      <char name="periodcentered" width="600"/>
+      <char name="perthousand" width="600"/>
+      <char name="plus" width="600"/>
+      <char name="plusminus" width="600"/>
+      <char name="prescription" width="600"/>
+      <char name="q" width="600"/>
+      <char name="question" width="600"/>
+      <char name="questiondown" width="600"/>
+      <char name="quotedbl" width="600"/>
+      <char name="quotedblbase" width="600"/>
+      <char name="quotedblleft" width="600"/>
+      <char name="quotedblright" width="600"/>
+      <char name="quoteleft" width="600"/>
+      <char name="quoteright" width="600"/>
+      <char name="quotesinglbase" width="600"/>
+      <char name="quotesingle" width="600"/>
+      <char name="r" width="600"/>
+      <char name="registered" width="600"/>
+      <char name="return" width="600"/>
+      <char name="ring" width="600"/>
+      <char name="s" width="600"/>
+      <char name="scaron" width="600"/>
+      <char name="scedilla" width="600"/>
+      <char name="section" width="600"/>
+      <char name="semicolon" width="600"/>
+      <char name="seven" width="600"/>
+      <char name="six" width="600"/>
+      <char name="slash" width="600"/>
+      <char name="space" width="600"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="600"/>
+      <char name="square" width="600"/>
+      <char name="sterling" width="600"/>
+      <char name="stop" width="600"/>
+      <char name="t" width="600"/>
+      <char name="tab" width="600"/>
+      <char name="thorn" width="600"/>
+      <char name="three" width="600"/>
+      <char name="threequarters" width="600"/>
+      <char name="threesuperior" width="600"/>
+      <char name="tilde" width="600"/>
+      <char name="trademark" width="600"/>
+      <char name="two" width="600"/>
+      <char name="twosuperior" width="600"/>
+      <char name="u" width="600"/>
+      <char name="uacute" width="600"/>
+      <char name="ucircumflex" width="600"/>
+      <char name="udieresis" width="600"/>
+      <char name="ugrave" width="600"/>
+      <char name="underscore" width="600"/>
+      <char name="up" width="600"/>
+      <char name="v" width="600"/>
+      <char name="w" width="600"/>
+      <char name="x" width="600"/>
+      <char name="y" width="600"/>
+      <char name="yacute" width="600"/>
+      <char name="ydieresis" width="600"/>
+      <char name="yen" width="600"/>
+      <char name="z" width="600"/>
+      <char name="zcaron" width="600"/>
+      <char name="zero" width="600"/>
+   </widths>
+</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/fonts/CourierBoldOblique.xml b/src/codegen/fonts/CourierBoldOblique.xml
new file mode 100644 (file)
index 0000000..914fdab
--- /dev/null
@@ -0,0 +1,294 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Courier-BoldOblique</font-name>
+   <class-name>CourierBoldOblique</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>562</cap-height>
+   <x-height>439</x-height>
+   <ascender>626</ascender>
+   <descender>-142</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="600"/>
+      <char name="AE" width="600"/>
+      <char name="Aacute" width="600"/>
+      <char name="Acircumflex" width="600"/>
+      <char name="Adieresis" width="600"/>
+      <char name="Agrave" width="600"/>
+      <char name="Aring" width="600"/>
+      <char name="Atilde" width="600"/>
+      <char name="B" width="600"/>
+      <char name="C" width="600"/>
+      <char name="Ccedilla" width="600"/>
+      <char name="D" width="600"/>
+      <char name="E" width="600"/>
+      <char name="Eacute" width="600"/>
+      <char name="Ecircumflex" width="600"/>
+      <char name="Edieresis" width="600"/>
+      <char name="Egrave" width="600"/>
+      <char name="Eth" width="600"/>
+      <char name="Euro" width="600"/>
+      <char name="F" width="600"/>
+      <char name="G" width="600"/>
+      <char name="Gcaron" width="600"/>
+      <char name="H" width="600"/>
+      <char name="I" width="600"/>
+      <char name="IJ" width="600"/>
+      <char name="Iacute" width="600"/>
+      <char name="Icircumflex" width="600"/>
+      <char name="Idieresis" width="600"/>
+      <char name="Idot" width="600"/>
+      <char name="Igrave" width="600"/>
+      <char name="J" width="600"/>
+      <char name="K" width="600"/>
+      <char name="L" width="600"/>
+      <char name="LL" width="600"/>
+      <char name="Lslash" width="600"/>
+      <char name="M" width="600"/>
+      <char name="N" width="600"/>
+      <char name="Ntilde" width="600"/>
+      <char name="O" width="600"/>
+      <char name="OE" width="600"/>
+      <char name="Oacute" width="600"/>
+      <char name="Ocircumflex" width="600"/>
+      <char name="Odieresis" width="600"/>
+      <char name="Ograve" width="600"/>
+      <char name="Oslash" width="600"/>
+      <char name="Otilde" width="600"/>
+      <char name="P" width="600"/>
+      <char name="Q" width="600"/>
+      <char name="R" width="600"/>
+      <char name="S" width="600"/>
+      <char name="Scaron" width="600"/>
+      <char name="Scedilla" width="600"/>
+      <char name="T" width="600"/>
+      <char name="Thorn" width="600"/>
+      <char name="U" width="600"/>
+      <char name="Uacute" width="600"/>
+      <char name="Ucircumflex" width="600"/>
+      <char name="Udieresis" width="600"/>
+      <char name="Ugrave" width="600"/>
+      <char name="V" width="600"/>
+      <char name="W" width="600"/>
+      <char name="X" width="600"/>
+      <char name="Y" width="600"/>
+      <char name="Yacute" width="600"/>
+      <char name="Ydieresis" width="600"/>
+      <char name="Z" width="600"/>
+      <char name="Zcaron" width="600"/>
+      <char name="a" width="600"/>
+      <char name="aacute" width="600"/>
+      <char name="acircumflex" width="600"/>
+      <char name="acute" width="600"/>
+      <char name="adieresis" width="600"/>
+      <char name="ae" width="600"/>
+      <char name="agrave" width="600"/>
+      <char name="ampersand" width="600"/>
+      <char name="aring" width="600"/>
+      <char name="arrowboth" width="600"/>
+      <char name="arrowdown" width="600"/>
+      <char name="arrowleft" width="600"/>
+      <char name="arrowright" width="600"/>
+      <char name="arrowup" width="600"/>
+      <char name="asciicircum" width="600"/>
+      <char name="asciitilde" width="600"/>
+      <char name="asterisk" width="600"/>
+      <char name="at" width="600"/>
+      <char name="atilde" width="600"/>
+      <char name="b" width="600"/>
+      <char name="backslash" width="600"/>
+      <char name="bar" width="600"/>
+      <char name="braceleft" width="600"/>
+      <char name="braceright" width="600"/>
+      <char name="bracketleft" width="600"/>
+      <char name="bracketright" width="600"/>
+      <char name="breve" width="600"/>
+      <char name="brokenbar" width="600"/>
+      <char name="bullet" width="600"/>
+      <char name="c" width="600"/>
+      <char name="caron" width="600"/>
+      <char name="ccedilla" width="600"/>
+      <char name="cedilla" width="600"/>
+      <char name="cent" width="600"/>
+      <char name="center" width="600"/>
+      <char name="circumflex" width="600"/>
+      <char name="colon" width="600"/>
+      <char name="comma" width="600"/>
+      <char name="copyright" width="600"/>
+      <char name="currency" width="600"/>
+      <char name="d" width="600"/>
+      <char name="dagger" width="600"/>
+      <char name="daggerdbl" width="600"/>
+      <char name="dectab" width="600"/>
+      <char name="degree" width="600"/>
+      <char name="dieresis" width="600"/>
+      <char name="divide" width="600"/>
+      <char name="dollar" width="600"/>
+      <char name="dotaccent" width="600"/>
+      <char name="dotlessi" width="600"/>
+      <char name="down" width="600"/>
+      <char name="e" width="600"/>
+      <char name="eacute" width="600"/>
+      <char name="ecircumflex" width="600"/>
+      <char name="edieresis" width="600"/>
+      <char name="egrave" width="600"/>
+      <char name="eight" width="600"/>
+      <char name="ellipsis" width="600"/>
+      <char name="emdash" width="600"/>
+      <char name="endash" width="600"/>
+      <char name="equal" width="600"/>
+      <char name="eth" width="600"/>
+      <char name="exclam" width="600"/>
+      <char name="exclamdown" width="600"/>
+      <char name="f" width="600"/>
+      <char name="fi" width="600"/>
+      <char name="five" width="600"/>
+      <char name="fl" width="600"/>
+      <char name="florin" width="600"/>
+      <char name="format" width="600"/>
+      <char name="four" width="600"/>
+      <char name="fraction" width="600"/>
+      <char name="g" width="600"/>
+      <char name="gcaron" width="600"/>
+      <char name="germandbls" width="600"/>
+      <char name="grave" width="600"/>
+      <char name="graybox" width="600"/>
+      <char name="greater" width="600"/>
+      <char name="guillemotleft" width="600"/>
+      <char name="guillemotright" width="600"/>
+      <char name="guilsinglleft" width="600"/>
+      <char name="guilsinglright" width="600"/>
+      <char name="h" width="600"/>
+      <char name="hungarumlaut" width="600"/>
+      <char name="hyphen" width="600"/>
+      <char name="i" width="600"/>
+      <char name="iacute" width="600"/>
+      <char name="icircumflex" width="600"/>
+      <char name="idieresis" width="600"/>
+      <char name="igrave" width="600"/>
+      <char name="ij" width="600"/>
+      <char name="indent" width="600"/>
+      <char name="j" width="600"/>
+      <char name="k" width="600"/>
+      <char name="l" width="600"/>
+      <char name="largebullet" width="600"/>
+      <char name="left" width="600"/>
+      <char name="less" width="600"/>
+      <char name="lira" width="600"/>
+      <char name="ll" width="600"/>
+      <char name="logicalnot" width="600"/>
+      <char name="lslash" width="600"/>
+      <char name="m" width="600"/>
+      <char name="macron" width="600"/>
+      <char name="merge" width="600"/>
+      <char name="minus" width="600"/>
+      <char name="mu" width="600"/>
+      <char name="multiply" width="600"/>
+      <char name="n" width="600"/>
+      <char name="nine" width="600"/>
+      <char name="notegraphic" width="600"/>
+      <char name="ntilde" width="600"/>
+      <char name="numbersign" width="600"/>
+      <char name="o" width="600"/>
+      <char name="oacute" width="600"/>
+      <char name="ocircumflex" width="600"/>
+      <char name="odieresis" width="600"/>
+      <char name="oe" width="600"/>
+      <char name="ogonek" width="600"/>
+      <char name="ograve" width="600"/>
+      <char name="one" width="600"/>
+      <char name="onehalf" width="600"/>
+      <char name="onequarter" width="600"/>
+      <char name="onesuperior" width="600"/>
+      <char name="ordfeminine" width="600"/>
+      <char name="ordmasculine" width="600"/>
+      <char name="oslash" width="600"/>
+      <char name="otilde" width="600"/>
+      <char name="overscore" width="600"/>
+      <char name="p" width="600"/>
+      <char name="paragraph" width="600"/>
+      <char name="parenleft" width="600"/>
+      <char name="parenright" width="600"/>
+      <char name="percent" width="600"/>
+      <char name="period" width="600"/>
+      <char name="periodcentered" width="600"/>
+      <char name="perthousand" width="600"/>
+      <char name="plus" width="600"/>
+      <char name="plusminus" width="600"/>
+      <char name="prescription" width="600"/>
+      <char name="q" width="600"/>
+      <char name="question" width="600"/>
+      <char name="questiondown" width="600"/>
+      <char name="quotedbl" width="600"/>
+      <char name="quotedblbase" width="600"/>
+      <char name="quotedblleft" width="600"/>
+      <char name="quotedblright" width="600"/>
+      <char name="quoteleft" width="600"/>
+      <char name="quoteright" width="600"/>
+      <char name="quotesinglbase" width="600"/>
+      <char name="quotesingle" width="600"/>
+      <char name="r" width="600"/>
+      <char name="registered" width="600"/>
+      <char name="return" width="600"/>
+      <char name="ring" width="600"/>
+      <char name="s" width="600"/>
+      <char name="scaron" width="600"/>
+      <char name="scedilla" width="600"/>
+      <char name="section" width="600"/>
+      <char name="semicolon" width="600"/>
+      <char name="seven" width="600"/>
+      <char name="six" width="600"/>
+      <char name="slash" width="600"/>
+      <char name="space" width="600"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="600"/>
+      <char name="square" width="600"/>
+      <char name="sterling" width="600"/>
+      <char name="stop" width="600"/>
+      <char name="t" width="600"/>
+      <char name="tab" width="600"/>
+      <char name="thorn" width="600"/>
+      <char name="three" width="600"/>
+      <char name="threequarters" width="600"/>
+      <char name="threesuperior" width="600"/>
+      <char name="tilde" width="600"/>
+      <char name="trademark" width="600"/>
+      <char name="two" width="600"/>
+      <char name="twosuperior" width="600"/>
+      <char name="u" width="600"/>
+      <char name="uacute" width="600"/>
+      <char name="ucircumflex" width="600"/>
+      <char name="udieresis" width="600"/>
+      <char name="ugrave" width="600"/>
+      <char name="underscore" width="600"/>
+      <char name="up" width="600"/>
+      <char name="v" width="600"/>
+      <char name="w" width="600"/>
+      <char name="x" width="600"/>
+      <char name="y" width="600"/>
+      <char name="yacute" width="600"/>
+      <char name="ydieresis" width="600"/>
+      <char name="yen" width="600"/>
+      <char name="z" width="600"/>
+      <char name="zcaron" width="600"/>
+      <char name="zero" width="600"/>
+   </widths>
+</font-metrics>
diff --git a/src/codegen/fonts/CourierOblique.xml b/src/codegen/fonts/CourierOblique.xml
new file mode 100644 (file)
index 0000000..3b043c1
--- /dev/null
@@ -0,0 +1,294 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Courier-Oblique</font-name>
+   <class-name>CourierOblique</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>562</cap-height>
+   <x-height>426</x-height>
+   <ascender>629</ascender>
+   <descender>-157</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="600"/>
+      <char name="AE" width="600"/>
+      <char name="Aacute" width="600"/>
+      <char name="Acircumflex" width="600"/>
+      <char name="Adieresis" width="600"/>
+      <char name="Agrave" width="600"/>
+      <char name="Aring" width="600"/>
+      <char name="Atilde" width="600"/>
+      <char name="B" width="600"/>
+      <char name="C" width="600"/>
+      <char name="Ccedilla" width="600"/>
+      <char name="D" width="600"/>
+      <char name="E" width="600"/>
+      <char name="Eacute" width="600"/>
+      <char name="Ecircumflex" width="600"/>
+      <char name="Edieresis" width="600"/>
+      <char name="Egrave" width="600"/>
+      <char name="Eth" width="600"/>
+      <char name="Euro" width="600"/>
+      <char name="F" width="600"/>
+      <char name="G" width="600"/>
+      <char name="Gcaron" width="600"/>
+      <char name="H" width="600"/>
+      <char name="I" width="600"/>
+      <char name="IJ" width="600"/>
+      <char name="Iacute" width="600"/>
+      <char name="Icircumflex" width="600"/>
+      <char name="Idieresis" width="600"/>
+      <char name="Idot" width="600"/>
+      <char name="Igrave" width="600"/>
+      <char name="J" width="600"/>
+      <char name="K" width="600"/>
+      <char name="L" width="600"/>
+      <char name="LL" width="600"/>
+      <char name="Lslash" width="600"/>
+      <char name="M" width="600"/>
+      <char name="N" width="600"/>
+      <char name="Ntilde" width="600"/>
+      <char name="O" width="600"/>
+      <char name="OE" width="600"/>
+      <char name="Oacute" width="600"/>
+      <char name="Ocircumflex" width="600"/>
+      <char name="Odieresis" width="600"/>
+      <char name="Ograve" width="600"/>
+      <char name="Oslash" width="600"/>
+      <char name="Otilde" width="600"/>
+      <char name="P" width="600"/>
+      <char name="Q" width="600"/>
+      <char name="R" width="600"/>
+      <char name="S" width="600"/>
+      <char name="Scaron" width="600"/>
+      <char name="Scedilla" width="600"/>
+      <char name="T" width="600"/>
+      <char name="Thorn" width="600"/>
+      <char name="U" width="600"/>
+      <char name="Uacute" width="600"/>
+      <char name="Ucircumflex" width="600"/>
+      <char name="Udieresis" width="600"/>
+      <char name="Ugrave" width="600"/>
+      <char name="V" width="600"/>
+      <char name="W" width="600"/>
+      <char name="X" width="600"/>
+      <char name="Y" width="600"/>
+      <char name="Yacute" width="600"/>
+      <char name="Ydieresis" width="600"/>
+      <char name="Z" width="600"/>
+      <char name="Zcaron" width="600"/>
+      <char name="a" width="600"/>
+      <char name="aacute" width="600"/>
+      <char name="acircumflex" width="600"/>
+      <char name="acute" width="600"/>
+      <char name="adieresis" width="600"/>
+      <char name="ae" width="600"/>
+      <char name="agrave" width="600"/>
+      <char name="ampersand" width="600"/>
+      <char name="aring" width="600"/>
+      <char name="arrowboth" width="600"/>
+      <char name="arrowdown" width="600"/>
+      <char name="arrowleft" width="600"/>
+      <char name="arrowright" width="600"/>
+      <char name="arrowup" width="600"/>
+      <char name="asciicircum" width="600"/>
+      <char name="asciitilde" width="600"/>
+      <char name="asterisk" width="600"/>
+      <char name="at" width="600"/>
+      <char name="atilde" width="600"/>
+      <char name="b" width="600"/>
+      <char name="backslash" width="600"/>
+      <char name="bar" width="600"/>
+      <char name="braceleft" width="600"/>
+      <char name="braceright" width="600"/>
+      <char name="bracketleft" width="600"/>
+      <char name="bracketright" width="600"/>
+      <char name="breve" width="600"/>
+      <char name="brokenbar" width="600"/>
+      <char name="bullet" width="600"/>
+      <char name="c" width="600"/>
+      <char name="caron" width="600"/>
+      <char name="ccedilla" width="600"/>
+      <char name="cedilla" width="600"/>
+      <char name="cent" width="600"/>
+      <char name="center" width="600"/>
+      <char name="circumflex" width="600"/>
+      <char name="colon" width="600"/>
+      <char name="comma" width="600"/>
+      <char name="copyright" width="600"/>
+      <char name="currency" width="600"/>
+      <char name="d" width="600"/>
+      <char name="dagger" width="600"/>
+      <char name="daggerdbl" width="600"/>
+      <char name="dectab" width="600"/>
+      <char name="degree" width="600"/>
+      <char name="dieresis" width="600"/>
+      <char name="divide" width="600"/>
+      <char name="dollar" width="600"/>
+      <char name="dotaccent" width="600"/>
+      <char name="dotlessi" width="600"/>
+      <char name="down" width="600"/>
+      <char name="e" width="600"/>
+      <char name="eacute" width="600"/>
+      <char name="ecircumflex" width="600"/>
+      <char name="edieresis" width="600"/>
+      <char name="egrave" width="600"/>
+      <char name="eight" width="600"/>
+      <char name="ellipsis" width="600"/>
+      <char name="emdash" width="600"/>
+      <char name="endash" width="600"/>
+      <char name="equal" width="600"/>
+      <char name="eth" width="600"/>
+      <char name="exclam" width="600"/>
+      <char name="exclamdown" width="600"/>
+      <char name="f" width="600"/>
+      <char name="fi" width="600"/>
+      <char name="five" width="600"/>
+      <char name="fl" width="600"/>
+      <char name="florin" width="600"/>
+      <char name="format" width="600"/>
+      <char name="four" width="600"/>
+      <char name="fraction" width="600"/>
+      <char name="g" width="600"/>
+      <char name="gcaron" width="600"/>
+      <char name="germandbls" width="600"/>
+      <char name="grave" width="600"/>
+      <char name="graybox" width="600"/>
+      <char name="greater" width="600"/>
+      <char name="guillemotleft" width="600"/>
+      <char name="guillemotright" width="600"/>
+      <char name="guilsinglleft" width="600"/>
+      <char name="guilsinglright" width="600"/>
+      <char name="h" width="600"/>
+      <char name="hungarumlaut" width="600"/>
+      <char name="hyphen" width="600"/>
+      <char name="i" width="600"/>
+      <char name="iacute" width="600"/>
+      <char name="icircumflex" width="600"/>
+      <char name="idieresis" width="600"/>
+      <char name="igrave" width="600"/>
+      <char name="ij" width="600"/>
+      <char name="indent" width="600"/>
+      <char name="j" width="600"/>
+      <char name="k" width="600"/>
+      <char name="l" width="600"/>
+      <char name="largebullet" width="600"/>
+      <char name="left" width="600"/>
+      <char name="less" width="600"/>
+      <char name="lira" width="600"/>
+      <char name="ll" width="600"/>
+      <char name="logicalnot" width="600"/>
+      <char name="lslash" width="600"/>
+      <char name="m" width="600"/>
+      <char name="macron" width="600"/>
+      <char name="merge" width="600"/>
+      <char name="minus" width="600"/>
+      <char name="mu" width="600"/>
+      <char name="multiply" width="600"/>
+      <char name="n" width="600"/>
+      <char name="nine" width="600"/>
+      <char name="notegraphic" width="600"/>
+      <char name="ntilde" width="600"/>
+      <char name="numbersign" width="600"/>
+      <char name="o" width="600"/>
+      <char name="oacute" width="600"/>
+      <char name="ocircumflex" width="600"/>
+      <char name="odieresis" width="600"/>
+      <char name="oe" width="600"/>
+      <char name="ogonek" width="600"/>
+      <char name="ograve" width="600"/>
+      <char name="one" width="600"/>
+      <char name="onehalf" width="600"/>
+      <char name="onequarter" width="600"/>
+      <char name="onesuperior" width="600"/>
+      <char name="ordfeminine" width="600"/>
+      <char name="ordmasculine" width="600"/>
+      <char name="oslash" width="600"/>
+      <char name="otilde" width="600"/>
+      <char name="overscore" width="600"/>
+      <char name="p" width="600"/>
+      <char name="paragraph" width="600"/>
+      <char name="parenleft" width="600"/>
+      <char name="parenright" width="600"/>
+      <char name="percent" width="600"/>
+      <char name="period" width="600"/>
+      <char name="periodcentered" width="600"/>
+      <char name="perthousand" width="600"/>
+      <char name="plus" width="600"/>
+      <char name="plusminus" width="600"/>
+      <char name="prescription" width="600"/>
+      <char name="q" width="600"/>
+      <char name="question" width="600"/>
+      <char name="questiondown" width="600"/>
+      <char name="quotedbl" width="600"/>
+      <char name="quotedblbase" width="600"/>
+      <char name="quotedblleft" width="600"/>
+      <char name="quotedblright" width="600"/>
+      <char name="quoteleft" width="600"/>
+      <char name="quoteright" width="600"/>
+      <char name="quotesinglbase" width="600"/>
+      <char name="quotesingle" width="600"/>
+      <char name="r" width="600"/>
+      <char name="registered" width="600"/>
+      <char name="return" width="600"/>
+      <char name="ring" width="600"/>
+      <char name="s" width="600"/>
+      <char name="scaron" width="600"/>
+      <char name="scedilla" width="600"/>
+      <char name="section" width="600"/>
+      <char name="semicolon" width="600"/>
+      <char name="seven" width="600"/>
+      <char name="six" width="600"/>
+      <char name="slash" width="600"/>
+      <char name="space" width="600"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="600"/>
+      <char name="square" width="600"/>
+      <char name="sterling" width="600"/>
+      <char name="stop" width="600"/>
+      <char name="t" width="600"/>
+      <char name="tab" width="600"/>
+      <char name="thorn" width="600"/>
+      <char name="three" width="600"/>
+      <char name="threequarters" width="600"/>
+      <char name="threesuperior" width="600"/>
+      <char name="tilde" width="600"/>
+      <char name="trademark" width="600"/>
+      <char name="two" width="600"/>
+      <char name="twosuperior" width="600"/>
+      <char name="u" width="600"/>
+      <char name="uacute" width="600"/>
+      <char name="ucircumflex" width="600"/>
+      <char name="udieresis" width="600"/>
+      <char name="ugrave" width="600"/>
+      <char name="underscore" width="600"/>
+      <char name="up" width="600"/>
+      <char name="v" width="600"/>
+      <char name="w" width="600"/>
+      <char name="x" width="600"/>
+      <char name="y" width="600"/>
+      <char name="yacute" width="600"/>
+      <char name="ydieresis" width="600"/>
+      <char name="yen" width="600"/>
+      <char name="z" width="600"/>
+      <char name="zcaron" width="600"/>
+      <char name="zero" width="600"/>
+   </widths>
+</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/fonts/Helvetica.xml b/src/codegen/fonts/Helvetica.xml
new file mode 100644 (file)
index 0000000..d63eb5a
--- /dev/null
@@ -0,0 +1,603 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Helvetica</font-name>
+   <class-name>Helvetica</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>718</cap-height>
+   <x-height>523</x-height>
+   <ascender>718</ascender>
+   <descender>-207</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="667"/>
+      <char name="AE" width="1000"/>
+      <char name="Aacute" width="667"/>
+      <char name="Acircumflex" width="667"/>
+      <char name="Adieresis" width="667"/>
+      <char name="Agrave" width="667"/>
+      <char name="Aring" width="667"/>
+      <char name="Atilde" width="667"/>
+      <char name="B" width="667"/>
+      <char name="C" width="722"/>
+      <char name="Ccedilla" width="722"/>
+      <char name="D" width="722"/>
+      <char name="E" width="667"/>
+      <char name="Eacute" width="667"/>
+      <char name="Ecircumflex" width="667"/>
+      <char name="Edieresis" width="667"/>
+      <char name="Egrave" width="667"/>
+      <char name="Eth" width="722"/>
+      <char name="Euro" width="556"/>
+      <char name="F" width="611"/>
+      <char name="G" width="778"/>
+      <char name="H" width="722"/>
+      <char name="I" width="278"/>
+      <char name="Iacute" width="278"/>
+      <char name="Icircumflex" width="278"/>
+      <char name="Idieresis" width="278"/>
+      <char name="Igrave" width="278"/>
+      <char name="J" width="500"/>
+      <char name="K" width="667"/>
+      <char name="L" width="556"/>
+      <char name="Lslash" width="556"/>
+      <char name="M" width="833"/>
+      <char name="N" width="722"/>
+      <char name="Ntilde" width="722"/>
+      <char name="O" width="778"/>
+      <char name="OE" width="1000"/>
+      <char name="Oacute" width="778"/>
+      <char name="Ocircumflex" width="778"/>
+      <char name="Odieresis" width="778"/>
+      <char name="Ograve" width="778"/>
+      <char name="Oslash" width="778"/>
+      <char name="Otilde" width="778"/>
+      <char name="P" width="667"/>
+      <char name="Q" width="778"/>
+      <char name="R" width="722"/>
+      <char name="S" width="667"/>
+      <char name="Scaron" width="667"/>
+      <char name="T" width="611"/>
+      <char name="Thorn" width="667"/>
+      <char name="U" width="722"/>
+      <char name="Uacute" width="722"/>
+      <char name="Ucircumflex" width="722"/>
+      <char name="Udieresis" width="722"/>
+      <char name="Ugrave" width="722"/>
+      <char name="V" width="667"/>
+      <char name="W" width="944"/>
+      <char name="X" width="667"/>
+      <char name="Y" width="667"/>
+      <char name="Yacute" width="667"/>
+      <char name="Ydieresis" width="667"/>
+      <char name="Z" width="611"/>
+      <char name="Zcaron" width="611"/>
+      <char name="a" width="556"/>
+      <char name="aacute" width="556"/>
+      <char name="acircumflex" width="556"/>
+      <char name="acute" width="333"/>
+      <char name="adieresis" width="556"/>
+      <char name="ae" width="889"/>
+      <char name="agrave" width="556"/>
+      <char name="ampersand" width="667"/>
+      <char name="aring" width="556"/>
+      <char name="asciicircum" width="469"/>
+      <char name="asciitilde" width="584"/>
+      <char name="asterisk" width="389"/>
+      <char name="at" width="1015"/>
+      <char name="atilde" width="556"/>
+      <char name="b" width="556"/>
+      <char name="backslash" width="278"/>
+      <char name="bar" width="260"/>
+      <char name="braceleft" width="334"/>
+      <char name="braceright" width="334"/>
+      <char name="bracketleft" width="278"/>
+      <char name="bracketright" width="278"/>
+      <char name="breve" width="333"/>
+      <char name="brokenbar" width="260"/>
+      <char name="bullet" width="350"/>
+      <char name="c" width="500"/>
+      <char name="caron" width="333"/>
+      <char name="ccedilla" width="500"/>
+      <char name="cedilla" width="333"/>
+      <char name="cent" width="556"/>
+      <char name="circumflex" width="333"/>
+      <char name="colon" width="278"/>
+      <char name="comma" width="278"/>
+      <char name="copyright" width="737"/>
+      <char name="currency" width="556"/>
+      <char name="d" width="556"/>
+      <char name="dagger" width="556"/>
+      <char name="daggerdbl" width="556"/>
+      <char name="degree" width="400"/>
+      <char name="dieresis" width="333"/>
+      <char name="divide" width="584"/>
+      <char name="dollar" width="556"/>
+      <char name="dotaccent" width="333"/>
+      <char name="dotlessi" width="278"/>
+      <char name="e" width="556"/>
+      <char name="eacute" width="556"/>
+      <char name="ecircumflex" width="556"/>
+      <char name="edieresis" width="556"/>
+      <char name="egrave" width="556"/>
+      <char name="eight" width="556"/>
+      <char name="ellipsis" width="1000"/>
+      <char name="emdash" width="1000"/>
+      <char name="endash" width="556"/>
+      <char name="equal" width="584"/>
+      <char name="eth" width="556"/>
+      <char name="exclam" width="278"/>
+      <char name="exclamdown" width="333"/>
+      <char name="f" width="278"/>
+      <char name="fi" width="500"/>
+      <char name="five" width="556"/>
+      <char name="fl" width="500"/>
+      <char name="florin" width="556"/>
+      <char name="four" width="556"/>
+      <char name="fraction" width="167"/>
+      <char name="g" width="556"/>
+      <char name="germandbls" width="611"/>
+      <char name="grave" width="333"/>
+      <char name="greater" width="584"/>
+      <char name="guillemotleft" width="556"/>
+      <char name="guillemotright" width="556"/>
+      <char name="guilsinglleft" width="333"/>
+      <char name="guilsinglright" width="333"/>
+      <char name="h" width="556"/>
+      <char name="hungarumlaut" width="333"/>
+      <char name="hyphen" width="333"/>
+      <char name="i" width="222"/>
+      <char name="iacute" width="278"/>
+      <char name="icircumflex" width="278"/>
+      <char name="idieresis" width="278"/>
+      <char name="igrave" width="278"/>
+      <char name="j" width="222"/>
+      <char name="k" width="500"/>
+      <char name="l" width="222"/>
+      <char name="less" width="584"/>
+      <char name="logicalnot" width="584"/>
+      <char name="lslash" width="222"/>
+      <char name="m" width="833"/>
+      <char name="macron" width="333"/>
+      <char name="minus" width="324"/>
+      <char name="mu" width="556"/>
+      <char name="multiply" width="584"/>
+      <char name="n" width="556"/>
+      <char name="nine" width="556"/>
+      <char name="ntilde" width="556"/>
+      <char name="numbersign" width="556"/>
+      <char name="o" width="556"/>
+      <char name="oacute" width="556"/>
+      <char name="ocircumflex" width="556"/>
+      <char name="odieresis" width="556"/>
+      <char name="oe" width="944"/>
+      <char name="ogonek" width="333"/>
+      <char name="ograve" width="556"/>
+      <char name="one" width="556"/>
+      <char name="onehalf" width="834"/>
+      <char name="onequarter" width="834"/>
+      <char name="onesuperior" width="333"/>
+      <char name="ordfeminine" width="370"/>
+      <char name="ordmasculine" width="365"/>
+      <char name="oslash" width="611"/>
+      <char name="otilde" width="556"/>
+      <char name="p" width="556"/>
+      <char name="paragraph" width="537"/>
+      <char name="parenleft" width="333"/>
+      <char name="parenright" width="333"/>
+      <char name="percent" width="889"/>
+      <char name="period" width="278"/>
+      <char name="periodcentered" width="278"/>
+      <char name="perthousand" width="1000"/>
+      <char name="plus" width="584"/>
+      <char name="plusminus" width="584"/>
+      <char name="q" width="556"/>
+      <char name="question" width="556"/>
+      <char name="questiondown" width="611"/>
+      <char name="quotedbl" width="355"/>
+      <char name="quotedblbase" width="333"/>
+      <char name="quotedblleft" width="333"/>
+      <char name="quotedblright" width="333"/>
+      <char name="quoteleft" width="222"/>
+      <char name="quoteright" width="222"/>
+      <char name="quotesinglbase" width="222"/>
+      <char name="quotesingle" width="191"/>
+      <char name="r" width="333"/>
+      <char name="registered" width="737"/>
+      <char name="ring" width="333"/>
+      <char name="s" width="500"/>
+      <char name="scaron" width="500"/>
+      <char name="section" width="556"/>
+      <char name="semicolon" width="278"/>
+      <char name="seven" width="556"/>
+      <char name="six" width="556"/>
+      <char name="slash" width="278"/>
+      <char name="space" width="278"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="278"/>
+      <char name="sterling" width="556"/>
+      <char name="t" width="278"/>
+      <char name="thorn" width="556"/>
+      <char name="three" width="556"/>
+      <char name="threequarters" width="834"/>
+      <char name="threesuperior" width="333"/>
+      <char name="tilde" width="333"/>
+      <char name="trademark" width="1000"/>
+      <char name="two" width="556"/>
+      <char name="twosuperior" width="333"/>
+      <char name="u" width="556"/>
+      <char name="uacute" width="556"/>
+      <char name="ucircumflex" width="556"/>
+      <char name="udieresis" width="556"/>
+      <char name="ugrave" width="556"/>
+      <char name="underscore" width="556"/>
+      <char name="v" width="500"/>
+      <char name="w" width="722"/>
+      <char name="x" width="500"/>
+      <char name="y" width="500"/>
+      <char name="yacute" width="500"/>
+      <char name="ydieresis" width="500"/>
+      <char name="yen" width="556"/>
+      <char name="z" width="500"/>
+      <char name="zcaron" width="500"/>
+      <char name="zero" width="556"/>
+   </widths>
+  <kerning kpx1="107">
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="-20" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="79">
+    <pair kern="-20" kpx2="65"/>
+    <pair kern="-30" kpx2="87"/>
+    <pair kern="-70" kpx2="89"/>
+    <pair kern="-40" kpx2="84"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-50" kpx2="86"/>
+    <pair kern="-60" kpx2="88"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="104">
+    <pair kern="-30" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="87">
+    <pair kern="-30" kpx2="111"/>
+    <pair kern="-40" kpx2="45"/>
+    <pair kern="-20" kpx2="79"/>
+    <pair kern="-40" kpx2="97"/>
+    <pair kern="-50" kpx2="65"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-30" kpx2="101"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="99">
+    <pair kern="-20" kpx2="107"/>
+    <pair kern="-15" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="112">
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-35" kpx2="46"/>
+    <pair kern="-35" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="80">
+    <pair kern="-50" kpx2="111"/>
+    <pair kern="-40" kpx2="97"/>
+    <pair kern="-120" kpx2="65"/>
+    <pair kern="-180" kpx2="46"/>
+    <pair kern="-50" kpx2="101"/>
+    <pair kern="-180" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="86">
+    <pair kern="-80" kpx2="111"/>
+    <pair kern="-80" kpx2="45"/>
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-40" kpx2="58"/>
+    <pair kern="-70" kpx2="97"/>
+    <pair kern="-80" kpx2="65"/>
+    <pair kern="-70" kpx2="117"/>
+    <pair kern="-125" kpx2="46"/>
+    <pair kern="-40" kpx2="71"/>
+    <pair kern="-80" kpx2="101"/>
+    <pair kern="-40" kpx2="59"/>
+    <pair kern="-125" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="118">
+    <pair kern="-25" kpx2="111"/>
+    <pair kern="-25" kpx2="97"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-25" kpx2="101"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="59">
+    <pair kern="-50" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="32">
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-30" kpx2="147"/>
+    <pair kern="-90" kpx2="89"/>
+    <pair kern="-50" kpx2="84"/>
+    <pair kern="-60" kpx2="145"/>
+    <pair kern="-50" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="97">
+    <pair kern="-20" kpx2="119"/>
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="65">
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-40" kpx2="119"/>
+    <pair kern="-50" kpx2="87"/>
+    <pair kern="-30" kpx2="67"/>
+    <pair kern="-30" kpx2="81"/>
+    <pair kern="-30" kpx2="71"/>
+    <pair kern="-70" kpx2="86"/>
+    <pair kern="-40" kpx2="118"/>
+    <pair kern="-50" kpx2="85"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-100" kpx2="89"/>
+    <pair kern="-120" kpx2="84"/>
+    <pair kern="-40" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="70">
+    <pair kern="-30" kpx2="111"/>
+    <pair kern="-45" kpx2="114"/>
+    <pair kern="-50" kpx2="97"/>
+    <pair kern="-80" kpx2="65"/>
+    <pair kern="-150" kpx2="46"/>
+    <pair kern="-30" kpx2="101"/>
+    <pair kern="-150" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="85">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="115">
+    <pair kern="-30" kpx2="119"/>
+    <pair kern="-15" kpx2="46"/>
+    <pair kern="-15" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="122">
+    <pair kern="-15" kpx2="111"/>
+    <pair kern="-15" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="83">
+    <pair kern="-20" kpx2="46"/>
+    <pair kern="-20" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="111">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-30" kpx2="120"/>
+    <pair kern="-15" kpx2="118"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="68">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-90" kpx2="89"/>
+    <pair kern="-70" kpx2="46"/>
+    <pair kern="-70" kpx2="86"/>
+    <pair kern="-70" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="146">
+    <pair kern="-50" kpx2="100"/>
+    <pair kern="-70" kpx2="32"/>
+    <pair kern="-57" kpx2="146"/>
+    <pair kern="-50" kpx2="114"/>
+    <pair kern="-50" kpx2="115"/>
+  </kerning>
+  <kerning kpx1="82">
+    <pair kern="-20" kpx2="79"/>
+    <pair kern="-30" kpx2="87"/>
+    <pair kern="-40" kpx2="85"/>
+    <pair kern="-50" kpx2="89"/>
+    <pair kern="-30" kpx2="84"/>
+    <pair kern="-50" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="75">
+    <pair kern="-40" kpx2="111"/>
+    <pair kern="-50" kpx2="79"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-50" kpx2="121"/>
+    <pair kern="-40" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="119">
+    <pair kern="-10" kpx2="111"/>
+    <pair kern="-15" kpx2="97"/>
+    <pair kern="-60" kpx2="46"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-60" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="58">
+    <pair kern="-50" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="114">
+    <pair kern="15" kpx2="107"/>
+    <pair kern="30" kpx2="58"/>
+    <pair kern="30" kpx2="112"/>
+    <pair kern="15" kpx2="108"/>
+    <pair kern="30" kpx2="118"/>
+    <pair kern="-50" kpx2="44"/>
+    <pair kern="30" kpx2="59"/>
+    <pair kern="15" kpx2="105"/>
+    <pair kern="25" kpx2="109"/>
+    <pair kern="-10" kpx2="97"/>
+    <pair kern="15" kpx2="117"/>
+    <pair kern="40" kpx2="116"/>
+    <pair kern="30" kpx2="121"/>
+    <pair kern="-50" kpx2="46"/>
+    <pair kern="25" kpx2="110"/>
+  </kerning>
+  <kerning kpx1="67">
+    <pair kern="-30" kpx2="46"/>
+    <pair kern="-30" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="145">
+    <pair kern="-57" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="103">
+    <pair kern="-10" kpx2="114"/>
+  </kerning>
+  <kerning kpx1="66">
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="-20" kpx2="46"/>
+    <pair kern="-20" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="81">
+    <pair kern="-10" kpx2="85"/>
+  </kerning>
+  <kerning kpx1="76">
+    <pair kern="-140" kpx2="148"/>
+    <pair kern="-160" kpx2="146"/>
+    <pair kern="-70" kpx2="87"/>
+    <pair kern="-140" kpx2="89"/>
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-110" kpx2="84"/>
+    <pair kern="-110" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="98">
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-20" kpx2="108"/>
+    <pair kern="-10" kpx2="98"/>
+    <pair kern="-20" kpx2="118"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="44">
+    <pair kern="-100" kpx2="148"/>
+    <pair kern="-100" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="148">
+    <pair kern="-40" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="109">
+    <pair kern="-10" kpx2="117"/>
+    <pair kern="-15" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="248">
+    <pair kern="-55" kpx2="107"/>
+    <pair kern="-55" kpx2="104"/>
+    <pair kern="-55" kpx2="99"/>
+    <pair kern="-55" kpx2="112"/>
+    <pair kern="-55" kpx2="113"/>
+    <pair kern="-70" kpx2="118"/>
+    <pair kern="-55" kpx2="105"/>
+    <pair kern="-55" kpx2="97"/>
+    <pair kern="-55" kpx2="117"/>
+    <pair kern="-55" kpx2="116"/>
+    <pair kern="-55" kpx2="106"/>
+    <pair kern="-55" kpx2="115"/>
+    <pair kern="-55" kpx2="122"/>
+    <pair kern="-55" kpx2="100"/>
+    <pair kern="-55" kpx2="111"/>
+    <pair kern="-70" kpx2="119"/>
+    <pair kern="-55" kpx2="114"/>
+    <pair kern="-55" kpx2="103"/>
+    <pair kern="-55" kpx2="108"/>
+    <pair kern="-55" kpx2="98"/>
+    <pair kern="-95" kpx2="44"/>
+    <pair kern="-55" kpx2="109"/>
+    <pair kern="-55" kpx2="102"/>
+    <pair kern="-70" kpx2="121"/>
+    <pair kern="-95" kpx2="46"/>
+    <pair kern="-55" kpx2="110"/>
+    <pair kern="-85" kpx2="120"/>
+    <pair kern="-55" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="102">
+    <pair kern="60" kpx2="148"/>
+    <pair kern="-30" kpx2="111"/>
+    <pair kern="50" kpx2="146"/>
+    <pair kern="-30" kpx2="97"/>
+    <pair kern="-30" kpx2="46"/>
+    <pair kern="-30" kpx2="101"/>
+    <pair kern="-30" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="74">
+    <pair kern="-20" kpx2="97"/>
+    <pair kern="-20" kpx2="65"/>
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-30" kpx2="46"/>
+    <pair kern="-30" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="89">
+    <pair kern="-140" kpx2="111"/>
+    <pair kern="-140" kpx2="45"/>
+    <pair kern="-20" kpx2="105"/>
+    <pair kern="-85" kpx2="79"/>
+    <pair kern="-60" kpx2="58"/>
+    <pair kern="-140" kpx2="97"/>
+    <pair kern="-110" kpx2="65"/>
+    <pair kern="-110" kpx2="117"/>
+    <pair kern="-140" kpx2="46"/>
+    <pair kern="-140" kpx2="101"/>
+    <pair kern="-60" kpx2="59"/>
+    <pair kern="-140" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="121">
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="-20" kpx2="97"/>
+    <pair kern="-100" kpx2="46"/>
+    <pair kern="-20" kpx2="101"/>
+    <pair kern="-100" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="84">
+    <pair kern="-120" kpx2="111"/>
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-20" kpx2="58"/>
+    <pair kern="-120" kpx2="119"/>
+    <pair kern="-120" kpx2="114"/>
+    <pair kern="-120" kpx2="44"/>
+    <pair kern="-20" kpx2="59"/>
+    <pair kern="-140" kpx2="45"/>
+    <pair kern="-120" kpx2="65"/>
+    <pair kern="-120" kpx2="97"/>
+    <pair kern="-120" kpx2="117"/>
+    <pair kern="-120" kpx2="121"/>
+    <pair kern="-120" kpx2="46"/>
+    <pair kern="-120" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="46">
+    <pair kern="-100" kpx2="148"/>
+    <pair kern="-60" kpx2="32"/>
+    <pair kern="-100" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="110">
+    <pair kern="-10" kpx2="117"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="120">
+    <pair kern="-30" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="101">
+    <pair kern="-20" kpx2="119"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-15" kpx2="46"/>
+    <pair kern="-30" kpx2="120"/>
+    <pair kern="-30" kpx2="118"/>
+    <pair kern="-15" kpx2="44"/>
+  </kerning>
+</font-metrics>
diff --git a/src/codegen/fonts/HelveticaBold.xml b/src/codegen/fonts/HelveticaBold.xml
new file mode 100644 (file)
index 0000000..c417937
--- /dev/null
@@ -0,0 +1,561 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Helvetica-Bold</font-name>
+   <class-name>HelveticaBold</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>718</cap-height>
+   <x-height>532</x-height>
+   <ascender>718</ascender>
+   <descender>-207</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="722"/>
+      <char name="AE" width="1000"/>
+      <char name="Aacute" width="722"/>
+      <char name="Acircumflex" width="722"/>
+      <char name="Adieresis" width="722"/>
+      <char name="Agrave" width="722"/>
+      <char name="Aring" width="722"/>
+      <char name="Atilde" width="722"/>
+      <char name="B" width="722"/>
+      <char name="C" width="722"/>
+      <char name="Ccedilla" width="722"/>
+      <char name="D" width="722"/>
+      <char name="E" width="667"/>
+      <char name="Eacute" width="667"/>
+      <char name="Ecircumflex" width="667"/>
+      <char name="Edieresis" width="667"/>
+      <char name="Egrave" width="667"/>
+      <char name="Eth" width="722"/>
+      <char name="Euro" width="556"/>
+      <char name="F" width="611"/>
+      <char name="G" width="778"/>
+      <char name="H" width="722"/>
+      <char name="I" width="278"/>
+      <char name="Iacute" width="278"/>
+      <char name="Icircumflex" width="278"/>
+      <char name="Idieresis" width="278"/>
+      <char name="Igrave" width="278"/>
+      <char name="J" width="556"/>
+      <char name="K" width="722"/>
+      <char name="L" width="611"/>
+      <char name="Lslash" width="611"/>
+      <char name="M" width="833"/>
+      <char name="N" width="722"/>
+      <char name="Ntilde" width="722"/>
+      <char name="O" width="778"/>
+      <char name="OE" width="1000"/>
+      <char name="Oacute" width="778"/>
+      <char name="Ocircumflex" width="778"/>
+      <char name="Odieresis" width="778"/>
+      <char name="Ograve" width="778"/>
+      <char name="Oslash" width="778"/>
+      <char name="Otilde" width="778"/>
+      <char name="P" width="667"/>
+      <char name="Q" width="778"/>
+      <char name="R" width="722"/>
+      <char name="S" width="667"/>
+      <char name="Scaron" width="667"/>
+      <char name="T" width="611"/>
+      <char name="Thorn" width="667"/>
+      <char name="U" width="722"/>
+      <char name="Uacute" width="722"/>
+      <char name="Ucircumflex" width="722"/>
+      <char name="Udieresis" width="722"/>
+      <char name="Ugrave" width="722"/>
+      <char name="V" width="667"/>
+      <char name="W" width="944"/>
+      <char name="X" width="667"/>
+      <char name="Y" width="667"/>
+      <char name="Yacute" width="667"/>
+      <char name="Ydieresis" width="667"/>
+      <char name="Z" width="611"/>
+      <char name="Zcaron" width="611"/>
+      <char name="a" width="556"/>
+      <char name="aacute" width="556"/>
+      <char name="acircumflex" width="556"/>
+      <char name="acute" width="333"/>
+      <char name="adieresis" width="556"/>
+      <char name="ae" width="889"/>
+      <char name="agrave" width="556"/>
+      <char name="ampersand" width="722"/>
+      <char name="aring" width="556"/>
+      <char name="asciicircum" width="584"/>
+      <char name="asciitilde" width="584"/>
+      <char name="asterisk" width="389"/>
+      <char name="at" width="975"/>
+      <char name="atilde" width="556"/>
+      <char name="b" width="611"/>
+      <char name="backslash" width="278"/>
+      <char name="bar" width="280"/>
+      <char name="braceleft" width="389"/>
+      <char name="braceright" width="389"/>
+      <char name="bracketleft" width="333"/>
+      <char name="bracketright" width="333"/>
+      <char name="breve" width="333"/>
+      <char name="brokenbar" width="280"/>
+      <char name="bullet" width="350"/>
+      <char name="c" width="556"/>
+      <char name="caron" width="333"/>
+      <char name="ccedilla" width="556"/>
+      <char name="cedilla" width="333"/>
+      <char name="cent" width="556"/>
+      <char name="circumflex" width="333"/>
+      <char name="colon" width="333"/>
+      <char name="comma" width="278"/>
+      <char name="copyright" width="737"/>
+      <char name="currency" width="556"/>
+      <char name="d" width="611"/>
+      <char name="dagger" width="556"/>
+      <char name="daggerdbl" width="556"/>
+      <char name="degree" width="400"/>
+      <char name="dieresis" width="333"/>
+      <char name="divide" width="584"/>
+      <char name="dollar" width="556"/>
+      <char name="dotaccent" width="333"/>
+      <char name="dotlessi" width="278"/>
+      <char name="e" width="556"/>
+      <char name="eacute" width="556"/>
+      <char name="ecircumflex" width="556"/>
+      <char name="edieresis" width="556"/>
+      <char name="egrave" width="556"/>
+      <char name="eight" width="556"/>
+      <char name="ellipsis" width="1000"/>
+      <char name="emdash" width="1000"/>
+      <char name="endash" width="556"/>
+      <char name="equal" width="584"/>
+      <char name="eth" width="611"/>
+      <char name="exclam" width="333"/>
+      <char name="exclamdown" width="333"/>
+      <char name="f" width="333"/>
+      <char name="fi" width="611"/>
+      <char name="five" width="556"/>
+      <char name="fl" width="611"/>
+      <char name="florin" width="556"/>
+      <char name="four" width="556"/>
+      <char name="fraction" width="167"/>
+      <char name="g" width="611"/>
+      <char name="germandbls" width="611"/>
+      <char name="grave" width="333"/>
+      <char name="greater" width="584"/>
+      <char name="guillemotleft" width="556"/>
+      <char name="guillemotright" width="556"/>
+      <char name="guilsinglleft" width="333"/>
+      <char name="guilsinglright" width="333"/>
+      <char name="h" width="611"/>
+      <char name="hungarumlaut" width="333"/>
+      <char name="hyphen" width="333"/>
+      <char name="i" width="278"/>
+      <char name="iacute" width="278"/>
+      <char name="icircumflex" width="278"/>
+      <char name="idieresis" width="278"/>
+      <char name="igrave" width="278"/>
+      <char name="j" width="278"/>
+      <char name="k" width="556"/>
+      <char name="l" width="278"/>
+      <char name="less" width="584"/>
+      <char name="logicalnot" width="584"/>
+      <char name="lslash" width="278"/>
+      <char name="m" width="889"/>
+      <char name="macron" width="333"/>
+      <char name="minus" width="324"/>
+      <char name="mu" width="611"/>
+      <char name="multiply" width="584"/>
+      <char name="n" width="611"/>
+      <char name="nine" width="556"/>
+      <char name="ntilde" width="611"/>
+      <char name="numbersign" width="556"/>
+      <char name="o" width="611"/>
+      <char name="oacute" width="611"/>
+      <char name="ocircumflex" width="611"/>
+      <char name="odieresis" width="611"/>
+      <char name="oe" width="944"/>
+      <char name="ogonek" width="333"/>
+      <char name="ograve" width="611"/>
+      <char name="one" width="556"/>
+      <char name="onehalf" width="834"/>
+      <char name="onequarter" width="834"/>
+      <char name="onesuperior" width="333"/>
+      <char name="ordfeminine" width="370"/>
+      <char name="ordmasculine" width="365"/>
+      <char name="oslash" width="611"/>
+      <char name="otilde" width="611"/>
+      <char name="p" width="611"/>
+      <char name="paragraph" width="556"/>
+      <char name="parenleft" width="333"/>
+      <char name="parenright" width="333"/>
+      <char name="percent" width="889"/>
+      <char name="period" width="278"/>
+      <char name="periodcentered" width="278"/>
+      <char name="perthousand" width="1000"/>
+      <char name="plus" width="584"/>
+      <char name="plusminus" width="584"/>
+      <char name="q" width="611"/>
+      <char name="question" width="611"/>
+      <char name="questiondown" width="611"/>
+      <char name="quotedbl" width="474"/>
+      <char name="quotedblbase" width="500"/>
+      <char name="quotedblleft" width="500"/>
+      <char name="quotedblright" width="500"/>
+      <char name="quoteleft" width="278"/>
+      <char name="quoteright" width="278"/>
+      <char name="quotesinglbase" width="278"/>
+      <char name="quotesingle" width="238"/>
+      <char name="r" width="389"/>
+      <char name="registered" width="737"/>
+      <char name="ring" width="333"/>
+      <char name="s" width="556"/>
+      <char name="scaron" width="556"/>
+      <char name="section" width="556"/>
+      <char name="semicolon" width="333"/>
+      <char name="seven" width="556"/>
+      <char name="six" width="556"/>
+      <char name="slash" width="278"/>
+      <char name="space" width="278"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="278"/>
+      <char name="sterling" width="556"/>
+      <char name="t" width="333"/>
+      <char name="thorn" width="611"/>
+      <char name="three" width="556"/>
+      <char name="threequarters" width="834"/>
+      <char name="threesuperior" width="333"/>
+      <char name="tilde" width="333"/>
+      <char name="trademark" width="1000"/>
+      <char name="two" width="556"/>
+      <char name="twosuperior" width="333"/>
+      <char name="u" width="611"/>
+      <char name="uacute" width="611"/>
+      <char name="ucircumflex" width="611"/>
+      <char name="udieresis" width="611"/>
+      <char name="ugrave" width="611"/>
+      <char name="underscore" width="556"/>
+      <char name="v" width="556"/>
+      <char name="w" width="778"/>
+      <char name="x" width="556"/>
+      <char name="y" width="556"/>
+      <char name="yacute" width="556"/>
+      <char name="ydieresis" width="556"/>
+      <char name="yen" width="556"/>
+      <char name="z" width="500"/>
+      <char name="zcaron" width="500"/>
+      <char name="zero" width="556"/>
+   </widths>
+  <kerning kpx1="107">
+    <pair kern="-15" kpx2="111"/>
+  </kerning>
+  <kerning kpx1="79">
+    <pair kern="-50" kpx2="65"/>
+    <pair kern="-50" kpx2="87"/>
+    <pair kern="-70" kpx2="89"/>
+    <pair kern="-40" kpx2="84"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-50" kpx2="86"/>
+    <pair kern="-50" kpx2="88"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="104">
+    <pair kern="-20" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="99">
+    <pair kern="-20" kpx2="107"/>
+    <pair kern="-10" kpx2="104"/>
+    <pair kern="-10" kpx2="121"/>
+    <pair kern="-20" kpx2="108"/>
+  </kerning>
+  <kerning kpx1="87">
+    <pair kern="-60" kpx2="111"/>
+    <pair kern="-40" kpx2="45"/>
+    <pair kern="-20" kpx2="79"/>
+    <pair kern="-10" kpx2="58"/>
+    <pair kern="-40" kpx2="97"/>
+    <pair kern="-60" kpx2="65"/>
+    <pair kern="-45" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-35" kpx2="101"/>
+    <pair kern="-10" kpx2="59"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="112">
+    <pair kern="-15" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="80">
+    <pair kern="-40" kpx2="111"/>
+    <pair kern="-30" kpx2="97"/>
+    <pair kern="-100" kpx2="65"/>
+    <pair kern="-120" kpx2="46"/>
+    <pair kern="-30" kpx2="101"/>
+    <pair kern="-120" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="86">
+    <pair kern="-90" kpx2="111"/>
+    <pair kern="-80" kpx2="45"/>
+    <pair kern="-50" kpx2="79"/>
+    <pair kern="-40" kpx2="58"/>
+    <pair kern="-60" kpx2="97"/>
+    <pair kern="-80" kpx2="65"/>
+    <pair kern="-60" kpx2="117"/>
+    <pair kern="-120" kpx2="46"/>
+    <pair kern="-50" kpx2="71"/>
+    <pair kern="-50" kpx2="101"/>
+    <pair kern="-40" kpx2="59"/>
+    <pair kern="-120" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="59">
+    <pair kern="-40" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="118">
+    <pair kern="-30" kpx2="111"/>
+    <pair kern="-20" kpx2="97"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="32">
+    <pair kern="-80" kpx2="87"/>
+    <pair kern="-80" kpx2="147"/>
+    <pair kern="-120" kpx2="89"/>
+    <pair kern="-100" kpx2="84"/>
+    <pair kern="-60" kpx2="145"/>
+    <pair kern="-80" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="97">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-10" kpx2="103"/>
+    <pair kern="-15" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="65">
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-30" kpx2="119"/>
+    <pair kern="-60" kpx2="87"/>
+    <pair kern="-40" kpx2="67"/>
+    <pair kern="-40" kpx2="81"/>
+    <pair kern="-50" kpx2="71"/>
+    <pair kern="-80" kpx2="86"/>
+    <pair kern="-40" kpx2="118"/>
+    <pair kern="-50" kpx2="85"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-110" kpx2="89"/>
+    <pair kern="-90" kpx2="84"/>
+    <pair kern="-30" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="70">
+    <pair kern="-20" kpx2="97"/>
+    <pair kern="-80" kpx2="65"/>
+    <pair kern="-100" kpx2="46"/>
+    <pair kern="-100" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="85">
+    <pair kern="-50" kpx2="65"/>
+    <pair kern="-30" kpx2="46"/>
+    <pair kern="-30" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="115">
+    <pair kern="-15" kpx2="119"/>
+  </kerning>
+  <kerning kpx1="111">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-30" kpx2="120"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="122">
+    <pair kern="10" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="100">
+    <pair kern="-10" kpx2="100"/>
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="-15" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="68">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-70" kpx2="89"/>
+    <pair kern="-30" kpx2="46"/>
+    <pair kern="-40" kpx2="86"/>
+    <pair kern="-30" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="146">
+    <pair kern="-80" kpx2="100"/>
+    <pair kern="-80" kpx2="32"/>
+    <pair kern="-46" kpx2="146"/>
+    <pair kern="-40" kpx2="114"/>
+    <pair kern="-20" kpx2="108"/>
+    <pair kern="-60" kpx2="115"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="82">
+    <pair kern="-20" kpx2="79"/>
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-20" kpx2="85"/>
+    <pair kern="-50" kpx2="89"/>
+    <pair kern="-20" kpx2="84"/>
+    <pair kern="-50" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="75">
+    <pair kern="-35" kpx2="111"/>
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-40" kpx2="121"/>
+    <pair kern="-15" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="58">
+    <pair kern="-40" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="119">
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="114">
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="-20" kpx2="100"/>
+    <pair kern="-20" kpx2="45"/>
+    <pair kern="-20" kpx2="99"/>
+    <pair kern="20" kpx2="116"/>
+    <pair kern="10" kpx2="121"/>
+    <pair kern="-60" kpx2="46"/>
+    <pair kern="-15" kpx2="103"/>
+    <pair kern="-20" kpx2="113"/>
+    <pair kern="-15" kpx2="115"/>
+    <pair kern="10" kpx2="118"/>
+    <pair kern="-60" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="145">
+    <pair kern="-46" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="108">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-15" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="103">
+    <pair kern="-10" kpx2="103"/>
+    <pair kern="10" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="66">
+    <pair kern="-30" kpx2="65"/>
+    <pair kern="-10" kpx2="85"/>
+  </kerning>
+  <kerning kpx1="98">
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-10" kpx2="108"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="76">
+    <pair kern="-140" kpx2="148"/>
+    <pair kern="-140" kpx2="146"/>
+    <pair kern="-80" kpx2="87"/>
+    <pair kern="-120" kpx2="89"/>
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-90" kpx2="84"/>
+    <pair kern="-110" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="81">
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="20" kpx2="46"/>
+    <pair kern="20" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="44">
+    <pair kern="-120" kpx2="148"/>
+    <pair kern="-40" kpx2="32"/>
+    <pair kern="-120" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="148">
+    <pair kern="-80" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="109">
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-30" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="102">
+    <pair kern="30" kpx2="148"/>
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="30" kpx2="146"/>
+    <pair kern="-10" kpx2="46"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-10" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="74">
+    <pair kern="-20" kpx2="65"/>
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-20" kpx2="46"/>
+    <pair kern="-20" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="89">
+    <pair kern="-100" kpx2="111"/>
+    <pair kern="-70" kpx2="79"/>
+    <pair kern="-50" kpx2="58"/>
+    <pair kern="-90" kpx2="97"/>
+    <pair kern="-110" kpx2="65"/>
+    <pair kern="-100" kpx2="117"/>
+    <pair kern="-100" kpx2="46"/>
+    <pair kern="-80" kpx2="101"/>
+    <pair kern="-50" kpx2="59"/>
+    <pair kern="-100" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="84">
+    <pair kern="-80" kpx2="111"/>
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-40" kpx2="58"/>
+    <pair kern="-60" kpx2="119"/>
+    <pair kern="-80" kpx2="114"/>
+    <pair kern="-80" kpx2="44"/>
+    <pair kern="-40" kpx2="59"/>
+    <pair kern="-120" kpx2="45"/>
+    <pair kern="-90" kpx2="65"/>
+    <pair kern="-80" kpx2="97"/>
+    <pair kern="-90" kpx2="117"/>
+    <pair kern="-60" kpx2="121"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-60" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="121">
+    <pair kern="-25" kpx2="111"/>
+    <pair kern="-30" kpx2="97"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="46">
+    <pair kern="-120" kpx2="148"/>
+    <pair kern="-40" kpx2="32"/>
+    <pair kern="-120" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="110">
+    <pair kern="-10" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-40" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="120">
+    <pair kern="-10" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="101">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="20" kpx2="46"/>
+    <pair kern="-15" kpx2="120"/>
+    <pair kern="-15" kpx2="118"/>
+    <pair kern="10" kpx2="44"/>
+  </kerning>
+</font-metrics>
diff --git a/src/codegen/fonts/HelveticaBoldOblique.xml b/src/codegen/fonts/HelveticaBoldOblique.xml
new file mode 100644 (file)
index 0000000..087b225
--- /dev/null
@@ -0,0 +1,561 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Helvetica-BoldOblique</font-name>
+   <class-name>HelveticaBoldOblique</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>718</cap-height>
+   <x-height>532</x-height>
+   <ascender>718</ascender>
+   <descender>-207</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="722"/>
+      <char name="AE" width="1000"/>
+      <char name="Aacute" width="722"/>
+      <char name="Acircumflex" width="722"/>
+      <char name="Adieresis" width="722"/>
+      <char name="Agrave" width="722"/>
+      <char name="Aring" width="722"/>
+      <char name="Atilde" width="722"/>
+      <char name="B" width="722"/>
+      <char name="C" width="722"/>
+      <char name="Ccedilla" width="722"/>
+      <char name="D" width="722"/>
+      <char name="E" width="667"/>
+      <char name="Eacute" width="667"/>
+      <char name="Ecircumflex" width="667"/>
+      <char name="Edieresis" width="667"/>
+      <char name="Egrave" width="667"/>
+      <char name="Eth" width="722"/>
+      <char name="Euro" width="556"/>
+      <char name="F" width="611"/>
+      <char name="G" width="778"/>
+      <char name="H" width="722"/>
+      <char name="I" width="278"/>
+      <char name="Iacute" width="278"/>
+      <char name="Icircumflex" width="278"/>
+      <char name="Idieresis" width="278"/>
+      <char name="Igrave" width="278"/>
+      <char name="J" width="556"/>
+      <char name="K" width="722"/>
+      <char name="L" width="611"/>
+      <char name="Lslash" width="611"/>
+      <char name="M" width="833"/>
+      <char name="N" width="722"/>
+      <char name="Ntilde" width="722"/>
+      <char name="O" width="778"/>
+      <char name="OE" width="1000"/>
+      <char name="Oacute" width="778"/>
+      <char name="Ocircumflex" width="778"/>
+      <char name="Odieresis" width="778"/>
+      <char name="Ograve" width="778"/>
+      <char name="Oslash" width="778"/>
+      <char name="Otilde" width="778"/>
+      <char name="P" width="667"/>
+      <char name="Q" width="778"/>
+      <char name="R" width="722"/>
+      <char name="S" width="667"/>
+      <char name="Scaron" width="667"/>
+      <char name="T" width="611"/>
+      <char name="Thorn" width="667"/>
+      <char name="U" width="722"/>
+      <char name="Uacute" width="722"/>
+      <char name="Ucircumflex" width="722"/>
+      <char name="Udieresis" width="722"/>
+      <char name="Ugrave" width="722"/>
+      <char name="V" width="667"/>
+      <char name="W" width="944"/>
+      <char name="X" width="667"/>
+      <char name="Y" width="667"/>
+      <char name="Yacute" width="667"/>
+      <char name="Ydieresis" width="667"/>
+      <char name="Z" width="611"/>
+      <char name="Zcaron" width="611"/>
+      <char name="a" width="556"/>
+      <char name="aacute" width="556"/>
+      <char name="acircumflex" width="556"/>
+      <char name="acute" width="333"/>
+      <char name="adieresis" width="556"/>
+      <char name="ae" width="889"/>
+      <char name="agrave" width="556"/>
+      <char name="ampersand" width="722"/>
+      <char name="aring" width="556"/>
+      <char name="asciicircum" width="584"/>
+      <char name="asciitilde" width="584"/>
+      <char name="asterisk" width="389"/>
+      <char name="at" width="975"/>
+      <char name="atilde" width="556"/>
+      <char name="b" width="611"/>
+      <char name="backslash" width="278"/>
+      <char name="bar" width="280"/>
+      <char name="braceleft" width="389"/>
+      <char name="braceright" width="389"/>
+      <char name="bracketleft" width="333"/>
+      <char name="bracketright" width="333"/>
+      <char name="breve" width="333"/>
+      <char name="brokenbar" width="280"/>
+      <char name="bullet" width="350"/>
+      <char name="c" width="556"/>
+      <char name="caron" width="333"/>
+      <char name="ccedilla" width="556"/>
+      <char name="cedilla" width="333"/>
+      <char name="cent" width="556"/>
+      <char name="circumflex" width="333"/>
+      <char name="colon" width="333"/>
+      <char name="comma" width="278"/>
+      <char name="copyright" width="737"/>
+      <char name="currency" width="556"/>
+      <char name="d" width="611"/>
+      <char name="dagger" width="556"/>
+      <char name="daggerdbl" width="556"/>
+      <char name="degree" width="400"/>
+      <char name="dieresis" width="333"/>
+      <char name="divide" width="584"/>
+      <char name="dollar" width="556"/>
+      <char name="dotaccent" width="333"/>
+      <char name="dotlessi" width="278"/>
+      <char name="e" width="556"/>
+      <char name="eacute" width="556"/>
+      <char name="ecircumflex" width="556"/>
+      <char name="edieresis" width="556"/>
+      <char name="egrave" width="556"/>
+      <char name="eight" width="556"/>
+      <char name="ellipsis" width="1000"/>
+      <char name="emdash" width="1000"/>
+      <char name="endash" width="556"/>
+      <char name="equal" width="584"/>
+      <char name="eth" width="611"/>
+      <char name="exclam" width="333"/>
+      <char name="exclamdown" width="333"/>
+      <char name="f" width="333"/>
+      <char name="fi" width="611"/>
+      <char name="five" width="556"/>
+      <char name="fl" width="611"/>
+      <char name="florin" width="556"/>
+      <char name="four" width="556"/>
+      <char name="fraction" width="167"/>
+      <char name="g" width="611"/>
+      <char name="germandbls" width="611"/>
+      <char name="grave" width="333"/>
+      <char name="greater" width="584"/>
+      <char name="guillemotleft" width="556"/>
+      <char name="guillemotright" width="556"/>
+      <char name="guilsinglleft" width="333"/>
+      <char name="guilsinglright" width="333"/>
+      <char name="h" width="611"/>
+      <char name="hungarumlaut" width="333"/>
+      <char name="hyphen" width="333"/>
+      <char name="i" width="278"/>
+      <char name="iacute" width="278"/>
+      <char name="icircumflex" width="278"/>
+      <char name="idieresis" width="278"/>
+      <char name="igrave" width="278"/>
+      <char name="j" width="278"/>
+      <char name="k" width="556"/>
+      <char name="l" width="278"/>
+      <char name="less" width="584"/>
+      <char name="logicalnot" width="584"/>
+      <char name="lslash" width="278"/>
+      <char name="m" width="889"/>
+      <char name="macron" width="333"/>
+      <char name="minus" width="324"/>
+      <char name="mu" width="611"/>
+      <char name="multiply" width="584"/>
+      <char name="n" width="611"/>
+      <char name="nine" width="556"/>
+      <char name="ntilde" width="611"/>
+      <char name="numbersign" width="556"/>
+      <char name="o" width="611"/>
+      <char name="oacute" width="611"/>
+      <char name="ocircumflex" width="611"/>
+      <char name="odieresis" width="611"/>
+      <char name="oe" width="944"/>
+      <char name="ogonek" width="333"/>
+      <char name="ograve" width="611"/>
+      <char name="one" width="556"/>
+      <char name="onehalf" width="834"/>
+      <char name="onequarter" width="834"/>
+      <char name="onesuperior" width="333"/>
+      <char name="ordfeminine" width="370"/>
+      <char name="ordmasculine" width="365"/>
+      <char name="oslash" width="611"/>
+      <char name="otilde" width="611"/>
+      <char name="p" width="611"/>
+      <char name="paragraph" width="556"/>
+      <char name="parenleft" width="333"/>
+      <char name="parenright" width="333"/>
+      <char name="percent" width="889"/>
+      <char name="period" width="278"/>
+      <char name="periodcentered" width="278"/>
+      <char name="perthousand" width="1000"/>
+      <char name="plus" width="584"/>
+      <char name="plusminus" width="584"/>
+      <char name="q" width="611"/>
+      <char name="question" width="611"/>
+      <char name="questiondown" width="611"/>
+      <char name="quotedbl" width="474"/>
+      <char name="quotedblbase" width="500"/>
+      <char name="quotedblleft" width="500"/>
+      <char name="quotedblright" width="500"/>
+      <char name="quoteleft" width="278"/>
+      <char name="quoteright" width="278"/>
+      <char name="quotesinglbase" width="278"/>
+      <char name="quotesingle" width="238"/>
+      <char name="r" width="389"/>
+      <char name="registered" width="737"/>
+      <char name="ring" width="333"/>
+      <char name="s" width="556"/>
+      <char name="scaron" width="556"/>
+      <char name="section" width="556"/>
+      <char name="semicolon" width="333"/>
+      <char name="seven" width="556"/>
+      <char name="six" width="556"/>
+      <char name="slash" width="278"/>
+      <char name="space" width="278"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="278"/>
+      <char name="sterling" width="556"/>
+      <char name="t" width="333"/>
+      <char name="thorn" width="611"/>
+      <char name="three" width="556"/>
+      <char name="threequarters" width="834"/>
+      <char name="threesuperior" width="333"/>
+      <char name="tilde" width="333"/>
+      <char name="trademark" width="1000"/>
+      <char name="two" width="556"/>
+      <char name="twosuperior" width="333"/>
+      <char name="u" width="611"/>
+      <char name="uacute" width="611"/>
+      <char name="ucircumflex" width="611"/>
+      <char name="udieresis" width="611"/>
+      <char name="ugrave" width="611"/>
+      <char name="underscore" width="556"/>
+      <char name="v" width="556"/>
+      <char name="w" width="778"/>
+      <char name="x" width="556"/>
+      <char name="y" width="556"/>
+      <char name="yacute" width="556"/>
+      <char name="ydieresis" width="556"/>
+      <char name="yen" width="556"/>
+      <char name="z" width="500"/>
+      <char name="zcaron" width="500"/>
+      <char name="zero" width="556"/>
+   </widths>
+  <kerning kpx1="107">
+    <pair kern="-15" kpx2="111"/>
+  </kerning>
+  <kerning kpx1="79">
+    <pair kern="-50" kpx2="65"/>
+    <pair kern="-50" kpx2="87"/>
+    <pair kern="-70" kpx2="89"/>
+    <pair kern="-40" kpx2="84"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-50" kpx2="86"/>
+    <pair kern="-50" kpx2="88"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="104">
+    <pair kern="-20" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="99">
+    <pair kern="-20" kpx2="107"/>
+    <pair kern="-10" kpx2="104"/>
+    <pair kern="-10" kpx2="121"/>
+    <pair kern="-20" kpx2="108"/>
+  </kerning>
+  <kerning kpx1="87">
+    <pair kern="-60" kpx2="111"/>
+    <pair kern="-40" kpx2="45"/>
+    <pair kern="-20" kpx2="79"/>
+    <pair kern="-10" kpx2="58"/>
+    <pair kern="-40" kpx2="97"/>
+    <pair kern="-60" kpx2="65"/>
+    <pair kern="-45" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-35" kpx2="101"/>
+    <pair kern="-10" kpx2="59"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="112">
+    <pair kern="-15" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="80">
+    <pair kern="-40" kpx2="111"/>
+    <pair kern="-30" kpx2="97"/>
+    <pair kern="-100" kpx2="65"/>
+    <pair kern="-120" kpx2="46"/>
+    <pair kern="-30" kpx2="101"/>
+    <pair kern="-120" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="86">
+    <pair kern="-90" kpx2="111"/>
+    <pair kern="-80" kpx2="45"/>
+    <pair kern="-50" kpx2="79"/>
+    <pair kern="-40" kpx2="58"/>
+    <pair kern="-60" kpx2="97"/>
+    <pair kern="-80" kpx2="65"/>
+    <pair kern="-60" kpx2="117"/>
+    <pair kern="-120" kpx2="46"/>
+    <pair kern="-50" kpx2="71"/>
+    <pair kern="-50" kpx2="101"/>
+    <pair kern="-40" kpx2="59"/>
+    <pair kern="-120" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="59">
+    <pair kern="-40" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="118">
+    <pair kern="-30" kpx2="111"/>
+    <pair kern="-20" kpx2="97"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="32">
+    <pair kern="-80" kpx2="87"/>
+    <pair kern="-80" kpx2="147"/>
+    <pair kern="-120" kpx2="89"/>
+    <pair kern="-100" kpx2="84"/>
+    <pair kern="-60" kpx2="145"/>
+    <pair kern="-80" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="97">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-10" kpx2="103"/>
+    <pair kern="-15" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="65">
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-30" kpx2="119"/>
+    <pair kern="-60" kpx2="87"/>
+    <pair kern="-40" kpx2="67"/>
+    <pair kern="-40" kpx2="81"/>
+    <pair kern="-50" kpx2="71"/>
+    <pair kern="-80" kpx2="86"/>
+    <pair kern="-40" kpx2="118"/>
+    <pair kern="-50" kpx2="85"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-110" kpx2="89"/>
+    <pair kern="-90" kpx2="84"/>
+    <pair kern="-30" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="70">
+    <pair kern="-20" kpx2="97"/>
+    <pair kern="-80" kpx2="65"/>
+    <pair kern="-100" kpx2="46"/>
+    <pair kern="-100" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="85">
+    <pair kern="-50" kpx2="65"/>
+    <pair kern="-30" kpx2="46"/>
+    <pair kern="-30" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="115">
+    <pair kern="-15" kpx2="119"/>
+  </kerning>
+  <kerning kpx1="111">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-30" kpx2="120"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="122">
+    <pair kern="10" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="100">
+    <pair kern="-10" kpx2="100"/>
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="-15" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="68">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-70" kpx2="89"/>
+    <pair kern="-30" kpx2="46"/>
+    <pair kern="-40" kpx2="86"/>
+    <pair kern="-30" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="146">
+    <pair kern="-80" kpx2="100"/>
+    <pair kern="-80" kpx2="32"/>
+    <pair kern="-46" kpx2="146"/>
+    <pair kern="-40" kpx2="114"/>
+    <pair kern="-20" kpx2="108"/>
+    <pair kern="-60" kpx2="115"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="82">
+    <pair kern="-20" kpx2="79"/>
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-20" kpx2="85"/>
+    <pair kern="-50" kpx2="89"/>
+    <pair kern="-20" kpx2="84"/>
+    <pair kern="-50" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="75">
+    <pair kern="-35" kpx2="111"/>
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-40" kpx2="121"/>
+    <pair kern="-15" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="58">
+    <pair kern="-40" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="119">
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="114">
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="-20" kpx2="100"/>
+    <pair kern="-20" kpx2="45"/>
+    <pair kern="-20" kpx2="99"/>
+    <pair kern="20" kpx2="116"/>
+    <pair kern="10" kpx2="121"/>
+    <pair kern="-60" kpx2="46"/>
+    <pair kern="-15" kpx2="103"/>
+    <pair kern="-20" kpx2="113"/>
+    <pair kern="-15" kpx2="115"/>
+    <pair kern="10" kpx2="118"/>
+    <pair kern="-60" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="145">
+    <pair kern="-46" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="108">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-15" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="103">
+    <pair kern="-10" kpx2="103"/>
+    <pair kern="10" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="66">
+    <pair kern="-30" kpx2="65"/>
+    <pair kern="-10" kpx2="85"/>
+  </kerning>
+  <kerning kpx1="98">
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-10" kpx2="108"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="76">
+    <pair kern="-140" kpx2="148"/>
+    <pair kern="-140" kpx2="146"/>
+    <pair kern="-80" kpx2="87"/>
+    <pair kern="-120" kpx2="89"/>
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-90" kpx2="84"/>
+    <pair kern="-110" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="81">
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="20" kpx2="46"/>
+    <pair kern="20" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="44">
+    <pair kern="-120" kpx2="148"/>
+    <pair kern="-40" kpx2="32"/>
+    <pair kern="-120" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="148">
+    <pair kern="-80" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="109">
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-30" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="102">
+    <pair kern="30" kpx2="148"/>
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="30" kpx2="146"/>
+    <pair kern="-10" kpx2="46"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-10" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="74">
+    <pair kern="-20" kpx2="65"/>
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-20" kpx2="46"/>
+    <pair kern="-20" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="89">
+    <pair kern="-100" kpx2="111"/>
+    <pair kern="-70" kpx2="79"/>
+    <pair kern="-50" kpx2="58"/>
+    <pair kern="-90" kpx2="97"/>
+    <pair kern="-110" kpx2="65"/>
+    <pair kern="-100" kpx2="117"/>
+    <pair kern="-100" kpx2="46"/>
+    <pair kern="-80" kpx2="101"/>
+    <pair kern="-50" kpx2="59"/>
+    <pair kern="-100" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="84">
+    <pair kern="-80" kpx2="111"/>
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-40" kpx2="58"/>
+    <pair kern="-60" kpx2="119"/>
+    <pair kern="-80" kpx2="114"/>
+    <pair kern="-80" kpx2="44"/>
+    <pair kern="-40" kpx2="59"/>
+    <pair kern="-120" kpx2="45"/>
+    <pair kern="-90" kpx2="65"/>
+    <pair kern="-80" kpx2="97"/>
+    <pair kern="-90" kpx2="117"/>
+    <pair kern="-60" kpx2="121"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-60" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="121">
+    <pair kern="-25" kpx2="111"/>
+    <pair kern="-30" kpx2="97"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="46">
+    <pair kern="-120" kpx2="148"/>
+    <pair kern="-40" kpx2="32"/>
+    <pair kern="-120" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="110">
+    <pair kern="-10" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-40" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="120">
+    <pair kern="-10" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="101">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="20" kpx2="46"/>
+    <pair kern="-15" kpx2="120"/>
+    <pair kern="-15" kpx2="118"/>
+    <pair kern="10" kpx2="44"/>
+  </kerning>
+</font-metrics>
diff --git a/src/codegen/fonts/HelveticaOblique.xml b/src/codegen/fonts/HelveticaOblique.xml
new file mode 100644 (file)
index 0000000..d913b6d
--- /dev/null
@@ -0,0 +1,603 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Helvetica-Oblique</font-name>
+   <class-name>HelveticaOblique</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>718</cap-height>
+   <x-height>523</x-height>
+   <ascender>718</ascender>
+   <descender>-207</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="667"/>
+      <char name="AE" width="1000"/>
+      <char name="Aacute" width="667"/>
+      <char name="Acircumflex" width="667"/>
+      <char name="Adieresis" width="667"/>
+      <char name="Agrave" width="667"/>
+      <char name="Aring" width="667"/>
+      <char name="Atilde" width="667"/>
+      <char name="B" width="667"/>
+      <char name="C" width="722"/>
+      <char name="Ccedilla" width="722"/>
+      <char name="D" width="722"/>
+      <char name="E" width="667"/>
+      <char name="Eacute" width="667"/>
+      <char name="Ecircumflex" width="667"/>
+      <char name="Edieresis" width="667"/>
+      <char name="Egrave" width="667"/>
+      <char name="Eth" width="722"/>
+      <char name="Euro" width="556"/>
+      <char name="F" width="611"/>
+      <char name="G" width="778"/>
+      <char name="H" width="722"/>
+      <char name="I" width="278"/>
+      <char name="Iacute" width="278"/>
+      <char name="Icircumflex" width="278"/>
+      <char name="Idieresis" width="278"/>
+      <char name="Igrave" width="278"/>
+      <char name="J" width="500"/>
+      <char name="K" width="667"/>
+      <char name="L" width="556"/>
+      <char name="Lslash" width="556"/>
+      <char name="M" width="833"/>
+      <char name="N" width="722"/>
+      <char name="Ntilde" width="722"/>
+      <char name="O" width="778"/>
+      <char name="OE" width="1000"/>
+      <char name="Oacute" width="778"/>
+      <char name="Ocircumflex" width="778"/>
+      <char name="Odieresis" width="778"/>
+      <char name="Ograve" width="778"/>
+      <char name="Oslash" width="778"/>
+      <char name="Otilde" width="778"/>
+      <char name="P" width="667"/>
+      <char name="Q" width="778"/>
+      <char name="R" width="722"/>
+      <char name="S" width="667"/>
+      <char name="Scaron" width="667"/>
+      <char name="T" width="611"/>
+      <char name="Thorn" width="667"/>
+      <char name="U" width="722"/>
+      <char name="Uacute" width="722"/>
+      <char name="Ucircumflex" width="722"/>
+      <char name="Udieresis" width="722"/>
+      <char name="Ugrave" width="722"/>
+      <char name="V" width="667"/>
+      <char name="W" width="944"/>
+      <char name="X" width="667"/>
+      <char name="Y" width="667"/>
+      <char name="Yacute" width="667"/>
+      <char name="Ydieresis" width="667"/>
+      <char name="Z" width="611"/>
+      <char name="Zcaron" width="611"/>
+      <char name="a" width="556"/>
+      <char name="aacute" width="556"/>
+      <char name="acircumflex" width="556"/>
+      <char name="acute" width="333"/>
+      <char name="adieresis" width="556"/>
+      <char name="ae" width="889"/>
+      <char name="agrave" width="556"/>
+      <char name="ampersand" width="667"/>
+      <char name="aring" width="556"/>
+      <char name="asciicircum" width="469"/>
+      <char name="asciitilde" width="584"/>
+      <char name="asterisk" width="389"/>
+      <char name="at" width="1015"/>
+      <char name="atilde" width="556"/>
+      <char name="b" width="556"/>
+      <char name="backslash" width="278"/>
+      <char name="bar" width="260"/>
+      <char name="braceleft" width="334"/>
+      <char name="braceright" width="334"/>
+      <char name="bracketleft" width="278"/>
+      <char name="bracketright" width="278"/>
+      <char name="breve" width="333"/>
+      <char name="brokenbar" width="260"/>
+      <char name="bullet" width="350"/>
+      <char name="c" width="500"/>
+      <char name="caron" width="333"/>
+      <char name="ccedilla" width="500"/>
+      <char name="cedilla" width="333"/>
+      <char name="cent" width="556"/>
+      <char name="circumflex" width="333"/>
+      <char name="colon" width="278"/>
+      <char name="comma" width="278"/>
+      <char name="copyright" width="737"/>
+      <char name="currency" width="556"/>
+      <char name="d" width="556"/>
+      <char name="dagger" width="556"/>
+      <char name="daggerdbl" width="556"/>
+      <char name="degree" width="400"/>
+      <char name="dieresis" width="333"/>
+      <char name="divide" width="584"/>
+      <char name="dollar" width="556"/>
+      <char name="dotaccent" width="333"/>
+      <char name="dotlessi" width="278"/>
+      <char name="e" width="556"/>
+      <char name="eacute" width="556"/>
+      <char name="ecircumflex" width="556"/>
+      <char name="edieresis" width="556"/>
+      <char name="egrave" width="556"/>
+      <char name="eight" width="556"/>
+      <char name="ellipsis" width="1000"/>
+      <char name="emdash" width="1000"/>
+      <char name="endash" width="556"/>
+      <char name="equal" width="584"/>
+      <char name="eth" width="556"/>
+      <char name="exclam" width="278"/>
+      <char name="exclamdown" width="333"/>
+      <char name="f" width="278"/>
+      <char name="fi" width="500"/>
+      <char name="five" width="556"/>
+      <char name="fl" width="500"/>
+      <char name="florin" width="556"/>
+      <char name="four" width="556"/>
+      <char name="fraction" width="167"/>
+      <char name="g" width="556"/>
+      <char name="germandbls" width="611"/>
+      <char name="grave" width="333"/>
+      <char name="greater" width="584"/>
+      <char name="guillemotleft" width="556"/>
+      <char name="guillemotright" width="556"/>
+      <char name="guilsinglleft" width="333"/>
+      <char name="guilsinglright" width="333"/>
+      <char name="h" width="556"/>
+      <char name="hungarumlaut" width="333"/>
+      <char name="hyphen" width="333"/>
+      <char name="i" width="222"/>
+      <char name="iacute" width="278"/>
+      <char name="icircumflex" width="278"/>
+      <char name="idieresis" width="278"/>
+      <char name="igrave" width="278"/>
+      <char name="j" width="222"/>
+      <char name="k" width="500"/>
+      <char name="l" width="222"/>
+      <char name="less" width="584"/>
+      <char name="logicalnot" width="584"/>
+      <char name="lslash" width="222"/>
+      <char name="m" width="833"/>
+      <char name="macron" width="333"/>
+      <char name="minus" width="584"/>
+      <char name="mu" width="556"/>
+      <char name="multiply" width="584"/>
+      <char name="n" width="556"/>
+      <char name="nine" width="556"/>
+      <char name="ntilde" width="556"/>
+      <char name="numbersign" width="556"/>
+      <char name="o" width="556"/>
+      <char name="oacute" width="556"/>
+      <char name="ocircumflex" width="556"/>
+      <char name="odieresis" width="556"/>
+      <char name="oe" width="944"/>
+      <char name="ogonek" width="333"/>
+      <char name="ograve" width="556"/>
+      <char name="one" width="556"/>
+      <char name="onehalf" width="834"/>
+      <char name="onequarter" width="834"/>
+      <char name="onesuperior" width="333"/>
+      <char name="ordfeminine" width="370"/>
+      <char name="ordmasculine" width="365"/>
+      <char name="oslash" width="611"/>
+      <char name="otilde" width="556"/>
+      <char name="p" width="556"/>
+      <char name="paragraph" width="537"/>
+      <char name="parenleft" width="333"/>
+      <char name="parenright" width="333"/>
+      <char name="percent" width="889"/>
+      <char name="period" width="278"/>
+      <char name="periodcentered" width="278"/>
+      <char name="perthousand" width="1000"/>
+      <char name="plus" width="584"/>
+      <char name="plusminus" width="584"/>
+      <char name="q" width="556"/>
+      <char name="question" width="556"/>
+      <char name="questiondown" width="611"/>
+      <char name="quotedbl" width="355"/>
+      <char name="quotedblbase" width="333"/>
+      <char name="quotedblleft" width="333"/>
+      <char name="quotedblright" width="333"/>
+      <char name="quoteleft" width="222"/>
+      <char name="quoteright" width="222"/>
+      <char name="quotesinglbase" width="222"/>
+      <char name="quotesingle" width="191"/>
+      <char name="r" width="333"/>
+      <char name="registered" width="737"/>
+      <char name="ring" width="333"/>
+      <char name="s" width="500"/>
+      <char name="scaron" width="500"/>
+      <char name="section" width="556"/>
+      <char name="semicolon" width="278"/>
+      <char name="seven" width="556"/>
+      <char name="six" width="556"/>
+      <char name="slash" width="278"/>
+      <char name="space" width="278"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="278"/>
+      <char name="sterling" width="556"/>
+      <char name="t" width="278"/>
+      <char name="thorn" width="556"/>
+      <char name="three" width="556"/>
+      <char name="threequarters" width="834"/>
+      <char name="threesuperior" width="333"/>
+      <char name="tilde" width="333"/>
+      <char name="trademark" width="1000"/>
+      <char name="two" width="556"/>
+      <char name="twosuperior" width="333"/>
+      <char name="u" width="556"/>
+      <char name="uacute" width="556"/>
+      <char name="ucircumflex" width="556"/>
+      <char name="udieresis" width="556"/>
+      <char name="ugrave" width="556"/>
+      <char name="underscore" width="556"/>
+      <char name="v" width="500"/>
+      <char name="w" width="722"/>
+      <char name="x" width="500"/>
+      <char name="y" width="500"/>
+      <char name="yacute" width="500"/>
+      <char name="ydieresis" width="500"/>
+      <char name="yen" width="556"/>
+      <char name="z" width="500"/>
+      <char name="zcaron" width="500"/>
+      <char name="zero" width="556"/>
+   </widths>
+  <kerning kpx1="107">
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="-20" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="79">
+    <pair kern="-20" kpx2="65"/>
+    <pair kern="-30" kpx2="87"/>
+    <pair kern="-70" kpx2="89"/>
+    <pair kern="-40" kpx2="84"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-50" kpx2="86"/>
+    <pair kern="-60" kpx2="88"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="104">
+    <pair kern="-30" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="87">
+    <pair kern="-30" kpx2="111"/>
+    <pair kern="-40" kpx2="45"/>
+    <pair kern="-20" kpx2="79"/>
+    <pair kern="-40" kpx2="97"/>
+    <pair kern="-50" kpx2="65"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-30" kpx2="101"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="99">
+    <pair kern="-20" kpx2="107"/>
+    <pair kern="-15" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="112">
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-35" kpx2="46"/>
+    <pair kern="-35" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="80">
+    <pair kern="-50" kpx2="111"/>
+    <pair kern="-40" kpx2="97"/>
+    <pair kern="-120" kpx2="65"/>
+    <pair kern="-180" kpx2="46"/>
+    <pair kern="-50" kpx2="101"/>
+    <pair kern="-180" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="86">
+    <pair kern="-80" kpx2="111"/>
+    <pair kern="-80" kpx2="45"/>
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-40" kpx2="58"/>
+    <pair kern="-70" kpx2="97"/>
+    <pair kern="-80" kpx2="65"/>
+    <pair kern="-70" kpx2="117"/>
+    <pair kern="-125" kpx2="46"/>
+    <pair kern="-40" kpx2="71"/>
+    <pair kern="-80" kpx2="101"/>
+    <pair kern="-40" kpx2="59"/>
+    <pair kern="-125" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="118">
+    <pair kern="-25" kpx2="111"/>
+    <pair kern="-25" kpx2="97"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="-25" kpx2="101"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="59">
+    <pair kern="-50" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="32">
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-30" kpx2="147"/>
+    <pair kern="-90" kpx2="89"/>
+    <pair kern="-50" kpx2="84"/>
+    <pair kern="-60" kpx2="145"/>
+    <pair kern="-50" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="97">
+    <pair kern="-20" kpx2="119"/>
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="65">
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-40" kpx2="119"/>
+    <pair kern="-50" kpx2="87"/>
+    <pair kern="-30" kpx2="67"/>
+    <pair kern="-30" kpx2="81"/>
+    <pair kern="-30" kpx2="71"/>
+    <pair kern="-70" kpx2="86"/>
+    <pair kern="-40" kpx2="118"/>
+    <pair kern="-50" kpx2="85"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-100" kpx2="89"/>
+    <pair kern="-120" kpx2="84"/>
+    <pair kern="-40" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="70">
+    <pair kern="-30" kpx2="111"/>
+    <pair kern="-45" kpx2="114"/>
+    <pair kern="-50" kpx2="97"/>
+    <pair kern="-80" kpx2="65"/>
+    <pair kern="-150" kpx2="46"/>
+    <pair kern="-30" kpx2="101"/>
+    <pair kern="-150" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="85">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="115">
+    <pair kern="-30" kpx2="119"/>
+    <pair kern="-15" kpx2="46"/>
+    <pair kern="-15" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="122">
+    <pair kern="-15" kpx2="111"/>
+    <pair kern="-15" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="83">
+    <pair kern="-20" kpx2="46"/>
+    <pair kern="-20" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="111">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-30" kpx2="120"/>
+    <pair kern="-15" kpx2="118"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="68">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-90" kpx2="89"/>
+    <pair kern="-70" kpx2="46"/>
+    <pair kern="-70" kpx2="86"/>
+    <pair kern="-70" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="146">
+    <pair kern="-50" kpx2="100"/>
+    <pair kern="-70" kpx2="32"/>
+    <pair kern="-57" kpx2="146"/>
+    <pair kern="-50" kpx2="114"/>
+    <pair kern="-50" kpx2="115"/>
+  </kerning>
+  <kerning kpx1="82">
+    <pair kern="-20" kpx2="79"/>
+    <pair kern="-30" kpx2="87"/>
+    <pair kern="-40" kpx2="85"/>
+    <pair kern="-50" kpx2="89"/>
+    <pair kern="-30" kpx2="84"/>
+    <pair kern="-50" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="75">
+    <pair kern="-40" kpx2="111"/>
+    <pair kern="-50" kpx2="79"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-50" kpx2="121"/>
+    <pair kern="-40" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="119">
+    <pair kern="-10" kpx2="111"/>
+    <pair kern="-15" kpx2="97"/>
+    <pair kern="-60" kpx2="46"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-60" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="58">
+    <pair kern="-50" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="114">
+    <pair kern="15" kpx2="107"/>
+    <pair kern="30" kpx2="58"/>
+    <pair kern="30" kpx2="112"/>
+    <pair kern="15" kpx2="108"/>
+    <pair kern="30" kpx2="118"/>
+    <pair kern="-50" kpx2="44"/>
+    <pair kern="30" kpx2="59"/>
+    <pair kern="15" kpx2="105"/>
+    <pair kern="25" kpx2="109"/>
+    <pair kern="-10" kpx2="97"/>
+    <pair kern="15" kpx2="117"/>
+    <pair kern="40" kpx2="116"/>
+    <pair kern="30" kpx2="121"/>
+    <pair kern="-50" kpx2="46"/>
+    <pair kern="25" kpx2="110"/>
+  </kerning>
+  <kerning kpx1="67">
+    <pair kern="-30" kpx2="46"/>
+    <pair kern="-30" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="145">
+    <pair kern="-57" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="103">
+    <pair kern="-10" kpx2="114"/>
+  </kerning>
+  <kerning kpx1="66">
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="-20" kpx2="46"/>
+    <pair kern="-20" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="81">
+    <pair kern="-10" kpx2="85"/>
+  </kerning>
+  <kerning kpx1="76">
+    <pair kern="-140" kpx2="148"/>
+    <pair kern="-160" kpx2="146"/>
+    <pair kern="-70" kpx2="87"/>
+    <pair kern="-140" kpx2="89"/>
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-110" kpx2="84"/>
+    <pair kern="-110" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="98">
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="-20" kpx2="108"/>
+    <pair kern="-10" kpx2="98"/>
+    <pair kern="-20" kpx2="118"/>
+    <pair kern="-40" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="44">
+    <pair kern="-100" kpx2="148"/>
+    <pair kern="-100" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="148">
+    <pair kern="-40" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="109">
+    <pair kern="-10" kpx2="117"/>
+    <pair kern="-15" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="248">
+    <pair kern="-55" kpx2="107"/>
+    <pair kern="-55" kpx2="104"/>
+    <pair kern="-55" kpx2="99"/>
+    <pair kern="-55" kpx2="112"/>
+    <pair kern="-55" kpx2="113"/>
+    <pair kern="-70" kpx2="118"/>
+    <pair kern="-55" kpx2="105"/>
+    <pair kern="-55" kpx2="97"/>
+    <pair kern="-55" kpx2="117"/>
+    <pair kern="-55" kpx2="116"/>
+    <pair kern="-55" kpx2="106"/>
+    <pair kern="-55" kpx2="115"/>
+    <pair kern="-55" kpx2="122"/>
+    <pair kern="-55" kpx2="100"/>
+    <pair kern="-55" kpx2="111"/>
+    <pair kern="-70" kpx2="119"/>
+    <pair kern="-55" kpx2="114"/>
+    <pair kern="-55" kpx2="103"/>
+    <pair kern="-55" kpx2="108"/>
+    <pair kern="-55" kpx2="98"/>
+    <pair kern="-95" kpx2="44"/>
+    <pair kern="-55" kpx2="109"/>
+    <pair kern="-55" kpx2="102"/>
+    <pair kern="-70" kpx2="121"/>
+    <pair kern="-95" kpx2="46"/>
+    <pair kern="-55" kpx2="110"/>
+    <pair kern="-85" kpx2="120"/>
+    <pair kern="-55" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="102">
+    <pair kern="60" kpx2="148"/>
+    <pair kern="-30" kpx2="111"/>
+    <pair kern="50" kpx2="146"/>
+    <pair kern="-30" kpx2="97"/>
+    <pair kern="-30" kpx2="46"/>
+    <pair kern="-30" kpx2="101"/>
+    <pair kern="-30" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="74">
+    <pair kern="-20" kpx2="97"/>
+    <pair kern="-20" kpx2="65"/>
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-30" kpx2="46"/>
+    <pair kern="-30" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="89">
+    <pair kern="-140" kpx2="111"/>
+    <pair kern="-140" kpx2="45"/>
+    <pair kern="-20" kpx2="105"/>
+    <pair kern="-85" kpx2="79"/>
+    <pair kern="-60" kpx2="58"/>
+    <pair kern="-140" kpx2="97"/>
+    <pair kern="-110" kpx2="65"/>
+    <pair kern="-110" kpx2="117"/>
+    <pair kern="-140" kpx2="46"/>
+    <pair kern="-140" kpx2="101"/>
+    <pair kern="-60" kpx2="59"/>
+    <pair kern="-140" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="121">
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="-20" kpx2="97"/>
+    <pair kern="-100" kpx2="46"/>
+    <pair kern="-20" kpx2="101"/>
+    <pair kern="-100" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="84">
+    <pair kern="-120" kpx2="111"/>
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-20" kpx2="58"/>
+    <pair kern="-120" kpx2="119"/>
+    <pair kern="-120" kpx2="114"/>
+    <pair kern="-120" kpx2="44"/>
+    <pair kern="-20" kpx2="59"/>
+    <pair kern="-140" kpx2="45"/>
+    <pair kern="-120" kpx2="65"/>
+    <pair kern="-120" kpx2="97"/>
+    <pair kern="-120" kpx2="117"/>
+    <pair kern="-120" kpx2="121"/>
+    <pair kern="-120" kpx2="46"/>
+    <pair kern="-120" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="46">
+    <pair kern="-100" kpx2="148"/>
+    <pair kern="-60" kpx2="32"/>
+    <pair kern="-100" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="110">
+    <pair kern="-10" kpx2="117"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="120">
+    <pair kern="-30" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="101">
+    <pair kern="-20" kpx2="119"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-15" kpx2="46"/>
+    <pair kern="-30" kpx2="120"/>
+    <pair kern="-30" kpx2="118"/>
+    <pair kern="-15" kpx2="44"/>
+  </kerning>
+</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/fonts/Symbol.xml b/src/codegen/fonts/Symbol.xml
new file mode 100644 (file)
index 0000000..241d4d2
--- /dev/null
@@ -0,0 +1,220 @@
+<!--
+  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$ -->
+<font-metrics>
+  <font-name>Symbol</font-name>
+  <class-name>Symbol</class-name>
+  <encoding>SymbolEncoding</encoding>
+  <cap-height>1010</cap-height>
+  <x-height>520</x-height>
+  <ascender>1010</ascender>
+  <descender>-293</descender>
+  <first-char>32</first-char>
+  <last-char>255</last-char>
+  <widths>
+    <char name="space" width="250"/>
+    <char name="exclam" width="333"/>
+    <char name="universal" width="713"/>
+    <char name="numbersign" width="500"/>
+    <char name="existential" width="549"/>
+    <char name="percent" width="833"/>
+    <char name="ampersand" width="778"/>
+    <char name="suchthat" width="439"/>
+    <char name="parenleft" width="333"/>
+    <char name="parenright" width="333"/>
+    <char name="asteriskmath" width="500"/>
+    <char name="plus" width="549"/>
+    <char name="comma" width="250"/>
+    <char name="minus" width="549"/>
+    <char name="period" width="250"/>
+    <char name="slash" width="278"/>
+    <char name="zero" width="500"/>
+    <char name="one" width="500"/>
+    <char name="two" width="500"/>
+    <char name="three" width="500"/>
+    <char name="four" width="500"/>
+    <char name="five" width="500"/>
+    <char name="six" width="500"/>
+    <char name="seven" width="500"/>
+    <char name="eight" width="500"/>
+    <char name="nine" width="500"/>
+    <char name="colon" width="278"/>
+    <char name="semicolon" width="278"/>
+    <char name="less" width="549"/>
+    <char name="equal" width="549"/>
+    <char name="greater" width="549"/>
+    <char name="question" width="444"/>
+    <char name="congruent" width="549"/>
+    <char name="Alpha" width="722"/>
+    <char name="Beta" width="667"/>
+    <char name="Chi" width="722"/>
+    <char name="Delta" width="612"/>
+    <char name="Epsilon" width="611"/>
+    <char name="Phi" width="763"/>
+    <char name="Gamma" width="603"/>
+    <char name="Eta" width="722"/>
+    <char name="Iota" width="333"/>
+    <char name="theta1" width="631"/>
+    <char name="Kappa" width="722"/>
+    <char name="Lambda" width="686"/>
+    <char name="Mu" width="889"/>
+    <char name="Nu" width="722"/>
+    <char name="Omicron" width="722"/>
+    <char name="Pi" width="768"/>
+    <char name="Theta" width="741"/>
+    <char name="Rho" width="556"/>
+    <char name="Sigma" width="592"/>
+    <char name="Tau" width="611"/>
+    <char name="Upsilon" width="690"/>
+    <char name="sigma1" width="439"/>
+    <char name="Omega" width="768"/>
+    <char name="Xi" width="645"/>
+    <char name="Psi" width="795"/>
+    <char name="Zeta" width="611"/>
+    <char name="bracketleft" width="333"/>
+    <char name="therefore" width="863"/>
+    <char name="bracketright" width="333"/>
+    <char name="perpendicular" width="658"/>
+    <char name="underscore" width="500"/>
+    <char name="radicalex" width="500"/>
+    <char name="alpha" width="631"/>
+    <char name="beta" width="549"/>
+    <char name="chi" width="549"/>
+    <char name="delta" width="494"/>
+    <char name="epsilon" width="439"/>
+    <char name="phi" width="521"/>
+    <char name="gamma" width="411"/>
+    <char name="eta" width="603"/>
+    <char name="iota" width="329"/>
+    <char name="phi1" width="603"/>
+    <char name="kappa" width="549"/>
+    <char name="lambda" width="549"/>
+    <char name="m" width="576"/>
+    <char name="mu" width="576"/>
+    <char name="nu" width="521"/>
+    <char name="omicron" width="549"/>
+    <char name="pi" width="549"/>
+    <char name="theta" width="521"/>
+    <char name="rho" width="549"/>
+    <char name="sigma" width="603"/>
+    <char name="tau" width="439"/>
+    <char name="upsilon" width="576"/>
+    <char name="omega1" width="713"/>
+    <char name="omega" width="686"/>
+    <char name="xi" width="493"/>
+    <char name="psi" width="686"/>
+    <char name="zeta" width="494"/>
+    <char name="braceleft" width="480"/>
+    <char name="bar" width="200"/>
+    <char name="braceright" width="480"/>
+    <char name="similar" width="549"/>
+    <char name="Upsilon1" width="620"/>
+    <char name="minute" width="247"/>
+    <char name="lessequal" width="549"/>
+    <char name="fraction" width="167"/>
+    <char name="infinity" width="713"/>
+    <char name="florin" width="500"/>
+    <char name="club" width="753"/>
+    <char name="diamond" width="753"/>
+    <char name="heart" width="753"/>
+    <char name="spade" width="753"/>
+    <char name="arrowboth" width="1042"/>
+    <char name="arrowleft" width="987"/>
+    <char name="arrowup" width="603"/>
+    <char name="arrowright" width="987"/>
+    <char name="arrowdown" width="603"/>
+    <char name="degree" width="400"/>
+    <char name="plusminus" width="549"/>
+    <char name="second" width="411"/>
+    <char name="greaterequal" width="549"/>
+    <char name="multiply" width="549"/>
+    <char name="proportional" width="713"/>
+    <char name="partialdiff" width="494"/>
+    <char name="bullet" width="460"/>
+    <char name="divide" width="549"/>
+    <char name="notequal" width="549"/>
+    <char name="equivalence" width="549"/>
+    <char name="approxequal" width="549"/>
+    <char name="ellipsis" width="1000"/>
+    <char name="arrowvertex" width="603"/>
+    <char name="arrowhorizex" width="1000"/>
+    <char name="carriagereturn" width="658"/>
+    <char name="aleph" width="823"/>
+    <char name="Ifraktur" width="686"/>
+    <char name="Rfraktur" width="795"/>
+    <char name="weierstrass" width="987"/>
+    <char name="circlemultiply" width="768"/>
+    <char name="circleplus" width="768"/>
+    <char name="emptyset" width="823"/>
+    <char name="intersection" width="768"/>
+    <char name="union" width="768"/>
+    <char name="propersuperset" width="713"/>
+    <char name="reflexsuperset" width="713"/>
+    <char name="notsubset" width="713"/>
+    <char name="propersubset" width="713"/>
+    <char name="reflexsubset" width="713"/>
+    <char name="element" width="713"/>
+    <char name="notelement" width="713"/>
+    <char name="angle" width="768"/>
+    <char name="gradient" width="713"/>
+    <char name="registerserif" width="790"/>
+    <char name="copyrightserif" width="790"/>
+    <char name="trademarkserif" width="890"/>
+    <char name="product" width="823"/>
+    <char name="radical" width="549"/>
+    <char name="dotmath" width="250"/>
+    <char name="logicalnot" width="713"/>
+    <char name="logicaland" width="603"/>
+    <char name="logicalor" width="603"/>
+    <char name="arrowdblboth" width="1042"/>
+    <char name="arrowdblleft" width="987"/>
+    <char name="arrowdblup" width="603"/>
+    <char name="arrowdblright" width="987"/>
+    <char name="arrowdbldown" width="603"/>
+    <char name="lozenge" width="494"/>
+    <char name="angleleft" width="329"/>
+    <char name="registersans" width="790"/>
+    <char name="copyrightsans" width="790"/>
+    <char name="trademarksans" width="786"/>
+    <char name="summation" width="713"/>
+    <char name="parenlefttp" width="384"/>
+    <char name="parenleftex" width="384"/>
+    <char name="parenleftbt" width="384"/>
+    <char name="bracketlefttp" width="384"/>
+    <char name="bracketleftex" width="384"/>
+    <char name="bracketleftbt" width="384"/>
+    <char name="bracelefttp" width="494"/>
+    <char name="braceleftmid" width="494"/>
+    <char name="braceleftbt" width="494"/>
+    <char name="braceex" width="494"/>
+    <char name="angleright" width="329"/>
+    <char name="integral" width="274"/>
+    <char name="integraltp" width="686"/>
+    <char name="integralex" width="686"/>
+    <char name="integralbt" width="686"/>
+    <char name="parenrighttp" width="384"/>
+    <char name="parenrightex" width="384"/>
+    <char name="parenrightbt" width="384"/>
+    <char name="bracketrighttp" width="384"/>
+    <char name="bracketrightex" width="384"/>
+    <char name="bracketrightbt" width="384"/>
+    <char name="bracerighttp" width="494"/>
+    <char name="bracerightmid" width="494"/>
+    <char name="bracerightbt" width="494"/>
+    <char name="apple" width="790"/>
+  </widths>
+</font-metrics>
diff --git a/src/codegen/fonts/TimesBold.xml b/src/codegen/fonts/TimesBold.xml
new file mode 100644 (file)
index 0000000..12bb175
--- /dev/null
@@ -0,0 +1,642 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Times-Bold</font-name>
+   <class-name>TimesBold</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>676</cap-height>
+   <x-height>461</x-height>
+   <ascender>676</ascender>
+   <descender>-205</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="722"/>
+      <char name="AE" width="1000"/>
+      <char name="Aacute" width="722"/>
+      <char name="Acircumflex" width="722"/>
+      <char name="Adieresis" width="722"/>
+      <char name="Agrave" width="722"/>
+      <char name="Aring" width="722"/>
+      <char name="Atilde" width="722"/>
+      <char name="B" width="667"/>
+      <char name="C" width="722"/>
+      <char name="Ccedilla" width="722"/>
+      <char name="D" width="722"/>
+      <char name="E" width="667"/>
+      <char name="Eacute" width="667"/>
+      <char name="Ecircumflex" width="667"/>
+      <char name="Edieresis" width="667"/>
+      <char name="Egrave" width="667"/>
+      <char name="Eth" width="722"/>
+      <char name="Euro" width="500"/>
+      <char name="F" width="611"/>
+      <char name="G" width="778"/>
+      <char name="H" width="778"/>
+      <char name="I" width="389"/>
+      <char name="Iacute" width="389"/>
+      <char name="Icircumflex" width="389"/>
+      <char name="Idieresis" width="389"/>
+      <char name="Igrave" width="389"/>
+      <char name="J" width="500"/>
+      <char name="K" width="778"/>
+      <char name="L" width="667"/>
+      <char name="Lslash" width="667"/>
+      <char name="M" width="944"/>
+      <char name="N" width="722"/>
+      <char name="Ntilde" width="722"/>
+      <char name="O" width="778"/>
+      <char name="OE" width="1000"/>
+      <char name="Oacute" width="778"/>
+      <char name="Ocircumflex" width="778"/>
+      <char name="Odieresis" width="778"/>
+      <char name="Ograve" width="778"/>
+      <char name="Oslash" width="778"/>
+      <char name="Otilde" width="778"/>
+      <char name="P" width="611"/>
+      <char name="Q" width="778"/>
+      <char name="R" width="722"/>
+      <char name="S" width="556"/>
+      <char name="Scaron" width="556"/>
+      <char name="T" width="667"/>
+      <char name="Thorn" width="611"/>
+      <char name="U" width="722"/>
+      <char name="Uacute" width="722"/>
+      <char name="Ucircumflex" width="722"/>
+      <char name="Udieresis" width="722"/>
+      <char name="Ugrave" width="722"/>
+      <char name="V" width="722"/>
+      <char name="W" width="1000"/>
+      <char name="X" width="722"/>
+      <char name="Y" width="722"/>
+      <char name="Yacute" width="722"/>
+      <char name="Ydieresis" width="722"/>
+      <char name="Z" width="667"/>
+      <char name="Zcaron" width="667"/>
+      <char name="a" width="500"/>
+      <char name="aacute" width="500"/>
+      <char name="acircumflex" width="500"/>
+      <char name="acute" width="333"/>
+      <char name="adieresis" width="500"/>
+      <char name="ae" width="722"/>
+      <char name="agrave" width="500"/>
+      <char name="ampersand" width="833"/>
+      <char name="aring" width="500"/>
+      <char name="asciicircum" width="581"/>
+      <char name="asciitilde" width="520"/>
+      <char name="asterisk" width="500"/>
+      <char name="at" width="930"/>
+      <char name="atilde" width="500"/>
+      <char name="b" width="556"/>
+      <char name="backslash" width="278"/>
+      <char name="bar" width="220"/>
+      <char name="braceleft" width="394"/>
+      <char name="braceright" width="394"/>
+      <char name="bracketleft" width="333"/>
+      <char name="bracketright" width="333"/>
+      <char name="breve" width="333"/>
+      <char name="brokenbar" width="220"/>
+      <char name="bullet" width="350"/>
+      <char name="c" width="444"/>
+      <char name="caron" width="333"/>
+      <char name="ccedilla" width="444"/>
+      <char name="cedilla" width="333"/>
+      <char name="cent" width="500"/>
+      <char name="circumflex" width="333"/>
+      <char name="colon" width="333"/>
+      <char name="comma" width="250"/>
+      <char name="copyright" width="747"/>
+      <char name="currency" width="500"/>
+      <char name="d" width="556"/>
+      <char name="dagger" width="500"/>
+      <char name="daggerdbl" width="500"/>
+      <char name="degree" width="400"/>
+      <char name="dieresis" width="333"/>
+      <char name="divide" width="570"/>
+      <char name="dollar" width="500"/>
+      <char name="dotaccent" width="333"/>
+      <char name="dotlessi" width="278"/>
+      <char name="e" width="444"/>
+      <char name="eacute" width="444"/>
+      <char name="ecircumflex" width="444"/>
+      <char name="edieresis" width="444"/>
+      <char name="egrave" width="444"/>
+      <char name="eight" width="500"/>
+      <char name="ellipsis" width="1000"/>
+      <char name="emdash" width="1000"/>
+      <char name="endash" width="500"/>
+      <char name="equal" width="570"/>
+      <char name="eth" width="500"/>
+      <char name="exclam" width="333"/>
+      <char name="exclamdown" width="333"/>
+      <char name="f" width="333"/>
+      <char name="fi" width="556"/>
+      <char name="five" width="500"/>
+      <char name="fl" width="556"/>
+      <char name="florin" width="500"/>
+      <char name="four" width="500"/>
+      <char name="fraction" width="167"/>
+      <char name="g" width="500"/>
+      <char name="germandbls" width="556"/>
+      <char name="grave" width="333"/>
+      <char name="greater" width="570"/>
+      <char name="guillemotleft" width="500"/>
+      <char name="guillemotright" width="500"/>
+      <char name="guilsinglleft" width="333"/>
+      <char name="guilsinglright" width="333"/>
+      <char name="h" width="556"/>
+      <char name="hungarumlaut" width="333"/>
+      <char name="hyphen" width="333"/>
+      <char name="i" width="278"/>
+      <char name="iacute" width="278"/>
+      <char name="icircumflex" width="278"/>
+      <char name="idieresis" width="278"/>
+      <char name="igrave" width="278"/>
+      <char name="j" width="333"/>
+      <char name="k" width="556"/>
+      <char name="l" width="278"/>
+      <char name="less" width="570"/>
+      <char name="logicalnot" width="570"/>
+      <char name="lslash" width="278"/>
+      <char name="m" width="833"/>
+      <char name="macron" width="333"/>
+      <char name="minus" width="324"/>
+      <char name="mu" width="556"/>
+      <char name="multiply" width="570"/>
+      <char name="n" width="556"/>
+      <char name="nine" width="500"/>
+      <char name="ntilde" width="556"/>
+      <char name="numbersign" width="500"/>
+      <char name="o" width="500"/>
+      <char name="oacute" width="500"/>
+      <char name="ocircumflex" width="500"/>
+      <char name="odieresis" width="500"/>
+      <char name="oe" width="722"/>
+      <char name="ogonek" width="333"/>
+      <char name="ograve" width="500"/>
+      <char name="one" width="500"/>
+      <char name="onehalf" width="750"/>
+      <char name="onequarter" width="750"/>
+      <char name="onesuperior" width="300"/>
+      <char name="ordfeminine" width="300"/>
+      <char name="ordmasculine" width="330"/>
+      <char name="oslash" width="500"/>
+      <char name="otilde" width="500"/>
+      <char name="p" width="556"/>
+      <char name="paragraph" width="540"/>
+      <char name="parenleft" width="333"/>
+      <char name="parenright" width="333"/>
+      <char name="percent" width="1000"/>
+      <char name="period" width="250"/>
+      <char name="periodcentered" width="250"/>
+      <char name="perthousand" width="1000"/>
+      <char name="plus" width="570"/>
+      <char name="plusminus" width="570"/>
+      <char name="q" width="556"/>
+      <char name="question" width="500"/>
+      <char name="questiondown" width="500"/>
+      <char name="quotedbl" width="555"/>
+      <char name="quotedblbase" width="500"/>
+      <char name="quotedblleft" width="500"/>
+      <char name="quotedblright" width="500"/>
+      <char name="quoteleft" width="333"/>
+      <char name="quoteright" width="333"/>
+      <char name="quotesinglbase" width="333"/>
+      <char name="quotesingle" width="278"/>
+      <char name="r" width="444"/>
+      <char name="registered" width="747"/>
+      <char name="ring" width="333"/>
+      <char name="s" width="389"/>
+      <char name="scaron" width="389"/>
+      <char name="section" width="500"/>
+      <char name="semicolon" width="333"/>
+      <char name="seven" width="500"/>
+      <char name="six" width="500"/>
+      <char name="slash" width="278"/>
+      <char name="space" width="250"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="250"/>
+      <char name="sterling" width="500"/>
+      <char name="t" width="333"/>
+      <char name="thorn" width="556"/>
+      <char name="three" width="500"/>
+      <char name="threequarters" width="750"/>
+      <char name="threesuperior" width="300"/>
+      <char name="tilde" width="333"/>
+      <char name="trademark" width="1000"/>
+      <char name="two" width="500"/>
+      <char name="twosuperior" width="300"/>
+      <char name="u" width="556"/>
+      <char name="uacute" width="556"/>
+      <char name="ucircumflex" width="556"/>
+      <char name="udieresis" width="556"/>
+      <char name="ugrave" width="556"/>
+      <char name="underscore" width="500"/>
+      <char name="v" width="500"/>
+      <char name="w" width="722"/>
+      <char name="x" width="500"/>
+      <char name="y" width="500"/>
+      <char name="yacute" width="500"/>
+      <char name="ydieresis" width="500"/>
+      <char name="yen" width="500"/>
+      <char name="z" width="444"/>
+      <char name="zcaron" width="444"/>
+      <char name="zero" width="500"/>
+   </widths>
+  <kerning kpx1="79">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-50" kpx2="87"/>
+    <pair kern="-50" kpx2="89"/>
+    <pair kern="-40" kpx2="84"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="-50" kpx2="86"/>
+    <pair kern="-40" kpx2="88"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="107">
+    <pair kern="-15" kpx2="111"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="-10" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="112">
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="80">
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="-10" kpx2="97"/>
+    <pair kern="-74" kpx2="65"/>
+    <pair kern="-110" kpx2="46"/>
+    <pair kern="-20" kpx2="101"/>
+    <pair kern="-92" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="86">
+    <pair kern="-100" kpx2="111"/>
+    <pair kern="-45" kpx2="79"/>
+    <pair kern="-92" kpx2="58"/>
+    <pair kern="-30" kpx2="71"/>
+    <pair kern="-129" kpx2="44"/>
+    <pair kern="-92" kpx2="59"/>
+    <pair kern="-74" kpx2="45"/>
+    <pair kern="-37" kpx2="105"/>
+    <pair kern="-135" kpx2="65"/>
+    <pair kern="-92" kpx2="97"/>
+    <pair kern="-92" kpx2="117"/>
+    <pair kern="-145" kpx2="46"/>
+    <pair kern="-100" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="118">
+    <pair kern="-10" kpx2="111"/>
+    <pair kern="-10" kpx2="97"/>
+    <pair kern="-70" kpx2="46"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-55" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="32">
+    <pair kern="-55" kpx2="65"/>
+    <pair kern="-30" kpx2="87"/>
+    <pair kern="0" kpx2="147"/>
+    <pair kern="-55" kpx2="89"/>
+    <pair kern="-30" kpx2="84"/>
+    <pair kern="0" kpx2="145"/>
+    <pair kern="-45" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="97">
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="116"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="0" kpx2="98"/>
+    <pair kern="-25" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="70">
+    <pair kern="-25" kpx2="111"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="0" kpx2="114"/>
+    <pair kern="-25" kpx2="97"/>
+    <pair kern="-90" kpx2="65"/>
+    <pair kern="-110" kpx2="46"/>
+    <pair kern="-25" kpx2="101"/>
+    <pair kern="-92" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="85">
+    <pair kern="-60" kpx2="65"/>
+    <pair kern="-50" kpx2="46"/>
+    <pair kern="-50" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="100">
+    <pair kern="0" kpx2="100"/>
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="83">
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="122">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="68">
+    <pair kern="-35" kpx2="65"/>
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-40" kpx2="89"/>
+    <pair kern="-20" kpx2="46"/>
+    <pair kern="-40" kpx2="86"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="146">
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-20" kpx2="100"/>
+    <pair kern="-74" kpx2="32"/>
+    <pair kern="-63" kpx2="146"/>
+    <pair kern="-20" kpx2="114"/>
+    <pair kern="0" kpx2="116"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="-37" kpx2="115"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="58">
+    <pair kern="0" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="119">
+    <pair kern="-10" kpx2="111"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-70" kpx2="46"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-55" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="75">
+    <pair kern="-25" kpx2="111"/>
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-15" kpx2="117"/>
+    <pair kern="-45" kpx2="121"/>
+    <pair kern="-25" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="82">
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-35" kpx2="87"/>
+    <pair kern="-30" kpx2="85"/>
+    <pair kern="-35" kpx2="89"/>
+    <pair kern="-40" kpx2="84"/>
+    <pair kern="-55" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="145">
+    <pair kern="-10" kpx2="65"/>
+    <pair kern="-63" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="103">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="0" kpx2="114"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-15" kpx2="46"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="66">
+    <pair kern="-30" kpx2="65"/>
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="98">
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="-10" kpx2="98"/>
+    <pair kern="-15" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="81">
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="-20" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="44">
+    <pair kern="-45" kpx2="148"/>
+    <pair kern="0" kpx2="32"/>
+    <pair kern="-55" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="102">
+    <pair kern="50" kpx2="148"/>
+    <pair kern="-25" kpx2="111"/>
+    <pair kern="-25" kpx2="105"/>
+    <pair kern="55" kpx2="146"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="0" kpx2="102"/>
+    <pair kern="-15" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-15" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="84">
+    <pair kern="-92" kpx2="111"/>
+    <pair kern="-18" kpx2="79"/>
+    <pair kern="-74" kpx2="119"/>
+    <pair kern="-74" kpx2="58"/>
+    <pair kern="-74" kpx2="114"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-74" kpx2="44"/>
+    <pair kern="-74" kpx2="59"/>
+    <pair kern="-92" kpx2="45"/>
+    <pair kern="-18" kpx2="105"/>
+    <pair kern="-90" kpx2="65"/>
+    <pair kern="-92" kpx2="97"/>
+    <pair kern="-92" kpx2="117"/>
+    <pair kern="-74" kpx2="121"/>
+    <pair kern="-90" kpx2="46"/>
+    <pair kern="-92" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="121">
+    <pair kern="-25" kpx2="111"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="-70" kpx2="46"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-55" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="120">
+    <pair kern="0" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="101">
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="0" kpx2="98"/>
+    <pair kern="0" kpx2="120"/>
+    <pair kern="-15" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="99">
+    <pair kern="0" kpx2="107"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="87">
+    <pair kern="-75" kpx2="111"/>
+    <pair kern="-10" kpx2="79"/>
+    <pair kern="-55" kpx2="58"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-92" kpx2="44"/>
+    <pair kern="-55" kpx2="59"/>
+    <pair kern="-37" kpx2="45"/>
+    <pair kern="-18" kpx2="105"/>
+    <pair kern="-120" kpx2="65"/>
+    <pair kern="-65" kpx2="97"/>
+    <pair kern="-50" kpx2="117"/>
+    <pair kern="-60" kpx2="121"/>
+    <pair kern="-92" kpx2="46"/>
+    <pair kern="-65" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="104">
+    <pair kern="-15" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="71">
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="105">
+    <pair kern="-10" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="65">
+    <pair kern="-45" kpx2="79"/>
+    <pair kern="-74" kpx2="146"/>
+    <pair kern="-90" kpx2="119"/>
+    <pair kern="-130" kpx2="87"/>
+    <pair kern="-55" kpx2="67"/>
+    <pair kern="-25" kpx2="112"/>
+    <pair kern="-45" kpx2="81"/>
+    <pair kern="-55" kpx2="71"/>
+    <pair kern="-145" kpx2="86"/>
+    <pair kern="-100" kpx2="118"/>
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-50" kpx2="85"/>
+    <pair kern="-50" kpx2="117"/>
+    <pair kern="-100" kpx2="89"/>
+    <pair kern="-74" kpx2="121"/>
+    <pair kern="-95" kpx2="84"/>
+  </kerning>
+  <kerning kpx1="147">
+    <pair kern="-10" kpx2="65"/>
+    <pair kern="0" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="78">
+    <pair kern="-20" kpx2="65"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="115">
+    <pair kern="0" kpx2="119"/>
+  </kerning>
+  <kerning kpx1="111">
+    <pair kern="-10" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="0" kpx2="120"/>
+    <pair kern="-10" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="114">
+    <pair kern="-18" kpx2="111"/>
+    <pair kern="0" kpx2="100"/>
+    <pair kern="0" kpx2="107"/>
+    <pair kern="0" kpx2="114"/>
+    <pair kern="-18" kpx2="99"/>
+    <pair kern="-10" kpx2="112"/>
+    <pair kern="-10" kpx2="103"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="-18" kpx2="113"/>
+    <pair kern="-10" kpx2="118"/>
+    <pair kern="-92" kpx2="44"/>
+    <pair kern="-37" kpx2="45"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="0" kpx2="109"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="116"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-100" kpx2="46"/>
+    <pair kern="-15" kpx2="110"/>
+    <pair kern="0" kpx2="115"/>
+    <pair kern="-18" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="108">
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="76">
+    <pair kern="-20" kpx2="148"/>
+    <pair kern="-110" kpx2="146"/>
+    <pair kern="-92" kpx2="87"/>
+    <pair kern="-92" kpx2="89"/>
+    <pair kern="-55" kpx2="121"/>
+    <pair kern="-92" kpx2="84"/>
+    <pair kern="-92" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="148">
+    <pair kern="0" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="109">
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="89">
+    <pair kern="-111" kpx2="111"/>
+    <pair kern="-92" kpx2="45"/>
+    <pair kern="-37" kpx2="105"/>
+    <pair kern="-35" kpx2="79"/>
+    <pair kern="-92" kpx2="58"/>
+    <pair kern="-85" kpx2="97"/>
+    <pair kern="-110" kpx2="65"/>
+    <pair kern="-92" kpx2="117"/>
+    <pair kern="-92" kpx2="46"/>
+    <pair kern="-111" kpx2="101"/>
+    <pair kern="-92" kpx2="59"/>
+    <pair kern="-92" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="74">
+    <pair kern="-15" kpx2="111"/>
+    <pair kern="-15" kpx2="97"/>
+    <pair kern="-30" kpx2="65"/>
+    <pair kern="-15" kpx2="117"/>
+    <pair kern="-20" kpx2="46"/>
+    <pair kern="-15" kpx2="101"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="46">
+    <pair kern="-55" kpx2="148"/>
+    <pair kern="-55" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="110">
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-40" kpx2="118"/>
+  </kerning>
+</font-metrics>
diff --git a/src/codegen/fonts/TimesBoldItalic.xml b/src/codegen/fonts/TimesBoldItalic.xml
new file mode 100644 (file)
index 0000000..540e891
--- /dev/null
@@ -0,0 +1,642 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Times-BoldItalic</font-name>
+   <class-name>TimesBoldItalic</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>669</cap-height>
+   <x-height>462</x-height>
+   <ascender>699</ascender>
+   <descender>-205</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="667"/>
+      <char name="AE" width="944"/>
+      <char name="Aacute" width="667"/>
+      <char name="Acircumflex" width="667"/>
+      <char name="Adieresis" width="667"/>
+      <char name="Agrave" width="667"/>
+      <char name="Aring" width="667"/>
+      <char name="Atilde" width="667"/>
+      <char name="B" width="667"/>
+      <char name="C" width="667"/>
+      <char name="Ccedilla" width="667"/>
+      <char name="D" width="722"/>
+      <char name="E" width="667"/>
+      <char name="Eacute" width="667"/>
+      <char name="Ecircumflex" width="667"/>
+      <char name="Edieresis" width="667"/>
+      <char name="Egrave" width="667"/>
+      <char name="Eth" width="722"/>
+      <char name="Euro" width="500"/>
+      <char name="F" width="667"/>
+      <char name="G" width="722"/>
+      <char name="H" width="778"/>
+      <char name="I" width="389"/>
+      <char name="Iacute" width="389"/>
+      <char name="Icircumflex" width="389"/>
+      <char name="Idieresis" width="389"/>
+      <char name="Igrave" width="389"/>
+      <char name="J" width="500"/>
+      <char name="K" width="667"/>
+      <char name="L" width="611"/>
+      <char name="Lslash" width="611"/>
+      <char name="M" width="889"/>
+      <char name="N" width="722"/>
+      <char name="Ntilde" width="722"/>
+      <char name="O" width="722"/>
+      <char name="OE" width="944"/>
+      <char name="Oacute" width="722"/>
+      <char name="Ocircumflex" width="722"/>
+      <char name="Odieresis" width="722"/>
+      <char name="Ograve" width="722"/>
+      <char name="Oslash" width="722"/>
+      <char name="Otilde" width="722"/>
+      <char name="P" width="611"/>
+      <char name="Q" width="722"/>
+      <char name="R" width="667"/>
+      <char name="S" width="556"/>
+      <char name="Scaron" width="556"/>
+      <char name="T" width="611"/>
+      <char name="Thorn" width="611"/>
+      <char name="U" width="722"/>
+      <char name="Uacute" width="722"/>
+      <char name="Ucircumflex" width="722"/>
+      <char name="Udieresis" width="722"/>
+      <char name="Ugrave" width="722"/>
+      <char name="V" width="667"/>
+      <char name="W" width="889"/>
+      <char name="X" width="667"/>
+      <char name="Y" width="611"/>
+      <char name="Yacute" width="611"/>
+      <char name="Ydieresis" width="611"/>
+      <char name="Z" width="611"/>
+      <char name="Zcaron" width="611"/>
+      <char name="a" width="500"/>
+      <char name="aacute" width="500"/>
+      <char name="acircumflex" width="500"/>
+      <char name="acute" width="333"/>
+      <char name="adieresis" width="500"/>
+      <char name="ae" width="722"/>
+      <char name="agrave" width="500"/>
+      <char name="ampersand" width="778"/>
+      <char name="aring" width="500"/>
+      <char name="asciicircum" width="570"/>
+      <char name="asciitilde" width="570"/>
+      <char name="asterisk" width="500"/>
+      <char name="at" width="832"/>
+      <char name="atilde" width="500"/>
+      <char name="b" width="500"/>
+      <char name="backslash" width="278"/>
+      <char name="bar" width="220"/>
+      <char name="braceleft" width="348"/>
+      <char name="braceright" width="348"/>
+      <char name="bracketleft" width="333"/>
+      <char name="bracketright" width="333"/>
+      <char name="breve" width="333"/>
+      <char name="brokenbar" width="220"/>
+      <char name="bullet" width="350"/>
+      <char name="c" width="444"/>
+      <char name="caron" width="333"/>
+      <char name="ccedilla" width="444"/>
+      <char name="cedilla" width="333"/>
+      <char name="cent" width="500"/>
+      <char name="circumflex" width="333"/>
+      <char name="colon" width="333"/>
+      <char name="comma" width="250"/>
+      <char name="copyright" width="747"/>
+      <char name="currency" width="500"/>
+      <char name="d" width="500"/>
+      <char name="dagger" width="500"/>
+      <char name="daggerdbl" width="500"/>
+      <char name="degree" width="400"/>
+      <char name="dieresis" width="333"/>
+      <char name="divide" width="570"/>
+      <char name="dollar" width="500"/>
+      <char name="dotaccent" width="333"/>
+      <char name="dotlessi" width="278"/>
+      <char name="e" width="444"/>
+      <char name="eacute" width="444"/>
+      <char name="ecircumflex" width="444"/>
+      <char name="edieresis" width="444"/>
+      <char name="egrave" width="444"/>
+      <char name="eight" width="500"/>
+      <char name="ellipsis" width="1000"/>
+      <char name="emdash" width="1000"/>
+      <char name="endash" width="500"/>
+      <char name="equal" width="570"/>
+      <char name="eth" width="500"/>
+      <char name="exclam" width="389"/>
+      <char name="exclamdown" width="389"/>
+      <char name="f" width="333"/>
+      <char name="fi" width="556"/>
+      <char name="five" width="500"/>
+      <char name="fl" width="556"/>
+      <char name="florin" width="500"/>
+      <char name="four" width="500"/>
+      <char name="fraction" width="167"/>
+      <char name="g" width="500"/>
+      <char name="germandbls" width="500"/>
+      <char name="grave" width="333"/>
+      <char name="greater" width="570"/>
+      <char name="guillemotleft" width="500"/>
+      <char name="guillemotright" width="500"/>
+      <char name="guilsinglleft" width="333"/>
+      <char name="guilsinglright" width="333"/>
+      <char name="h" width="556"/>
+      <char name="hungarumlaut" width="333"/>
+      <char name="hyphen" width="333"/>
+      <char name="i" width="278"/>
+      <char name="iacute" width="278"/>
+      <char name="icircumflex" width="278"/>
+      <char name="idieresis" width="278"/>
+      <char name="igrave" width="278"/>
+      <char name="j" width="278"/>
+      <char name="k" width="500"/>
+      <char name="l" width="278"/>
+      <char name="less" width="570"/>
+      <char name="logicalnot" width="606"/>
+      <char name="lslash" width="278"/>
+      <char name="m" width="778"/>
+      <char name="macron" width="333"/>
+      <char name="minus" width="330"/>
+      <char name="mu" width="576"/>
+      <char name="multiply" width="570"/>
+      <char name="n" width="556"/>
+      <char name="nine" width="500"/>
+      <char name="ntilde" width="556"/>
+      <char name="numbersign" width="500"/>
+      <char name="o" width="500"/>
+      <char name="oacute" width="500"/>
+      <char name="ocircumflex" width="500"/>
+      <char name="odieresis" width="500"/>
+      <char name="oe" width="722"/>
+      <char name="ogonek" width="333"/>
+      <char name="ograve" width="500"/>
+      <char name="one" width="500"/>
+      <char name="onehalf" width="750"/>
+      <char name="onequarter" width="750"/>
+      <char name="onesuperior" width="300"/>
+      <char name="ordfeminine" width="266"/>
+      <char name="ordmasculine" width="300"/>
+      <char name="oslash" width="500"/>
+      <char name="otilde" width="500"/>
+      <char name="p" width="500"/>
+      <char name="paragraph" width="500"/>
+      <char name="parenleft" width="333"/>
+      <char name="parenright" width="333"/>
+      <char name="percent" width="833"/>
+      <char name="period" width="250"/>
+      <char name="periodcentered" width="250"/>
+      <char name="perthousand" width="1000"/>
+      <char name="plus" width="570"/>
+      <char name="plusminus" width="570"/>
+      <char name="q" width="500"/>
+      <char name="question" width="500"/>
+      <char name="questiondown" width="500"/>
+      <char name="quotedbl" width="555"/>
+      <char name="quotedblbase" width="500"/>
+      <char name="quotedblleft" width="500"/>
+      <char name="quotedblright" width="500"/>
+      <char name="quoteleft" width="333"/>
+      <char name="quoteright" width="333"/>
+      <char name="quotesinglbase" width="333"/>
+      <char name="quotesingle" width="278"/>
+      <char name="r" width="389"/>
+      <char name="registered" width="747"/>
+      <char name="ring" width="333"/>
+      <char name="s" width="389"/>
+      <char name="scaron" width="389"/>
+      <char name="section" width="500"/>
+      <char name="semicolon" width="333"/>
+      <char name="seven" width="500"/>
+      <char name="six" width="500"/>
+      <char name="slash" width="278"/>
+      <char name="space" width="250"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="250"/>
+      <char name="sterling" width="500"/>
+      <char name="t" width="278"/>
+      <char name="thorn" width="500"/>
+      <char name="three" width="500"/>
+      <char name="threequarters" width="750"/>
+      <char name="threesuperior" width="300"/>
+      <char name="tilde" width="333"/>
+      <char name="trademark" width="1000"/>
+      <char name="two" width="500"/>
+      <char name="twosuperior" width="300"/>
+      <char name="u" width="556"/>
+      <char name="uacute" width="556"/>
+      <char name="ucircumflex" width="556"/>
+      <char name="udieresis" width="556"/>
+      <char name="ugrave" width="556"/>
+      <char name="underscore" width="500"/>
+      <char name="v" width="444"/>
+      <char name="w" width="667"/>
+      <char name="x" width="500"/>
+      <char name="y" width="444"/>
+      <char name="yacute" width="444"/>
+      <char name="ydieresis" width="444"/>
+      <char name="yen" width="500"/>
+      <char name="z" width="389"/>
+      <char name="zcaron" width="389"/>
+      <char name="zero" width="500"/>
+   </widths>
+  <kerning kpx1="79">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-50" kpx2="87"/>
+    <pair kern="-50" kpx2="89"/>
+    <pair kern="-40" kpx2="84"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="-50" kpx2="86"/>
+    <pair kern="-40" kpx2="88"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="107">
+    <pair kern="-10" kpx2="111"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-30" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="112">
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="80">
+    <pair kern="-55" kpx2="111"/>
+    <pair kern="-40" kpx2="97"/>
+    <pair kern="-85" kpx2="65"/>
+    <pair kern="-129" kpx2="46"/>
+    <pair kern="-50" kpx2="101"/>
+    <pair kern="-129" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="86">
+    <pair kern="-111" kpx2="111"/>
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-74" kpx2="58"/>
+    <pair kern="-10" kpx2="71"/>
+    <pair kern="-129" kpx2="44"/>
+    <pair kern="-74" kpx2="59"/>
+    <pair kern="-70" kpx2="45"/>
+    <pair kern="-55" kpx2="105"/>
+    <pair kern="-85" kpx2="65"/>
+    <pair kern="-111" kpx2="97"/>
+    <pair kern="-55" kpx2="117"/>
+    <pair kern="-129" kpx2="46"/>
+    <pair kern="-111" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="118">
+    <pair kern="-15" kpx2="111"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="-37" kpx2="46"/>
+    <pair kern="-15" kpx2="101"/>
+    <pair kern="-37" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="32">
+    <pair kern="-37" kpx2="65"/>
+    <pair kern="-70" kpx2="87"/>
+    <pair kern="0" kpx2="147"/>
+    <pair kern="-70" kpx2="89"/>
+    <pair kern="0" kpx2="84"/>
+    <pair kern="0" kpx2="145"/>
+    <pair kern="-70" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="97">
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="116"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="0" kpx2="98"/>
+    <pair kern="0" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="70">
+    <pair kern="-70" kpx2="111"/>
+    <pair kern="-40" kpx2="105"/>
+    <pair kern="-50" kpx2="114"/>
+    <pair kern="-95" kpx2="97"/>
+    <pair kern="-100" kpx2="65"/>
+    <pair kern="-129" kpx2="46"/>
+    <pair kern="-100" kpx2="101"/>
+    <pair kern="-129" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="85">
+    <pair kern="-45" kpx2="65"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="100">
+    <pair kern="0" kpx2="100"/>
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="83">
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="122">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="68">
+    <pair kern="-25" kpx2="65"/>
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-50" kpx2="89"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="-50" kpx2="86"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="146">
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-15" kpx2="100"/>
+    <pair kern="-74" kpx2="32"/>
+    <pair kern="-74" kpx2="146"/>
+    <pair kern="-15" kpx2="114"/>
+    <pair kern="-37" kpx2="116"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="-74" kpx2="115"/>
+    <pair kern="-15" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="58">
+    <pair kern="0" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="119">
+    <pair kern="-15" kpx2="111"/>
+    <pair kern="-10" kpx2="97"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-37" kpx2="46"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-37" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="75">
+    <pair kern="-25" kpx2="111"/>
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-20" kpx2="121"/>
+    <pair kern="-25" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="82">
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-18" kpx2="87"/>
+    <pair kern="-40" kpx2="85"/>
+    <pair kern="-18" kpx2="89"/>
+    <pair kern="-30" kpx2="84"/>
+    <pair kern="-18" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="145">
+    <pair kern="0" kpx2="65"/>
+    <pair kern="-74" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="103">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="0" kpx2="114"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="66">
+    <pair kern="-25" kpx2="65"/>
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="98">
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="-10" kpx2="98"/>
+    <pair kern="0" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="81">
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="44">
+    <pair kern="-95" kpx2="148"/>
+    <pair kern="0" kpx2="32"/>
+    <pair kern="-95" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="102">
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-10" kpx2="111"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="55" kpx2="146"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="-18" kpx2="102"/>
+    <pair kern="-10" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-10" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="84">
+    <pair kern="-95" kpx2="111"/>
+    <pair kern="-18" kpx2="79"/>
+    <pair kern="-37" kpx2="119"/>
+    <pair kern="-74" kpx2="58"/>
+    <pair kern="-37" kpx2="114"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-92" kpx2="44"/>
+    <pair kern="-74" kpx2="59"/>
+    <pair kern="-92" kpx2="45"/>
+    <pair kern="-37" kpx2="105"/>
+    <pair kern="-55" kpx2="65"/>
+    <pair kern="-92" kpx2="97"/>
+    <pair kern="-37" kpx2="117"/>
+    <pair kern="-37" kpx2="121"/>
+    <pair kern="-92" kpx2="46"/>
+    <pair kern="-92" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="121">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="-37" kpx2="46"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-37" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="120">
+    <pair kern="-10" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="101">
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="-10" kpx2="98"/>
+    <pair kern="0" kpx2="120"/>
+    <pair kern="0" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="99">
+    <pair kern="-10" kpx2="107"/>
+    <pair kern="-10" kpx2="104"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="87">
+    <pair kern="-80" kpx2="111"/>
+    <pair kern="-15" kpx2="79"/>
+    <pair kern="-55" kpx2="58"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-74" kpx2="44"/>
+    <pair kern="-55" kpx2="59"/>
+    <pair kern="-50" kpx2="45"/>
+    <pair kern="-37" kpx2="105"/>
+    <pair kern="-74" kpx2="65"/>
+    <pair kern="-85" kpx2="97"/>
+    <pair kern="-55" kpx2="117"/>
+    <pair kern="-55" kpx2="121"/>
+    <pair kern="-74" kpx2="46"/>
+    <pair kern="-90" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="104">
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="71">
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="105">
+    <pair kern="0" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="65">
+    <pair kern="-50" kpx2="79"/>
+    <pair kern="-74" kpx2="146"/>
+    <pair kern="-74" kpx2="119"/>
+    <pair kern="-100" kpx2="87"/>
+    <pair kern="-65" kpx2="67"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="-55" kpx2="81"/>
+    <pair kern="-60" kpx2="71"/>
+    <pair kern="-95" kpx2="86"/>
+    <pair kern="-74" kpx2="118"/>
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-50" kpx2="85"/>
+    <pair kern="-30" kpx2="117"/>
+    <pair kern="-70" kpx2="89"/>
+    <pair kern="-74" kpx2="121"/>
+    <pair kern="-55" kpx2="84"/>
+  </kerning>
+  <kerning kpx1="147">
+    <pair kern="0" kpx2="65"/>
+    <pair kern="0" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="78">
+    <pair kern="-30" kpx2="65"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="115">
+    <pair kern="0" kpx2="119"/>
+  </kerning>
+  <kerning kpx1="111">
+    <pair kern="-25" kpx2="119"/>
+    <pair kern="-10" kpx2="121"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="-10" kpx2="120"/>
+    <pair kern="-15" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="114">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="100"/>
+    <pair kern="0" kpx2="107"/>
+    <pair kern="0" kpx2="114"/>
+    <pair kern="0" kpx2="99"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="113"/>
+    <pair kern="0" kpx2="118"/>
+    <pair kern="-65" kpx2="44"/>
+    <pair kern="0" kpx2="45"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="0" kpx2="109"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="116"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-65" kpx2="46"/>
+    <pair kern="0" kpx2="110"/>
+    <pair kern="0" kpx2="115"/>
+    <pair kern="0" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="108">
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="76">
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-55" kpx2="146"/>
+    <pair kern="-37" kpx2="87"/>
+    <pair kern="-37" kpx2="89"/>
+    <pair kern="-37" kpx2="121"/>
+    <pair kern="-18" kpx2="84"/>
+    <pair kern="-37" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="148">
+    <pair kern="0" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="109">
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="89">
+    <pair kern="-111" kpx2="111"/>
+    <pair kern="-92" kpx2="45"/>
+    <pair kern="-55" kpx2="105"/>
+    <pair kern="-25" kpx2="79"/>
+    <pair kern="-92" kpx2="58"/>
+    <pair kern="-92" kpx2="97"/>
+    <pair kern="-74" kpx2="65"/>
+    <pair kern="-92" kpx2="117"/>
+    <pair kern="-74" kpx2="46"/>
+    <pair kern="-111" kpx2="101"/>
+    <pair kern="-92" kpx2="59"/>
+    <pair kern="-92" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="74">
+    <pair kern="-40" kpx2="111"/>
+    <pair kern="-40" kpx2="97"/>
+    <pair kern="-25" kpx2="65"/>
+    <pair kern="-40" kpx2="117"/>
+    <pair kern="-10" kpx2="46"/>
+    <pair kern="-40" kpx2="101"/>
+    <pair kern="-10" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="46">
+    <pair kern="-95" kpx2="148"/>
+    <pair kern="-95" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="110">
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-40" kpx2="118"/>
+  </kerning>
+</font-metrics>
diff --git a/src/codegen/fonts/TimesItalic.xml b/src/codegen/fonts/TimesItalic.xml
new file mode 100644 (file)
index 0000000..4868aed
--- /dev/null
@@ -0,0 +1,642 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Times-Italic</font-name>
+   <class-name>TimesItalic</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>653</cap-height>
+   <x-height>441</x-height>
+   <ascender>683</ascender>
+   <descender>-205</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="611"/>
+      <char name="AE" width="889"/>
+      <char name="Aacute" width="611"/>
+      <char name="Acircumflex" width="611"/>
+      <char name="Adieresis" width="611"/>
+      <char name="Agrave" width="611"/>
+      <char name="Aring" width="611"/>
+      <char name="Atilde" width="611"/>
+      <char name="B" width="611"/>
+      <char name="C" width="667"/>
+      <char name="Ccedilla" width="667"/>
+      <char name="D" width="722"/>
+      <char name="E" width="611"/>
+      <char name="Eacute" width="611"/>
+      <char name="Ecircumflex" width="611"/>
+      <char name="Edieresis" width="611"/>
+      <char name="Egrave" width="611"/>
+      <char name="Eth" width="722"/>
+      <char name="Euro" width="500"/>
+      <char name="F" width="611"/>
+      <char name="G" width="722"/>
+      <char name="H" width="722"/>
+      <char name="I" width="333"/>
+      <char name="Iacute" width="333"/>
+      <char name="Icircumflex" width="333"/>
+      <char name="Idieresis" width="333"/>
+      <char name="Igrave" width="333"/>
+      <char name="J" width="444"/>
+      <char name="K" width="667"/>
+      <char name="L" width="556"/>
+      <char name="Lslash" width="556"/>
+      <char name="M" width="833"/>
+      <char name="N" width="667"/>
+      <char name="Ntilde" width="667"/>
+      <char name="O" width="722"/>
+      <char name="OE" width="944"/>
+      <char name="Oacute" width="722"/>
+      <char name="Ocircumflex" width="722"/>
+      <char name="Odieresis" width="722"/>
+      <char name="Ograve" width="722"/>
+      <char name="Oslash" width="722"/>
+      <char name="Otilde" width="722"/>
+      <char name="P" width="611"/>
+      <char name="Q" width="722"/>
+      <char name="R" width="611"/>
+      <char name="S" width="500"/>
+      <char name="Scaron" width="500"/>
+      <char name="T" width="556"/>
+      <char name="Thorn" width="611"/>
+      <char name="U" width="722"/>
+      <char name="Uacute" width="722"/>
+      <char name="Ucircumflex" width="722"/>
+      <char name="Udieresis" width="722"/>
+      <char name="Ugrave" width="722"/>
+      <char name="V" width="611"/>
+      <char name="W" width="833"/>
+      <char name="X" width="611"/>
+      <char name="Y" width="556"/>
+      <char name="Yacute" width="556"/>
+      <char name="Ydieresis" width="556"/>
+      <char name="Z" width="556"/>
+      <char name="Zcaron" width="556"/>
+      <char name="a" width="500"/>
+      <char name="aacute" width="500"/>
+      <char name="acircumflex" width="500"/>
+      <char name="acute" width="333"/>
+      <char name="adieresis" width="500"/>
+      <char name="ae" width="667"/>
+      <char name="agrave" width="500"/>
+      <char name="ampersand" width="778"/>
+      <char name="aring" width="500"/>
+      <char name="asciicircum" width="422"/>
+      <char name="asciitilde" width="541"/>
+      <char name="asterisk" width="500"/>
+      <char name="at" width="920"/>
+      <char name="atilde" width="500"/>
+      <char name="b" width="500"/>
+      <char name="backslash" width="278"/>
+      <char name="bar" width="275"/>
+      <char name="braceleft" width="400"/>
+      <char name="braceright" width="400"/>
+      <char name="bracketleft" width="389"/>
+      <char name="bracketright" width="389"/>
+      <char name="breve" width="333"/>
+      <char name="brokenbar" width="275"/>
+      <char name="bullet" width="350"/>
+      <char name="c" width="444"/>
+      <char name="caron" width="333"/>
+      <char name="ccedilla" width="444"/>
+      <char name="cedilla" width="333"/>
+      <char name="cent" width="500"/>
+      <char name="circumflex" width="333"/>
+      <char name="colon" width="333"/>
+      <char name="comma" width="250"/>
+      <char name="copyright" width="760"/>
+      <char name="currency" width="500"/>
+      <char name="d" width="500"/>
+      <char name="dagger" width="500"/>
+      <char name="daggerdbl" width="500"/>
+      <char name="degree" width="400"/>
+      <char name="dieresis" width="333"/>
+      <char name="divide" width="675"/>
+      <char name="dollar" width="500"/>
+      <char name="dotaccent" width="333"/>
+      <char name="dotlessi" width="278"/>
+      <char name="e" width="444"/>
+      <char name="eacute" width="444"/>
+      <char name="ecircumflex" width="444"/>
+      <char name="edieresis" width="444"/>
+      <char name="egrave" width="444"/>
+      <char name="eight" width="500"/>
+      <char name="ellipsis" width="889"/>
+      <char name="emdash" width="889"/>
+      <char name="endash" width="500"/>
+      <char name="equal" width="675"/>
+      <char name="eth" width="500"/>
+      <char name="exclam" width="333"/>
+      <char name="exclamdown" width="389"/>
+      <char name="f" width="278"/>
+      <char name="fi" width="500"/>
+      <char name="five" width="500"/>
+      <char name="fl" width="500"/>
+      <char name="florin" width="500"/>
+      <char name="four" width="500"/>
+      <char name="fraction" width="167"/>
+      <char name="g" width="500"/>
+      <char name="germandbls" width="500"/>
+      <char name="grave" width="333"/>
+      <char name="greater" width="675"/>
+      <char name="guillemotleft" width="500"/>
+      <char name="guillemotright" width="500"/>
+      <char name="guilsinglleft" width="333"/>
+      <char name="guilsinglright" width="333"/>
+      <char name="h" width="500"/>
+      <char name="hungarumlaut" width="333"/>
+      <char name="hyphen" width="333"/>
+      <char name="i" width="278"/>
+      <char name="iacute" width="278"/>
+      <char name="icircumflex" width="278"/>
+      <char name="idieresis" width="278"/>
+      <char name="igrave" width="278"/>
+      <char name="j" width="278"/>
+      <char name="k" width="444"/>
+      <char name="l" width="278"/>
+      <char name="less" width="675"/>
+      <char name="logicalnot" width="675"/>
+      <char name="lslash" width="278"/>
+      <char name="m" width="722"/>
+      <char name="macron" width="333"/>
+      <char name="minus" width="675"/>
+      <char name="mu" width="500"/>
+      <char name="multiply" width="675"/>
+      <char name="n" width="500"/>
+      <char name="nine" width="500"/>
+      <char name="ntilde" width="500"/>
+      <char name="numbersign" width="500"/>
+      <char name="o" width="500"/>
+      <char name="oacute" width="500"/>
+      <char name="ocircumflex" width="500"/>
+      <char name="odieresis" width="500"/>
+      <char name="oe" width="667"/>
+      <char name="ogonek" width="333"/>
+      <char name="ograve" width="500"/>
+      <char name="one" width="500"/>
+      <char name="onehalf" width="750"/>
+      <char name="onequarter" width="750"/>
+      <char name="onesuperior" width="300"/>
+      <char name="ordfeminine" width="276"/>
+      <char name="ordmasculine" width="310"/>
+      <char name="oslash" width="500"/>
+      <char name="otilde" width="500"/>
+      <char name="p" width="500"/>
+      <char name="paragraph" width="523"/>
+      <char name="parenleft" width="333"/>
+      <char name="parenright" width="333"/>
+      <char name="percent" width="833"/>
+      <char name="period" width="250"/>
+      <char name="periodcentered" width="250"/>
+      <char name="perthousand" width="1000"/>
+      <char name="plus" width="675"/>
+      <char name="plusminus" width="675"/>
+      <char name="q" width="500"/>
+      <char name="question" width="500"/>
+      <char name="questiondown" width="500"/>
+      <char name="quotedbl" width="420"/>
+      <char name="quotedblbase" width="556"/>
+      <char name="quotedblleft" width="556"/>
+      <char name="quotedblright" width="556"/>
+      <char name="quoteleft" width="333"/>
+      <char name="quoteright" width="333"/>
+      <char name="quotesinglbase" width="333"/>
+      <char name="quotesingle" width="214"/>
+      <char name="r" width="389"/>
+      <char name="registered" width="760"/>
+      <char name="ring" width="333"/>
+      <char name="s" width="389"/>
+      <char name="scaron" width="389"/>
+      <char name="section" width="500"/>
+      <char name="semicolon" width="333"/>
+      <char name="seven" width="500"/>
+      <char name="six" width="500"/>
+      <char name="slash" width="278"/>
+      <char name="space" width="250"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="250"/>
+      <char name="sterling" width="500"/>
+      <char name="t" width="278"/>
+      <char name="thorn" width="500"/>
+      <char name="three" width="500"/>
+      <char name="threequarters" width="750"/>
+      <char name="threesuperior" width="300"/>
+      <char name="tilde" width="333"/>
+      <char name="trademark" width="980"/>
+      <char name="two" width="500"/>
+      <char name="twosuperior" width="300"/>
+      <char name="u" width="500"/>
+      <char name="uacute" width="500"/>
+      <char name="ucircumflex" width="500"/>
+      <char name="udieresis" width="500"/>
+      <char name="ugrave" width="500"/>
+      <char name="underscore" width="500"/>
+      <char name="v" width="444"/>
+      <char name="w" width="667"/>
+      <char name="x" width="444"/>
+      <char name="y" width="444"/>
+      <char name="yacute" width="444"/>
+      <char name="ydieresis" width="444"/>
+      <char name="yen" width="500"/>
+      <char name="z" width="389"/>
+      <char name="zcaron" width="389"/>
+      <char name="zero" width="500"/>
+   </widths>
+  <kerning kpx1="79">
+    <pair kern="-55" kpx2="65"/>
+    <pair kern="-50" kpx2="87"/>
+    <pair kern="-50" kpx2="89"/>
+    <pair kern="-40" kpx2="84"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="-50" kpx2="86"/>
+    <pair kern="-40" kpx2="88"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="107">
+    <pair kern="-10" kpx2="111"/>
+    <pair kern="-10" kpx2="121"/>
+    <pair kern="-10" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="112">
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="80">
+    <pair kern="-80" kpx2="111"/>
+    <pair kern="-80" kpx2="97"/>
+    <pair kern="-90" kpx2="65"/>
+    <pair kern="-135" kpx2="46"/>
+    <pair kern="-80" kpx2="101"/>
+    <pair kern="-135" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="86">
+    <pair kern="-111" kpx2="111"/>
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-65" kpx2="58"/>
+    <pair kern="0" kpx2="71"/>
+    <pair kern="-129" kpx2="44"/>
+    <pair kern="-74" kpx2="59"/>
+    <pair kern="-55" kpx2="45"/>
+    <pair kern="-74" kpx2="105"/>
+    <pair kern="-60" kpx2="65"/>
+    <pair kern="-111" kpx2="97"/>
+    <pair kern="-74" kpx2="117"/>
+    <pair kern="-129" kpx2="46"/>
+    <pair kern="-111" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="118">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="-74" kpx2="46"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-74" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="32">
+    <pair kern="-18" kpx2="65"/>
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="0" kpx2="147"/>
+    <pair kern="-75" kpx2="89"/>
+    <pair kern="-18" kpx2="84"/>
+    <pair kern="0" kpx2="145"/>
+    <pair kern="-35" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="97">
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="116"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="-10" kpx2="103"/>
+    <pair kern="0" kpx2="98"/>
+    <pair kern="0" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="70">
+    <pair kern="-105" kpx2="111"/>
+    <pair kern="-45" kpx2="105"/>
+    <pair kern="-55" kpx2="114"/>
+    <pair kern="-75" kpx2="97"/>
+    <pair kern="-115" kpx2="65"/>
+    <pair kern="-135" kpx2="46"/>
+    <pair kern="-75" kpx2="101"/>
+    <pair kern="-135" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="85">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-25" kpx2="46"/>
+    <pair kern="-25" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="100">
+    <pair kern="0" kpx2="100"/>
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="83">
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="122">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="68">
+    <pair kern="-35" kpx2="65"/>
+    <pair kern="-40" kpx2="87"/>
+    <pair kern="-40" kpx2="89"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="-40" kpx2="86"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="146">
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-25" kpx2="100"/>
+    <pair kern="-111" kpx2="32"/>
+    <pair kern="-111" kpx2="146"/>
+    <pair kern="-25" kpx2="114"/>
+    <pair kern="-30" kpx2="116"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="-40" kpx2="115"/>
+    <pair kern="-10" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="58">
+    <pair kern="0" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="119">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-74" kpx2="46"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-74" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="75">
+    <pair kern="-40" kpx2="111"/>
+    <pair kern="-50" kpx2="79"/>
+    <pair kern="-40" kpx2="117"/>
+    <pair kern="-40" kpx2="121"/>
+    <pair kern="-35" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="82">
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-18" kpx2="87"/>
+    <pair kern="-40" kpx2="85"/>
+    <pair kern="-18" kpx2="89"/>
+    <pair kern="0" kpx2="84"/>
+    <pair kern="-18" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="145">
+    <pair kern="0" kpx2="65"/>
+    <pair kern="-111" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="103">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="0" kpx2="114"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-15" kpx2="46"/>
+    <pair kern="-10" kpx2="103"/>
+    <pair kern="-10" kpx2="101"/>
+    <pair kern="-10" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="66">
+    <pair kern="-25" kpx2="65"/>
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="98">
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="98"/>
+    <pair kern="0" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="81">
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="44">
+    <pair kern="-140" kpx2="148"/>
+    <pair kern="0" kpx2="32"/>
+    <pair kern="-140" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="102">
+    <pair kern="0" kpx2="148"/>
+    <pair kern="0" kpx2="111"/>
+    <pair kern="-20" kpx2="105"/>
+    <pair kern="92" kpx2="146"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="-18" kpx2="102"/>
+    <pair kern="-15" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-10" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="84">
+    <pair kern="-92" kpx2="111"/>
+    <pair kern="-18" kpx2="79"/>
+    <pair kern="-74" kpx2="119"/>
+    <pair kern="-55" kpx2="58"/>
+    <pair kern="-55" kpx2="114"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-74" kpx2="44"/>
+    <pair kern="-65" kpx2="59"/>
+    <pair kern="-74" kpx2="45"/>
+    <pair kern="-55" kpx2="105"/>
+    <pair kern="-50" kpx2="65"/>
+    <pair kern="-92" kpx2="97"/>
+    <pair kern="-55" kpx2="117"/>
+    <pair kern="-74" kpx2="121"/>
+    <pair kern="-74" kpx2="46"/>
+    <pair kern="-92" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="121">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="-55" kpx2="46"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-55" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="120">
+    <pair kern="0" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="101">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="-15" kpx2="46"/>
+    <pair kern="-40" kpx2="103"/>
+    <pair kern="0" kpx2="98"/>
+    <pair kern="-20" kpx2="120"/>
+    <pair kern="-15" kpx2="118"/>
+    <pair kern="-10" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="99">
+    <pair kern="-20" kpx2="107"/>
+    <pair kern="-15" kpx2="104"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="87">
+    <pair kern="-92" kpx2="111"/>
+    <pair kern="-25" kpx2="79"/>
+    <pair kern="-65" kpx2="58"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-92" kpx2="44"/>
+    <pair kern="-65" kpx2="59"/>
+    <pair kern="-37" kpx2="45"/>
+    <pair kern="-55" kpx2="105"/>
+    <pair kern="-60" kpx2="65"/>
+    <pair kern="-92" kpx2="97"/>
+    <pair kern="-55" kpx2="117"/>
+    <pair kern="-70" kpx2="121"/>
+    <pair kern="-92" kpx2="46"/>
+    <pair kern="-92" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="104">
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="71">
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="105">
+    <pair kern="0" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="65">
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-37" kpx2="146"/>
+    <pair kern="-55" kpx2="119"/>
+    <pair kern="-95" kpx2="87"/>
+    <pair kern="-30" kpx2="67"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="-40" kpx2="81"/>
+    <pair kern="-35" kpx2="71"/>
+    <pair kern="-105" kpx2="86"/>
+    <pair kern="-55" kpx2="118"/>
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-50" kpx2="85"/>
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="-55" kpx2="89"/>
+    <pair kern="-55" kpx2="121"/>
+    <pair kern="-37" kpx2="84"/>
+  </kerning>
+  <kerning kpx1="147">
+    <pair kern="0" kpx2="65"/>
+    <pair kern="0" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="78">
+    <pair kern="-27" kpx2="65"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="115">
+    <pair kern="0" kpx2="119"/>
+  </kerning>
+  <kerning kpx1="111">
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-10" kpx2="103"/>
+    <pair kern="0" kpx2="120"/>
+    <pair kern="-10" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="114">
+    <pair kern="-45" kpx2="111"/>
+    <pair kern="-37" kpx2="100"/>
+    <pair kern="0" kpx2="107"/>
+    <pair kern="0" kpx2="114"/>
+    <pair kern="-37" kpx2="99"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="-37" kpx2="103"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="-37" kpx2="113"/>
+    <pair kern="0" kpx2="118"/>
+    <pair kern="-111" kpx2="44"/>
+    <pair kern="-20" kpx2="45"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="0" kpx2="109"/>
+    <pair kern="-15" kpx2="97"/>
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="116"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-111" kpx2="46"/>
+    <pair kern="0" kpx2="110"/>
+    <pair kern="-10" kpx2="115"/>
+    <pair kern="-37" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="108">
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="76">
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-37" kpx2="146"/>
+    <pair kern="-55" kpx2="87"/>
+    <pair kern="-20" kpx2="89"/>
+    <pair kern="-30" kpx2="121"/>
+    <pair kern="-20" kpx2="84"/>
+    <pair kern="-55" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="148">
+    <pair kern="0" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="109">
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="89">
+    <pair kern="-92" kpx2="111"/>
+    <pair kern="-74" kpx2="45"/>
+    <pair kern="-74" kpx2="105"/>
+    <pair kern="-15" kpx2="79"/>
+    <pair kern="-65" kpx2="58"/>
+    <pair kern="-92" kpx2="97"/>
+    <pair kern="-50" kpx2="65"/>
+    <pair kern="-92" kpx2="117"/>
+    <pair kern="-92" kpx2="46"/>
+    <pair kern="-92" kpx2="101"/>
+    <pair kern="-65" kpx2="59"/>
+    <pair kern="-92" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="74">
+    <pair kern="-25" kpx2="111"/>
+    <pair kern="-35" kpx2="97"/>
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-35" kpx2="117"/>
+    <pair kern="-25" kpx2="46"/>
+    <pair kern="-25" kpx2="101"/>
+    <pair kern="-25" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="46">
+    <pair kern="-140" kpx2="148"/>
+    <pair kern="-140" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="110">
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-40" kpx2="118"/>
+  </kerning>
+</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/fonts/TimesRoman.xml b/src/codegen/fonts/TimesRoman.xml
new file mode 100644 (file)
index 0000000..1f21290
--- /dev/null
@@ -0,0 +1,642 @@
+<!--
+  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$ -->
+<!-- JKT: these metrics in XML were kindly produced by Fotis Jannidis -->
+<font-metrics>
+   <font-name>Times-Roman</font-name>
+   <class-name>TimesRoman</class-name>
+   <encoding>StandardEncoding</encoding>
+   <cap-height>662</cap-height>
+   <x-height>450</x-height>
+   <ascender>683</ascender>
+   <descender>-217</descender>
+   <first-char>32</first-char>
+   <last-char>255</last-char>
+   <widths>
+      <char name="A" width="722"/>
+      <char name="AE" width="889"/>
+      <char name="Aacute" width="722"/>
+      <char name="Acircumflex" width="722"/>
+      <char name="Adieresis" width="722"/>
+      <char name="Agrave" width="722"/>
+      <char name="Aring" width="722"/>
+      <char name="Atilde" width="722"/>
+      <char name="B" width="667"/>
+      <char name="C" width="667"/>
+      <char name="Ccedilla" width="667"/>
+      <char name="D" width="722"/>
+      <char name="E" width="611"/>
+      <char name="Eacute" width="611"/>
+      <char name="Ecircumflex" width="611"/>
+      <char name="Edieresis" width="611"/>
+      <char name="Egrave" width="611"/>
+      <char name="Eth" width="722"/>
+      <char name="Euro" width="500"/>
+      <char name="F" width="556"/>
+      <char name="G" width="722"/>
+      <char name="H" width="722"/>
+      <char name="I" width="333"/>
+      <char name="Iacute" width="333"/>
+      <char name="Icircumflex" width="333"/>
+      <char name="Idieresis" width="333"/>
+      <char name="Igrave" width="333"/>
+      <char name="J" width="389"/>
+      <char name="K" width="722"/>
+      <char name="L" width="611"/>
+      <char name="Lslash" width="611"/>
+      <char name="M" width="889"/>
+      <char name="N" width="722"/>
+      <char name="Ntilde" width="722"/>
+      <char name="O" width="722"/>
+      <char name="OE" width="889"/>
+      <char name="Oacute" width="722"/>
+      <char name="Ocircumflex" width="722"/>
+      <char name="Odieresis" width="722"/>
+      <char name="Ograve" width="722"/>
+      <char name="Oslash" width="722"/>
+      <char name="Otilde" width="722"/>
+      <char name="P" width="556"/>
+      <char name="Q" width="722"/>
+      <char name="R" width="667"/>
+      <char name="S" width="556"/>
+      <char name="Scaron" width="556"/>
+      <char name="T" width="611"/>
+      <char name="Thorn" width="556"/>
+      <char name="U" width="722"/>
+      <char name="Uacute" width="722"/>
+      <char name="Ucircumflex" width="722"/>
+      <char name="Udieresis" width="722"/>
+      <char name="Ugrave" width="722"/>
+      <char name="V" width="722"/>
+      <char name="W" width="944"/>
+      <char name="X" width="722"/>
+      <char name="Y" width="722"/>
+      <char name="Yacute" width="722"/>
+      <char name="Ydieresis" width="722"/>
+      <char name="Z" width="611"/>
+      <char name="Zcaron" width="611"/>
+      <char name="a" width="444"/>
+      <char name="aacute" width="444"/>
+      <char name="acircumflex" width="444"/>
+      <char name="acute" width="333"/>
+      <char name="adieresis" width="444"/>
+      <char name="ae" width="667"/>
+      <char name="agrave" width="444"/>
+      <char name="ampersand" width="778"/>
+      <char name="aring" width="444"/>
+      <char name="asciicircum" width="469"/>
+      <char name="asciitilde" width="541"/>
+      <char name="asterisk" width="500"/>
+      <char name="at" width="921"/>
+      <char name="atilde" width="444"/>
+      <char name="b" width="500"/>
+      <char name="backslash" width="278"/>
+      <char name="bar" width="200"/>
+      <char name="braceleft" width="480"/>
+      <char name="braceright" width="480"/>
+      <char name="bracketleft" width="333"/>
+      <char name="bracketright" width="333"/>
+      <char name="breve" width="333"/>
+      <char name="brokenbar" width="200"/>
+      <char name="bullet" width="350"/>
+      <char name="c" width="444"/>
+      <char name="caron" width="333"/>
+      <char name="ccedilla" width="444"/>
+      <char name="cedilla" width="333"/>
+      <char name="cent" width="500"/>
+      <char name="circumflex" width="333"/>
+      <char name="colon" width="278"/>
+      <char name="comma" width="250"/>
+      <char name="copyright" width="760"/>
+      <char name="currency" width="500"/>
+      <char name="d" width="500"/>
+      <char name="dagger" width="500"/>
+      <char name="daggerdbl" width="500"/>
+      <char name="degree" width="400"/>
+      <char name="dieresis" width="333"/>
+      <char name="divide" width="564"/>
+      <char name="dollar" width="500"/>
+      <char name="dotaccent" width="333"/>
+      <char name="dotlessi" width="278"/>
+      <char name="e" width="444"/>
+      <char name="eacute" width="444"/>
+      <char name="ecircumflex" width="444"/>
+      <char name="edieresis" width="444"/>
+      <char name="egrave" width="444"/>
+      <char name="eight" width="500"/>
+      <char name="ellipsis" width="1000"/>
+      <char name="emdash" width="1000"/>
+      <char name="endash" width="500"/>
+      <char name="equal" width="564"/>
+      <char name="eth" width="500"/>
+      <char name="exclam" width="333"/>
+      <char name="exclamdown" width="333"/>
+      <char name="f" width="333"/>
+      <char name="fi" width="556"/>
+      <char name="five" width="500"/>
+      <char name="fl" width="556"/>
+      <char name="florin" width="500"/>
+      <char name="four" width="500"/>
+      <char name="fraction" width="167"/>
+      <char name="g" width="500"/>
+      <char name="germandbls" width="500"/>
+      <char name="grave" width="333"/>
+      <char name="greater" width="564"/>
+      <char name="guillemotleft" width="500"/>
+      <char name="guillemotright" width="500"/>
+      <char name="guilsinglleft" width="333"/>
+      <char name="guilsinglright" width="333"/>
+      <char name="h" width="500"/>
+      <char name="hungarumlaut" width="333"/>
+      <char name="hyphen" width="333"/>
+      <char name="i" width="278"/>
+      <char name="iacute" width="278"/>
+      <char name="icircumflex" width="278"/>
+      <char name="idieresis" width="278"/>
+      <char name="igrave" width="278"/>
+      <char name="j" width="278"/>
+      <char name="k" width="500"/>
+      <char name="l" width="278"/>
+      <char name="less" width="564"/>
+      <char name="logicalnot" width="564"/>
+      <char name="lslash" width="278"/>
+      <char name="m" width="778"/>
+      <char name="macron" width="333"/>
+      <char name="minus" width="324"/>
+      <char name="mu" width="500"/>
+      <char name="multiply" width="564"/>
+      <char name="n" width="500"/>
+      <char name="nine" width="500"/>
+      <char name="ntilde" width="500"/>
+      <char name="numbersign" width="500"/>
+      <char name="o" width="500"/>
+      <char name="oacute" width="500"/>
+      <char name="ocircumflex" width="500"/>
+      <char name="odieresis" width="500"/>
+      <char name="oe" width="722"/>
+      <char name="ogonek" width="333"/>
+      <char name="ograve" width="500"/>
+      <char name="one" width="500"/>
+      <char name="onehalf" width="750"/>
+      <char name="onequarter" width="750"/>
+      <char name="onesuperior" width="300"/>
+      <char name="ordfeminine" width="276"/>
+      <char name="ordmasculine" width="310"/>
+      <char name="oslash" width="500"/>
+      <char name="otilde" width="500"/>
+      <char name="p" width="500"/>
+      <char name="paragraph" width="453"/>
+      <char name="parenleft" width="333"/>
+      <char name="parenright" width="333"/>
+      <char name="percent" width="833"/>
+      <char name="period" width="250"/>
+      <char name="periodcentered" width="250"/>
+      <char name="perthousand" width="1000"/>
+      <char name="plus" width="564"/>
+      <char name="plusminus" width="564"/>
+      <char name="q" width="500"/>
+      <char name="question" width="444"/>
+      <char name="questiondown" width="444"/>
+      <char name="quotedbl" width="408"/>
+      <char name="quotedblbase" width="444"/>
+      <char name="quotedblleft" width="444"/>
+      <char name="quotedblright" width="444"/>
+      <char name="quoteleft" width="333"/>
+      <char name="quoteright" width="333"/>
+      <char name="quotesinglbase" width="333"/>
+      <char name="quotesingle" width="180"/>
+      <char name="r" width="333"/>
+      <char name="registered" width="760"/>
+      <char name="ring" width="333"/>
+      <char name="s" width="389"/>
+      <char name="scaron" width="389"/>
+      <char name="section" width="500"/>
+      <char name="semicolon" width="278"/>
+      <char name="seven" width="500"/>
+      <char name="six" width="500"/>
+      <char name="slash" width="278"/>
+      <char name="space" width="250"/>
+      <!-- JKT: the following has been manually added -->
+      <char name="nbsp" width="250"/>
+      <char name="sterling" width="500"/>
+      <char name="t" width="278"/>
+      <char name="thorn" width="500"/>
+      <char name="three" width="500"/>
+      <char name="threequarters" width="750"/>
+      <char name="threesuperior" width="300"/>
+      <char name="tilde" width="333"/>
+      <char name="trademark" width="980"/>
+      <char name="two" width="500"/>
+      <char name="twosuperior" width="300"/>
+      <char name="u" width="500"/>
+      <char name="uacute" width="500"/>
+      <char name="ucircumflex" width="500"/>
+      <char name="udieresis" width="500"/>
+      <char name="ugrave" width="500"/>
+      <char name="underscore" width="500"/>
+      <char name="v" width="500"/>
+      <char name="w" width="722"/>
+      <char name="x" width="500"/>
+      <char name="y" width="500"/>
+      <char name="yacute" width="500"/>
+      <char name="ydieresis" width="500"/>
+      <char name="yen" width="500"/>
+      <char name="z" width="444"/>
+      <char name="zcaron" width="444"/>
+      <char name="zero" width="500"/>
+   </widths>
+  <kerning kpx1="79">
+    <pair kern="-35" kpx2="65"/>
+    <pair kern="-35" kpx2="87"/>
+    <pair kern="-50" kpx2="89"/>
+    <pair kern="-40" kpx2="84"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="-50" kpx2="86"/>
+    <pair kern="-40" kpx2="88"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="107">
+    <pair kern="-10" kpx2="111"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="-10" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="112">
+    <pair kern="-10" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="80">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="-15" kpx2="97"/>
+    <pair kern="-92" kpx2="65"/>
+    <pair kern="-111" kpx2="46"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-111" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="86">
+    <pair kern="-129" kpx2="111"/>
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-74" kpx2="58"/>
+    <pair kern="-15" kpx2="71"/>
+    <pair kern="-129" kpx2="44"/>
+    <pair kern="-74" kpx2="59"/>
+    <pair kern="-100" kpx2="45"/>
+    <pair kern="-60" kpx2="105"/>
+    <pair kern="-135" kpx2="65"/>
+    <pair kern="-111" kpx2="97"/>
+    <pair kern="-75" kpx2="117"/>
+    <pair kern="-129" kpx2="46"/>
+    <pair kern="-111" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="118">
+    <pair kern="-20" kpx2="111"/>
+    <pair kern="-25" kpx2="97"/>
+    <pair kern="-65" kpx2="46"/>
+    <pair kern="-15" kpx2="101"/>
+    <pair kern="-65" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="32">
+    <pair kern="-55" kpx2="65"/>
+    <pair kern="-30" kpx2="87"/>
+    <pair kern="0" kpx2="147"/>
+    <pair kern="-90" kpx2="89"/>
+    <pair kern="-18" kpx2="84"/>
+    <pair kern="0" kpx2="145"/>
+    <pair kern="-50" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="97">
+    <pair kern="-15" kpx2="119"/>
+    <pair kern="0" kpx2="116"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="0" kpx2="98"/>
+    <pair kern="-20" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="70">
+    <pair kern="-15" kpx2="111"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="0" kpx2="114"/>
+    <pair kern="-15" kpx2="97"/>
+    <pair kern="-74" kpx2="65"/>
+    <pair kern="-80" kpx2="46"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-80" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="85">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="100">
+    <pair kern="0" kpx2="100"/>
+    <pair kern="0" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="83">
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="122">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="68">
+    <pair kern="-40" kpx2="65"/>
+    <pair kern="-30" kpx2="87"/>
+    <pair kern="-55" kpx2="89"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="-40" kpx2="86"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="146">
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-50" kpx2="100"/>
+    <pair kern="-74" kpx2="32"/>
+    <pair kern="-74" kpx2="146"/>
+    <pair kern="-50" kpx2="114"/>
+    <pair kern="-18" kpx2="116"/>
+    <pair kern="-10" kpx2="108"/>
+    <pair kern="-55" kpx2="115"/>
+    <pair kern="-50" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="58">
+    <pair kern="0" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="119">
+    <pair kern="-10" kpx2="111"/>
+    <pair kern="-10" kpx2="97"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-65" kpx2="46"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-65" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="75">
+    <pair kern="-35" kpx2="111"/>
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-15" kpx2="117"/>
+    <pair kern="-25" kpx2="121"/>
+    <pair kern="-25" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="82">
+    <pair kern="-40" kpx2="79"/>
+    <pair kern="-55" kpx2="87"/>
+    <pair kern="-40" kpx2="85"/>
+    <pair kern="-65" kpx2="89"/>
+    <pair kern="-60" kpx2="84"/>
+    <pair kern="-80" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="145">
+    <pair kern="-80" kpx2="65"/>
+    <pair kern="-74" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="103">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="0" kpx2="114"/>
+    <pair kern="-5" kpx2="97"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="66">
+    <pair kern="-35" kpx2="65"/>
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="98">
+    <pair kern="-20" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-40" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="98"/>
+    <pair kern="-15" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="81">
+    <pair kern="-10" kpx2="85"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="44">
+    <pair kern="-70" kpx2="148"/>
+    <pair kern="0" kpx2="32"/>
+    <pair kern="-70" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="102">
+    <pair kern="0" kpx2="148"/>
+    <pair kern="0" kpx2="111"/>
+    <pair kern="-20" kpx2="105"/>
+    <pair kern="55" kpx2="146"/>
+    <pair kern="-10" kpx2="97"/>
+    <pair kern="-25" kpx2="102"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="84">
+    <pair kern="-80" kpx2="111"/>
+    <pair kern="-18" kpx2="79"/>
+    <pair kern="-80" kpx2="119"/>
+    <pair kern="-50" kpx2="58"/>
+    <pair kern="-35" kpx2="114"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-74" kpx2="44"/>
+    <pair kern="-55" kpx2="59"/>
+    <pair kern="-92" kpx2="45"/>
+    <pair kern="-35" kpx2="105"/>
+    <pair kern="-93" kpx2="65"/>
+    <pair kern="-80" kpx2="97"/>
+    <pair kern="-45" kpx2="117"/>
+    <pair kern="-80" kpx2="121"/>
+    <pair kern="-74" kpx2="46"/>
+    <pair kern="-70" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="121">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="-65" kpx2="46"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="-65" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="120">
+    <pair kern="-15" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="101">
+    <pair kern="-25" kpx2="119"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="-15" kpx2="103"/>
+    <pair kern="0" kpx2="98"/>
+    <pair kern="-15" kpx2="120"/>
+    <pair kern="-25" kpx2="118"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="99">
+    <pair kern="0" kpx2="107"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="87">
+    <pair kern="-80" kpx2="111"/>
+    <pair kern="-10" kpx2="79"/>
+    <pair kern="-37" kpx2="58"/>
+    <pair kern="0" kpx2="104"/>
+    <pair kern="-92" kpx2="44"/>
+    <pair kern="-37" kpx2="59"/>
+    <pair kern="-65" kpx2="45"/>
+    <pair kern="-40" kpx2="105"/>
+    <pair kern="-120" kpx2="65"/>
+    <pair kern="-80" kpx2="97"/>
+    <pair kern="-50" kpx2="117"/>
+    <pair kern="-73" kpx2="121"/>
+    <pair kern="-92" kpx2="46"/>
+    <pair kern="-80" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="104">
+    <pair kern="-5" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="71">
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="105">
+    <pair kern="-25" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="65">
+    <pair kern="-55" kpx2="79"/>
+    <pair kern="-111" kpx2="146"/>
+    <pair kern="-92" kpx2="119"/>
+    <pair kern="-90" kpx2="87"/>
+    <pair kern="-40" kpx2="67"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="-55" kpx2="81"/>
+    <pair kern="-40" kpx2="71"/>
+    <pair kern="-135" kpx2="86"/>
+    <pair kern="-74" kpx2="118"/>
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-55" kpx2="85"/>
+    <pair kern="0" kpx2="117"/>
+    <pair kern="-105" kpx2="89"/>
+    <pair kern="-92" kpx2="121"/>
+    <pair kern="-111" kpx2="84"/>
+  </kerning>
+  <kerning kpx1="147">
+    <pair kern="-80" kpx2="65"/>
+    <pair kern="0" kpx2="145"/>
+  </kerning>
+  <kerning kpx1="78">
+    <pair kern="-35" kpx2="65"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="115">
+    <pair kern="0" kpx2="119"/>
+  </kerning>
+  <kerning kpx1="111">
+    <pair kern="-25" kpx2="119"/>
+    <pair kern="-10" kpx2="121"/>
+    <pair kern="0" kpx2="103"/>
+    <pair kern="0" kpx2="120"/>
+    <pair kern="-15" kpx2="118"/>
+  </kerning>
+  <kerning kpx1="114">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="100"/>
+    <pair kern="0" kpx2="107"/>
+    <pair kern="0" kpx2="114"/>
+    <pair kern="0" kpx2="99"/>
+    <pair kern="0" kpx2="112"/>
+    <pair kern="-18" kpx2="103"/>
+    <pair kern="0" kpx2="108"/>
+    <pair kern="0" kpx2="113"/>
+    <pair kern="0" kpx2="118"/>
+    <pair kern="-40" kpx2="44"/>
+    <pair kern="-20" kpx2="45"/>
+    <pair kern="0" kpx2="105"/>
+    <pair kern="0" kpx2="109"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="116"/>
+    <pair kern="0" kpx2="121"/>
+    <pair kern="-55" kpx2="46"/>
+    <pair kern="0" kpx2="110"/>
+    <pair kern="0" kpx2="115"/>
+    <pair kern="0" kpx2="101"/>
+  </kerning>
+  <kerning kpx1="108">
+    <pair kern="-10" kpx2="119"/>
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="76">
+    <pair kern="0" kpx2="148"/>
+    <pair kern="-92" kpx2="146"/>
+    <pair kern="-74" kpx2="87"/>
+    <pair kern="-100" kpx2="89"/>
+    <pair kern="-55" kpx2="121"/>
+    <pair kern="-92" kpx2="84"/>
+    <pair kern="-100" kpx2="86"/>
+  </kerning>
+  <kerning kpx1="148">
+    <pair kern="0" kpx2="32"/>
+  </kerning>
+  <kerning kpx1="109">
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="121"/>
+  </kerning>
+  <kerning kpx1="89">
+    <pair kern="-110" kpx2="111"/>
+    <pair kern="-111" kpx2="45"/>
+    <pair kern="-55" kpx2="105"/>
+    <pair kern="-30" kpx2="79"/>
+    <pair kern="-92" kpx2="58"/>
+    <pair kern="-100" kpx2="97"/>
+    <pair kern="-120" kpx2="65"/>
+    <pair kern="-111" kpx2="117"/>
+    <pair kern="-129" kpx2="46"/>
+    <pair kern="-100" kpx2="101"/>
+    <pair kern="-92" kpx2="59"/>
+    <pair kern="-129" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="74">
+    <pair kern="0" kpx2="111"/>
+    <pair kern="0" kpx2="97"/>
+    <pair kern="-60" kpx2="65"/>
+    <pair kern="0" kpx2="117"/>
+    <pair kern="0" kpx2="46"/>
+    <pair kern="0" kpx2="101"/>
+    <pair kern="0" kpx2="44"/>
+  </kerning>
+  <kerning kpx1="46">
+    <pair kern="-70" kpx2="148"/>
+    <pair kern="-70" kpx2="146"/>
+  </kerning>
+  <kerning kpx1="110">
+    <pair kern="0" kpx2="117"/>
+    <pair kern="-15" kpx2="121"/>
+    <pair kern="-40" kpx2="118"/>
+  </kerning>
+</font-metrics>
diff --git a/src/codegen/fonts/ZapfDingbats.xml b/src/codegen/fonts/ZapfDingbats.xml
new file mode 100644 (file)
index 0000000..0420908
--- /dev/null
@@ -0,0 +1,232 @@
+<!--
+  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$ -->
+<font-metrics>
+  <font-name>ZapfDingbats</font-name>
+  <class-name>ZapfDingbats</class-name>
+  <encoding>ZapfDingbatsEncoding</encoding>
+  <cap-height>820</cap-height>
+  <x-height>426</x-height>
+  <ascender>820</ascender>
+  <descender>-143</descender>
+  <first-char>32</first-char>
+  <last-char>255</last-char>
+  <widths>
+    <char name="space" width="278"/>
+    <char name="a1" width="974"/>
+    <char name="a2" width="961"/>
+    <char name="a202" width="974"/>
+    <char name="a3" width="980"/>
+    <char name="a4" width="719"/>
+    <char name="a5" width="789"/>
+    <char name="a119" width="790"/>
+    <char name="a118" width="791"/>
+    <char name="a117" width="690"/>
+    <char name="a11" width="960"/>
+    <char name="a12" width="939"/>
+    <char name="a13" width="549"/>
+    <char name="a14" width="855"/>
+    <char name="a15" width="911"/>
+    <char name="a16" width="933"/>
+    <char name="a105" width="911"/>
+    <char name="a17" width="945"/>
+    <char name="a18" width="974"/>
+    <char name="a19" width="755"/>
+    <char name="a20" width="846"/>
+    <char name="a21" width="762"/>
+    <char name="a22" width="761"/>
+    <char name="a23" width="571"/>
+    <char name="a24" width="677"/>
+    <char name="a25" width="763"/>
+    <char name="a26" width="760"/>
+    <char name="a27" width="759"/>
+    <char name="a28" width="754"/>
+    <char name="a6" width="494"/>
+    <char name="a7" width="552"/>
+    <char name="a8" width="537"/>
+    <char name="a9" width="577"/>
+    <char name="a10" width="692"/>
+    <char name="a29" width="786"/>
+    <char name="a30" width="788"/>
+    <char name="a31" width="788"/>
+    <char name="a32" width="790"/>
+    <char name="a33" width="793"/>
+    <char name="a34" width="794"/>
+    <char name="a35" width="816"/>
+    <char name="a36" width="823"/>
+    <char name="a37" width="789"/>
+    <char name="a38" width="841"/>
+    <char name="a39" width="823"/>
+    <char name="a40" width="833"/>
+    <char name="a41" width="816"/>
+    <char name="a42" width="831"/>
+    <char name="a43" width="923"/>
+    <char name="a44" width="744"/>
+    <char name="a45" width="723"/>
+    <char name="a46" width="749"/>
+    <char name="a47" width="790"/>
+    <char name="a48" width="792"/>
+    <char name="a49" width="695"/>
+    <char name="a50" width="776"/>
+    <char name="a51" width="768"/>
+    <char name="a52" width="792"/>
+    <char name="a53" width="759"/>
+    <char name="a54" width="707"/>
+    <char name="a55" width="708"/>
+    <char name="a56" width="682"/>
+    <char name="a57" width="701"/>
+    <char name="a58" width="826"/>
+    <char name="a59" width="815"/>
+    <char name="a60" width="789"/>
+    <char name="a61" width="789"/>
+    <char name="a62" width="707"/>
+    <char name="a63" width="687"/>
+    <char name="a64" width="696"/>
+    <char name="a65" width="689"/>
+    <char name="a66" width="786"/>
+    <char name="a67" width="787"/>
+    <char name="a68" width="713"/>
+    <char name="a69" width="791"/>
+    <char name="a70" width="785"/>
+    <char name="a71" width="791"/>
+    <char name="a72" width="873"/>
+    <char name="a73" width="761"/>
+    <char name="a74" width="762"/>
+    <char name="a203" width="762"/>
+    <char name="a75" width="759"/>
+    <char name="a204" width="759"/>
+    <char name="a76" width="892"/>
+    <char name="a77" width="892"/>
+    <char name="a78" width="788"/>
+    <char name="a79" width="784"/>
+    <char name="a81" width="438"/>
+    <char name="a82" width="138"/>
+    <char name="a83" width="277"/>
+    <char name="a84" width="415"/>
+    <char name="a97" width="392"/>
+    <char name="a98" width="392"/>
+    <char name="a99" width="668"/>
+    <char name="a100" width="668"/>
+    <char name="a101" width="732"/>
+    <char name="a102" width="544"/>
+    <char name="a103" width="544"/>
+    <char name="a104" width="910"/>
+    <char name="a106" width="667"/>
+    <char name="a107" width="760"/>
+    <char name="a108" width="760"/>
+    <char name="a112" width="776"/>
+    <char name="a111" width="595"/>
+    <char name="a110" width="694"/>
+    <char name="a109" width="626"/>
+    <char name="a120" width="788"/>
+    <char name="a121" width="788"/>
+    <char name="a122" width="788"/>
+    <char name="a123" width="788"/>
+    <char name="a124" width="788"/>
+    <char name="a125" width="788"/>
+    <char name="a126" width="788"/>
+    <char name="a127" width="788"/>
+    <char name="a128" width="788"/>
+    <char name="a129" width="788"/>
+    <char name="a130" width="788"/>
+    <char name="a131" width="788"/>
+    <char name="a132" width="788"/>
+    <char name="a133" width="788"/>
+    <char name="a134" width="788"/>
+    <char name="a135" width="788"/>
+    <char name="a136" width="788"/>
+    <char name="a137" width="788"/>
+    <char name="a138" width="788"/>
+    <char name="a139" width="788"/>
+    <char name="a140" width="788"/>
+    <char name="a141" width="788"/>
+    <char name="a142" width="788"/>
+    <char name="a143" width="788"/>
+    <char name="a144" width="788"/>
+    <char name="a145" width="788"/>
+    <char name="a146" width="788"/>
+    <char name="a147" width="788"/>
+    <char name="a148" width="788"/>
+    <char name="a149" width="788"/>
+    <char name="a150" width="788"/>
+    <char name="a151" width="788"/>
+    <char name="a152" width="788"/>
+    <char name="a153" width="788"/>
+    <char name="a154" width="788"/>
+    <char name="a155" width="788"/>
+    <char name="a156" width="788"/>
+    <char name="a157" width="788"/>
+    <char name="a158" width="788"/>
+    <char name="a159" width="788"/>
+    <char name="a160" width="894"/>
+    <char name="a161" width="838"/>
+    <char name="a163" width="1016"/>
+    <char name="a164" width="458"/>
+    <char name="a196" width="748"/>
+    <char name="a165" width="924"/>
+    <char name="a192" width="748"/>
+    <char name="a166" width="918"/>
+    <char name="a167" width="927"/>
+    <char name="a168" width="928"/>
+    <char name="a169" width="928"/>
+    <char name="a170" width="834"/>
+    <char name="a171" width="873"/>
+    <char name="a172" width="828"/>
+    <char name="a173" width="924"/>
+    <char name="a162" width="924"/>
+    <char name="a174" width="917"/>
+    <char name="a175" width="930"/>
+    <char name="a176" width="931"/>
+    <char name="a177" width="463"/>
+    <char name="a178" width="883"/>
+    <char name="a179" width="836"/>
+    <char name="a193" width="836"/>
+    <char name="a180" width="867"/>
+    <char name="a199" width="867"/>
+    <char name="a181" width="696"/>
+    <char name="a200" width="696"/>
+    <char name="a182" width="874"/>
+    <char name="a201" width="874"/>
+    <char name="a183" width="760"/>
+    <char name="a184" width="946"/>
+    <char name="a197" width="771"/>
+    <char name="a185" width="865"/>
+    <char name="a194" width="771"/>
+    <char name="a198" width="888"/>
+    <char name="a186" width="967"/>
+    <char name="a195" width="888"/>
+    <char name="a187" width="831"/>
+    <char name="a188" width="873"/>
+    <char name="a189" width="927"/>
+    <char name="a190" width="970"/>
+    <char name="a191" width="918"/>
+    <char name="a86" width="410"/>
+    <char name="a85" width="509"/>
+    <char name="a95" width="334"/>
+    <char name="a205" width="509"/>
+    <char name="a89" width="390"/>
+    <char name="a87" width="234"/>
+    <char name="a91" width="276"/>
+    <char name="a90" width="390"/>
+    <char name="a206" width="410"/>
+    <char name="a94" width="317"/>
+    <char name="a93" width="317"/>
+    <char name="a92" width="276"/>
+    <char name="a96" width="334"/>
+    <char name="a88" width="234"/>
+  </widths>
+</font-metrics>
\ No newline at end of file
diff --git a/src/codegen/fonts/charlist.xml b/src/codegen/fonts/charlist.xml
new file mode 100644 (file)
index 0000000..110714a
--- /dev/null
@@ -0,0 +1,633 @@
+<!--
+  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$ -->
+<!-- JKT: these mappings were kindly produced by Fotis Jannidis -->
+<font-mappings>
+   <map adobe-name="A" win-ansi="0x0041" unicode="0x0041"/>
+   <map adobe-name="AE" win-ansi="0x00C6" unicode="0x00C6"/>
+   <map adobe-name="Aacute" win-ansi="0x00C1" unicode="0x00C1"/>
+   <map adobe-name="Acircumflex" win-ansi="0x00C2" unicode="0x00C2"/>
+   <map adobe-name="Adieresis" win-ansi="0x00C4" unicode="0x00C4"/>
+   <map adobe-name="Agrave" win-ansi="0x00C0" unicode="0x00C0"/>
+   <map adobe-name="Aring" win-ansi="0x00C5" unicode="0x00C5"/>
+   <map adobe-name="Atilde" win-ansi="0x00C3" unicode="0x00C3"/>
+   <map adobe-name="B" win-ansi="0x0042" unicode="0x0042"/>
+   <map adobe-name="C" win-ansi="0x0043" unicode="0x0043"/>
+   <map adobe-name="Ccedilla" win-ansi="0x00C7" unicode="0x00C7"/>
+   <map adobe-name="D" win-ansi="0x0044" unicode="0x0044"/>
+   <map adobe-name="E" win-ansi="0x0045" unicode="0x0045"/>
+   <map adobe-name="Eacute" win-ansi="0x00C9" unicode="0x00C9"/>
+   <map adobe-name="Ecircumflex" win-ansi="0x00CA" unicode="0x00CA"/>
+   <map adobe-name="Edieresis" win-ansi="0x00CB" unicode="0x00CB"/>
+   <map adobe-name="Egrave" win-ansi="0x00C8" unicode="0x00C8"/>
+   <map adobe-name="Eth" win-ansi="0x00D0" unicode="0x00D0"/>
+   <map adobe-name="Euro" win-ansi="0x0080" unicode="0x20AC"/>
+   <map adobe-name="F" win-ansi="0x0046" unicode="0x0046"/>
+   <map adobe-name="G" win-ansi="0x0047" unicode="0x0047"/>
+   <map adobe-name="Gcaron" win-ansi="-1" unicode="0x01E6"/>
+   <map adobe-name="H" win-ansi="0x0048" unicode="0x0048"/>
+   <map adobe-name="I" win-ansi="0x0049" unicode="0x0049"/>
+   <map adobe-name="Iacute" win-ansi="0x00CD" unicode="0x00CD"/>
+   <map adobe-name="Icircumflex" win-ansi="0x00CE" unicode="0x00CE"/>
+   <map adobe-name="Idieresis" win-ansi="0x00CF" unicode="0x00CF"/>
+   <map adobe-name="Idot" win-ansi="-1" unicode="0x0130"/>
+   <map adobe-name="Igrave" win-ansi="0x00CC" unicode="0x00CC"/>
+   <map adobe-name="IJ" win-ansi="-1" unicode="0x0132"/>
+   <map adobe-name="J" win-ansi="0x004A" unicode="0x004A"/>
+   <map adobe-name="K" win-ansi="0x004B" unicode="0x004B"/>
+   <map adobe-name="L" win-ansi="0x004C" unicode="0x004C"/>
+   <map adobe-name="Lslash" win-ansi="-1" unicode="0x0141"/>
+   <map adobe-name="M" win-ansi="0x004D" unicode="0x004D"/>
+   <map adobe-name="N" win-ansi="0x004E" unicode="0x004E"/>
+   <map adobe-name="Ntilde" win-ansi="0x00D1" unicode="0x00D1"/>
+   <map adobe-name="O" win-ansi="0x004F" unicode="0x004F"/>
+   <map adobe-name="OE" win-ansi="0x008C" unicode="0x0152"/>
+   <map adobe-name="Oacute" win-ansi="0x00D3" unicode="0x00D3"/>
+   <map adobe-name="Ocircumflex" win-ansi="0x00D4" unicode="0x00D4"/>
+   <map adobe-name="Odieresis" win-ansi="0x00D6" unicode="0x00D6"/>
+   <map adobe-name="Ograve" win-ansi="0x00D2" unicode="0x00D2"/>
+   <map adobe-name="Oslash" win-ansi="0x00D8" unicode="0x00D8"/>
+   <map adobe-name="Otilde" win-ansi="0x00D5" unicode="0x00D5"/>
+   <map adobe-name="P" win-ansi="0x0050" unicode="0x0050"/>
+   <map adobe-name="Q" win-ansi="0x0051" unicode="0x0051"/>
+   <map adobe-name="R" win-ansi="0x0052" unicode="0x0052"/>
+   <map adobe-name="S" win-ansi="0x0053" unicode="0x0053"/>
+   <map adobe-name="Scaron" win-ansi="0x008A" unicode="0x0160"/>
+   <map adobe-name="Scedilla" win-ansi="-1" unicode="0x015E"/>
+   <map adobe-name="T" win-ansi="0x0054" unicode="0x0054"/>
+   <map adobe-name="Thorn" win-ansi="0x00DE" unicode="0x00DE"/>
+   <map adobe-name="U" win-ansi="0x0055" unicode="0x0055"/>
+   <map adobe-name="Uacute" win-ansi="0x00DA" unicode="0x00DA"/>
+   <map adobe-name="Ucircumflex" win-ansi="0x00DB" unicode="0x00DB"/>
+   <map adobe-name="Udieresis" win-ansi="0x00DC" unicode="0x00DC"/>
+   <map adobe-name="Ugrave" win-ansi="0x00D9" unicode="0x00D9"/>
+   <map adobe-name="V" win-ansi="0x0056" unicode="0x0056"/>
+   <map adobe-name="W" win-ansi="0x0057" unicode="0x0057"/>
+   <map adobe-name="X" win-ansi="0x0058" unicode="0x0058"/>
+   <map adobe-name="Y" win-ansi="0x0059" unicode="0x0059"/>
+   <map adobe-name="Yacute" win-ansi="0x00DD" unicode="0x00DD"/>
+   <map adobe-name="Ydieresis" win-ansi="0x009F" unicode="0x0178"/>
+   <map adobe-name="Z" win-ansi="0x005A" unicode="0x005A"/>
+   <map adobe-name="Zcaron" win-ansi="-1" unicode="0x017D"/>
+   <map adobe-name="a" win-ansi="0x0061" unicode="0x0061"/>
+   <map adobe-name="aacute" win-ansi="0x00E1" unicode="0x00E1"/>
+   <map adobe-name="acircumflex" win-ansi="0x00E2" unicode="0x00E2"/>
+   <map adobe-name="acute" win-ansi="0x00B4" unicode="0x00B4"/>
+   <map adobe-name="adieresis" win-ansi="0x00E4" unicode="0x00E4"/>
+   <map adobe-name="ae" win-ansi="0x00E6" unicode="0x00E6"/>
+   <map adobe-name="agrave" win-ansi="0x00E0" unicode="0x00E0"/>
+   <map adobe-name="ampersand" win-ansi="0x0026" unicode="0x0026"/>
+   <map adobe-name="aring" win-ansi="0x00E5" unicode="0x00E5"/>
+   <!--  fj  <map adobe-name="arrowboth" win-ansi="-1" unicode="0x2195"/>-->
+   <!--  fj     <map adobe-name="arrowdown" win-ansi="-1" unicode="0x2193"/>-->
+   <!--  fj     <map adobe-name="arrowleft" win-ansi="-1" unicode="0x2194"/>-->
+   <!--  fj     <map adobe-name="arrowright" win-ansi="-1" unicode="0x2192"/>-->
+   <!--  fj     <map adobe-name="arrowup" win-ansi="-1" unicode="0x2191"/>-->
+   <map adobe-name="asciicircum" win-ansi="0x005E" unicode="0x005E"/>
+   <map adobe-name="asciitilde" win-ansi="0x007E" unicode="0x007E"/>
+   <map adobe-name="asterisk" win-ansi="0x002A" unicode="0x002A"/>
+   <map adobe-name="at" win-ansi="0x0040" unicode="0x0040"/>
+   <map adobe-name="atilde" win-ansi="0x00E3" unicode="0x00E3"/>
+   <map adobe-name="b" win-ansi="0x0062" unicode="0x0062"/>
+   <map adobe-name="backslash" win-ansi="0x005C" unicode="0x005C"/>
+   <map adobe-name="bar" win-ansi="0x007C" unicode="0x007C"/>
+   <map adobe-name="braceleft" win-ansi="0x007B" unicode="0x007B"/>
+   <map adobe-name="braceright" win-ansi="0x007D" unicode="0x007D"/>
+   <map adobe-name="bracketleft" win-ansi="0x005B" unicode="0x005B"/>
+   <map adobe-name="bracketright" win-ansi="0x005D" unicode="0x005D"/>
+   <map adobe-name="breve" win-ansi="-1" unicode="0x02D8"/>
+   <map adobe-name="brokenbar" win-ansi="0x00A6" unicode="0x00A6"/>
+   <map adobe-name="bullet" win-ansi="0x0095" unicode="0x2022"/>
+   <map adobe-name="c" win-ansi="0x0063" unicode="0x0063"/>
+   <map adobe-name="caron" win-ansi="-1" unicode="0x02C7"/>
+   <map adobe-name="ccedilla" win-ansi="0x00E7" unicode="0x00E7"/>
+   <map adobe-name="cedilla" win-ansi="0x00B8" unicode="0x00B8"/>
+   <map adobe-name="cent" win-ansi="0x00A2" unicode="0x00A2"/>
+   <map adobe-name="circumflex" win-ansi="0x0088" unicode="0x02C6"/>
+   <map adobe-name="colon" win-ansi="0x003A" unicode="0x003A"/>
+   <map adobe-name="comma" win-ansi="0x002C" unicode="0x002C"/>
+   <map adobe-name="copyright" win-ansi="0x00A9" unicode="0x00A9"/>
+   <map adobe-name="currency" win-ansi="0x00A4" unicode="0x00A4"/>
+   <map adobe-name="d" win-ansi="0x0064" unicode="0x0064"/>
+   <map adobe-name="dagger" win-ansi="0x0086" unicode="0x2020"/>
+   <map adobe-name="daggerdbl" win-ansi="0x0087" unicode="0x2021"/>
+   <map adobe-name="degree" win-ansi="0x00B0" unicode="0x00B0"/>
+   <map adobe-name="dieresis" win-ansi="0x00A8" unicode="0x00A8"/>
+   <map adobe-name="divide" win-ansi="0x00F7" unicode="0x00F7"/>
+   <map adobe-name="dollar" win-ansi="0x0024" unicode="0x0024"/>
+   <map adobe-name="dotaccent" win-ansi="-1" unicode="0x02D9"/>
+   <map adobe-name="dotlessi" win-ansi="-1" unicode="0x0269"/>
+   <map adobe-name="e" win-ansi="0x0065" unicode="0x0065"/>
+   <map adobe-name="eacute" win-ansi="0x00E9" unicode="0x00E9"/>
+   <map adobe-name="ecircumflex" win-ansi="0x00EA" unicode="0x00EA"/>
+   <map adobe-name="edieresis" win-ansi="0x00EB" unicode="0x00EB"/>
+   <map adobe-name="egrave" win-ansi="0x00E8" unicode="0x00E8"/>
+   <map adobe-name="eight" win-ansi="0x0038" unicode="0x0038"/>
+   <map adobe-name="ellipsis" win-ansi="0x0085" unicode="0x2026"/>
+   <map adobe-name="emdash" win-ansi="0x0097" unicode="0x2014"/>
+   <map adobe-name="endash" win-ansi="0x0096" unicode="0x2013"/>
+   <map adobe-name="equal" win-ansi="0x003D" unicode="0x003D"/>
+   <map adobe-name="eth" win-ansi="0x00F0" unicode="0x00F0"/>
+   <map adobe-name="exclam" win-ansi="0x0021" unicode="0x0021"/>
+   <map adobe-name="exclamdown" win-ansi="0x00A1" unicode="0x00A1"/>
+   <map adobe-name="f" win-ansi="0x0066" unicode="0x0066"/>
+   <map adobe-name="fi" win-ansi="-1" unicode="-1"/>
+   <map adobe-name="five" win-ansi="0x0035" unicode="0x0035"/>
+   <map adobe-name="fl" win-ansi="-1" unicode="-1"/>
+   <map adobe-name="florin" win-ansi="0x0083" unicode="0x0083"/>
+   <map adobe-name="four" win-ansi="0x0034" unicode="0x0034"/>
+   <!-- fj   <map adobe-name="fraction" win-ansi="-1" unicode="0x2044"/> -->
+   <map adobe-name="g" win-ansi="0x0067" unicode="0x0067"/>
+   <map adobe-name="gcaron" win-ansi="-1" unicode="0x01E7"/>
+   <map adobe-name="germandbls" win-ansi="0x00DF" unicode="0x00DF"/>
+   <map adobe-name="grave" win-ansi="0x0060" unicode="0x0060"/>
+   <map adobe-name="greater" win-ansi="0x003E" unicode="0x003E"/>
+   <map adobe-name="guillemotleft" win-ansi="0x00AB" unicode="0x00AB"/>
+   <map adobe-name="guillemotright" win-ansi="0x00BB" unicode="0x00BB"/>
+   <map adobe-name="guilsinglleft" win-ansi="0x008B" unicode="0x2039"/>
+   <map adobe-name="guilsinglright" win-ansi="0x009B" unicode="0x203A"/>
+   <map adobe-name="h" win-ansi="0x0068" unicode="0x0068"/>
+   <map adobe-name="hungarumlaut" win-ansi="-1" unicode="0x02DD"/>
+   <map adobe-name="hyphen" win-ansi="0x002D" unicode="0x002D"/>
+   <map adobe-name="i" win-ansi="0x0069" unicode="0x0069"/>
+   <map adobe-name="iacute" win-ansi="0x00ED" unicode="0x00ED"/>
+   <map adobe-name="icircumflex" win-ansi="0x00EE" unicode="0x00EE"/>
+   <map adobe-name="idieresis" win-ansi="0x00EF" unicode="0x00EF"/>
+   <map adobe-name="igrave" win-ansi="0x00EC" unicode="0x00EC"/>
+   <map adobe-name="ij" win-ansi="-1" unicode="0x0133"/>
+   <map adobe-name="j" win-ansi="0x006A" unicode="0x006A"/>
+   <map adobe-name="k" win-ansi="0x006B" unicode="0x006B"/>
+   <map adobe-name="l" win-ansi="0x006C" unicode="0x006C"/>
+   <map adobe-name="less" win-ansi="0x003C" unicode="0x003C"/>
+   <map adobe-name="lira" win-ansi="-1" unicode="0x20A4"/>
+   <map adobe-name="logicalnot" win-ansi="0x00AC" unicode="0x00AC"/>
+   <map adobe-name="lslash" win-ansi="-1" unicode="0x0142"/>
+   <map adobe-name="m" win-ansi="0x006D" unicode="0x006D"/>
+   <map adobe-name="macron" win-ansi="0x00AF" unicode="0x00AF"/>
+   <!-- fj <map adobe-name="minus" win-ansi="-1" unicode="0x2212"/>-->
+   <map adobe-name="mu" win-ansi="0x00B5" unicode="0x00B5"/>
+   <map adobe-name="multiply" win-ansi="0x00D7" unicode="0x00D7"/>
+   <map adobe-name="n" win-ansi="0x006E" unicode="0x006E"/>
+   <!-- JKT: the following is not actually an adobe named character -->
+   <map adobe-name="nbsp" win-ansi="0x00A0" unicode="0x00A0"/>
+   <map adobe-name="nine" win-ansi="0x0039" unicode="0x0039"/>
+   <map adobe-name="ntilde" win-ansi="0x00F1" unicode="0x00F1"/>
+   <map adobe-name="numbersign" win-ansi="0x0023" unicode="0x0023"/>
+   <map adobe-name="o" win-ansi="0x006F" unicode="0x006F"/>
+   <map adobe-name="oacute" win-ansi="0x00F3" unicode="0x00F3"/>
+   <map adobe-name="ocircumflex" win-ansi="0x00F4" unicode="0x00F4"/>
+   <map adobe-name="odieresis" win-ansi="0x00F6" unicode="0x00F6"/>
+   <map adobe-name="oe" win-ansi="0x009C" unicode="0x0153"/>
+   <map adobe-name="ogonek" win-ansi="-1" unicode="0x02DB"/>
+   <map adobe-name="ograve" win-ansi="0x00F2" unicode="0x00F2"/>
+   <map adobe-name="one" win-ansi="0x0031" unicode="0x0031"/>
+   <map adobe-name="onehalf" win-ansi="0x00BD" unicode="0x00BD"/>
+   <map adobe-name="onequarter" win-ansi="0x00BC" unicode="0x00BC"/>
+   <map adobe-name="onesuperior" win-ansi="0x00B9" unicode="0x00B9"/>
+   <map adobe-name="ordfeminine" win-ansi="0x00AA" unicode="0x00AA"/>
+   <map adobe-name="ordmasculine" win-ansi="0x00BA" unicode="0x00BA"/>
+   <map adobe-name="oslash" win-ansi="0x00F8" unicode="0x00F8"/>
+   <map adobe-name="otilde" win-ansi="0x00F5" unicode="0x00F5"/>
+   <map adobe-name="p" win-ansi="0x0070" unicode="0x0070"/>
+   <map adobe-name="paragraph" win-ansi="0x00B6" unicode="0x00B6"/>
+   <map adobe-name="parenleft" win-ansi="0x0028" unicode="0x0028"/>
+   <map adobe-name="parenright" win-ansi="0x0029" unicode="0x0029"/>
+   <map adobe-name="percent" win-ansi="0x0025" unicode="0x0025"/>
+   <map adobe-name="period" win-ansi="0x002E" unicode="0x002E"/>
+   <map adobe-name="periodcentered" win-ansi="0x00B7" unicode="0x00B7"/>
+   <map adobe-name="perthousand" win-ansi="0x0089" unicode="0x2030"/>
+   <map adobe-name="plus" win-ansi="0x002B" unicode="0x002B"/>
+   <map adobe-name="plusminus" win-ansi="0x00B1" unicode="0x00B1"/>
+   <map adobe-name="q" win-ansi="0x0071" unicode="0x0071"/>
+   <map adobe-name="question" win-ansi="0x003F" unicode="0x003F"/>
+   <map adobe-name="questiondown" win-ansi="0x00BF" unicode="0x00BF"/>
+   <map adobe-name="quotedbl" win-ansi="0x0022" unicode="0x0022"/>
+   <map adobe-name="quotedblbase" win-ansi="0x0084" unicode="0x201E"/>
+   <map adobe-name="quotedblleft" win-ansi="0x0093" unicode="0x201C"/>
+   <map adobe-name="quotedblright" win-ansi="0x0094" unicode="0x201D"/>
+   <map adobe-name="quoteleft" win-ansi="0x0091" unicode="0x2018"/>
+   <map adobe-name="quoteright" win-ansi="0x0092" unicode="0x2019"/>
+   <map adobe-name="quotesinglbase" win-ansi="0x0082" unicode="0x201A"/>
+   <map adobe-name="quotesingle" win-ansi="0x0027" unicode="0x0027"/>
+   <map adobe-name="r" win-ansi="0x0072" unicode="0x0072"/>
+   <map adobe-name="registered" win-ansi="0x00AE" unicode="0x00AE"/>
+   <map adobe-name="s" win-ansi="0x0073" unicode="0x0073"/>
+   <map adobe-name="scaron" win-ansi="0x009A" unicode="0x0161"/>
+   <map adobe-name="scedilla" win-ansi="-1" unicode="0x015F"/>
+   <map adobe-name="section" win-ansi="0x00A7" unicode="0x00A7"/>
+   <map adobe-name="semicolon" win-ansi="0x003B" unicode="0x003B"/>
+   <map adobe-name="seven" win-ansi="0x0037" unicode="0x0037"/>
+   <map adobe-name="six" win-ansi="0x0036" unicode="0x0036"/>
+   <map adobe-name="slash" win-ansi="0x002F" unicode="0x002F"/>
+   <map adobe-name="space" win-ansi="0x0020" unicode="0x0020"/>
+   <map adobe-name="sterling" win-ansi="0x00A3" unicode="0x00A3"/>
+   <map adobe-name="t" win-ansi="0x0074" unicode="0x0074"/>
+   <map adobe-name="thorn" win-ansi="0x00FE" unicode="0x00FE"/>
+   <map adobe-name="three" win-ansi="0x0033" unicode="0x0033"/>
+   <map adobe-name="threequarters" win-ansi="0x00BE" unicode="0x00BE"/>
+   <map adobe-name="threesuperior" win-ansi="0x00B3" unicode="0x00B3"/>
+   <map adobe-name="tilde" win-ansi="0x0098" unicode="0x02DC"/>
+   <map adobe-name="trademark" win-ansi="0x0099" unicode="0x2122"/>
+   <map adobe-name="two" win-ansi="0x0032" unicode="0x0032"/>
+   <map adobe-name="twosuperior" win-ansi="0x00B2" unicode="0x00B2"/>
+   <map adobe-name="u" win-ansi="0x0075" unicode="0x0075"/>
+   <map adobe-name="uacute" win-ansi="0x00FA" unicode="0x00FA"/>
+   <map adobe-name="ucircumflex" win-ansi="0x00FB" unicode="0x00FB"/>
+   <map adobe-name="udieresis" win-ansi="0x00FC" unicode="0x00FC"/>
+   <map adobe-name="ugrave" win-ansi="0x00F9" unicode="0x00F9"/>
+   <map adobe-name="underscore" win-ansi="0x005F" unicode="0x005F"/>
+   <map adobe-name="v" win-ansi="0x0076" unicode="0x0076"/>
+   <map adobe-name="w" win-ansi="0x0077" unicode="0x0077"/>
+   <map adobe-name="x" win-ansi="0x0078" unicode="0x0078"/>
+   <map adobe-name="y" win-ansi="0x0079" unicode="0x0079"/>
+   <map adobe-name="yacute" win-ansi="0x00FD" unicode="0x00FD"/>
+   <map adobe-name="ydieresis" win-ansi="0x00FF" unicode="0x00FF"/>
+   <map adobe-name="yen" win-ansi="0x00A5" unicode="0x00A5"/>
+   <map adobe-name="z" win-ansi="0x007A" unicode="0x007A"/>
+   <map adobe-name="zcaron" win-ansi="-1" unicode="0x017E"/>
+   <map adobe-name="zero" win-ansi="0x0030" unicode="0x0030"/>
+   <!-- the following mappings are used for the font zapfdingbats -->
+   <map adobe-name="a1" win-ansi="0x0021" unicode="0x2701" unicodeName="UPPER BLADE SCISSORS"/>
+   <map adobe-name="a2" win-ansi="0x0022" unicode="0x2702" unicodeName="BLACK SCISSORS"/>
+   <map adobe-name="a202" win-ansi="0x0023" unicode="0x2703" unicodeName="LOWER BLADE SCISSORS"/>
+   <map adobe-name="a3" win-ansi="0x0024" unicode="0x2704" unicodeName="WHITE SCISSORS"/>
+   <map adobe-name="a4" win-ansi="0x0025" unicode="0x260E" unicodeName="BLACK TELEPHONE"/>
+   <map adobe-name="a5" win-ansi="0x0026" unicode="0x2706" unicodeName="TELEPHONE LOCATION SIGN"/>
+   <map adobe-name="a119" win-ansi="0x0027" unicode="0x2707" unicodeName="TAPE DRIVE"/>
+   <map adobe-name="a118" win-ansi="0x0028" unicode="0x2708" unicodeName="AIRPLANE"/>
+   <map adobe-name="a117" win-ansi="0x0029" unicode="0x2709" unicodeName="ENVELOPE"/>
+   <map adobe-name="a11" win-ansi="0x002A" unicode="0x261B" unicodeName="BLACK RIGHT POINTING INDEX"/>
+   <map adobe-name="a12" win-ansi="0x002B" unicode="0x261E" unicodeName="WHITE RIGHT POINTING INDEX"/>
+   <map adobe-name="a13" win-ansi="0x002C" unicode="0x270C" unicodeName="VICTORY HAND"/>
+   <map adobe-name="a14" win-ansi="0x002D" unicode="0x270D" unicodeName="WRITING HAND"/>
+   <map adobe-name="a15" win-ansi="0x002E" unicode="0x270E" unicodeName="LOWER RIGHT PENCIL"/>
+   <map adobe-name="a16" win-ansi="0x002F" unicode="0x270F" unicodeName="PENCIL"/>
+   <map adobe-name="a105" win-ansi="0x0030" unicode="0x2710" unicodeName="UPPER RIGHT PENCIL"/>
+   <map adobe-name="a17" win-ansi="0x0031" unicode="0x2711" unicodeName="WHITE NIB"/>
+   <map adobe-name="a18" win-ansi="0x0032" unicode="0x2712" unicodeName="BLACK NIB"/>
+   <map adobe-name="a19" win-ansi="0x0033" unicode="0x2713" unicodeName="CHECK MARK"/>
+   <map adobe-name="a20" win-ansi="0x0034" unicode="0x2714" unicodeName="HEAVY CHECK MARK"/>
+   <map adobe-name="a21" win-ansi="0x0035" unicode="0x2715" unicodeName="MULTIPLICATION X"/>
+   <map adobe-name="a22" win-ansi="0x0036" unicode="0x2716" unicodeName="HEAVY MULTIPLICATION X"/>
+   <map adobe-name="a23" win-ansi="0x0037" unicode="0x2717" unicodeName="BALLOT X"/>
+   <map adobe-name="a24" win-ansi="0x0038" unicode="0x2718" unicodeName="HEAVY BALLOT X"/>
+   <map adobe-name="a25" win-ansi="0x0039" unicode="0x2719" unicodeName="OUTLINED GREEK CROSS"/>
+   <map adobe-name="a26" win-ansi="0x003A" unicode="0x271A" unicodeName="HEAVY GREEK CROSS"/>
+   <map adobe-name="a27" win-ansi="0x003B" unicode="0x271B" unicodeName="OPEN CENTRE CROSS"/>
+   <map adobe-name="a28" win-ansi="0x003C" unicode="0x271C" unicodeName="HEAVY OPEN CENTRE CROSS"/>
+   <map adobe-name="a6" win-ansi="0x003D" unicode="0x271D" unicodeName="LATIN CROSS"/>
+   <map adobe-name="a7" win-ansi="0x003E" unicode="0x271E" unicodeName="SHADOWED WHITE LATIN CROSS"/>
+   <map adobe-name="a8" win-ansi="0x003F" unicode="0x271F" unicodeName="OUTLINED LATIN CROSS"/>
+   <map adobe-name="a9" win-ansi="0x0040" unicode="0x2720" unicodeName="MALTESE CROSS"/>
+   <map adobe-name="a10" win-ansi="0x0041" unicode="0x2721" unicodeName="STAR OF DAVID"/>
+   <map adobe-name="a29" win-ansi="0x0042" unicode="0x2722" unicodeName="FOUR TEARDROP-SPOKED ASTERISK"/>
+   <map adobe-name="a30" win-ansi="0x0043" unicode="0x2723" unicodeName="FOUR BALLOON-SPOKED ASTERISK"/>
+   <map adobe-name="a31" win-ansi="0x0044" unicode="0x2724" unicodeName="HEAVY FOUR BALLOON-SPOKED ASTERISK"/>
+   <map adobe-name="a32" win-ansi="0x0045" unicode="0x2725" unicodeName="FOUR CLUB-SPOKED ASTERISK"/>
+   <map adobe-name="a33" win-ansi="0x0046" unicode="0x2726" unicodeName="BLACK FOUR POINTED STAR"/>
+   <map adobe-name="a34" win-ansi="0x0047" unicode="0x2727" unicodeName="WHITE FOUR POINTED STAR"/>
+   <map adobe-name="a35" win-ansi="0x0048" unicode="0x2605" unicodeName="BLACK STAR"/>
+   <map adobe-name="a36" win-ansi="0x0049" unicode="0x2729" unicodeName="STRESS OUTLINED WHITE STAR"/>
+   <map adobe-name="a37" win-ansi="0x004A" unicode="0x272A" unicodeName="CIRCLED WHITE STAR"/>
+   <map adobe-name="a38" win-ansi="0x004B" unicode="0x272B" unicodeName="OPEN CENTRE BLACK STAR"/>
+   <map adobe-name="a39" win-ansi="0x004C" unicode="0x272C" unicodeName="BLACK CENTRE WHITE STAR"/>
+   <map adobe-name="a40" win-ansi="0x004D" unicode="0x272D" unicodeName="OUTLINED BLACK STAR"/>
+   <map adobe-name="a41" win-ansi="0x004E" unicode="0x272E" unicodeName="HEAVY OUTLINED BLACK STAR"/>
+   <map adobe-name="a42" win-ansi="0x004F" unicode="0x272F" unicodeName="PINWHEEL STAR"/>
+   <map adobe-name="a43" win-ansi="0x0050" unicode="0x2730" unicodeName="SHADOWED WHITE STAR"/>
+   <map adobe-name="a44" win-ansi="0x0051" unicode="0x2731" unicodeName="HEAVY ASTERISK"/>
+   <map adobe-name="a45" win-ansi="0x0052" unicode="0x2732" unicodeName="OPEN CENTRE ASTERISK"/>
+   <map adobe-name="a46" win-ansi="0x0053" unicode="0x2733" unicodeName="EIGHT SPOKED ASTERISK"/>
+   <map adobe-name="a47" win-ansi="0x0054" unicode="0x2734" unicodeName="EIGHT POINTED BLACK STAR"/>
+   <map adobe-name="a48" win-ansi="0x0055" unicode="0x2735" unicodeName="EIGHT POINTED PINWHEEL STAR"/>
+   <map adobe-name="a49" win-ansi="0x0056" unicode="0x2736" unicodeName="SIX POINTED BLACK STAR"/>
+   <map adobe-name="a50" win-ansi="0x0057" unicode="0x2737" unicodeName="EIGHT POINTED RECTILINEAR BLACK STAR"/>
+   <map adobe-name="a51" win-ansi="0x0058" unicode="0x2738" unicodeName="HEAVY EIGHT POINTED RECTILINEAR BLACK STAR"/>
+   <map adobe-name="a52" win-ansi="0x0059" unicode="0x2739" unicodeName="TWELVE POINTED BLACK STAR"/>
+   <map adobe-name="a53" win-ansi="0x005A" unicode="0x273A" unicodeName="SIXTEEN POINTED ASTERISK"/>
+   <map adobe-name="a54" win-ansi="0x005B" unicode="0x273B" unicodeName="TEARDROP-SPOKED ASTERISK"/>
+   <map adobe-name="a55" win-ansi="0x005C" unicode="0x273C" unicodeName="OPEN CENTRE TEARDROP-SPOKED ASTERISK"/>
+   <map adobe-name="a56" win-ansi="0x005D" unicode="0x273D" unicodeName="HEAVY TEARDROP-SPOKED ASTERISK"/>
+   <map adobe-name="a57" win-ansi="0x005E" unicode="0x273E" unicodeName="SIX PETALLED BLACK AND WHITE FLORETTE"/>
+   <map adobe-name="a58" win-ansi="0x005F" unicode="0x273F" unicodeName="BLACK FLORETTE"/>
+   <map adobe-name="a59" win-ansi="0x0060" unicode="0x2740" unicodeName="WHITE FLORETTE"/>
+   <map adobe-name="a60" win-ansi="0x0061" unicode="0x2741" unicodeName="EIGHT PETALLED OUTLINED BLACK FLORETTE"/>
+   <map adobe-name="a61" win-ansi="0x0062" unicode="0x2742" unicodeName="CIRCLED OPEN CENTRE EIGHT POINTED STAR"/>
+   <map adobe-name="a62" win-ansi="0x0063" unicode="0x2743" unicodeName="HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK"/>
+   <map adobe-name="a63" win-ansi="0x0064" unicode="0x2744" unicodeName="SNOWFLAKE"/>
+   <map adobe-name="a64" win-ansi="0x0065" unicode="0x2745" unicodeName="TIGHT TRIFOLIATE SNOWFLAKE"/>
+   <map adobe-name="a65" win-ansi="0x0066" unicode="0x2746" unicodeName="HEAVY CHEVRON SNOWFLAKE"/>
+   <map adobe-name="a66" win-ansi="0x0067" unicode="0x2747" unicodeName="SPARKLE"/>
+   <map adobe-name="a67" win-ansi="0x0068" unicode="0x2748" unicodeName="HEAVY SPARKLE"/>
+   <map adobe-name="a68" win-ansi="0x0069" unicode="0x2749" unicodeName="BALLOON-SPOKED ASTERISK"/>
+   <map adobe-name="a69" win-ansi="0x006A" unicode="0x274A" unicodeName="EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"/>
+   <map adobe-name="a70" win-ansi="0x006B" unicode="0x274B" unicodeName="HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"/>
+   <map adobe-name="a71" win-ansi="0x006C" unicode="0x25CF" unicodeName="BLACK CIRCLE"/>
+   <map adobe-name="a72" win-ansi="0x006D" unicode="0x274D" unicodeName="SHADOWED WHITE CIRCLE"/>
+   <map adobe-name="a73" win-ansi="0x006E" unicode="0x25A0" unicodeName="BLACK SQUARE"/>
+   <map adobe-name="a74" win-ansi="0x006F" unicode="0x274F" unicodeName="LOWER RIGHT DROP-SHADOWED WHITE SQUARE"/>
+   <map adobe-name="a203" win-ansi="0x0070" unicode="0x2750" unicodeName="UPPER RIGHT DROP-SHADOWED WHITE SQUARE"/>
+   <map adobe-name="a75" win-ansi="0x0071" unicode="0x2751" unicodeName="LOWER RIGHT SHADOWED WHITE SQUARE"/>
+   <map adobe-name="a204" win-ansi="0x0072" unicode="0x2752" unicodeName="UPPER RIGHT SHADOWED WHITE SQUARE"/>
+   <map adobe-name="a76" win-ansi="0x0073" unicode="0x25B2" unicodeName="BLACK UP-POINTING TRIANGLE"/>
+   <map adobe-name="a77" win-ansi="0x0074" unicode="0x25BC" unicodeName="BLACK DOWN-POINTING TRIANGLE"/>
+   <map adobe-name="a78" win-ansi="0x0075" unicode="0x25C6" unicodeName="BLACK DIAMOND"/>
+   <map adobe-name="a79" win-ansi="0x0076" unicode="0x2756" unicodeName="BLACK DIAMOND MINUS WHITE X"/>
+   <map adobe-name="a81" win-ansi="0x0077" unicode="0x25D7" unicodeName="RIGHT HALF BLACK CIRCLE"/>
+   <map adobe-name="a82" win-ansi="0x0078" unicode="0x2758" unicodeName="LIGHT VERTICAL BAR"/>
+   <map adobe-name="a83" win-ansi="0x0079" unicode="0x2759" unicodeName="MEDIUM VERTICAL BAR"/>
+   <map adobe-name="a84" win-ansi="0x007A" unicode="0x275A" unicodeName="HEAVY VERTICAL BAR"/>
+   <map adobe-name="a97" win-ansi="0x007B" unicode="0x275B" unicodeName="HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT"/>
+   <map adobe-name="a98" win-ansi="0x007C" unicode="0x275C" unicodeName="HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT"/>
+   <map adobe-name="a99" win-ansi="0x007D" unicode="0x275D" unicodeName="HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT"/>
+   <map adobe-name="a100" win-ansi="0x007E" unicode="0x275E" unicodeName="HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT"/>
+   <map adobe-name="a89" win-ansi="0x0080" unicode="0xF8D7" unicodeName="MEDIUM LEFT PARENTHESIS ORNAMENT"/>
+   <map adobe-name="a90" win-ansi="0x0081" unicode="0xF8D8" unicodeName="MEDIUM RIGHT PARENTHESIS ORNAMENT"/>
+   <map adobe-name="a93" win-ansi="0x0082" unicode="0xF8D9" unicodeName="MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT"/>
+   <map adobe-name="a94" win-ansi="0x0083" unicode="0xF8DA" unicodeName="MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT"/>
+   <map adobe-name="a91" win-ansi="0x0084" unicode="0xF8DB" unicodeName="MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT"/>
+   <map adobe-name="a92" win-ansi="0x0085" unicode="0xF8DC" unicodeName="MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT"/>
+   <map adobe-name="a205" win-ansi="0x0086" unicode="0xF8DD" unicodeName="HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT"/>
+   <map adobe-name="a85" win-ansi="0x0087" unicode="0xF8DE" unicodeName="HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT"/>
+   <map adobe-name="a206" win-ansi="0x0088" unicode="0xF8DF" unicodeName="HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT"/>
+   <map adobe-name="a86" win-ansi="0x0089" unicode="0xF8E0" unicodeName="HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT"/>
+   <map adobe-name="a87" win-ansi="0x008A" unicode="0xF8E1" unicodeName="LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT"/>
+   <map adobe-name="a88" win-ansi="0x008B" unicode="0xF8E2" unicodeName="LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT"/>
+   <map adobe-name="a95" win-ansi="0x008C" unicode="0xF8E3" unicodeName="MEDIUM LEFT CURLY BRACKET ORNAMENT"/>
+   <map adobe-name="a96" win-ansi="0x008D" unicode="0xF8E4" unicodeName="MEDIUM RIGHT CURLY BRACKET ORNAMENT"/>
+   <map adobe-name="a101" win-ansi="0x00A1" unicode="0x2761" unicodeName="CURVED STEM PARAGRAPH SIGN ORNAMENT"/>
+   <map adobe-name="a102" win-ansi="0x00A2" unicode="0x2762" unicodeName="HEAVY EXCLAMATION MARK ORNAMENT"/>
+   <map adobe-name="a103" win-ansi="0x00A3" unicode="0x2763" unicodeName="HEAVY HEART EXCLAMATION MARK ORNAMENT"/>
+   <map adobe-name="a104" win-ansi="0x00A4" unicode="0x2764" unicodeName="HEAVY BLACK HEART"/>
+   <map adobe-name="a106" win-ansi="0x00A5" unicode="0x2765" unicodeName="ROTATED HEAVY BLACK HEART BULLET"/>
+   <map adobe-name="a107" win-ansi="0x00A6" unicode="0x2766" unicodeName="FLORAL HEART"/>
+   <map adobe-name="a108" win-ansi="0x00A7" unicode="0x2767" unicodeName="ROTATED FLORAL HEART BULLET"/>
+   <map adobe-name="a120" win-ansi="0x00AC" unicode="0x2460" unicodeName="CIRCLED DIGIT ONE"/>
+   <map adobe-name="a121" win-ansi="0x00AD" unicode="0x2461" unicodeName="CIRCLED DIGIT TWO"/>
+   <map adobe-name="a122" win-ansi="0x00AE" unicode="0x2462" unicodeName="CIRCLED DIGIT THREE"/>
+   <map adobe-name="a123" win-ansi="0x00AF" unicode="0x2463" unicodeName="CIRCLED DIGIT FOUR"/>
+   <map adobe-name="a124" win-ansi="0x00B0" unicode="0x2464" unicodeName="CIRCLED DIGIT FIVE"/>
+   <map adobe-name="a125" win-ansi="0x00B1" unicode="0x2465" unicodeName="CIRCLED DIGIT SIX"/>
+   <map adobe-name="a126" win-ansi="0x00B2" unicode="0x2466" unicodeName="CIRCLED DIGIT SEVEN"/>
+   <map adobe-name="a127" win-ansi="0x00B3" unicode="0x2467" unicodeName="CIRCLED DIGIT EIGHT"/>
+   <map adobe-name="a128" win-ansi="0x00B4" unicode="0x2468" unicodeName="CIRCLED DIGIT NINE"/>
+   <map adobe-name="a129" win-ansi="0x00B5" unicode="0x2469" unicodeName="CIRCLED NUMBER TEN"/>
+   <map adobe-name="a130" win-ansi="0x00B6" unicode="0x2776" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT ONE"/>
+   <map adobe-name="a131" win-ansi="0x00B7" unicode="0x2777" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT TWO"/>
+   <map adobe-name="a132" win-ansi="0x00B8" unicode="0x2778" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT THREE"/>
+   <map adobe-name="a133" win-ansi="0x00B9" unicode="0x2779" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT FOUR"/>
+   <map adobe-name="a134" win-ansi="0x00BA" unicode="0x277A" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT FIVE"/>
+   <map adobe-name="a135" win-ansi="0x00BB" unicode="0x277B" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT SIX"/>
+   <map adobe-name="a136" win-ansi="0x00BC" unicode="0x277C" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT SEVEN"/>
+   <map adobe-name="a137" win-ansi="0x00BD" unicode="0x277D" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT EIGHT"/>
+   <map adobe-name="a138" win-ansi="0x00BE" unicode="0x277E" unicodeName="DINGBAT NEGATIVE CIRCLED DIGIT NINE"/>
+   <map adobe-name="a139" win-ansi="0x00BF" unicode="0x277F" unicodeName="DINGBAT NEGATIVE CIRCLED NUMBER TEN"/>
+   <map adobe-name="a140" win-ansi="0x00C0" unicode="0x2780" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT ONE"/>
+   <map adobe-name="a141" win-ansi="0x00C1" unicode="0x2781" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT TWO"/>
+   <map adobe-name="a142" win-ansi="0x00C2" unicode="0x2782" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT THREE"/>
+   <map adobe-name="a143" win-ansi="0x00C3" unicode="0x2783" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT FOUR"/>
+   <map adobe-name="a144" win-ansi="0x00C4" unicode="0x2784" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT FIVE"/>
+   <map adobe-name="a145" win-ansi="0x00C5" unicode="0x2785" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT SIX"/>
+   <map adobe-name="a146" win-ansi="0x00C6" unicode="0x2786" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN"/>
+   <map adobe-name="a147" win-ansi="0x00C7" unicode="0x2787" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT"/>
+   <map adobe-name="a148" win-ansi="0x00C8" unicode="0x2788" unicodeName="DINGBAT CIRCLED SANS-SERIF DIGIT NINE"/>
+   <map adobe-name="a149" win-ansi="0x00C9" unicode="0x2789" unicodeName="DINGBAT CIRCLED SANS-SERIF NUMBER TEN"/>
+   <map adobe-name="a150" win-ansi="0x00CA" unicode="0x278A" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE"/>
+   <map adobe-name="a151" win-ansi="0x00CB" unicode="0x278B" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO"/>
+   <map adobe-name="a152" win-ansi="0x00CC" unicode="0x278C" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE"/>
+   <map adobe-name="a153" win-ansi="0x00CD" unicode="0x278D" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR"/>
+   <map adobe-name="a154" win-ansi="0x00CE" unicode="0x278E" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE"/>
+   <map adobe-name="a155" win-ansi="0x00CF" unicode="0x278F" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX"/>
+   <map adobe-name="a156" win-ansi="0x00D0" unicode="0x2790" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN"/>
+   <map adobe-name="a157" win-ansi="0x00D1" unicode="0x2791" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT"/>
+   <map adobe-name="a158" win-ansi="0x00D2" unicode="0x2792" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE"/>
+   <map adobe-name="a159" win-ansi="0x00D3" unicode="0x2793" unicodeName="DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN"/>
+   <map adobe-name="a160" win-ansi="0x00D4" unicode="0x2794" unicodeName="HEAVY WIDE-HEADED RIGHTWARDS ARROW"/>
+   <map adobe-name="a164" win-ansi="0x00D7" unicode="0x2195" unicodeName="UP DOWN ARROW"/>
+   <map adobe-name="a196" win-ansi="0x00D8" unicode="0x2798" unicodeName="HEAVY SOUTH EAST ARROW"/>
+   <map adobe-name="a165" win-ansi="0x00D9" unicode="0x2799" unicodeName="HEAVY RIGHTWARDS ARROW"/>
+   <map adobe-name="a192" win-ansi="0x00DA" unicode="0x279A" unicodeName="HEAVY NORTH EAST ARROW"/>
+   <map adobe-name="a166" win-ansi="0x00DB" unicode="0x279B" unicodeName="DRAFTING POINT RIGHTWARDS ARROW"/>
+   <map adobe-name="a167" win-ansi="0x00DC" unicode="0x279C" unicodeName="HEAVY ROUND-TIPPED RIGHTWARDS ARROW"/>
+   <map adobe-name="a168" win-ansi="0x00DD" unicode="0x279D" unicodeName="TRIANGLE-HEADED RIGHTWARDS ARROW"/>
+   <map adobe-name="a169" win-ansi="0x00DE" unicode="0x279E" unicodeName="HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW"/>
+   <map adobe-name="a170" win-ansi="0x00DF" unicode="0x279F" unicodeName="DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"/>
+   <map adobe-name="a171" win-ansi="0x00E0" unicode="0x27A0" unicodeName="HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"/>
+   <map adobe-name="a172" win-ansi="0x00E1" unicode="0x27A1" unicodeName="BLACK RIGHTWARDS ARROW"/>
+   <map adobe-name="a173" win-ansi="0x00E2" unicode="0x27A2" unicodeName="THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD"/>
+   <map adobe-name="a162" win-ansi="0x00E3" unicode="0x27A3" unicodeName="THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD"/>
+   <map adobe-name="a174" win-ansi="0x00E4" unicode="0x27A4" unicodeName="BLACK RIGHTWARDS ARROWHEAD"/>
+   <map adobe-name="a175" win-ansi="0x00E5" unicode="0x27A5" unicodeName="HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW"/>
+   <map adobe-name="a176" win-ansi="0x00E6" unicode="0x27A6" unicodeName="HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW"/>
+   <map adobe-name="a177" win-ansi="0x00E7" unicode="0x27A7" unicodeName="SQUAT BLACK RIGHTWARDS ARROW"/>
+   <map adobe-name="a178" win-ansi="0x00E8" unicode="0x27A8" unicodeName="HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW"/>
+   <map adobe-name="a179" win-ansi="0x00E9" unicode="0x27A9" unicodeName="RIGHT-SHADED WHITE RIGHTWARDS ARROW"/>
+   <map adobe-name="a193" win-ansi="0x00EA" unicode="0x27AA" unicodeName="LEFT-SHADED WHITE RIGHTWARDS ARROW"/>
+   <map adobe-name="a180" win-ansi="0x00EB" unicode="0x27AB" unicodeName="BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW"/>
+   <map adobe-name="a199" win-ansi="0x00EC" unicode="0x27AC" unicodeName="FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW"/>
+   <map adobe-name="a181" win-ansi="0x00ED" unicode="0x27AD" unicodeName="HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"/>
+   <map adobe-name="a200" win-ansi="0x00EE" unicode="0x27AE" unicodeName="HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"/>
+   <map adobe-name="a182" win-ansi="0x00EF" unicode="0x27AF" unicodeName="NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"/>
+   <map adobe-name="a201" win-ansi="0x00F1" unicode="0x27B1" unicodeName="NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"/>
+   <map adobe-name="a183" win-ansi="0x00F2" unicode="0x27B2" unicodeName="CIRCLED HEAVY WHITE RIGHTWARDS ARROW"/>
+   <map adobe-name="a184" win-ansi="0x00F3" unicode="0x27B3" unicodeName="WHITE-FEATHERED RIGHTWARDS ARROW"/>
+   <map adobe-name="a197" win-ansi="0x00F4" unicode="0x27B4" unicodeName="BLACK-FEATHERED SOUTH EAST ARROW"/>
+   <map adobe-name="a185" win-ansi="0x00F5" unicode="0x27B5" unicodeName="BLACK-FEATHERED RIGHTWARDS ARROW"/>
+   <map adobe-name="a194" win-ansi="0x00F6" unicode="0x27B6" unicodeName="BLACK-FEATHERED NORTH EAST ARROW"/>
+   <map adobe-name="a198" win-ansi="0x00F7" unicode="0x27B7" unicodeName="HEAVY BLACK-FEATHERED SOUTH EAST ARROW"/>
+   <map adobe-name="a186" win-ansi="0x00F8" unicode="0x27B8" unicodeName="HEAVY BLACK-FEATHERED RIGHTWARDS ARROW"/>
+   <map adobe-name="a195" win-ansi="0x00F9" unicode="0x27B9" unicodeName="HEAVY BLACK-FEATHERED NORTH EAST ARROW"/>
+   <map adobe-name="a187" win-ansi="0x00FA" unicode="0x27BA" unicodeName="TEARDROP-BARBED RIGHTWARDS ARROW"/>
+   <map adobe-name="a188" win-ansi="0x00FB" unicode="0x27BB" unicodeName="HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW"/>
+   <map adobe-name="a189" win-ansi="0x00FC" unicode="0x27BC" unicodeName="WEDGE-TAILED RIGHTWARDS ARROW"/>
+   <map adobe-name="a190" win-ansi="0x00FD" unicode="0x27BD" unicodeName="HEAVY WEDGE-TAILED RIGHTWARDS ARROW"/>
+   <map adobe-name="a191" win-ansi="0x00FE" unicode="0x27BE" unicodeName="OPEN-OUTLINED RIGHTWARDS ARROW"/>
+   <!-- the following mappings are used for the Symbol font
+    TBD: remove doublettes  -->
+   <map adobe-name="universal" win-ansi="0x22" unicode="0x2200"/>
+   <map adobe-name="existential" win-ansi="0x24" unicode="0x2203"/>
+   <map adobe-name="suchthat" win-ansi="0x27" unicode="0x220B"/>
+   <map adobe-name="asteriskmath" win-ansi="0x2A" unicode="0x2217"/>
+   <map adobe-name="minus" win-ansi="0x2D" unicode="0x2212"/>
+   <map adobe-name="congruent" win-ansi="0x40" unicode="0x2245"/>
+   <map adobe-name="Alpha" win-ansi="0x41" unicode="0x0391"/>
+   <map adobe-name="Beta" win-ansi="0x42" unicode="0x0392"/>
+   <map adobe-name="Chi" win-ansi="0x43" unicode="0x03A7"/>
+   <map adobe-name="Delta" win-ansi="0x44" unicode="0x2206"/>
+   <map adobe-name="Epsilon" win-ansi="0x45" unicode="0x0395"/>
+   <map adobe-name="Phi" win-ansi="0x46" unicode="0x03A6"/>
+   <map adobe-name="Gamma" win-ansi="0x47" unicode="0x0393"/>
+   <map adobe-name="Eta" win-ansi="0x48" unicode="0x0397"/>
+   <map adobe-name="Iota" win-ansi="0x49" unicode="0x0399"/>
+   <map adobe-name="theta1" win-ansi="0x4A" unicode="0x03D1"/>
+   <map adobe-name="Kappa" win-ansi="0x4B" unicode="0x039A"/>
+   <map adobe-name="Lambda" win-ansi="0x4C" unicode="0x039B"/>
+   <map adobe-name="Mu" win-ansi="0x4D" unicode="0x039C"/>
+   <map adobe-name="Nu" win-ansi="0x4E" unicode="0x039D"/>
+   <map adobe-name="Omicron" win-ansi="0x4F" unicode="0x039F"/>
+   <map adobe-name="Pi" win-ansi="0x50" unicode="0x03A0"/>
+   <map adobe-name="Theta" win-ansi="0x51" unicode="0x0398"/>
+   <map adobe-name="Rho" win-ansi="0x52" unicode="0x03A1"/>
+   <map adobe-name="Sigma" win-ansi="0x53" unicode="0x03A3"/>
+   <map adobe-name="Tau" win-ansi="0x54" unicode="0x03A4"/>
+   <map adobe-name="Upsilon" win-ansi="0x55" unicode="0x03A5"/>
+   <map adobe-name="sigma1" win-ansi="0x56" unicode="0x03C2"/>
+   <map adobe-name="Omega" win-ansi="0x57" unicode="0x2126"/>
+   <map adobe-name="Xi" win-ansi="0x58" unicode="0x039E"/>
+   <map adobe-name="Psi" win-ansi="0x59" unicode="0x03A8"/>
+   <map adobe-name="Zeta" win-ansi="0x5A" unicode="0x0396"/>
+   <map adobe-name="therefore" win-ansi="0x5C" unicode="0x2234"/>
+   <map adobe-name="perpendicular" win-ansi="0x5E" unicode="0x22A5"/>
+   <map adobe-name="radicalex" win-ansi="0x60" unicode="0xF8E5"/>
+   <map adobe-name="alpha" win-ansi="0x61" unicode="0x03B1"/>
+   <map adobe-name="beta" win-ansi="0x62" unicode="0x03B2"/>
+   <map adobe-name="chi" win-ansi="0x63" unicode="0x03C7"/>
+   <map adobe-name="delta" win-ansi="0x64" unicode="0x03B4"/>
+   <map adobe-name="epsilon" win-ansi="0x65" unicode="0x03B5"/>
+   <map adobe-name="phi" win-ansi="0x66" unicode="0x03C6"/>
+   <map adobe-name="gamma" win-ansi="0x67" unicode="0x03B3"/>
+   <map adobe-name="eta" win-ansi="0x68" unicode="0x03B7"/>
+   <map adobe-name="iota" win-ansi="0x69" unicode="0x03B9"/>
+   <map adobe-name="phi1" win-ansi="0x6A" unicode="0x03D5"/>
+   <map adobe-name="kappa" win-ansi="0x6B" unicode="0x03BA"/>
+   <map adobe-name="lambda" win-ansi="0x6C" unicode="0x03BB"/>
+   <map adobe-name="nu" win-ansi="0x6E" unicode="0x03BD"/>
+   <map adobe-name="omicron" win-ansi="0x6F" unicode="0x03BF"/>
+   <map adobe-name="pi" win-ansi="0x70" unicode="0x03C0"/>
+   <map adobe-name="theta" win-ansi="0x71" unicode="0x03B8"/>
+   <map adobe-name="rho" win-ansi="0x72" unicode="0x03C1"/>
+   <map adobe-name="sigma" win-ansi="0x73" unicode="0x03C3"/>
+   <map adobe-name="tau" win-ansi="0x74" unicode="0x03C4"/>
+   <map adobe-name="upsilon" win-ansi="0x75" unicode="0x03C5"/>
+   <map adobe-name="omega1" win-ansi="0x76" unicode="0x03D6"/>
+   <map adobe-name="omega" win-ansi="0x77" unicode="0x03C9"/>
+   <map adobe-name="xi" win-ansi="0x78" unicode="0x03BE"/>
+   <map adobe-name="psi" win-ansi="0x79" unicode="0x03C8"/>
+   <map adobe-name="zeta" win-ansi="0x7A" unicode="0x03B6"/>
+   <map adobe-name="similar" win-ansi="0x7E" unicode="0x223C"/>
+   <map adobe-name="Upsilon1" win-ansi="0xA1" unicode="0x03D2"/>
+   <map adobe-name="minute" win-ansi="0xA2" unicode="0x2032"/>
+   <map adobe-name="lessequal" win-ansi="0xA3" unicode="0x2264"/>
+   <map adobe-name="fraction" win-ansi="0xA4" unicode="0x2044"/>
+   <map adobe-name="infinity" win-ansi="0xA5" unicode="0x221E"/>
+   <map adobe-name="florin" win-ansi="0xA6" unicode="0x0192"/>
+   <map adobe-name="club" win-ansi="0xA7" unicode="0x2663"/>
+   <map adobe-name="diamond" win-ansi="0xA8" unicode="0x2666"/>
+   <map adobe-name="heart" win-ansi="0xA9" unicode="0x2665"/>
+   <map adobe-name="spade" win-ansi="0xAA" unicode="0x2660"/>
+   <map adobe-name="arrowboth" win-ansi="0xAB" unicode="0x2194"/>
+   <map adobe-name="arrowleft" win-ansi="0xAC" unicode="0x2190"/>
+   <map adobe-name="arrowup" win-ansi="0xAD" unicode="0x2191"/>
+   <map adobe-name="arrowright" win-ansi="0xAE" unicode="0x2192"/>
+   <map adobe-name="arrowdown" win-ansi="0xAF" unicode="0x2193"/>
+   <map adobe-name="second" win-ansi="0xB2" unicode="0x2033"/>
+   <map adobe-name="greaterequal" win-ansi="0xB3" unicode="0x2265"/>
+   <map adobe-name="proportional" win-ansi="0xB5" unicode="0x221D"/>
+   <map adobe-name="partialdiff" win-ansi="0xB6" unicode="0x2202"/>
+   <map adobe-name="notequal" win-ansi="0xB9" unicode="0x2260"/>
+   <map adobe-name="equivalence" win-ansi="0xBA" unicode="0x2261"/>
+   <map adobe-name="approxequal" win-ansi="0xBB" unicode="0x2248"/>
+   <map adobe-name="arrowvertex" win-ansi="0xBD" unicode="0xF8E6"/>
+   <map adobe-name="arrowhorizex" win-ansi="0xBE" unicode="0xF8E7"/>
+   <map adobe-name="carriagereturn" win-ansi="0xBF" unicode="0x21B5"/>
+   <map adobe-name="aleph" win-ansi="0xC0" unicode="0x2135"/>
+   <map adobe-name="Ifraktur" win-ansi="0xC1" unicode="0x2111"/>
+   <map adobe-name="Rfraktur" win-ansi="0xC2" unicode="0x211C"/>
+   <map adobe-name="weierstrass" win-ansi="0xC3" unicode="0x2118"/>
+   <map adobe-name="circlemultiply" win-ansi="0xC4" unicode="0x2297"/>
+   <map adobe-name="circleplus" win-ansi="0xC5" unicode="0x2295"/>
+   <map adobe-name="emptyset" win-ansi="0xC6" unicode="0x2205"/>
+   <map adobe-name="intersection" win-ansi="0xC7" unicode="0x2229"/>
+   <map adobe-name="union" win-ansi="0xC8" unicode="0x222A"/>
+   <map adobe-name="propersuperset" win-ansi="0xC9" unicode="0x2283"/>
+   <map adobe-name="reflexsuperset" win-ansi="0xCA" unicode="0x2287"/>
+   <map adobe-name="notsubset" win-ansi="0xCB" unicode="0x2284"/>
+   <map adobe-name="propersubset" win-ansi="0xCC" unicode="0x2282"/>
+   <map adobe-name="reflexsubset" win-ansi="0xCD" unicode="0x2286"/>
+   <map adobe-name="element" win-ansi="0xCE" unicode="0x2208"/>
+   <map adobe-name="notelement" win-ansi="0xCF" unicode="0x2209"/>
+   <map adobe-name="angle" win-ansi="0xD0" unicode="0x2220"/>
+   <map adobe-name="gradient" win-ansi="0xD1" unicode="0x2207"/>
+   <map adobe-name="registerserif" win-ansi="0xD2" unicode="0xF6DA"/>
+   <map adobe-name="copyrightserif" win-ansi="0xD3" unicode="0xF6D9"/>
+   <map adobe-name="trademarkserif" win-ansi="0xD4" unicode="0xF6DB"/>
+   <map adobe-name="product" win-ansi="0xD5" unicode="0x220F"/>
+   <map adobe-name="radical" win-ansi="0xD6" unicode="0x221A"/>
+   <map adobe-name="dotmath" win-ansi="0xD7" unicode="0x22C5"/>
+   <map adobe-name="logicaland" win-ansi="0xD9" unicode="0x2227"/>
+   <map adobe-name="logicalor" win-ansi="0xDA" unicode="0x2228"/>
+   <map adobe-name="arrowdblboth" win-ansi="0xDB" unicode="0x21D4"/>
+   <map adobe-name="arrowdblleft" win-ansi="0xDC" unicode="0x21D0"/>
+   <map adobe-name="arrowdblup" win-ansi="0xDD" unicode="0x21D1"/>
+   <map adobe-name="arrowdblright" win-ansi="0xDE" unicode="0x21D2"/>
+   <map adobe-name="arrowdbldown" win-ansi="0xDF" unicode="0x21D3"/>
+   <map adobe-name="lozenge" win-ansi="0xE0" unicode="0x25CA"/>
+   <map adobe-name="angleleft" win-ansi="0xE1" unicode="0x2329"/>
+   <map adobe-name="registersans" win-ansi="0xE2" unicode="0xF8E8"/>
+   <map adobe-name="copyrightsans" win-ansi="0xE3" unicode="0xF8E9"/>
+   <map adobe-name="trademarksans" win-ansi="0xE4" unicode="0xF8EA"/>
+   <map adobe-name="summation" win-ansi="0xE5" unicode="0x2211"/>
+   <map adobe-name="parenlefttp" win-ansi="0xE6" unicode="0xF8EB"/>
+   <map adobe-name="parenleftex" win-ansi="0xE7" unicode="0xF8EC"/>
+   <map adobe-name="parenleftbt" win-ansi="0xE8" unicode="0xF8ED"/>
+   <map adobe-name="bracketlefttp" win-ansi="0xE9" unicode="0xF8EE"/>
+   <map adobe-name="bracketleftex" win-ansi="0xEA" unicode="0xF8EF"/>
+   <map adobe-name="bracketleftbt" win-ansi="0xEB" unicode="0xF8F0"/>
+   <map adobe-name="bracelefttp" win-ansi="0xEC" unicode="0xF8F1"/>
+   <map adobe-name="braceleftmid" win-ansi="0xED" unicode="0xF8F2"/>
+   <map adobe-name="braceleftbt" win-ansi="0xEE" unicode="0xF8F3"/>
+   <map adobe-name="braceex" win-ansi="0xEF" unicode="0xF8F4"/>
+   <map adobe-name="angleright" win-ansi="0xF1" unicode="0x232A"/>
+   <map adobe-name="integral" win-ansi="0xF2" unicode="0x222B"/>
+   <map adobe-name="integraltp" win-ansi="0xF3" unicode="0x2320"/>
+   <map adobe-name="integralex" win-ansi="0xF4" unicode="0xF8F5"/>
+   <map adobe-name="integralbt" win-ansi="0xF5" unicode="0x2321"/>
+   <map adobe-name="parenrighttp" win-ansi="0xF6" unicode="0xF8F6"/>
+   <map adobe-name="parenrightex" win-ansi="0xF7" unicode="0xF8F7"/>
+   <map adobe-name="parenrightbt" win-ansi="0xF8" unicode="0xF8F8"/>
+   <map adobe-name="bracketrighttp" win-ansi="0xF9" unicode="0xF8F9"/>
+   <map adobe-name="bracketrightex" win-ansi="0xFA" unicode="0xF8FA"/>
+   <map adobe-name="bracketrightbt" win-ansi="0xFB" unicode="0xF8FB"/>
+   <map adobe-name="bracerighttp" win-ansi="0xFC" unicode="0xF8FC"/>
+   <map adobe-name="bracerightmid" win-ansi="0xFD" unicode="0xF8FD"/>
+   <map adobe-name="bracerightbt" win-ansi="0xFE" unicode="0xF8FE"/>
+   <map adobe-name="apple" win-ansi="-1" unicode="0xF8FE"/>
+</font-mappings>
+<!--  I couldn't find the following characters in the unicode tables -->
+<!--
+   <map adobe-name="center" win-ansi="-1" unicode=""/>
+   <map adobe-name="dectab" win-ansi="-1" unicode=""/>
+   <map adobe-name="down" win-ansi="-1" unicode=""/>
+   <map adobe-name="format" win-ansi="-1" unicode=""/>
+   <map adobe-name="graybox" win-ansi="-1" unicode=""/>
+   <map adobe-name="indent" win-ansi="-1" unicode=""/>
+   <map adobe-name="largebullet" win-ansi="-1" unicode=""/>
+   <map adobe-name="left" win-ansi="-1" unicode=""/>
+   <map adobe-name="ll" win-ansi="-1" unicode=""/>
+   <map adobe-name="LL" win-ansi="-1" unicode=""/>
+   <map adobe-name="merge" win-ansi="-1" unicode=""/>
+   <map adobe-name="notegraphic" win-ansi="-1" unicode=""/>
+   <map adobe-name="overscore" win-ansi="-1" unicode=""/>
+   <map adobe-name="prescription" win-ansi="-1" unicode=""/>
+   <map adobe-name="return" win-ansi="-1" unicode=""/>
+   <map adobe-name="square" win-ansi="-1" unicode=""/>
+   <map adobe-name="stop" win-ansi="-1" unicode=""/>
+   <map adobe-name="tab" win-ansi="-1" unicode=""/>
+   <map adobe-name="up" win-ansi="-1" unicode=""/>
+   <map adobe-name="zer" win-ansi="-1" unicode=""/>
+
+-->
diff --git a/src/codegen/fonts/code-point-mapping.xsl b/src/codegen/fonts/code-point-mapping.xsl
new file mode 100644 (file)
index 0000000..7d0d6cd
--- /dev/null
@@ -0,0 +1,120 @@
+<!--
+  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$ -->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="text"/>
+  <xsl:variable name='glyphlists'
+                select="document('glyphlist.xml')/glyphlist-set"/>
+
+  <xsl:template match="encoding-set">
+package org.apache.fop.fonts;
+
+import java.util.Map;
+import java.util.Collections;
+
+public class CodePointMapping {
+    private char[] latin1Map;
+    private char[] characters;
+    private char[] codepoints;
+    private CodePointMapping(int [] table) {
+        int nonLatin1 = 0;
+        latin1Map = new char[256];
+        for(int i = 0; i &lt; table.length; i += 2) {
+           if(table[i+1] &lt; 256)
+               latin1Map[table[i+1]] = (char) table[i];
+           else
+               ++nonLatin1;
+        }
+        characters = new char[nonLatin1];
+        codepoints = new char[nonLatin1];
+        int top = 0;
+        for(int i = 0; i &lt; table.length; i += 2) {
+            char c = (char) table[i+1];
+            if(c >= 256) {
+               ++top;
+               for(int j = top - 1; j >= 0; --j) {
+                   if(j > 0 &amp;&amp; characters[j-1] >= c) {
+                       characters[j] = characters[j-1];
+                       codepoints[j] = codepoints[j-1];
+                   } else {
+                       characters[j] = c;
+                       codepoints[j] = (char) table[i];
+                       break;
+                   }
+               }
+            }
+        }
+    }
+    public final char mapChar(char c) {
+        if(c &lt; 256) {
+            return latin1Map[c];
+        } else {
+            int bot = 0, top = characters.length - 1;
+            while(top >= bot) {
+                int mid = (bot + top) / 2;
+                char mc = characters[mid];
+
+                if(c == mc)
+                    return codepoints[mid];
+                else if(c &lt; mc)
+                    top = mid - 1;
+                else
+                    bot = mid + 1;
+            }
+            return 0;
+        }
+    }
+
+    private static Map mappings;
+    static {
+        mappings = Collections.synchronizedMap(new java.util.HashMap());
+    }
+    public static CodePointMapping getMapping(String encoding) {
+        CodePointMapping mapping = (CodePointMapping) mappings.get(encoding);
+        if(mapping != null) {
+            return mapping;
+        } <xsl:apply-templates mode="get"/>
+        else {
+            return null;
+        }
+    }
+<xsl:apply-templates mode="table"/>
+}
+  </xsl:template>
+
+  <xsl:template match="encoding" mode="get">
+        else if(encoding.equals("<xsl:value-of select="@id"/>")) {
+            mapping = new CodePointMapping(enc<xsl:value-of select="@id"/>);
+            mappings.put("<xsl:value-of select="@id"/>", mapping);
+            return mapping;
+        }
+  </xsl:template>
+
+  <xsl:template match="encoding" mode="table">
+    <xsl:variable name="glyphlist-name" select="@glyphlist"/>
+    <xsl:variable name="glyphlist"
+                  select="$glyphlists/glyphlist[@id=$glyphlist-name]"/>
+    private static final int[] enc<xsl:value-of select="@id"/>
+        = {<xsl:for-each select="glyph">
+  <xsl:variable name="codepoint" select="@codepoint"/>
+  <xsl:variable name="name" select="@name"/><xsl:for-each select="$glyphlist/glyph[@name=$name]">
+            0x<xsl:value-of select="$codepoint"/>, 0x<xsl:value-of select="@codepoint"/>, // <xsl:value-of select="$name"/>
+</xsl:for-each></xsl:for-each>
+        };
+  </xsl:template>
+</xsl:stylesheet>
diff --git a/src/codegen/fonts/encodings.xml b/src/codegen/fonts/encodings.xml
new file mode 100644 (file)
index 0000000..85aabb2
--- /dev/null
@@ -0,0 +1,1650 @@
+<?xml version='1.0'?>
+<!--
+  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$ -->
+<!DOCTYPE encoding-set [
+  <!ELEMENT encoding-set (encoding+)>
+  <!ELEMENT encoding (glyph+)>
+  <!ATTLIST encoding id ID #REQUIRED glyphlist CDATA "AGL">
+  <!ELEMENT glyph EMPTY>
+  <!ATTLIST glyph codepoint CDATA #REQUIRED name CDATA #REQUIRED>
+]>
+<encoding-set>
+  <encoding id='StandardEncoding' glyphlist='AGL'>
+    <glyph codepoint='20' name='space'/>
+    <glyph codepoint='21' name='exclam'/>
+    <glyph codepoint='22' name='quotedbl'/>
+    <glyph codepoint='23' name='numbersign'/>
+    <glyph codepoint='24' name='dollar'/>
+    <glyph codepoint='25' name='percent'/>
+    <glyph codepoint='26' name='ampersand'/>
+    <glyph codepoint='27' name='quoteright'/>
+    <glyph codepoint='28' name='parenleft'/>
+    <glyph codepoint='29' name='parenright'/>
+    <glyph codepoint='2a' name='asterisk'/>
+    <glyph codepoint='2b' name='plus'/>
+    <glyph codepoint='2c' name='comma'/>
+    <glyph codepoint='2d' name='hyphen'/>
+    <glyph codepoint='2e' name='period'/>
+    <glyph codepoint='2f' name='slash'/>
+    <glyph codepoint='30' name='zero'/>
+    <glyph codepoint='31' name='one'/>
+    <glyph codepoint='32' name='two'/>
+    <glyph codepoint='33' name='three'/>
+    <glyph codepoint='34' name='four'/>
+    <glyph codepoint='35' name='five'/>
+    <glyph codepoint='36' name='six'/>
+    <glyph codepoint='37' name='seven'/>
+    <glyph codepoint='38' name='eight'/>
+    <glyph codepoint='39' name='nine'/>
+    <glyph codepoint='3a' name='colon'/>
+    <glyph codepoint='3b' name='semicolon'/>
+    <glyph codepoint='3c' name='less'/>
+    <glyph codepoint='3d' name='equal'/>
+    <glyph codepoint='3e' name='greater'/>
+    <glyph codepoint='3f' name='question'/>
+    <glyph codepoint='40' name='at'/>
+    <glyph codepoint='41' name='A'/>
+    <glyph codepoint='42' name='B'/>
+    <glyph codepoint='43' name='C'/>
+    <glyph codepoint='44' name='D'/>
+    <glyph codepoint='45' name='E'/>
+    <glyph codepoint='46' name='F'/>
+    <glyph codepoint='47' name='G'/>
+    <glyph codepoint='48' name='H'/>
+    <glyph codepoint='49' name='I'/>
+    <glyph codepoint='4a' name='J'/>
+    <glyph codepoint='4b' name='K'/>
+    <glyph codepoint='4c' name='L'/>
+    <glyph codepoint='4d' name='M'/>
+    <glyph codepoint='4e' name='N'/>
+    <glyph codepoint='4f' name='O'/>
+    <glyph codepoint='50' name='P'/>
+    <glyph codepoint='51' name='Q'/>
+    <glyph codepoint='52' name='R'/>
+    <glyph codepoint='53' name='S'/>
+    <glyph codepoint='54' name='T'/>
+    <glyph codepoint='55' name='U'/>
+    <glyph codepoint='56' name='V'/>
+    <glyph codepoint='57' name='W'/>
+    <glyph codepoint='58' name='X'/>
+    <glyph codepoint='59' name='Y'/>
+    <glyph codepoint='5a' name='Z'/>
+    <glyph codepoint='5b' name='bracketleft'/>
+    <glyph codepoint='5c' name='backslash'/>
+    <glyph codepoint='5d' name='bracketright'/>
+    <glyph codepoint='5e' name='asciicircum'/>
+    <glyph codepoint='5f' name='underscore'/>
+    <glyph codepoint='60' name='quoteleft'/>
+    <glyph codepoint='61' name='a'/>
+    <glyph codepoint='62' name='b'/>
+    <glyph codepoint='63' name='c'/>
+    <glyph codepoint='64' name='d'/>
+    <glyph codepoint='65' name='e'/>
+    <glyph codepoint='66' name='f'/>
+    <glyph codepoint='67' name='g'/>
+    <glyph codepoint='68' name='h'/>
+    <glyph codepoint='69' name='i'/>
+    <glyph codepoint='6a' name='j'/>
+    <glyph codepoint='6b' name='k'/>
+    <glyph codepoint='6c' name='l'/>
+    <glyph codepoint='6d' name='m'/>
+    <glyph codepoint='6e' name='n'/>
+    <glyph codepoint='6f' name='o'/>
+    <glyph codepoint='70' name='p'/>
+    <glyph codepoint='71' name='q'/>
+    <glyph codepoint='72' name='r'/>
+    <glyph codepoint='73' name='s'/>
+    <glyph codepoint='74' name='t'/>
+    <glyph codepoint='75' name='u'/>
+    <glyph codepoint='76' name='v'/>
+    <glyph codepoint='77' name='w'/>
+    <glyph codepoint='78' name='x'/>
+    <glyph codepoint='79' name='y'/>
+    <glyph codepoint='7a' name='z'/>
+    <glyph codepoint='7b' name='braceleft'/>
+    <glyph codepoint='7c' name='bar'/>
+    <glyph codepoint='7d' name='braceright'/>
+    <glyph codepoint='7e' name='asciitilde'/>
+    <glyph codepoint='a1' name='exclamdown'/>
+    <glyph codepoint='a2' name='cent'/>
+    <glyph codepoint='a3' name='sterling'/>
+    <glyph codepoint='a4' name='fraction'/>
+    <glyph codepoint='a5' name='yen'/>
+    <glyph codepoint='a6' name='florin'/>
+    <glyph codepoint='a7' name='section'/>
+    <glyph codepoint='a8' name='currency'/>
+    <glyph codepoint='a9' name='quotesingle'/>
+    <glyph codepoint='aa' name='quotedblleft'/>
+    <glyph codepoint='ab' name='guillemotleft'/>
+    <glyph codepoint='ac' name='guilsinglleft'/>
+    <glyph codepoint='ad' name='guilsinglright'/>
+    <glyph codepoint='ae' name='fi'/>
+    <glyph codepoint='af' name='fl'/>
+    <glyph codepoint='b1' name='endash'/>
+    <glyph codepoint='b2' name='dagger'/>
+    <glyph codepoint='b3' name='daggerdbl'/>
+    <glyph codepoint='b4' name='periodcentered'/>
+    <glyph codepoint='b6' name='paragraph'/>
+    <glyph codepoint='b7' name='bullet'/>
+    <glyph codepoint='b8' name='quotesinglbase'/>
+    <glyph codepoint='b9' name='quotedblbase'/>
+    <glyph codepoint='ba' name='quotedblright'/>
+    <glyph codepoint='bb' name='guillemotright'/>
+    <glyph codepoint='bc' name='ellipsis'/>
+    <glyph codepoint='bd' name='perthousand'/>
+    <glyph codepoint='bf' name='questiondown'/>
+    <glyph codepoint='c1' name='grave'/>
+    <glyph codepoint='c2' name='acute'/>
+    <glyph codepoint='c3' name='circumflex'/>
+    <glyph codepoint='c4' name='tilde'/>
+    <glyph codepoint='c5' name='macron'/>
+    <glyph codepoint='c6' name='breve'/>
+    <glyph codepoint='c7' name='dotaccent'/>
+    <glyph codepoint='c8' name='dieresis'/>
+    <glyph codepoint='ca' name='ring'/>
+    <glyph codepoint='cb' name='cedilla'/>
+    <glyph codepoint='cd' name='hungarumlaut'/>
+    <glyph codepoint='ce' name='ogonek'/>
+    <glyph codepoint='cf' name='caron'/>
+    <glyph codepoint='d0' name='emdash'/>
+    <glyph codepoint='e1' name='AE'/>
+    <glyph codepoint='e3' name='ordfeminine'/>
+    <glyph codepoint='e8' name='Lslash'/>
+    <glyph codepoint='e9' name='Oslash'/>
+    <glyph codepoint='ea' name='OE'/>
+    <glyph codepoint='eb' name='ordmasculine'/>
+    <glyph codepoint='f1' name='ae'/>
+    <glyph codepoint='f5' name='dotlessi'/>
+    <glyph codepoint='f8' name='lslash'/>
+    <glyph codepoint='f9' name='oslash'/>
+    <glyph codepoint='fa' name='oe'/>
+    <glyph codepoint='fb' name='germandbls'/>
+  </encoding>
+  <encoding id='ISOLatin1Encoding' glyphlist='AGL'>
+    <glyph codepoint='20' name='space'/>
+    <glyph codepoint='21' name='exclam'/>
+    <glyph codepoint='22' name='quotedbl'/>
+    <glyph codepoint='23' name='numbersign'/>
+    <glyph codepoint='24' name='dollar'/>
+    <glyph codepoint='25' name='percent'/>
+    <glyph codepoint='26' name='ampersand'/>
+    <glyph codepoint='27' name='quoteright'/>
+    <glyph codepoint='28' name='parenleft'/>
+    <glyph codepoint='29' name='parenright'/>
+    <glyph codepoint='2a' name='asterisk'/>
+    <glyph codepoint='2b' name='plus'/>
+    <glyph codepoint='2c' name='comma'/>
+    <glyph codepoint='2d' name='minus'/>
+    <glyph codepoint='2e' name='period'/>
+    <glyph codepoint='2f' name='slash'/>
+    <glyph codepoint='30' name='zero'/>
+    <glyph codepoint='31' name='one'/>
+    <glyph codepoint='32' name='two'/>
+    <glyph codepoint='33' name='three'/>
+    <glyph codepoint='34' name='four'/>
+    <glyph codepoint='35' name='five'/>
+    <glyph codepoint='36' name='six'/>
+    <glyph codepoint='37' name='seven'/>
+    <glyph codepoint='38' name='eight'/>
+    <glyph codepoint='39' name='nine'/>
+    <glyph codepoint='3a' name='colon'/>
+    <glyph codepoint='3b' name='semicolon'/>
+    <glyph codepoint='3c' name='less'/>
+    <glyph codepoint='3d' name='equal'/>
+    <glyph codepoint='3e' name='greater'/>
+    <glyph codepoint='3f' name='question'/>
+    <glyph codepoint='40' name='at'/>
+    <glyph codepoint='41' name='A'/>
+    <glyph codepoint='42' name='B'/>
+    <glyph codepoint='43' name='C'/>
+    <glyph codepoint='44' name='D'/>
+    <glyph codepoint='45' name='E'/>
+    <glyph codepoint='46' name='F'/>
+    <glyph codepoint='47' name='G'/>
+    <glyph codepoint='48' name='H'/>
+    <glyph codepoint='49' name='I'/>
+    <glyph codepoint='4a' name='J'/>
+    <glyph codepoint='4b' name='K'/>
+    <glyph codepoint='4c' name='L'/>
+    <glyph codepoint='4d' name='M'/>
+    <glyph codepoint='4e' name='N'/>
+    <glyph codepoint='4f' name='O'/>
+    <glyph codepoint='50' name='P'/>
+    <glyph codepoint='51' name='Q'/>
+    <glyph codepoint='52' name='R'/>
+    <glyph codepoint='53' name='S'/>
+    <glyph codepoint='54' name='T'/>
+    <glyph codepoint='55' name='U'/>
+    <glyph codepoint='56' name='V'/>
+    <glyph codepoint='57' name='W'/>
+    <glyph codepoint='58' name='X'/>
+    <glyph codepoint='59' name='Y'/>
+    <glyph codepoint='5a' name='Z'/>
+    <glyph codepoint='5b' name='bracketleft'/>
+    <glyph codepoint='5c' name='backslash'/>
+    <glyph codepoint='5d' name='bracketright'/>
+    <glyph codepoint='5e' name='asciicircum'/>
+    <glyph codepoint='5f' name='underscore'/>
+    <glyph codepoint='60' name='quoteleft'/>
+    <glyph codepoint='61' name='a'/>
+    <glyph codepoint='62' name='b'/>
+    <glyph codepoint='63' name='c'/>
+    <glyph codepoint='64' name='d'/>
+    <glyph codepoint='65' name='e'/>
+    <glyph codepoint='66' name='f'/>
+    <glyph codepoint='67' name='g'/>
+    <glyph codepoint='68' name='h'/>
+    <glyph codepoint='69' name='i'/>
+    <glyph codepoint='6a' name='j'/>
+    <glyph codepoint='6b' name='k'/>
+    <glyph codepoint='6c' name='l'/>
+    <glyph codepoint='6d' name='m'/>
+    <glyph codepoint='6e' name='n'/>
+    <glyph codepoint='6f' name='o'/>
+    <glyph codepoint='70' name='p'/>
+    <glyph codepoint='71' name='q'/>
+    <glyph codepoint='72' name='r'/>
+    <glyph codepoint='73' name='s'/>
+    <glyph codepoint='74' name='t'/>
+    <glyph codepoint='75' name='u'/>
+    <glyph codepoint='76' name='v'/>
+    <glyph codepoint='77' name='w'/>
+    <glyph codepoint='78' name='x'/>
+    <glyph codepoint='79' name='y'/>
+    <glyph codepoint='7a' name='z'/>
+    <glyph codepoint='7b' name='braceleft'/>
+    <glyph codepoint='7c' name='bar'/>
+    <glyph codepoint='7d' name='braceright'/>
+    <glyph codepoint='7e' name='asciitilde'/>
+    <glyph codepoint='90' name='dotlessi'/>
+    <glyph codepoint='91' name='grave'/>
+    <glyph codepoint='93' name='circumflex'/>
+    <glyph codepoint='94' name='tilde'/>
+    <glyph codepoint='96' name='breve'/>
+    <glyph codepoint='97' name='dotaccent'/>
+    <glyph codepoint='9a' name='ring'/>
+    <glyph codepoint='9d' name='hungarumlaut'/>
+    <glyph codepoint='9e' name='ogonek'/>
+    <glyph codepoint='9f' name='caron'/>
+    <glyph codepoint='a1' name='exclamdown'/>
+    <glyph codepoint='a2' name='cent'/>
+    <glyph codepoint='a3' name='sterling'/>
+    <glyph codepoint='a4' name='currency'/>
+    <glyph codepoint='a5' name='yen'/>
+    <glyph codepoint='a6' name='brokenbar'/>
+    <glyph codepoint='a7' name='section'/>
+    <glyph codepoint='a8' name='dieresis'/>
+    <glyph codepoint='a9' name='copyright'/>
+    <glyph codepoint='aa' name='ordfeminine'/>
+    <glyph codepoint='ab' name='guillemotleft'/>
+    <glyph codepoint='ac' name='logicalnot'/>
+    <glyph codepoint='ad' name='hyphen'/>
+    <glyph codepoint='ae' name='registered'/>
+    <glyph codepoint='af' name='macron'/>
+    <glyph codepoint='b0' name='degree'/>
+    <glyph codepoint='b1' name='plusminus'/>
+    <glyph codepoint='b2' name='twosuperior'/>
+    <glyph codepoint='b3' name='threesuperior'/>
+    <glyph codepoint='b4' name='acute'/>
+    <glyph codepoint='b5' name='mu'/>
+    <glyph codepoint='b6' name='paragraph'/>
+    <glyph codepoint='b7' name='periodcentered'/>
+    <glyph codepoint='b8' name='cedilla'/>
+    <glyph codepoint='b9' name='onesuperior'/>
+    <glyph codepoint='ba' name='ordmasculine'/>
+    <glyph codepoint='bb' name='guillemotright'/>
+    <glyph codepoint='bc' name='onequarter'/>
+    <glyph codepoint='bd' name='onehalf'/>
+    <glyph codepoint='be' name='threequarters'/>
+    <glyph codepoint='bf' name='questiondown'/>
+    <glyph codepoint='c0' name='Agrave'/>
+    <glyph codepoint='c1' name='Aacute'/>
+    <glyph codepoint='c2' name='Acircumflex'/>
+    <glyph codepoint='c3' name='Atilde'/>
+    <glyph codepoint='c4' name='Adieresis'/>
+    <glyph codepoint='c5' name='Aring'/>
+    <glyph codepoint='c6' name='AE'/>
+    <glyph codepoint='c7' name='Ccedilla'/>
+    <glyph codepoint='c8' name='Egrave'/>
+    <glyph codepoint='c9' name='Eacute'/>
+    <glyph codepoint='ca' name='Ecircumflex'/>
+    <glyph codepoint='cb' name='Edieresis'/>
+    <glyph codepoint='cc' name='Igrave'/>
+    <glyph codepoint='cd' name='Iacute'/>
+    <glyph codepoint='ce' name='Icircumflex'/>
+    <glyph codepoint='cf' name='Idieresis'/>
+    <glyph codepoint='d0' name='Eth'/>
+    <glyph codepoint='d1' name='Ntilde'/>
+    <glyph codepoint='d2' name='Ograve'/>
+    <glyph codepoint='d3' name='Oacute'/>
+    <glyph codepoint='d4' name='Ocircumflex'/>
+    <glyph codepoint='d5' name='Otilde'/>
+    <glyph codepoint='d6' name='Odieresis'/>
+    <glyph codepoint='d7' name='multiply'/>
+    <glyph codepoint='d8' name='Oslash'/>
+    <glyph codepoint='d9' name='Ugrave'/>
+    <glyph codepoint='da' name='Uacute'/>
+    <glyph codepoint='db' name='Ucircumflex'/>
+    <glyph codepoint='dc' name='Udieresis'/>
+    <glyph codepoint='dd' name='Yacute'/>
+    <glyph codepoint='de' name='Thorn'/>
+    <glyph codepoint='df' name='germandbls'/>
+    <glyph codepoint='e0' name='agrave'/>
+    <glyph codepoint='e1' name='aacute'/>
+    <glyph codepoint='e2' name='acircumflex'/>
+    <glyph codepoint='e3' name='atilde'/>
+    <glyph codepoint='e4' name='adieresis'/>
+    <glyph codepoint='e5' name='aring'/>
+    <glyph codepoint='e6' name='ae'/>
+    <glyph codepoint='e7' name='ccedilla'/>
+    <glyph codepoint='e8' name='egrave'/>
+    <glyph codepoint='e9' name='eacute'/>
+    <glyph codepoint='ea' name='ecircumflex'/>
+    <glyph codepoint='eb' name='edieresis'/>
+    <glyph codepoint='ec' name='igrave'/>
+    <glyph codepoint='ed' name='iacute'/>
+    <glyph codepoint='ee' name='icircumflex'/>
+    <glyph codepoint='ef' name='idieresis'/>
+    <glyph codepoint='f0' name='eth'/>
+    <glyph codepoint='f1' name='ntilde'/>
+    <glyph codepoint='f2' name='ograve'/>
+    <glyph codepoint='f3' name='oacute'/>
+    <glyph codepoint='f4' name='ocircumflex'/>
+    <glyph codepoint='f5' name='otilde'/>
+    <glyph codepoint='f6' name='odieresis'/>
+    <glyph codepoint='f7' name='divide'/>
+    <glyph codepoint='f8' name='oslash'/>
+    <glyph codepoint='f9' name='ugrave'/>
+    <glyph codepoint='fa' name='uacute'/>
+    <glyph codepoint='fb' name='ucircumflex'/>
+    <glyph codepoint='fc' name='udieresis'/>
+    <glyph codepoint='fd' name='yacute'/>
+    <glyph codepoint='fe' name='thorn'/>
+    <glyph codepoint='ff' name='ydieresis'/>
+  </encoding>
+  <encoding id='CEEncoding' glyphlist='AGL'>
+    <glyph codepoint='20' name='space'/>
+    <glyph codepoint='21' name='exclam'/>
+    <glyph codepoint='22' name='quotedbl'/>
+    <glyph codepoint='23' name='numbersign'/>
+    <glyph codepoint='24' name='dollar'/>
+    <glyph codepoint='25' name='percent'/>
+    <glyph codepoint='26' name='ampersand'/>
+    <glyph codepoint='27' name='quotesingle'/>
+    <glyph codepoint='28' name='parenleft'/>
+    <glyph codepoint='29' name='parenright'/>
+    <glyph codepoint='2a' name='asterisk'/>
+    <glyph codepoint='2b' name='plus'/>
+    <glyph codepoint='2c' name='comma'/>
+    <glyph codepoint='2d' name='hyphen'/>
+    <glyph codepoint='2e' name='period'/>
+    <glyph codepoint='2f' name='slash'/>
+    <glyph codepoint='30' name='zero'/>
+    <glyph codepoint='31' name='one'/>
+    <glyph codepoint='32' name='two'/>
+    <glyph codepoint='33' name='three'/>
+    <glyph codepoint='34' name='four'/>
+    <glyph codepoint='35' name='five'/>
+    <glyph codepoint='36' name='six'/>
+    <glyph codepoint='37' name='seven'/>
+    <glyph codepoint='38' name='eight'/>
+    <glyph codepoint='39' name='nine'/>
+    <glyph codepoint='3a' name='colon'/>
+    <glyph codepoint='3b' name='semicolon'/>
+    <glyph codepoint='3c' name='less'/>
+    <glyph codepoint='3d' name='equal'/>
+    <glyph codepoint='3e' name='greater'/>
+    <glyph codepoint='3f' name='question'/>
+    <glyph codepoint='40' name='at'/>
+    <glyph codepoint='41' name='A'/>
+    <glyph codepoint='42' name='B'/>
+    <glyph codepoint='43' name='C'/>
+    <glyph codepoint='44' name='D'/>
+    <glyph codepoint='45' name='E'/>
+    <glyph codepoint='46' name='F'/>
+    <glyph codepoint='47' name='G'/>
+    <glyph codepoint='48' name='H'/>
+    <glyph codepoint='49' name='I'/>
+    <glyph codepoint='4a' name='J'/>
+    <glyph codepoint='4b' name='K'/>
+    <glyph codepoint='4c' name='L'/>
+    <glyph codepoint='4d' name='M'/>
+    <glyph codepoint='4e' name='N'/>
+    <glyph codepoint='4f' name='O'/>
+    <glyph codepoint='50' name='P'/>
+    <glyph codepoint='51' name='Q'/>
+    <glyph codepoint='52' name='R'/>
+    <glyph codepoint='53' name='S'/>
+    <glyph codepoint='54' name='T'/>
+    <glyph codepoint='55' name='U'/>
+    <glyph codepoint='56' name='V'/>
+    <glyph codepoint='57' name='W'/>
+    <glyph codepoint='58' name='X'/>
+    <glyph codepoint='59' name='Y'/>
+    <glyph codepoint='5a' name='Z'/>
+    <glyph codepoint='5b' name='bracketleft'/>
+    <glyph codepoint='5c' name='backslash'/>
+    <glyph codepoint='5d' name='bracketright'/>
+    <glyph codepoint='5e' name='asciicircum'/>
+    <glyph codepoint='5f' name='underscore'/>
+    <glyph codepoint='60' name='grave'/>
+    <glyph codepoint='61' name='a'/>
+    <glyph codepoint='62' name='b'/>
+    <glyph codepoint='63' name='c'/>
+    <glyph codepoint='64' name='d'/>
+    <glyph codepoint='65' name='e'/>
+    <glyph codepoint='66' name='f'/>
+    <glyph codepoint='67' name='g'/>
+    <glyph codepoint='68' name='h'/>
+    <glyph codepoint='69' name='i'/>
+    <glyph codepoint='6a' name='j'/>
+    <glyph codepoint='6b' name='k'/>
+    <glyph codepoint='6c' name='l'/>
+    <glyph codepoint='6d' name='m'/>
+    <glyph codepoint='6e' name='n'/>
+    <glyph codepoint='6f' name='o'/>
+    <glyph codepoint='70' name='p'/>
+    <glyph codepoint='71' name='q'/>
+    <glyph codepoint='72' name='r'/>
+    <glyph codepoint='73' name='s'/>
+    <glyph codepoint='74' name='t'/>
+    <glyph codepoint='75' name='u'/>
+    <glyph codepoint='76' name='v'/>
+    <glyph codepoint='77' name='w'/>
+    <glyph codepoint='78' name='x'/>
+    <glyph codepoint='79' name='y'/>
+    <glyph codepoint='7a' name='z'/>
+    <glyph codepoint='7b' name='braceleft'/>
+    <glyph codepoint='7c' name='bar'/>
+    <glyph codepoint='7d' name='braceright'/>
+    <glyph codepoint='7e' name='asciitilde'/>
+    <glyph codepoint='82' name='quotesinglbase'/>
+    <glyph codepoint='84' name='quotedblbase'/>
+    <glyph codepoint='85' name='ellipsis'/>
+    <glyph codepoint='86' name='dagger'/>
+    <glyph codepoint='87' name='daggerdbl'/>
+    <glyph codepoint='89' name='perthousand'/>
+    <glyph codepoint='8a' name='Scaron'/>
+    <glyph codepoint='8b' name='guilsinglleft'/>
+    <glyph codepoint='8c' name='Sacute'/>
+    <glyph codepoint='8d' name='Tcaron'/>
+    <glyph codepoint='8e' name='Zcaron'/>
+    <glyph codepoint='8f' name='Zacute'/>
+    <glyph codepoint='91' name='quoteleft'/>
+    <glyph codepoint='92' name='quoteright'/>
+    <glyph codepoint='93' name='quotedblleft'/>
+    <glyph codepoint='94' name='quotedblright'/>
+    <glyph codepoint='95' name='bullet'/>
+    <glyph codepoint='96' name='endash'/>
+    <glyph codepoint='97' name='emdash'/>
+    <glyph codepoint='99' name='trademark'/>
+    <glyph codepoint='9a' name='scaron'/>
+    <glyph codepoint='9b' name='guilsinglright'/>
+    <glyph codepoint='9c' name='sacute'/>
+    <glyph codepoint='9d' name='tcaron'/>
+    <glyph codepoint='9e' name='zcaron'/>
+    <glyph codepoint='9f' name='zacute'/>
+    <glyph codepoint='a1' name='caron'/>
+    <glyph codepoint='a2' name='breve'/>
+    <glyph codepoint='a3' name='Lslash'/>
+    <glyph codepoint='a4' name='currency'/>
+    <glyph codepoint='a5' name='Aogonek'/>
+    <glyph codepoint='a6' name='brokenbar'/>
+    <glyph codepoint='a7' name='section'/>
+    <glyph codepoint='a8' name='dieresis'/>
+    <glyph codepoint='a9' name='copyright'/>
+    <glyph codepoint='aa' name='Scommaaccent'/>
+    <glyph codepoint='ab' name='guillemotleft'/>
+    <glyph codepoint='ac' name='logicalnot'/>
+    <glyph codepoint='ae' name='registered'/>
+    <glyph codepoint='af' name='Zdotaccent'/>
+    <glyph codepoint='b0' name='degree'/>
+    <glyph codepoint='b1' name='plusminus'/>
+    <glyph codepoint='b2' name='ogonek'/>
+    <glyph codepoint='b3' name='lslash'/>
+    <glyph codepoint='b4' name='acute'/>
+    <glyph codepoint='b5' name='mu'/>
+    <glyph codepoint='b6' name='paragraph'/>
+    <glyph codepoint='b7' name='periodcentered'/>
+    <glyph codepoint='b8' name='cedilla'/>
+    <glyph codepoint='b9' name='aogonek'/>
+    <glyph codepoint='ba' name='scommaaccent'/>
+    <glyph codepoint='bb' name='guillemotright'/>
+    <glyph codepoint='bc' name='Lcaron'/>
+    <glyph codepoint='bd' name='hungarumlaut'/>
+    <glyph codepoint='be' name='lcaron'/>
+    <glyph codepoint='bf' name='zdotaccent'/>
+    <glyph codepoint='c0' name='Racute'/>
+    <glyph codepoint='c1' name='Aacute'/>
+    <glyph codepoint='c2' name='Acircumflex'/>
+    <glyph codepoint='c3' name='Abreve'/>
+    <glyph codepoint='c4' name='Adieresis'/>
+    <glyph codepoint='c5' name='Lacute'/>
+    <glyph codepoint='c6' name='Cacute'/>
+    <glyph codepoint='c7' name='Ccedilla'/>
+    <glyph codepoint='c8' name='Ccaron'/>
+    <glyph codepoint='c9' name='Eacute'/>
+    <glyph codepoint='ca' name='Eogonek'/>
+    <glyph codepoint='cb' name='Edieresis'/>
+    <glyph codepoint='cc' name='Ecaron'/>
+    <glyph codepoint='cd' name='Iacute'/>
+    <glyph codepoint='ce' name='Icircumflex'/>
+    <glyph codepoint='cf' name='Dcaron'/>
+    <glyph codepoint='d0' name='Dcroat'/>
+    <glyph codepoint='d1' name='Nacute'/>
+    <glyph codepoint='d2' name='Ncaron'/>
+    <glyph codepoint='d3' name='Oacute'/>
+    <glyph codepoint='d4' name='Ocircumflex'/>
+    <glyph codepoint='d5' name='Ohungarumlaut'/>
+    <glyph codepoint='d6' name='Odieresis'/>
+    <glyph codepoint='d7' name='multiply'/>
+    <glyph codepoint='d8' name='Rcaron'/>
+    <glyph codepoint='d9' name='Uring'/>
+    <glyph codepoint='da' name='Uacute'/>
+    <glyph codepoint='db' name='Uhungarumlaut'/>
+    <glyph codepoint='dc' name='Udieresis'/>
+    <glyph codepoint='dd' name='Yacute'/>
+    <glyph codepoint='de' name='Tcommaaccent'/>
+    <glyph codepoint='df' name='germandbls'/>
+    <glyph codepoint='e0' name='racute'/>
+    <glyph codepoint='e1' name='aacute'/>
+    <glyph codepoint='e2' name='acircumflex'/>
+    <glyph codepoint='e3' name='abreve'/>
+    <glyph codepoint='e4' name='adieresis'/>
+    <glyph codepoint='e5' name='lacute'/>
+    <glyph codepoint='e6' name='cacute'/>
+    <glyph codepoint='e7' name='ccedilla'/>
+    <glyph codepoint='e8' name='ccaron'/>
+    <glyph codepoint='e9' name='eacute'/>
+    <glyph codepoint='ea' name='eogonek'/>
+    <glyph codepoint='eb' name='edieresis'/>
+    <glyph codepoint='ec' name='ecaron'/>
+    <glyph codepoint='ed' name='iacute'/>
+    <glyph codepoint='ee' name='icircumflex'/>
+    <glyph codepoint='ef' name='dcaron'/>
+    <glyph codepoint='f0' name='dcroat'/>
+    <glyph codepoint='f1' name='nacute'/>
+    <glyph codepoint='f2' name='ncaron'/>
+    <glyph codepoint='f3' name='oacute'/>
+    <glyph codepoint='f4' name='ocircumflex'/>
+    <glyph codepoint='f5' name='ohungarumlaut'/>
+    <glyph codepoint='f6' name='odieresis'/>
+    <glyph codepoint='f7' name='divide'/>
+    <glyph codepoint='f8' name='rcaron'/>
+    <glyph codepoint='f9' name='uring'/>
+    <glyph codepoint='fa' name='uacute'/>
+    <glyph codepoint='fb' name='uhungarumlaut'/>
+    <glyph codepoint='fc' name='udieresis'/>
+    <glyph codepoint='fd' name='yacute'/>
+    <glyph codepoint='fe' name='tcommaaccent'/>
+    <glyph codepoint='ff' name='dotaccent'/>
+  </encoding>
+  <encoding id='MacRomanEncoding' glyphlist='AGL'>
+    <glyph codepoint='20' name='space'/>
+    <glyph codepoint='21' name='exclam'/>
+    <glyph codepoint='22' name='quotedbl'/>
+    <glyph codepoint='23' name='numbersign'/>
+    <glyph codepoint='24' name='dollar'/>
+    <glyph codepoint='25' name='percent'/>
+    <glyph codepoint='26' name='ampersand'/>
+    <glyph codepoint='27' name='quotesingle'/>
+    <glyph codepoint='28' name='parenleft'/>
+    <glyph codepoint='29' name='parenright'/>
+    <glyph codepoint='2a' name='asterisk'/>
+    <glyph codepoint='2b' name='plus'/>
+    <glyph codepoint='2c' name='comma'/>
+    <glyph codepoint='2d' name='hyphen'/>
+    <glyph codepoint='2e' name='period'/>
+    <glyph codepoint='2f' name='slash'/>
+    <glyph codepoint='30' name='zero'/>
+    <glyph codepoint='31' name='one'/>
+    <glyph codepoint='32' name='two'/>
+    <glyph codepoint='33' name='three'/>
+    <glyph codepoint='34' name='four'/>
+    <glyph codepoint='35' name='five'/>
+    <glyph codepoint='36' name='six'/>
+    <glyph codepoint='37' name='seven'/>
+    <glyph codepoint='38' name='eight'/>
+    <glyph codepoint='39' name='nine'/>
+    <glyph codepoint='3a' name='colon'/>
+    <glyph codepoint='3b' name='semicolon'/>
+    <glyph codepoint='3c' name='less'/>
+    <glyph codepoint='3d' name='equal'/>
+    <glyph codepoint='3e' name='greater'/>
+    <glyph codepoint='3f' name='question'/>
+    <glyph codepoint='40' name='at'/>
+    <glyph codepoint='41' name='A'/>
+    <glyph codepoint='42' name='B'/>
+    <glyph codepoint='43' name='C'/>
+    <glyph codepoint='44' name='D'/>
+    <glyph codepoint='45' name='E'/>
+    <glyph codepoint='46' name='F'/>
+    <glyph codepoint='47' name='G'/>
+    <glyph codepoint='48' name='H'/>
+    <glyph codepoint='49' name='I'/>
+    <glyph codepoint='4a' name='J'/>
+    <glyph codepoint='4b' name='K'/>
+    <glyph codepoint='4c' name='L'/>
+    <glyph codepoint='4d' name='M'/>
+    <glyph codepoint='4e' name='N'/>
+    <glyph codepoint='4f' name='O'/>
+    <glyph codepoint='50' name='P'/>
+    <glyph codepoint='51' name='Q'/>
+    <glyph codepoint='52' name='R'/>
+    <glyph codepoint='53' name='S'/>
+    <glyph codepoint='54' name='T'/>
+    <glyph codepoint='55' name='U'/>
+    <glyph codepoint='56' name='V'/>
+    <glyph codepoint='57' name='W'/>
+    <glyph codepoint='58' name='X'/>
+    <glyph codepoint='59' name='Y'/>
+    <glyph codepoint='5a' name='Z'/>
+    <glyph codepoint='5b' name='bracketleft'/>
+    <glyph codepoint='5c' name='backslash'/>
+    <glyph codepoint='5d' name='bracketright'/>
+    <glyph codepoint='5e' name='asciicircum'/>
+    <glyph codepoint='5f' name='underscore'/>
+    <glyph codepoint='60' name='grave'/>
+    <glyph codepoint='61' name='a'/>
+    <glyph codepoint='62' name='b'/>
+    <glyph codepoint='63' name='c'/>
+    <glyph codepoint='64' name='d'/>
+    <glyph codepoint='65' name='e'/>
+    <glyph codepoint='66' name='f'/>
+    <glyph codepoint='67' name='g'/>
+    <glyph codepoint='68' name='h'/>
+    <glyph codepoint='69' name='i'/>
+    <glyph codepoint='6a' name='j'/>
+    <glyph codepoint='6b' name='k'/>
+    <glyph codepoint='6c' name='l'/>
+    <glyph codepoint='6d' name='m'/>
+    <glyph codepoint='6e' name='n'/>
+    <glyph codepoint='6f' name='o'/>
+    <glyph codepoint='70' name='p'/>
+    <glyph codepoint='71' name='q'/>
+    <glyph codepoint='72' name='r'/>
+    <glyph codepoint='73' name='s'/>
+    <glyph codepoint='74' name='t'/>
+    <glyph codepoint='75' name='u'/>
+    <glyph codepoint='76' name='v'/>
+    <glyph codepoint='77' name='w'/>
+    <glyph codepoint='78' name='x'/>
+    <glyph codepoint='79' name='y'/>
+    <glyph codepoint='7b' name='braceleft'/>
+    <glyph codepoint='7c' name='bar'/>
+    <glyph codepoint='7d' name='braceright'/>
+    <glyph codepoint='7e' name='asciitilde'/>
+    <glyph codepoint='80' name='Adieresis'/>
+    <glyph codepoint='81' name='Aring'/>
+    <glyph codepoint='82' name='Ccedilla'/>
+    <glyph codepoint='83' name='Eacute'/>
+    <glyph codepoint='84' name='Ntilde'/>
+    <glyph codepoint='85' name='Odieresis'/>
+    <glyph codepoint='86' name='Udieresis'/>
+    <glyph codepoint='87' name='aacute'/>
+    <glyph codepoint='88' name='agrave'/>
+    <glyph codepoint='89' name='acircumflex'/>
+    <glyph codepoint='8a' name='adieresis'/>
+    <glyph codepoint='8b' name='atilde'/>
+    <glyph codepoint='8c' name='aring'/>
+    <glyph codepoint='8d' name='ccedilla'/>
+    <glyph codepoint='8e' name='eacute'/>
+    <glyph codepoint='8f' name='egrave'/>
+    <glyph codepoint='90' name='ecircumflex'/>
+    <glyph codepoint='91' name='edieresis'/>
+    <glyph codepoint='92' name='iacute'/>
+    <glyph codepoint='93' name='igrave'/>
+    <glyph codepoint='94' name='icircumflex'/>
+    <glyph codepoint='95' name='idieresis'/>
+    <glyph codepoint='96' name='ntilde'/>
+    <glyph codepoint='97' name='oacute'/>
+    <glyph codepoint='98' name='ograve'/>
+    <glyph codepoint='99' name='ocircumflex'/>
+    <glyph codepoint='9a' name='odieresis'/>
+    <glyph codepoint='9b' name='otilde'/>
+    <glyph codepoint='9c' name='uacute'/>
+    <glyph codepoint='9d' name='ugrave'/>
+    <glyph codepoint='9e' name='ucircumflex'/>
+    <glyph codepoint='9f' name='udieresis'/>
+    <glyph codepoint='a0' name='dagger'/>
+    <glyph codepoint='a1' name='degree'/>
+    <glyph codepoint='a2' name='cent'/>
+    <glyph codepoint='a3' name='sterling'/>
+    <glyph codepoint='a4' name='section'/>
+    <glyph codepoint='a5' name='bullet'/>
+    <glyph codepoint='a6' name='paragraph'/>
+    <glyph codepoint='a7' name='germandbls'/>
+    <glyph codepoint='a8' name='registered'/>
+    <glyph codepoint='a9' name='copyright'/>
+    <glyph codepoint='aa' name='trademark'/>
+    <glyph codepoint='ab' name='acute'/>
+    <glyph codepoint='ac' name='dieresis'/>
+    <glyph codepoint='ae' name='AE'/>
+    <glyph codepoint='af' name='Oslash'/>
+    <glyph codepoint='b1' name='plusminus'/>
+    <glyph codepoint='b5' name='mu'/>
+    <glyph codepoint='bb' name='ordfeminine'/>
+    <glyph codepoint='bc' name='ordmasculine'/>
+    <glyph codepoint='be' name='ae'/>
+    <glyph codepoint='bf' name='oslash'/>
+    <glyph codepoint='c0' name='questiondown'/>
+    <glyph codepoint='c1' name='exclamdown'/>
+    <glyph codepoint='c2' name='logicalnot'/>
+    <glyph codepoint='c4' name='florin'/>
+    <glyph codepoint='c7' name='guillemotleft'/>
+    <glyph codepoint='c8' name='guillemotright'/>
+    <glyph codepoint='c9' name='ellipsis'/>
+    <glyph codepoint='cb' name='Agrave'/>
+    <glyph codepoint='cc' name='Atilde'/>
+    <glyph codepoint='cd' name='Otilde'/>
+    <glyph codepoint='ce' name='OE'/>
+    <glyph codepoint='cf' name='oe'/>
+    <glyph codepoint='d0' name='endash'/>
+    <glyph codepoint='d1' name='emdash'/>
+    <glyph codepoint='d2' name='quotedblleft'/>
+    <glyph codepoint='d3' name='quotedblright'/>
+    <glyph codepoint='d4' name='quoteleft'/>
+    <glyph codepoint='d5' name='quoteright'/>
+    <glyph codepoint='d6' name='divide'/>
+    <glyph codepoint='d9' name='Ydieresis'/>
+    <glyph codepoint='da' name='fraction'/>
+    <glyph codepoint='db' name='currency'/>
+    <glyph codepoint='dc' name='guilsinglleft'/>
+    <glyph codepoint='dd' name='guilsinglright'/>
+    <glyph codepoint='de' name='fi'/>
+    <glyph codepoint='df' name='fl'/>
+    <glyph codepoint='e0' name='daggerdbl'/>
+    <glyph codepoint='e1' name='periodcentered'/>
+    <glyph codepoint='e2' name='quotesinglbase'/>
+    <glyph codepoint='e3' name='quotedblbase'/>
+    <glyph codepoint='e4' name='perthousand'/>
+    <glyph codepoint='e5' name='Acircumflex'/>
+    <glyph codepoint='e6' name='Ecircumflex'/>
+    <glyph codepoint='e7' name='Aacute'/>
+    <glyph codepoint='e8' name='Edieresis'/>
+    <glyph codepoint='e9' name='Egrave'/>
+    <glyph codepoint='ea' name='Iacute'/>
+    <glyph codepoint='eb' name='Icircumflex'/>
+    <glyph codepoint='ec' name='Idieresis'/>
+    <glyph codepoint='ed' name='Igrave'/>
+    <glyph codepoint='ee' name='Oacute'/>
+    <glyph codepoint='ef' name='Ocircumflex'/>
+    <glyph codepoint='f1' name='Ograve'/>
+    <glyph codepoint='f2' name='Uacute'/>
+    <glyph codepoint='f3' name='Ucircumflex'/>
+    <glyph codepoint='f4' name='Ugrave'/>
+    <glyph codepoint='f5' name='dotlessi'/>
+    <glyph codepoint='f6' name='circumflex'/>
+    <glyph codepoint='f7' name='tilde'/>
+    <glyph codepoint='f8' name='macron'/>
+    <glyph codepoint='f9' name='breve'/>
+    <glyph codepoint='fa' name='dotaccent'/>
+    <glyph codepoint='fb' name='ring'/>
+    <glyph codepoint='fc' name='cedilla'/>
+    <glyph codepoint='fd' name='hungarumlaut'/>
+    <glyph codepoint='fe' name='ogonek'/>
+    <glyph codepoint='ff' name='caron'/>
+    <glyph codepoint='d8' name='ydieresis'/>
+    <glyph codepoint='b4' name='yen'/>
+    <glyph codepoint='7a' name='z'/>
+  </encoding>
+  <encoding id='WinAnsiEncoding' glyphlist='AGL'>
+    <glyph codepoint='20' name='space'/>
+    <glyph codepoint='21' name='exclam'/>
+    <glyph codepoint='22' name='quotedbl'/>
+    <glyph codepoint='23' name='numbersign'/>
+    <glyph codepoint='24' name='dollar'/>
+    <glyph codepoint='25' name='percent'/>
+    <glyph codepoint='26' name='ampersand'/>
+    <glyph codepoint='27' name='quotesingle'/>
+    <glyph codepoint='28' name='parenleft'/>
+    <glyph codepoint='29' name='parenright'/>
+    <glyph codepoint='2a' name='asterisk'/>
+    <glyph codepoint='2b' name='plus'/>
+    <glyph codepoint='2c' name='comma'/>
+    <glyph codepoint='2d' name='hyphen'/>
+    <glyph codepoint='2e' name='period'/>
+    <glyph codepoint='2f' name='slash'/>
+    <glyph codepoint='30' name='zero'/>
+    <glyph codepoint='31' name='one'/>
+    <glyph codepoint='32' name='two'/>
+    <glyph codepoint='33' name='three'/>
+    <glyph codepoint='34' name='four'/>
+    <glyph codepoint='35' name='five'/>
+    <glyph codepoint='36' name='six'/>
+    <glyph codepoint='37' name='seven'/>
+    <glyph codepoint='38' name='eight'/>
+    <glyph codepoint='39' name='nine'/>
+    <glyph codepoint='3a' name='colon'/>
+    <glyph codepoint='3b' name='semicolon'/>
+    <glyph codepoint='3c' name='less'/>
+    <glyph codepoint='3d' name='equal'/>
+    <glyph codepoint='3e' name='greater'/>
+    <glyph codepoint='3f' name='question'/>
+    <glyph codepoint='40' name='at'/>
+    <glyph codepoint='41' name='A'/>
+    <glyph codepoint='42' name='B'/>
+    <glyph codepoint='43' name='C'/>
+    <glyph codepoint='44' name='D'/>
+    <glyph codepoint='45' name='E'/>
+    <glyph codepoint='46' name='F'/>
+    <glyph codepoint='47' name='G'/>
+    <glyph codepoint='48' name='H'/>
+    <glyph codepoint='49' name='I'/>
+    <glyph codepoint='4a' name='J'/>
+    <glyph codepoint='4b' name='K'/>
+    <glyph codepoint='4c' name='L'/>
+    <glyph codepoint='4d' name='M'/>
+    <glyph codepoint='4e' name='N'/>
+    <glyph codepoint='4f' name='O'/>
+    <glyph codepoint='50' name='P'/>
+    <glyph codepoint='51' name='Q'/>
+    <glyph codepoint='52' name='R'/>
+    <glyph codepoint='53' name='S'/>
+    <glyph codepoint='54' name='T'/>
+    <glyph codepoint='55' name='U'/>
+    <glyph codepoint='56' name='V'/>
+    <glyph codepoint='57' name='W'/>
+    <glyph codepoint='58' name='X'/>
+    <glyph codepoint='59' name='Y'/>
+    <glyph codepoint='5a' name='Z'/>
+    <glyph codepoint='5b' name='bracketleft'/>
+    <glyph codepoint='5c' name='backslash'/>
+    <glyph codepoint='5d' name='bracketright'/>
+    <glyph codepoint='5e' name='asciicircum'/>
+    <glyph codepoint='5f' name='underscore'/>
+    <glyph codepoint='60' name='grave'/>
+    <glyph codepoint='61' name='a'/>
+    <glyph codepoint='62' name='b'/>
+    <glyph codepoint='63' name='c'/>
+    <glyph codepoint='64' name='d'/>
+    <glyph codepoint='65' name='e'/>
+    <glyph codepoint='66' name='f'/>
+    <glyph codepoint='67' name='g'/>
+    <glyph codepoint='68' name='h'/>
+    <glyph codepoint='69' name='i'/>
+    <glyph codepoint='6a' name='j'/>
+    <glyph codepoint='6b' name='k'/>
+    <glyph codepoint='6c' name='l'/>
+    <glyph codepoint='6d' name='m'/>
+    <glyph codepoint='6e' name='n'/>
+    <glyph codepoint='6f' name='o'/>
+    <glyph codepoint='70' name='p'/>
+    <glyph codepoint='71' name='q'/>
+    <glyph codepoint='72' name='r'/>
+    <glyph codepoint='73' name='s'/>
+    <glyph codepoint='74' name='t'/>
+    <glyph codepoint='75' name='u'/>
+    <glyph codepoint='76' name='v'/>
+    <glyph codepoint='77' name='w'/>
+    <glyph codepoint='78' name='x'/>
+    <glyph codepoint='79' name='y'/>
+    <glyph codepoint='7a' name='z'/>
+    <glyph codepoint='7b' name='braceleft'/>
+    <glyph codepoint='7c' name='bar'/>
+    <glyph codepoint='7d' name='braceright'/>
+    <glyph codepoint='7e' name='asciitilde'/>
+    <glyph codepoint='80' name='Euro'/>
+    <glyph codepoint='82' name='quotesinglbase'/>
+    <glyph codepoint='83' name='florin'/>
+    <glyph codepoint='84' name='quotedblbase'/>
+    <glyph codepoint='85' name='ellipsis'/>
+    <glyph codepoint='86' name='dagger'/>
+    <glyph codepoint='87' name='daggerdbl'/>
+    <glyph codepoint='88' name='circumflex'/>
+    <glyph codepoint='89' name='perthousand'/>
+    <glyph codepoint='8a' name='Scaron'/>
+    <glyph codepoint='8b' name='guilsinglleft'/>
+    <glyph codepoint='8c' name='OE'/>
+    <glyph codepoint='8e' name='Zcaron'/>
+    <glyph codepoint='91' name='quoteleft'/>
+    <glyph codepoint='92' name='quoteright'/>
+    <glyph codepoint='93' name='quotedblleft'/>
+    <glyph codepoint='94' name='quotedblright'/>
+    <glyph codepoint='95' name='bullet'/>
+    <glyph codepoint='96' name='endash'/>
+    <glyph codepoint='97' name='emdash'/>
+    <glyph codepoint='98' name='tilde'/>
+    <glyph codepoint='99' name='trademark'/>
+    <glyph codepoint='9a' name='scaron'/>
+    <glyph codepoint='9b' name='guilsinglright'/>
+    <glyph codepoint='9c' name='oe'/>
+    <glyph codepoint='9e' name='zcaron'/>
+    <glyph codepoint='9f' name='Ydieresis'/>
+    <glyph codepoint='a1' name='exclamdown'/>
+    <glyph codepoint='a2' name='cent'/>
+    <glyph codepoint='a3' name='sterling'/>
+    <glyph codepoint='a4' name='currency'/>
+    <glyph codepoint='a5' name='yen'/>
+    <glyph codepoint='a6' name='brokenbar'/>
+    <glyph codepoint='a7' name='section'/>
+    <glyph codepoint='a8' name='dieresis'/>
+    <glyph codepoint='a9' name='copyright'/>
+    <glyph codepoint='aa' name='ordfeminine'/>
+    <glyph codepoint='ab' name='guillemotleft'/>
+    <glyph codepoint='ac' name='logicalnot'/>
+    <glyph codepoint='ae' name='registered'/>
+    <glyph codepoint='af' name='macron'/>
+    <glyph codepoint='b0' name='degree'/>
+    <glyph codepoint='b1' name='plusminus'/>
+    <glyph codepoint='b2' name='twosuperior'/>
+    <glyph codepoint='b3' name='threesuperior'/>
+    <glyph codepoint='b4' name='acute'/>
+    <glyph codepoint='b5' name='mu'/>
+    <glyph codepoint='b6' name='paragraph'/>
+    <glyph codepoint='b7' name='periodcentered'/>
+    <glyph codepoint='b8' name='cedilla'/>
+    <glyph codepoint='b9' name='onesuperior'/>
+    <glyph codepoint='ba' name='ordmasculine'/>
+    <glyph codepoint='bb' name='guillemotright'/>
+    <glyph codepoint='bc' name='onequarter'/>
+    <glyph codepoint='bd' name='onehalf'/>
+    <glyph codepoint='be' name='threequarters'/>
+    <glyph codepoint='bf' name='questiondown'/>
+    <glyph codepoint='c0' name='Agrave'/>
+    <glyph codepoint='c1' name='Aacute'/>
+    <glyph codepoint='c2' name='Acircumflex'/>
+    <glyph codepoint='c3' name='Atilde'/>
+    <glyph codepoint='c4' name='Adieresis'/>
+    <glyph codepoint='c5' name='Aring'/>
+    <glyph codepoint='c6' name='AE'/>
+    <glyph codepoint='c7' name='Ccedilla'/>
+    <glyph codepoint='c8' name='Egrave'/>
+    <glyph codepoint='c9' name='Eacute'/>
+    <glyph codepoint='ca' name='Ecircumflex'/>
+    <glyph codepoint='cb' name='Edieresis'/>
+    <glyph codepoint='cc' name='Igrave'/>
+    <glyph codepoint='cd' name='Iacute'/>
+    <glyph codepoint='ce' name='Icircumflex'/>
+    <glyph codepoint='cf' name='Idieresis'/>
+    <glyph codepoint='d0' name='Eth'/>
+    <glyph codepoint='d1' name='Ntilde'/>
+    <glyph codepoint='d2' name='Ograve'/>
+    <glyph codepoint='d3' name='Oacute'/>
+    <glyph codepoint='d4' name='Ocircumflex'/>
+    <glyph codepoint='d5' name='Otilde'/>
+    <glyph codepoint='d6' name='Odieresis'/>
+    <glyph codepoint='d7' name='multiply'/>
+    <glyph codepoint='d8' name='Oslash'/>
+    <glyph codepoint='d9' name='Ugrave'/>
+    <glyph codepoint='da' name='Uacute'/>
+    <glyph codepoint='db' name='Ucircumflex'/>
+    <glyph codepoint='dc' name='Udieresis'/>
+    <glyph codepoint='dd' name='Yacute'/>
+    <glyph codepoint='de' name='Thorn'/>
+    <glyph codepoint='df' name='germandbls'/>
+    <glyph codepoint='e0' name='agrave'/>
+    <glyph codepoint='e1' name='aacute'/>
+    <glyph codepoint='e2' name='acircumflex'/>
+    <glyph codepoint='e3' name='atilde'/>
+    <glyph codepoint='e4' name='adieresis'/>
+    <glyph codepoint='e5' name='aring'/>
+    <glyph codepoint='e6' name='ae'/>
+    <glyph codepoint='e7' name='ccedilla'/>
+    <glyph codepoint='e8' name='egrave'/>
+    <glyph codepoint='e9' name='eacute'/>
+    <glyph codepoint='ea' name='ecircumflex'/>
+    <glyph codepoint='eb' name='edieresis'/>
+    <glyph codepoint='ec' name='igrave'/>
+    <glyph codepoint='ed' name='iacute'/>
+    <glyph codepoint='ee' name='icircumflex'/>
+    <glyph codepoint='ef' name='idieresis'/>
+    <glyph codepoint='f0' name='eth'/>
+    <glyph codepoint='f1' name='ntilde'/>
+    <glyph codepoint='f2' name='ograve'/>
+    <glyph codepoint='f3' name='oacute'/>
+    <glyph codepoint='f4' name='ocircumflex'/>
+    <glyph codepoint='f5' name='otilde'/>
+    <glyph codepoint='f6' name='odieresis'/>
+    <glyph codepoint='f7' name='divide'/>
+    <glyph codepoint='f8' name='oslash'/>
+    <glyph codepoint='f9' name='ugrave'/>
+    <glyph codepoint='fa' name='uacute'/>
+    <glyph codepoint='fb' name='ucircumflex'/>
+    <glyph codepoint='fc' name='udieresis'/>
+    <glyph codepoint='fd' name='yacute'/>
+    <glyph codepoint='fe' name='thorn'/>
+    <glyph codepoint='ff' name='ydieresis'/>
+  </encoding>
+  <encoding id='PDFDocEncoding' glyphlist='AGL'>
+    <glyph codepoint='18' name='breve'/>
+    <glyph codepoint='19' name='caron'/>
+    <glyph codepoint='1a' name='circumflex'/>
+    <glyph codepoint='1b' name='dotaccent'/>
+    <glyph codepoint='1c' name='hungarumlaut'/>
+    <glyph codepoint='1d' name='ogonek'/>
+    <glyph codepoint='1e' name='ring'/>
+    <glyph codepoint='1f' name='tilde'/>
+    <glyph codepoint='20' name='space'/>
+    <glyph codepoint='21' name='exclam'/>
+    <glyph codepoint='22' name='quotedbl'/>
+    <glyph codepoint='23' name='numbersign'/>
+    <glyph codepoint='24' name='dollar'/>
+    <glyph codepoint='25' name='percent'/>
+    <glyph codepoint='26' name='ampersand'/>
+    <glyph codepoint='27' name='quotesingle'/>
+    <glyph codepoint='28' name='parenleft'/>
+    <glyph codepoint='29' name='parenright'/>
+    <glyph codepoint='2a' name='asterisk'/>
+    <glyph codepoint='2b' name='plus'/>
+    <glyph codepoint='2c' name='comma'/>
+    <glyph codepoint='2d' name='hyphen'/>
+    <glyph codepoint='2e' name='period'/>
+    <glyph codepoint='2f' name='slash'/>
+    <glyph codepoint='30' name='zero'/>
+    <glyph codepoint='31' name='one'/>
+    <glyph codepoint='32' name='two'/>
+    <glyph codepoint='33' name='three'/>
+    <glyph codepoint='34' name='four'/>
+    <glyph codepoint='35' name='five'/>
+    <glyph codepoint='36' name='six'/>
+    <glyph codepoint='37' name='seven'/>
+    <glyph codepoint='38' name='eight'/>
+    <glyph codepoint='39' name='nine'/>
+    <glyph codepoint='3a' name='colon'/>
+    <glyph codepoint='3b' name='semicolon'/>
+    <glyph codepoint='3c' name='less'/>
+    <glyph codepoint='3d' name='equal'/>
+    <glyph codepoint='3e' name='greater'/>
+    <glyph codepoint='3f' name='question'/>
+    <glyph codepoint='40' name='at'/>
+    <glyph codepoint='41' name='A'/>
+    <glyph codepoint='42' name='B'/>
+    <glyph codepoint='43' name='C'/>
+    <glyph codepoint='44' name='D'/>
+    <glyph codepoint='45' name='E'/>
+    <glyph codepoint='46' name='F'/>
+    <glyph codepoint='47' name='G'/>
+    <glyph codepoint='48' name='H'/>
+    <glyph codepoint='49' name='I'/>
+    <glyph codepoint='4a' name='J'/>
+    <glyph codepoint='4b' name='K'/>
+    <glyph codepoint='4c' name='L'/>
+    <glyph codepoint='4d' name='M'/>
+    <glyph codepoint='4e' name='N'/>
+    <glyph codepoint='4f' name='O'/>
+    <glyph codepoint='50' name='P'/>
+    <glyph codepoint='51' name='Q'/>
+    <glyph codepoint='52' name='R'/>
+    <glyph codepoint='53' name='S'/>
+    <glyph codepoint='54' name='T'/>
+    <glyph codepoint='55' name='U'/>
+    <glyph codepoint='56' name='V'/>
+    <glyph codepoint='57' name='W'/>
+    <glyph codepoint='58' name='X'/>
+    <glyph codepoint='59' name='Y'/>
+    <glyph codepoint='5a' name='Z'/>
+    <glyph codepoint='5b' name='bracketleft'/>
+    <glyph codepoint='5c' name='backslash'/>
+    <glyph codepoint='5d' name='bracketright'/>
+    <glyph codepoint='5e' name='asciicircum'/>
+    <glyph codepoint='5f' name='underscore'/>
+    <glyph codepoint='60' name='grave'/>
+    <glyph codepoint='61' name='a'/>
+    <glyph codepoint='62' name='b'/>
+    <glyph codepoint='63' name='c'/>
+    <glyph codepoint='64' name='d'/>
+    <glyph codepoint='65' name='e'/>
+    <glyph codepoint='66' name='f'/>
+    <glyph codepoint='67' name='g'/>
+    <glyph codepoint='68' name='h'/>
+    <glyph codepoint='69' name='i'/>
+    <glyph codepoint='6a' name='j'/>
+    <glyph codepoint='6b' name='k'/>
+    <glyph codepoint='6c' name='l'/>
+    <glyph codepoint='6d' name='m'/>
+    <glyph codepoint='6e' name='n'/>
+    <glyph codepoint='6f' name='o'/>
+    <glyph codepoint='70' name='p'/>
+    <glyph codepoint='71' name='q'/>
+    <glyph codepoint='72' name='r'/>
+    <glyph codepoint='73' name='s'/>
+    <glyph codepoint='74' name='t'/>
+    <glyph codepoint='75' name='u'/>
+    <glyph codepoint='76' name='v'/>
+    <glyph codepoint='77' name='w'/>
+    <glyph codepoint='78' name='x'/>
+    <glyph codepoint='79' name='y'/>
+    <glyph codepoint='7a' name='z'/>
+    <glyph codepoint='7b' name='braceleft'/>
+    <glyph codepoint='7c' name='bar'/>
+    <glyph codepoint='7d' name='braceright'/>
+    <glyph codepoint='7e' name='asciitilde'/>
+    <glyph codepoint='80' name='bullet'/>
+    <glyph codepoint='81' name='dagger'/>
+    <glyph codepoint='82' name='daggerdbl'/>
+    <glyph codepoint='83' name='ellipsis'/>
+    <glyph codepoint='84' name='emdash'/>
+    <glyph codepoint='85' name='endash'/>
+    <glyph codepoint='86' name='florin'/>
+    <glyph codepoint='87' name='fraction'/>
+    <glyph codepoint='88' name='guilsinglleft'/>
+    <glyph codepoint='89' name='guilsinglright'/>
+    <glyph codepoint='8a' name='minus'/>
+    <glyph codepoint='8b' name='perthousand'/>
+    <glyph codepoint='8c' name='quotedblbase'/>
+    <glyph codepoint='8d' name='quotedblleft'/>
+    <glyph codepoint='8e' name='quotedblright'/>
+    <glyph codepoint='8f' name='quoteleft'/>
+    <glyph codepoint='90' name='quoteright'/>
+    <glyph codepoint='91' name='quotesinglbase'/>
+    <glyph codepoint='92' name='trademark'/>
+    <glyph codepoint='93' name='fi'/>
+    <glyph codepoint='94' name='fl'/>
+    <glyph codepoint='95' name='Lslash'/>
+    <glyph codepoint='96' name='OE'/>
+    <glyph codepoint='97' name='Scaron'/>
+    <glyph codepoint='98' name='Ydieresis'/>
+    <glyph codepoint='99' name='Zcaron'/>
+    <glyph codepoint='9a' name='dotlessi'/>
+    <glyph codepoint='9b' name='lslash'/>
+    <glyph codepoint='9c' name='oe'/>
+    <glyph codepoint='9d' name='scaron'/>
+    <glyph codepoint='9e' name='zcaron'/>
+    <glyph codepoint='a0' name='Euro'/>
+    <glyph codepoint='a1' name='exclamdown'/>
+    <glyph codepoint='a2' name='cent'/>
+    <glyph codepoint='a3' name='sterling'/>
+    <glyph codepoint='a4' name='currency'/>
+    <glyph codepoint='a5' name='yen'/>
+    <glyph codepoint='a6' name='brokenbar'/>
+    <glyph codepoint='a7' name='section'/>
+    <glyph codepoint='a8' name='dieresis'/>
+    <glyph codepoint='a9' name='copyright'/>
+    <glyph codepoint='aa' name='ordfeminine'/>
+    <glyph codepoint='ab' name='guillemotleft'/>
+    <glyph codepoint='ac' name='logicalnot'/>
+    <glyph codepoint='ae' name='registered'/>
+    <glyph codepoint='af' name='macron'/>
+    <glyph codepoint='b0' name='degree'/>
+    <glyph codepoint='b1' name='plusminus'/>
+    <glyph codepoint='b2' name='twosuperior'/>
+    <glyph codepoint='b3' name='threesuperior'/>
+    <glyph codepoint='b4' name='acute'/>
+    <glyph codepoint='b5' name='mu'/>
+    <glyph codepoint='b6' name='paragraph'/>
+    <glyph codepoint='b7' name='periodcentered'/>
+    <glyph codepoint='b8' name='cedilla'/>
+    <glyph codepoint='b9' name='onesuperior'/>
+    <glyph codepoint='ba' name='ordmasculine'/>
+    <glyph codepoint='bb' name='guillemotright'/>
+    <glyph codepoint='bc' name='onequarter'/>
+    <glyph codepoint='bd' name='onehalf'/>
+    <glyph codepoint='be' name='threequarters'/>
+    <glyph codepoint='bf' name='questiondown'/>
+    <glyph codepoint='c0' name='Agrave'/>
+    <glyph codepoint='c1' name='Aacute'/>
+    <glyph codepoint='c2' name='Acircumflex'/>
+    <glyph codepoint='c3' name='Atilde'/>
+    <glyph codepoint='c4' name='Adieresis'/>
+    <glyph codepoint='c5' name='Aring'/>
+    <glyph codepoint='c6' name='AE'/>
+    <glyph codepoint='c7' name='Ccedilla'/>
+    <glyph codepoint='c8' name='Egrave'/>
+    <glyph codepoint='c9' name='Eacute'/>
+    <glyph codepoint='ca' name='Ecircumflex'/>
+    <glyph codepoint='cb' name='Edieresis'/>
+    <glyph codepoint='cc' name='Igrave'/>
+    <glyph codepoint='cd' name='Iacute'/>
+    <glyph codepoint='ce' name='Icircumflex'/>
+    <glyph codepoint='cf' name='Idieresis'/>
+    <glyph codepoint='d0' name='Eth'/>
+    <glyph codepoint='d1' name='Ntilde'/>
+    <glyph codepoint='d2' name='Ograve'/>
+    <glyph codepoint='d3' name='Oacute'/>
+    <glyph codepoint='d4' name='Ocircumflex'/>
+    <glyph codepoint='d5' name='Otilde'/>
+    <glyph codepoint='d6' name='Odieresis'/>
+    <glyph codepoint='d7' name='multiply'/>
+    <glyph codepoint='d8' name='Oslash'/>
+    <glyph codepoint='d9' name='Ugrave'/>
+    <glyph codepoint='da' name='Uacute'/>
+    <glyph codepoint='db' name='Ucircumflex'/>
+    <glyph codepoint='dc' name='Udieresis'/>
+    <glyph codepoint='dd' name='Yacute'/>
+    <glyph codepoint='de' name='Thorn'/>
+    <glyph codepoint='df' name='germandbls'/>
+    <glyph codepoint='e0' name='agrave'/>
+    <glyph codepoint='e1' name='aacute'/>
+    <glyph codepoint='e2' name='acircumflex'/>
+    <glyph codepoint='e3' name='atilde'/>
+    <glyph codepoint='e4' name='adieresis'/>
+    <glyph codepoint='e5' name='aring'/>
+    <glyph codepoint='e6' name='ae'/>
+    <glyph codepoint='e7' name='ccedilla'/>
+    <glyph codepoint='e8' name='egrave'/>
+    <glyph codepoint='e9' name='eacute'/>
+    <glyph codepoint='ea' name='ecircumflex'/>
+    <glyph codepoint='eb' name='edieresis'/>
+    <glyph codepoint='ec' name='igrave'/>
+    <glyph codepoint='ed' name='iacute'/>
+    <glyph codepoint='ee' name='icircumflex'/>
+    <glyph codepoint='ef' name='idieresis'/>
+    <glyph codepoint='f0' name='eth'/>
+    <glyph codepoint='f1' name='ntilde'/>
+    <glyph codepoint='f2' name='ograve'/>
+    <glyph codepoint='f3' name='oacute'/>
+    <glyph codepoint='f4' name='ocircumflex'/>
+    <glyph codepoint='f5' name='otilde'/>
+    <glyph codepoint='f6' name='odieresis'/>
+    <glyph codepoint='f7' name='divide'/>
+    <glyph codepoint='f8' name='oslash'/>
+    <glyph codepoint='f9' name='ugrave'/>
+    <glyph codepoint='fa' name='uacute'/>
+    <glyph codepoint='fb' name='ucircumflex'/>
+    <glyph codepoint='fc' name='udieresis'/>
+    <glyph codepoint='fd' name='yacute'/>
+    <glyph codepoint='fe' name='thorn'/>
+    <glyph codepoint='ff' name='ydieresis'/>
+  </encoding>
+  <encoding id='SymbolEncoding' glyphlist='AGL'>
+    <glyph codepoint='20' name='space'/>
+    <glyph codepoint='21' name='exclam'/>
+    <glyph codepoint='22' name='universal'/>
+    <glyph codepoint='23' name='numbersign'/>
+    <glyph codepoint='24' name='existential'/>
+    <glyph codepoint='25' name='percent'/>
+    <glyph codepoint='26' name='ampersand'/>
+    <glyph codepoint='27' name='suchthat'/>
+    <glyph codepoint='28' name='parenleft'/>
+    <glyph codepoint='29' name='parenright'/>
+    <glyph codepoint='2a' name='asteriskmath'/>
+    <glyph codepoint='2b' name='plus'/>
+    <glyph codepoint='2c' name='comma'/>
+    <glyph codepoint='2d' name='minus'/>
+    <glyph codepoint='2e' name='period'/>
+    <glyph codepoint='2f' name='slash'/>
+    <glyph codepoint='30' name='zero'/>
+    <glyph codepoint='31' name='one'/>
+    <glyph codepoint='32' name='two'/>
+    <glyph codepoint='33' name='three'/>
+    <glyph codepoint='34' name='four'/>
+    <glyph codepoint='35' name='five'/>
+    <glyph codepoint='36' name='six'/>
+    <glyph codepoint='37' name='seven'/>
+    <glyph codepoint='38' name='eight'/>
+    <glyph codepoint='39' name='nine'/>
+    <glyph codepoint='3a' name='colon'/>
+    <glyph codepoint='3b' name='semicolon'/>
+    <glyph codepoint='3c' name='less'/>
+    <glyph codepoint='3d' name='equal'/>
+    <glyph codepoint='3e' name='greater'/>
+    <glyph codepoint='3f' name='question'/>
+    <glyph codepoint='40' name='congruent'/>
+    <glyph codepoint='41' name='Alpha'/>
+    <glyph codepoint='42' name='Beta'/>
+    <glyph codepoint='43' name='Chi'/>
+    <glyph codepoint='44' name='Delta'/>
+    <glyph codepoint='45' name='Epsilon'/>
+    <glyph codepoint='46' name='Phi'/>
+    <glyph codepoint='47' name='Gamma'/>
+    <glyph codepoint='48' name='Eta'/>
+    <glyph codepoint='49' name='Iota'/>
+    <glyph codepoint='4a' name='theta1'/>
+    <glyph codepoint='4b' name='Kappa'/>
+    <glyph codepoint='4c' name='Lambda'/>
+    <glyph codepoint='4d' name='Mu'/>
+    <glyph codepoint='4e' name='Nu'/>
+    <glyph codepoint='4f' name='Omicron'/>
+    <glyph codepoint='50' name='Pi'/>
+    <glyph codepoint='51' name='Theta'/>
+    <glyph codepoint='52' name='Rho'/>
+    <glyph codepoint='53' name='Sigma'/>
+    <glyph codepoint='54' name='Tau'/>
+    <glyph codepoint='55' name='Upsilon'/>
+    <glyph codepoint='56' name='sigma1'/>
+    <glyph codepoint='57' name='Omega'/>
+    <glyph codepoint='58' name='Xi'/>
+    <glyph codepoint='59' name='Psi'/>
+    <glyph codepoint='5a' name='Zeta'/>
+    <glyph codepoint='5b' name='bracketleft'/>
+    <glyph codepoint='5c' name='therefore'/>
+    <glyph codepoint='5d' name='bracketright'/>
+    <glyph codepoint='5e' name='perpendicular'/>
+    <glyph codepoint='5f' name='underscore'/>
+    <glyph codepoint='60' name='radicalex'/>
+    <glyph codepoint='61' name='alpha'/>
+    <glyph codepoint='62' name='beta'/>
+    <glyph codepoint='63' name='chi'/>
+    <glyph codepoint='64' name='delta'/>
+    <glyph codepoint='65' name='epsilon'/>
+    <glyph codepoint='66' name='phi'/>
+    <glyph codepoint='67' name='gamma'/>
+    <glyph codepoint='68' name='eta'/>
+    <glyph codepoint='69' name='iota'/>
+    <glyph codepoint='6a' name='phi1'/>
+    <glyph codepoint='6b' name='kappa'/>
+    <glyph codepoint='6c' name='lambda'/>
+    <glyph codepoint='6d' name='mu'/>
+    <glyph codepoint='6e' name='nu'/>
+    <glyph codepoint='6f' name='omicron'/>
+    <glyph codepoint='70' name='pi'/>
+    <glyph codepoint='71' name='theta'/>
+    <glyph codepoint='72' name='rho'/>
+    <glyph codepoint='73' name='sigma'/>
+    <glyph codepoint='74' name='tau'/>
+    <glyph codepoint='75' name='upsilon'/>
+    <glyph codepoint='76' name='omega1'/>
+    <glyph codepoint='77' name='omega'/>
+    <glyph codepoint='78' name='xi'/>
+    <glyph codepoint='79' name='psi'/>
+    <glyph codepoint='7a' name='zeta'/>
+    <glyph codepoint='7b' name='braceleft'/>
+    <glyph codepoint='7c' name='bar'/>
+    <glyph codepoint='7d' name='braceright'/>
+    <glyph codepoint='7e' name='similar'/>
+    <glyph codepoint='a0' name='Euro'/>
+    <glyph codepoint='a1' name='Upsilon1'/>
+    <glyph codepoint='a2' name='minute'/>
+    <glyph codepoint='a3' name='lessequal'/>
+    <glyph codepoint='a4' name='fraction'/>
+    <glyph codepoint='a5' name='infinity'/>
+    <glyph codepoint='a6' name='florin'/>
+    <glyph codepoint='a7' name='club'/>
+    <glyph codepoint='a8' name='diamond'/>
+    <glyph codepoint='a9' name='heart'/>
+    <glyph codepoint='aa' name='spade'/>
+    <glyph codepoint='ab' name='arrowboth'/>
+    <glyph codepoint='ac' name='arrowleft'/>
+    <glyph codepoint='ad' name='arrowup'/>
+    <glyph codepoint='ae' name='arrowright'/>
+    <glyph codepoint='af' name='arrowdown'/>
+    <glyph codepoint='b0' name='degree'/>
+    <glyph codepoint='b1' name='plusminus'/>
+    <glyph codepoint='b2' name='second'/>
+    <glyph codepoint='b3' name='greaterequal'/>
+    <glyph codepoint='b4' name='multiply'/>
+    <glyph codepoint='b5' name='proportional'/>
+    <glyph codepoint='b6' name='partialdiff'/>
+    <glyph codepoint='b7' name='bullet'/>
+    <glyph codepoint='b8' name='divide'/>
+    <glyph codepoint='b9' name='notequal'/>
+    <glyph codepoint='ba' name='equivalence'/>
+    <glyph codepoint='bb' name='approxequal'/>
+    <glyph codepoint='bc' name='ellipsis'/>
+    <glyph codepoint='bd' name='arrowvertex'/>
+    <glyph codepoint='be' name='arrowhorizex'/>
+    <glyph codepoint='bf' name='carriagereturn'/>
+    <glyph codepoint='c0' name='aleph'/>
+    <glyph codepoint='c1' name='Ifraktur'/>
+    <glyph codepoint='c2' name='Rfraktur'/>
+    <glyph codepoint='c3' name='weierstrass'/>
+    <glyph codepoint='c4' name='circlemultiply'/>
+    <glyph codepoint='c5' name='circleplus'/>
+    <glyph codepoint='c6' name='emptyset'/>
+    <glyph codepoint='c7' name='intersection'/>
+    <glyph codepoint='c8' name='union'/>
+    <glyph codepoint='c9' name='propersuperset'/>
+    <glyph codepoint='ca' name='reflexsuperset'/>
+    <glyph codepoint='cb' name='notsubset'/>
+    <glyph codepoint='cc' name='propersubset'/>
+    <glyph codepoint='cd' name='reflexsubset'/>
+    <glyph codepoint='ce' name='element'/>
+    <glyph codepoint='cf' name='notelement'/>
+    <glyph codepoint='d0' name='angle'/>
+    <glyph codepoint='d1' name='gradient'/>
+    <glyph codepoint='d2' name='registerserif'/>
+    <glyph codepoint='d3' name='copyrightserif'/>
+    <glyph codepoint='d4' name='trademarkserif'/>
+    <glyph codepoint='d5' name='product'/>
+    <glyph codepoint='d6' name='radical'/>
+    <glyph codepoint='d7' name='dotmath'/>
+    <glyph codepoint='d8' name='logicalnot'/>
+    <glyph codepoint='d9' name='logicaland'/>
+    <glyph codepoint='da' name='logicalor'/>
+    <glyph codepoint='db' name='arrowdblboth'/>
+    <glyph codepoint='dc' name='arrowdblleft'/>
+    <glyph codepoint='dd' name='arrowdblup'/>
+    <glyph codepoint='de' name='arrowdblright'/>
+    <glyph codepoint='df' name='arrowdbldown'/>
+    <glyph codepoint='e0' name='lozenge'/>
+    <glyph codepoint='e1' name='angleleft'/>
+    <glyph codepoint='e2' name='registersans'/>
+    <glyph codepoint='e3' name='copyrightsans'/>
+    <glyph codepoint='e4' name='trademarksans'/>
+    <glyph codepoint='e5' name='summation'/>
+    <glyph codepoint='e6' name='parenlefttp'/>
+    <glyph codepoint='e7' name='parenleftex'/>
+    <glyph codepoint='e8' name='parenleftbt'/>
+    <glyph codepoint='e9' name='bracketlefttp'/>
+    <glyph codepoint='ea' name='bracketleftex'/>
+    <glyph codepoint='eb' name='bracketleftbt'/>
+    <glyph codepoint='ec' name='bracelefttp'/>
+    <glyph codepoint='ed' name='braceleftmid'/>
+    <glyph codepoint='ee' name='braceleftbt'/>
+    <glyph codepoint='ef' name='braceex'/>
+    <glyph codepoint='f1' name='angleright'/>
+    <glyph codepoint='f2' name='integral'/>
+    <glyph codepoint='f3' name='integraltp'/>
+    <glyph codepoint='f4' name='integralex'/>
+    <glyph codepoint='f5' name='integralbt'/>
+    <glyph codepoint='f6' name='parenrighttp'/>
+    <glyph codepoint='f7' name='parenrightex'/>
+    <glyph codepoint='f8' name='parenrightbt'/>
+    <glyph codepoint='f9' name='bracketrighttp'/>
+    <glyph codepoint='fa' name='bracketrightex'/>
+    <glyph codepoint='fb' name='bracketrightbt'/>
+    <glyph codepoint='fc' name='bracerighttp'/>
+    <glyph codepoint='fd' name='bracerightmid'/>
+    <glyph codepoint='fe' name='bracerightbt'/>
+  </encoding>
+  <encoding id='ZapfDingbatsEncoding' glyphlist='ZGL'>
+    <glyph codepoint='20' name='space'/>
+    <glyph codepoint='21' name='a1'/>
+    <glyph codepoint='22' name='a2'/>
+    <glyph codepoint='23' name='a202'/>
+    <glyph codepoint='24' name='a3'/>
+    <glyph codepoint='25' name='a4'/>
+    <glyph codepoint='26' name='a5'/>
+    <glyph codepoint='27' name='a119'/>
+    <glyph codepoint='28' name='a118'/>
+    <glyph codepoint='29' name='a117'/>
+    <glyph codepoint='2A' name='a11'/>
+    <glyph codepoint='2B' name='a12'/>
+    <glyph codepoint='2C' name='a13'/>
+    <glyph codepoint='2D' name='a14'/>
+    <glyph codepoint='2E' name='a15'/>
+    <glyph codepoint='2F' name='a16'/>
+    <glyph codepoint='30' name='a105'/>
+    <glyph codepoint='31' name='a17'/>
+    <glyph codepoint='32' name='a18'/>
+    <glyph codepoint='33' name='a19'/>
+    <glyph codepoint='34' name='a20'/>
+    <glyph codepoint='35' name='a21'/>
+    <glyph codepoint='36' name='a22'/>
+    <glyph codepoint='37' name='a23'/>
+    <glyph codepoint='38' name='a24'/>
+    <glyph codepoint='39' name='a25'/>
+    <glyph codepoint='3A' name='a26'/>
+    <glyph codepoint='3B' name='a27'/>
+    <glyph codepoint='3C' name='a28'/>
+    <glyph codepoint='3D' name='a6'/>
+    <glyph codepoint='3E' name='a7'/>
+    <glyph codepoint='3F' name='a8'/>
+    <glyph codepoint='40' name='a9'/>
+    <glyph codepoint='41' name='a10'/>
+    <glyph codepoint='42' name='a29'/>
+    <glyph codepoint='43' name='a30'/>
+    <glyph codepoint='44' name='a31'/>
+    <glyph codepoint='45' name='a32'/>
+    <glyph codepoint='46' name='a33'/>
+    <glyph codepoint='47' name='a34'/>
+    <glyph codepoint='48' name='a35'/>
+    <glyph codepoint='49' name='a36'/>
+    <glyph codepoint='4A' name='a37'/>
+    <glyph codepoint='4B' name='a38'/>
+    <glyph codepoint='4C' name='a39'/>
+    <glyph codepoint='4D' name='a40'/>
+    <glyph codepoint='4E' name='a41'/>
+    <glyph codepoint='4F' name='a42'/>
+    <glyph codepoint='50' name='a43'/>
+    <glyph codepoint='51' name='a44'/>
+    <glyph codepoint='52' name='a45'/>
+    <glyph codepoint='53' name='a46'/>
+    <glyph codepoint='54' name='a47'/>
+    <glyph codepoint='55' name='a48'/>
+    <glyph codepoint='56' name='a49'/>
+    <glyph codepoint='57' name='a50'/>
+    <glyph codepoint='58' name='a51'/>
+    <glyph codepoint='59' name='a52'/>
+    <glyph codepoint='5A' name='a53'/>
+    <glyph codepoint='5B' name='a54'/>
+    <glyph codepoint='5C' name='a55'/>
+    <glyph codepoint='5D' name='a56'/>
+    <glyph codepoint='5E' name='a57'/>
+    <glyph codepoint='5F' name='a58'/>
+    <glyph codepoint='60' name='a59'/>
+    <glyph codepoint='61' name='a60'/>
+    <glyph codepoint='62' name='a61'/>
+    <glyph codepoint='63' name='a62'/>
+    <glyph codepoint='64' name='a63'/>
+    <glyph codepoint='65' name='a64'/>
+    <glyph codepoint='66' name='a65'/>
+    <glyph codepoint='67' name='a66'/>
+    <glyph codepoint='68' name='a67'/>
+    <glyph codepoint='69' name='a68'/>
+    <glyph codepoint='6A' name='a69'/>
+    <glyph codepoint='6B' name='a70'/>
+    <glyph codepoint='6C' name='a71'/>
+    <glyph codepoint='6D' name='a72'/>
+    <glyph codepoint='6E' name='a73'/>
+    <glyph codepoint='6F' name='a74'/>
+    <glyph codepoint='70' name='a203'/>
+    <glyph codepoint='71' name='a75'/>
+    <glyph codepoint='72' name='a204'/>
+    <glyph codepoint='73' name='a76'/>
+    <glyph codepoint='74' name='a77'/>
+    <glyph codepoint='75' name='a78'/>
+    <glyph codepoint='76' name='a79'/>
+    <glyph codepoint='77' name='a81'/>
+    <glyph codepoint='78' name='a82'/>
+    <glyph codepoint='79' name='a83'/>
+    <glyph codepoint='7A' name='a84'/>
+    <glyph codepoint='7B' name='a97'/>
+    <glyph codepoint='7C' name='a98'/>
+    <glyph codepoint='7D' name='a99'/>
+    <glyph codepoint='7E' name='a100'/>
+    <glyph codepoint='80' name='a89'/>
+    <glyph codepoint='81' name='a90'/>
+    <glyph codepoint='82' name='a93'/>
+    <glyph codepoint='83' name='a94'/>
+    <glyph codepoint='84' name='a91'/>
+    <glyph codepoint='85' name='a92'/>
+    <glyph codepoint='86' name='a205'/>
+    <glyph codepoint='87' name='a85'/>
+    <glyph codepoint='88' name='a206'/>
+    <glyph codepoint='89' name='a86'/>
+    <glyph codepoint='8A' name='a87'/>
+    <glyph codepoint='8B' name='a88'/>
+    <glyph codepoint='8C' name='a95'/>
+    <glyph codepoint='8D' name='a96'/>
+    <glyph codepoint='A1' name='a101'/>
+    <glyph codepoint='A2' name='a102'/>
+    <glyph codepoint='A3' name='a103'/>
+    <glyph codepoint='A4' name='a104'/>
+    <glyph codepoint='A5' name='a106'/>
+    <glyph codepoint='A6' name='a107'/>
+    <glyph codepoint='A7' name='a108'/>
+    <glyph codepoint='A8' name='a112'/>
+    <glyph codepoint='A9' name='a111'/>
+    <glyph codepoint='AA' name='a110'/>
+    <glyph codepoint='AB' name='a109'/>
+    <glyph codepoint='AC' name='a120'/>
+    <glyph codepoint='AD' name='a121'/>
+    <glyph codepoint='AE' name='a122'/>
+    <glyph codepoint='AF' name='a123'/>
+    <glyph codepoint='B0' name='a124'/>
+    <glyph codepoint='B1' name='a125'/>
+    <glyph codepoint='B2' name='a126'/>
+    <glyph codepoint='B3' name='a127'/>
+    <glyph codepoint='B4' name='a128'/>
+    <glyph codepoint='B5' name='a129'/>
+    <glyph codepoint='B6' name='a130'/>
+    <glyph codepoint='B7' name='a131'/>
+    <glyph codepoint='B8' name='a132'/>
+    <glyph codepoint='B9' name='a133'/>
+    <glyph codepoint='BA' name='a134'/>
+    <glyph codepoint='BB' name='a135'/>
+    <glyph codepoint='BC' name='a136'/>
+    <glyph codepoint='BD' name='a137'/>
+    <glyph codepoint='BE' name='a138'/>
+    <glyph codepoint='BF' name='a139'/>
+    <glyph codepoint='C0' name='a140'/>
+    <glyph codepoint='C1' name='a141'/>
+    <glyph codepoint='C2' name='a142'/>
+    <glyph codepoint='C3' name='a143'/>
+    <glyph codepoint='C4' name='a144'/>
+    <glyph codepoint='C5' name='a145'/>
+    <glyph codepoint='C6' name='a146'/>
+    <glyph codepoint='C7' name='a147'/>
+    <glyph codepoint='C8' name='a148'/>
+    <glyph codepoint='C9' name='a149'/>
+    <glyph codepoint='CA' name='a150'/>
+    <glyph codepoint='CB' name='a151'/>
+    <glyph codepoint='CC' name='a152'/>
+    <glyph codepoint='CD' name='a153'/>
+    <glyph codepoint='CE' name='a154'/>
+    <glyph codepoint='CF' name='a155'/>
+    <glyph codepoint='D0' name='a156'/>
+    <glyph codepoint='D1' name='a157'/>
+    <glyph codepoint='D2' name='a158'/>
+    <glyph codepoint='D3' name='a159'/>
+    <glyph codepoint='D4' name='a160'/>
+    <glyph codepoint='D5' name='a161'/>
+    <glyph codepoint='D6' name='a163'/>
+    <glyph codepoint='D7' name='a164'/>
+    <glyph codepoint='D8' name='a196'/>
+    <glyph codepoint='D9' name='a165'/>
+    <glyph codepoint='DA' name='a192'/>
+    <glyph codepoint='DB' name='a166'/>
+    <glyph codepoint='DC' name='a167'/>
+    <glyph codepoint='DD' name='a168'/>
+    <glyph codepoint='DE' name='a169'/>
+    <glyph codepoint='DF' name='a170'/>
+    <glyph codepoint='E0' name='a171'/>
+    <glyph codepoint='E1' name='a172'/>
+    <glyph codepoint='E2' name='a173'/>
+    <glyph codepoint='E3' name='a162'/>
+    <glyph codepoint='E4' name='a174'/>
+    <glyph codepoint='E5' name='a175'/>
+    <glyph codepoint='E6' name='a176'/>
+    <glyph codepoint='E7' name='a177'/>
+    <glyph codepoint='E8' name='a178'/>
+    <glyph codepoint='E9' name='a179'/>
+    <glyph codepoint='EA' name='a193'/>
+    <glyph codepoint='EB' name='a180'/>
+    <glyph codepoint='EC' name='a199'/>
+    <glyph codepoint='ED' name='a181'/>
+    <glyph codepoint='EE' name='a200'/>
+    <glyph codepoint='EF' name='a182'/>
+    <glyph codepoint='F1' name='a201'/>
+    <glyph codepoint='F2' name='a183'/>
+    <glyph codepoint='F3' name='a184'/>
+    <glyph codepoint='F4' name='a197'/>
+    <glyph codepoint='F5' name='a185'/>
+    <glyph codepoint='F6' name='a194'/>
+    <glyph codepoint='F7' name='a198'/>
+    <glyph codepoint='F8' name='a186'/>
+    <glyph codepoint='F9' name='a195'/>
+    <glyph codepoint='FA' name='a187'/>
+    <glyph codepoint='FB' name='a188'/>
+    <glyph codepoint='FC' name='a189'/>
+    <glyph codepoint='FD' name='a190'/>
+    <glyph codepoint='FE' name='a191'/>
+  </encoding>
+</encoding-set>
diff --git a/src/codegen/fonts/font-file.xsl b/src/codegen/fonts/font-file.xsl
new file mode 100644 (file)
index 0000000..72ee81a
--- /dev/null
@@ -0,0 +1,183 @@
+<!--
+  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$ -->
+<!-- This file writes the class files for the fonts (Courier.java,
+     Helvetica.java etc.).  It uses the information in the font
+     description files (Courier.xml, Helvetica.xml) to do this.  In these
+     font description files each character is referenced by its adobe
+     glyph name:
+        <char name="A" width="667"/>
+     To resolve this name and to find the code for this character it looks
+     up the adobe name in the file encodings.xml and extracts the appropriate
+     code. -->
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:output method="text"/>
+
+  <xsl:param name="encoding" select="/font-metrics/encoding"/>
+  <xsl:variable name="native-encoding" select="/font-metrics/encoding"/>
+  <xsl:variable name="glyphs" select="document('encodings.xml')/encoding-set/encoding[@id=$encoding]/glyph"/>
+
+  <xsl:template match="font-metrics">
+package org.apache.fop.fonts.base14;
+
+<xsl:if test="count(kerning) &gt; 0">
+import java.util.Map;
+</xsl:if>
+import org.apache.fop.fonts.FontType;
+import org.apache.fop.fonts.Typeface;
+import org.apache.fop.fonts.CodePointMapping;
+
+public class <xsl:value-of select="class-name"/> extends Typeface {
+    private final static String fontName = "<xsl:value-of select="font-name"/>";
+    private final static String encoding = <xsl:choose><xsl:when test="$encoding != $native-encoding">"<xsl:value-of select="$encoding"/>"</xsl:when><xsl:otherwise>null</xsl:otherwise></xsl:choose>;
+    private final static int capHeight = <xsl:value-of select="cap-height"/>;
+    private final static int xHeight = <xsl:value-of select="x-height"/>;
+    private final static int ascender = <xsl:value-of select="ascender"/>;
+    private final static int descender = <xsl:value-of select="descender"/>;
+    private final static int firstChar = <xsl:value-of select="first-char"/>;
+    private final static int lastChar = <xsl:value-of select="last-char"/>;
+    private final static int[] width;
+    private final CodePointMapping mapping =
+        CodePointMapping.getMapping("<xsl:value-of select="$encoding"/>");
+<xsl:if test="count(kerning) &gt; 0">
+    private final static Map kerning;
+</xsl:if>
+
+    private boolean enableKerning = false;
+
+    static {
+        width = new int[256];
+        <xsl:apply-templates select="widths"/>
+<xsl:if test="count(kerning) &gt; 0">
+        kerning = new java.util.HashMap();
+        Integer first, second;
+        Map pairs;
+        <xsl:apply-templates select="kerning"/>
+</xsl:if>
+    }
+
+    public <xsl:value-of select="class-name"/>() {
+        this(false);
+    }
+
+    public <xsl:value-of select="class-name"/>(boolean enableKerning) {
+        this.enableKerning = enableKerning;
+    }
+
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public String getFontName() {
+        return fontName;
+    }
+
+    public FontType getFontType() {
+        return FontType.TYPE1;
+    }
+
+    public int getAscender(int size) {
+        return size * ascender;
+    }
+
+    public int getCapHeight(int size) {
+        return size * capHeight;
+    }
+
+    public int getDescender(int size) {
+        return size * descender;
+    }
+
+    public int getXHeight(int size) {
+        return size * xHeight;
+    }
+
+    public int getFirstChar() {
+        return firstChar;
+    }
+
+    public int getLastChar() {
+        return lastChar;
+    }
+
+    public int getWidth(int i,int size) {
+        return size * width[i];
+    }
+
+    public int[] getWidths() {
+        int[] arr = new int[getLastChar() - getFirstChar() + 1];
+        System.arraycopy(width, getFirstChar(), arr, 0, getLastChar() - getFirstChar() + 1);
+        return arr;
+    }
+
+<xsl:choose>
+  <xsl:when test="count(kerning) &gt; 0">
+    public boolean hasKerningInfo() {
+        return enableKerning;
+    }
+
+    public java.util.Map getKerningInfo() {
+        return kerning;
+    }
+  </xsl:when>
+  <xsl:otherwise>
+    public boolean hasKerningInfo() {
+        return false;
+    }
+
+    public java.util.Map getKerningInfo() {
+        return java.util.Collections.EMPTY_MAP;
+    }
+  </xsl:otherwise>
+</xsl:choose>
+
+    public char mapChar(char c) {
+        char d = mapping.mapChar(c);
+        if(d != 0) {
+            return d;
+        } else {
+            return '#';
+        }
+    }
+
+    public boolean hasChar(char c) {
+        return (mapping.mapChar(c) > 0);
+    }
+
+}
+  </xsl:template>
+
+  <xsl:template match="widths/char"><xsl:variable name="char-name" select="@name"/><xsl:variable name="char-num" select="$glyphs[@name = $char-name]/@codepoint"/><xsl:if test="$char-num!=''">        width[0x<xsl:value-of select="$char-num"/>] = <xsl:value-of select="@width"/>;</xsl:if></xsl:template>
+  
+  <xsl:template match="kerning">
+        first = new Integer(<xsl:value-of select="@kpx1"/>);
+        pairs = (Map)kerning.get(first);
+        if (pairs == null) {
+            pairs = new java.util.HashMap();
+            kerning.put(first, pairs);
+        }
+        <xsl:apply-templates select="pair"/>
+  </xsl:template>
+  
+  <xsl:template match="pair">
+        second = new Integer(<xsl:value-of select="@kpx2"/>);
+        pairs.put(second, new Integer(<xsl:value-of select="@kern"/>));
+  </xsl:template>
+</xsl:stylesheet>
+
diff --git a/src/codegen/fonts/glyphlist.xml b/src/codegen/fonts/glyphlist.xml
new file mode 100644 (file)
index 0000000..aeb56e2
--- /dev/null
@@ -0,0 +1,1293 @@
+<?xml version='1.0'?>
+<!--
+  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$ -->
+<!DOCTYPE glyphlist-set [
+  <!ELEMENT glyphlist-set (glyphlist+)>
+  <!ELEMENT glyphlist (glyph+)>
+  <!ATTLIST glyphlist id ID #REQUIRED>
+  <!ELEMENT glyph EMPTY>
+  <!ATTLIST glyph codepoint CDATA #REQUIRED name CDATA #REQUIRED>
+]>
+<glyphlist-set>
+
+  <!-- This encodes the Adobe Glyph List, version 1.2 (22 Oct 1998),
+       located at http://partners.adobe.com/asn/developer/type/glyphlist.txt
+  -->
+  <glyphlist id='AGL'>
+    <glyph codepoint='0041' name='A'/>
+    <glyph codepoint='00C6' name='AE'/>
+    <glyph codepoint='01FC' name='AEacute'/>
+    <glyph codepoint='F7E6' name='AEsmall'/>
+    <glyph codepoint='00C1' name='Aacute'/>
+    <glyph codepoint='F7E1' name='Aacutesmall'/>
+    <glyph codepoint='0102' name='Abreve'/>
+    <glyph codepoint='00C2' name='Acircumflex'/>
+    <glyph codepoint='F7E2' name='Acircumflexsmall'/>
+    <glyph codepoint='F6C9' name='Acute'/>
+    <glyph codepoint='F7B4' name='Acutesmall'/>
+    <glyph codepoint='00C4' name='Adieresis'/>
+    <glyph codepoint='F7E4' name='Adieresissmall'/>
+    <glyph codepoint='00C0' name='Agrave'/>
+    <glyph codepoint='F7E0' name='Agravesmall'/>
+    <glyph codepoint='0391' name='Alpha'/>
+    <glyph codepoint='0386' name='Alphatonos'/>
+    <glyph codepoint='0100' name='Amacron'/>
+    <glyph codepoint='0104' name='Aogonek'/>
+    <glyph codepoint='00C5' name='Aring'/>
+    <glyph codepoint='01FA' name='Aringacute'/>
+    <glyph codepoint='F7E5' name='Aringsmall'/>
+    <glyph codepoint='F761' name='Asmall'/>
+    <glyph codepoint='00C3' name='Atilde'/>
+    <glyph codepoint='F7E3' name='Atildesmall'/>
+    <glyph codepoint='0042' name='B'/>
+    <glyph codepoint='0392' name='Beta'/>
+    <glyph codepoint='F6F4' name='Brevesmall'/>
+    <glyph codepoint='F762' name='Bsmall'/>
+    <glyph codepoint='0043' name='C'/>
+    <glyph codepoint='0106' name='Cacute'/>
+    <glyph codepoint='F6CA' name='Caron'/>
+    <glyph codepoint='F6F5' name='Caronsmall'/>
+    <glyph codepoint='010C' name='Ccaron'/>
+    <glyph codepoint='00C7' name='Ccedilla'/>
+    <glyph codepoint='F7E7' name='Ccedillasmall'/>
+    <glyph codepoint='0108' name='Ccircumflex'/>
+    <glyph codepoint='010A' name='Cdotaccent'/>
+    <glyph codepoint='F7B8' name='Cedillasmall'/>
+    <glyph codepoint='03A7' name='Chi'/>
+    <glyph codepoint='F6F6' name='Circumflexsmall'/>
+    <glyph codepoint='F763' name='Csmall'/>
+    <glyph codepoint='0044' name='D'/>
+    <glyph codepoint='010E' name='Dcaron'/>
+    <glyph codepoint='0110' name='Dcroat'/>
+    <glyph codepoint='2206' name='Delta'/>
+    <glyph codepoint='0394' name='Delta'/>
+    <glyph codepoint='F6CB' name='Dieresis'/>
+    <glyph codepoint='F6CC' name='DieresisAcute'/>
+    <glyph codepoint='F6CD' name='DieresisGrave'/>
+    <glyph codepoint='F7A8' name='Dieresissmall'/>
+    <glyph codepoint='F6F7' name='Dotaccentsmall'/>
+    <glyph codepoint='F764' name='Dsmall'/>
+    <glyph codepoint='0045' name='E'/>
+    <glyph codepoint='00C9' name='Eacute'/>
+    <glyph codepoint='F7E9' name='Eacutesmall'/>
+    <glyph codepoint='0114' name='Ebreve'/>
+    <glyph codepoint='011A' name='Ecaron'/>
+    <glyph codepoint='00CA' name='Ecircumflex'/>
+    <glyph codepoint='F7EA' name='Ecircumflexsmall'/>
+    <glyph codepoint='00CB' name='Edieresis'/>
+    <glyph codepoint='F7EB' name='Edieresissmall'/>
+    <glyph codepoint='0116' name='Edotaccent'/>
+    <glyph codepoint='00C8' name='Egrave'/>
+    <glyph codepoint='F7E8' name='Egravesmall'/>
+    <glyph codepoint='0112' name='Emacron'/>
+    <glyph codepoint='014A' name='Eng'/>
+    <glyph codepoint='0118' name='Eogonek'/>
+    <glyph codepoint='0395' name='Epsilon'/>
+    <glyph codepoint='0388' name='Epsilontonos'/>
+    <glyph codepoint='F765' name='Esmall'/>
+    <glyph codepoint='0397' name='Eta'/>
+    <glyph codepoint='0389' name='Etatonos'/>
+    <glyph codepoint='00D0' name='Eth'/>
+    <glyph codepoint='F7F0' name='Ethsmall'/>
+    <glyph codepoint='20AC' name='Euro'/>
+    <glyph codepoint='0046' name='F'/>
+    <glyph codepoint='F766' name='Fsmall'/>
+    <glyph codepoint='0047' name='G'/>
+    <glyph codepoint='0393' name='Gamma'/>
+    <glyph codepoint='011E' name='Gbreve'/>
+    <glyph codepoint='01E6' name='Gcaron'/>
+    <glyph codepoint='011C' name='Gcircumflex'/>
+    <glyph codepoint='0122' name='Gcommaaccent'/>
+    <glyph codepoint='0120' name='Gdotaccent'/>
+    <glyph codepoint='F6CE' name='Grave'/>
+    <glyph codepoint='F760' name='Gravesmall'/>
+    <glyph codepoint='F767' name='Gsmall'/>
+    <glyph codepoint='0048' name='H'/>
+    <glyph codepoint='25CF' name='H18533'/>
+    <glyph codepoint='25AA' name='H18543'/>
+    <glyph codepoint='25AB' name='H18551'/>
+    <glyph codepoint='25A1' name='H22073'/>
+    <glyph codepoint='0126' name='Hbar'/>
+    <glyph codepoint='0124' name='Hcircumflex'/>
+    <glyph codepoint='F768' name='Hsmall'/>
+    <glyph codepoint='F6CF' name='Hungarumlaut'/>
+    <glyph codepoint='F6F8' name='Hungarumlautsmall'/>
+    <glyph codepoint='0049' name='I'/>
+    <glyph codepoint='0132' name='IJ'/>
+    <glyph codepoint='00CD' name='Iacute'/>
+    <glyph codepoint='F7ED' name='Iacutesmall'/>
+    <glyph codepoint='012C' name='Ibreve'/>
+    <glyph codepoint='00CE' name='Icircumflex'/>
+    <glyph codepoint='F7EE' name='Icircumflexsmall'/>
+    <glyph codepoint='00CF' name='Idieresis'/>
+    <glyph codepoint='F7EF' name='Idieresissmall'/>
+    <glyph codepoint='0130' name='Idotaccent'/>
+    <glyph codepoint='2111' name='Ifraktur'/>
+    <glyph codepoint='00CC' name='Igrave'/>
+    <glyph codepoint='F7EC' name='Igravesmall'/>
+    <glyph codepoint='012A' name='Imacron'/>
+    <glyph codepoint='012E' name='Iogonek'/>
+    <glyph codepoint='0399' name='Iota'/>
+    <glyph codepoint='03AA' name='Iotadieresis'/>
+    <glyph codepoint='038A' name='Iotatonos'/>
+    <glyph codepoint='F769' name='Ismall'/>
+    <glyph codepoint='0128' name='Itilde'/>
+    <glyph codepoint='004A' name='J'/>
+    <glyph codepoint='0134' name='Jcircumflex'/>
+    <glyph codepoint='F76A' name='Jsmall'/>
+    <glyph codepoint='004B' name='K'/>
+    <glyph codepoint='039A' name='Kappa'/>
+    <glyph codepoint='0136' name='Kcommaaccent'/>
+    <glyph codepoint='F76B' name='Ksmall'/>
+    <glyph codepoint='004C' name='L'/>
+    <glyph codepoint='F6BF' name='LL'/>
+    <glyph codepoint='0139' name='Lacute'/>
+    <glyph codepoint='039B' name='Lambda'/>
+    <glyph codepoint='013D' name='Lcaron'/>
+    <glyph codepoint='013B' name='Lcommaaccent'/>
+    <glyph codepoint='013F' name='Ldot'/>
+    <glyph codepoint='0141' name='Lslash'/>
+    <glyph codepoint='F6F9' name='Lslashsmall'/>
+    <glyph codepoint='F76C' name='Lsmall'/>
+    <glyph codepoint='004D' name='M'/>
+    <glyph codepoint='F6D0' name='Macron'/>
+    <glyph codepoint='F7AF' name='Macronsmall'/>
+    <glyph codepoint='F76D' name='Msmall'/>
+    <glyph codepoint='039C' name='Mu'/>
+    <glyph codepoint='004E' name='N'/>
+    <glyph codepoint='0143' name='Nacute'/>
+    <glyph codepoint='0147' name='Ncaron'/>
+    <glyph codepoint='0145' name='Ncommaaccent'/>
+    <glyph codepoint='F76E' name='Nsmall'/>
+    <glyph codepoint='00D1' name='Ntilde'/>
+    <glyph codepoint='F7F1' name='Ntildesmall'/>
+    <glyph codepoint='039D' name='Nu'/>
+    <glyph codepoint='004F' name='O'/>
+    <glyph codepoint='0152' name='OE'/>
+    <glyph codepoint='F6FA' name='OEsmall'/>
+    <glyph codepoint='00D3' name='Oacute'/>
+    <glyph codepoint='F7F3' name='Oacutesmall'/>
+    <glyph codepoint='014E' name='Obreve'/>
+    <glyph codepoint='00D4' name='Ocircumflex'/>
+    <glyph codepoint='F7F4' name='Ocircumflexsmall'/>
+    <glyph codepoint='00D6' name='Odieresis'/>
+    <glyph codepoint='F7F6' name='Odieresissmall'/>
+    <glyph codepoint='F6FB' name='Ogoneksmall'/>
+    <glyph codepoint='00D2' name='Ograve'/>
+    <glyph codepoint='F7F2' name='Ogravesmall'/>
+    <glyph codepoint='01A0' name='Ohorn'/>
+    <glyph codepoint='0150' name='Ohungarumlaut'/>
+    <glyph codepoint='014C' name='Omacron'/>
+    <glyph codepoint='2126' name='Omega'/>
+    <glyph codepoint='03A9' name='Omega'/>
+    <glyph codepoint='038F' name='Omegatonos'/>
+    <glyph codepoint='039F' name='Omicron'/>
+    <glyph codepoint='038C' name='Omicrontonos'/>
+    <glyph codepoint='00D8' name='Oslash'/>
+    <glyph codepoint='01FE' name='Oslashacute'/>
+    <glyph codepoint='F7F8' name='Oslashsmall'/>
+    <glyph codepoint='F76F' name='Osmall'/>
+    <glyph codepoint='00D5' name='Otilde'/>
+    <glyph codepoint='F7F5' name='Otildesmall'/>
+    <glyph codepoint='0050' name='P'/>
+    <glyph codepoint='03A6' name='Phi'/>
+    <glyph codepoint='03A0' name='Pi'/>
+    <glyph codepoint='03A8' name='Psi'/>
+    <glyph codepoint='F770' name='Psmall'/>
+    <glyph codepoint='0051' name='Q'/>
+    <glyph codepoint='F771' name='Qsmall'/>
+    <glyph codepoint='0052' name='R'/>
+    <glyph codepoint='0154' name='Racute'/>
+    <glyph codepoint='0158' name='Rcaron'/>
+    <glyph codepoint='0156' name='Rcommaaccent'/>
+    <glyph codepoint='211C' name='Rfraktur'/>
+    <glyph codepoint='03A1' name='Rho'/>
+    <glyph codepoint='F6FC' name='Ringsmall'/>
+    <glyph codepoint='F772' name='Rsmall'/>
+    <glyph codepoint='0053' name='S'/>
+    <glyph codepoint='250C' name='SF010000'/>
+    <glyph codepoint='2514' name='SF020000'/>
+    <glyph codepoint='2510' name='SF030000'/>
+    <glyph codepoint='2518' name='SF040000'/>
+    <glyph codepoint='253C' name='SF050000'/>
+    <glyph codepoint='252C' name='SF060000'/>
+    <glyph codepoint='2534' name='SF070000'/>
+    <glyph codepoint='251C' name='SF080000'/>
+    <glyph codepoint='2524' name='SF090000'/>
+    <glyph codepoint='2500' name='SF100000'/>
+    <glyph codepoint='2502' name='SF110000'/>
+    <glyph codepoint='2561' name='SF190000'/>
+    <glyph codepoint='2562' name='SF200000'/>
+    <glyph codepoint='2556' name='SF210000'/>
+    <glyph codepoint='2555' name='SF220000'/>
+    <glyph codepoint='2563' name='SF230000'/>
+    <glyph codepoint='2551' name='SF240000'/>
+    <glyph codepoint='2557' name='SF250000'/>
+    <glyph codepoint='255D' name='SF260000'/>
+    <glyph codepoint='255C' name='SF270000'/>
+    <glyph codepoint='255B' name='SF280000'/>
+    <glyph codepoint='255E' name='SF360000'/>
+    <glyph codepoint='255F' name='SF370000'/>
+    <glyph codepoint='255A' name='SF380000'/>
+    <glyph codepoint='2554' name='SF390000'/>
+    <glyph codepoint='2569' name='SF400000'/>
+    <glyph codepoint='2566' name='SF410000'/>
+    <glyph codepoint='2560' name='SF420000'/>
+    <glyph codepoint='2550' name='SF430000'/>
+    <glyph codepoint='256C' name='SF440000'/>
+    <glyph codepoint='2567' name='SF450000'/>
+    <glyph codepoint='2568' name='SF460000'/>
+    <glyph codepoint='2564' name='SF470000'/>
+    <glyph codepoint='2565' name='SF480000'/>
+    <glyph codepoint='2559' name='SF490000'/>
+    <glyph codepoint='2558' name='SF500000'/>
+    <glyph codepoint='2552' name='SF510000'/>
+    <glyph codepoint='2553' name='SF520000'/>
+    <glyph codepoint='256B' name='SF530000'/>
+    <glyph codepoint='256A' name='SF540000'/>
+    <glyph codepoint='015A' name='Sacute'/>
+    <glyph codepoint='0160' name='Scaron'/>
+    <glyph codepoint='F6FD' name='Scaronsmall'/>
+    <glyph codepoint='015E' name='Scedilla'/>
+    <glyph codepoint='F6C1' name='Scedilla'/>
+    <glyph codepoint='015C' name='Scircumflex'/>
+    <glyph codepoint='0218' name='Scommaaccent'/>
+    <glyph codepoint='03A3' name='Sigma'/>
+    <glyph codepoint='F773' name='Ssmall'/>
+    <glyph codepoint='0054' name='T'/>
+    <glyph codepoint='03A4' name='Tau'/>
+    <glyph codepoint='0166' name='Tbar'/>
+    <glyph codepoint='0164' name='Tcaron'/>
+    <glyph codepoint='0162' name='Tcommaaccent'/>
+    <glyph codepoint='021A' name='Tcommaaccent'/>
+    <glyph codepoint='0398' name='Theta'/>
+    <glyph codepoint='00DE' name='Thorn'/>
+    <glyph codepoint='F7FE' name='Thornsmall'/>
+    <glyph codepoint='F6FE' name='Tildesmall'/>
+    <glyph codepoint='F774' name='Tsmall'/>
+    <glyph codepoint='0055' name='U'/>
+    <glyph codepoint='00DA' name='Uacute'/>
+    <glyph codepoint='F7FA' name='Uacutesmall'/>
+    <glyph codepoint='016C' name='Ubreve'/>
+    <glyph codepoint='00DB' name='Ucircumflex'/>
+    <glyph codepoint='F7FB' name='Ucircumflexsmall'/>
+    <glyph codepoint='00DC' name='Udieresis'/>
+    <glyph codepoint='F7FC' name='Udieresissmall'/>
+    <glyph codepoint='00D9' name='Ugrave'/>
+    <glyph codepoint='F7F9' name='Ugravesmall'/>
+    <glyph codepoint='01AF' name='Uhorn'/>
+    <glyph codepoint='0170' name='Uhungarumlaut'/>
+    <glyph codepoint='016A' name='Umacron'/>
+    <glyph codepoint='0172' name='Uogonek'/>
+    <glyph codepoint='03A5' name='Upsilon'/>
+    <glyph codepoint='03D2' name='Upsilon1'/>
+    <glyph codepoint='03AB' name='Upsilondieresis'/>
+    <glyph codepoint='038E' name='Upsilontonos'/>
+    <glyph codepoint='016E' name='Uring'/>
+    <glyph codepoint='F775' name='Usmall'/>
+    <glyph codepoint='0168' name='Utilde'/>
+    <glyph codepoint='0056' name='V'/>
+    <glyph codepoint='F776' name='Vsmall'/>
+    <glyph codepoint='0057' name='W'/>
+    <glyph codepoint='1E82' name='Wacute'/>
+    <glyph codepoint='0174' name='Wcircumflex'/>
+    <glyph codepoint='1E84' name='Wdieresis'/>
+    <glyph codepoint='1E80' name='Wgrave'/>
+    <glyph codepoint='F777' name='Wsmall'/>
+    <glyph codepoint='0058' name='X'/>
+    <glyph codepoint='039E' name='Xi'/>
+    <glyph codepoint='F778' name='Xsmall'/>
+    <glyph codepoint='0059' name='Y'/>
+    <glyph codepoint='00DD' name='Yacute'/>
+    <glyph codepoint='F7FD' name='Yacutesmall'/>
+    <glyph codepoint='0176' name='Ycircumflex'/>
+    <glyph codepoint='0178' name='Ydieresis'/>
+    <glyph codepoint='F7FF' name='Ydieresissmall'/>
+    <glyph codepoint='1EF2' name='Ygrave'/>
+    <glyph codepoint='F779' name='Ysmall'/>
+    <glyph codepoint='005A' name='Z'/>
+    <glyph codepoint='0179' name='Zacute'/>
+    <glyph codepoint='017D' name='Zcaron'/>
+    <glyph codepoint='F6FF' name='Zcaronsmall'/>
+    <glyph codepoint='017B' name='Zdotaccent'/>
+    <glyph codepoint='0396' name='Zeta'/>
+    <glyph codepoint='F77A' name='Zsmall'/>
+    <glyph codepoint='0061' name='a'/>
+    <glyph codepoint='00E1' name='aacute'/>
+    <glyph codepoint='0103' name='abreve'/>
+    <glyph codepoint='00E2' name='acircumflex'/>
+    <glyph codepoint='00B4' name='acute'/>
+    <glyph codepoint='0301' name='acutecomb'/>
+    <glyph codepoint='00E4' name='adieresis'/>
+    <glyph codepoint='00E6' name='ae'/>
+    <glyph codepoint='01FD' name='aeacute'/>
+    <glyph codepoint='2015' name='afii00208'/>
+    <glyph codepoint='0410' name='afii10017'/>
+    <glyph codepoint='0411' name='afii10018'/>
+    <glyph codepoint='0412' name='afii10019'/>
+    <glyph codepoint='0413' name='afii10020'/>
+    <glyph codepoint='0414' name='afii10021'/>
+    <glyph codepoint='0415' name='afii10022'/>
+    <glyph codepoint='0401' name='afii10023'/>
+    <glyph codepoint='0416' name='afii10024'/>
+    <glyph codepoint='0417' name='afii10025'/>
+    <glyph codepoint='0418' name='afii10026'/>
+    <glyph codepoint='0419' name='afii10027'/>
+    <glyph codepoint='041A' name='afii10028'/>
+    <glyph codepoint='041B' name='afii10029'/>
+    <glyph codepoint='041C' name='afii10030'/>
+    <glyph codepoint='041D' name='afii10031'/>
+    <glyph codepoint='041E' name='afii10032'/>
+    <glyph codepoint='041F' name='afii10033'/>
+    <glyph codepoint='0420' name='afii10034'/>
+    <glyph codepoint='0421' name='afii10035'/>
+    <glyph codepoint='0422' name='afii10036'/>
+    <glyph codepoint='0423' name='afii10037'/>
+    <glyph codepoint='0424' name='afii10038'/>
+    <glyph codepoint='0425' name='afii10039'/>
+    <glyph codepoint='0426' name='afii10040'/>
+    <glyph codepoint='0427' name='afii10041'/>
+    <glyph codepoint='0428' name='afii10042'/>
+    <glyph codepoint='0429' name='afii10043'/>
+    <glyph codepoint='042A' name='afii10044'/>
+    <glyph codepoint='042B' name='afii10045'/>
+    <glyph codepoint='042C' name='afii10046'/>
+    <glyph codepoint='042D' name='afii10047'/>
+    <glyph codepoint='042E' name='afii10048'/>
+    <glyph codepoint='042F' name='afii10049'/>
+    <glyph codepoint='0490' name='afii10050'/>
+    <glyph codepoint='0402' name='afii10051'/>
+    <glyph codepoint='0403' name='afii10052'/>
+    <glyph codepoint='0404' name='afii10053'/>
+    <glyph codepoint='0405' name='afii10054'/>
+    <glyph codepoint='0406' name='afii10055'/>
+    <glyph codepoint='0407' name='afii10056'/>
+    <glyph codepoint='0408' name='afii10057'/>
+    <glyph codepoint='0409' name='afii10058'/>
+    <glyph codepoint='040A' name='afii10059'/>
+    <glyph codepoint='040B' name='afii10060'/>
+    <glyph codepoint='040C' name='afii10061'/>
+    <glyph codepoint='040E' name='afii10062'/>
+    <glyph codepoint='F6C4' name='afii10063'/>
+    <glyph codepoint='F6C5' name='afii10064'/>
+    <glyph codepoint='0430' name='afii10065'/>
+    <glyph codepoint='0431' name='afii10066'/>
+    <glyph codepoint='0432' name='afii10067'/>
+    <glyph codepoint='0433' name='afii10068'/>
+    <glyph codepoint='0434' name='afii10069'/>
+    <glyph codepoint='0435' name='afii10070'/>
+    <glyph codepoint='0451' name='afii10071'/>
+    <glyph codepoint='0436' name='afii10072'/>
+    <glyph codepoint='0437' name='afii10073'/>
+    <glyph codepoint='0438' name='afii10074'/>
+    <glyph codepoint='0439' name='afii10075'/>
+    <glyph codepoint='043A' name='afii10076'/>
+    <glyph codepoint='043B' name='afii10077'/>
+    <glyph codepoint='043C' name='afii10078'/>
+    <glyph codepoint='043D' name='afii10079'/>
+    <glyph codepoint='043E' name='afii10080'/>
+    <glyph codepoint='043F' name='afii10081'/>
+    <glyph codepoint='0440' name='afii10082'/>
+    <glyph codepoint='0441' name='afii10083'/>
+    <glyph codepoint='0442' name='afii10084'/>
+    <glyph codepoint='0443' name='afii10085'/>
+    <glyph codepoint='0444' name='afii10086'/>
+    <glyph codepoint='0445' name='afii10087'/>
+    <glyph codepoint='0446' name='afii10088'/>
+    <glyph codepoint='0447' name='afii10089'/>
+    <glyph codepoint='0448' name='afii10090'/>
+    <glyph codepoint='0449' name='afii10091'/>
+    <glyph codepoint='044A' name='afii10092'/>
+    <glyph codepoint='044B' name='afii10093'/>
+    <glyph codepoint='044C' name='afii10094'/>
+    <glyph codepoint='044D' name='afii10095'/>
+    <glyph codepoint='044E' name='afii10096'/>
+    <glyph codepoint='044F' name='afii10097'/>
+    <glyph codepoint='0491' name='afii10098'/>
+    <glyph codepoint='0452' name='afii10099'/>
+    <glyph codepoint='0453' name='afii10100'/>
+    <glyph codepoint='0454' name='afii10101'/>
+    <glyph codepoint='0455' name='afii10102'/>
+    <glyph codepoint='0456' name='afii10103'/>
+    <glyph codepoint='0457' name='afii10104'/>
+    <glyph codepoint='0458' name='afii10105'/>
+    <glyph codepoint='0459' name='afii10106'/>
+    <glyph codepoint='045A' name='afii10107'/>
+    <glyph codepoint='045B' name='afii10108'/>
+    <glyph codepoint='045C' name='afii10109'/>
+    <glyph codepoint='045E' name='afii10110'/>
+    <glyph codepoint='040F' name='afii10145'/>
+    <glyph codepoint='0462' name='afii10146'/>
+    <glyph codepoint='0472' name='afii10147'/>
+    <glyph codepoint='0474' name='afii10148'/>
+    <glyph codepoint='F6C6' name='afii10192'/>
+    <glyph codepoint='045F' name='afii10193'/>
+    <glyph codepoint='0463' name='afii10194'/>
+    <glyph codepoint='0473' name='afii10195'/>
+    <glyph codepoint='0475' name='afii10196'/>
+    <glyph codepoint='F6C7' name='afii10831'/>
+    <glyph codepoint='F6C8' name='afii10832'/>
+    <glyph codepoint='04D9' name='afii10846'/>
+    <glyph codepoint='200E' name='afii299'/>
+    <glyph codepoint='200F' name='afii300'/>
+    <glyph codepoint='200D' name='afii301'/>
+    <glyph codepoint='066A' name='afii57381'/>
+    <glyph codepoint='060C' name='afii57388'/>
+    <glyph codepoint='0660' name='afii57392'/>
+    <glyph codepoint='0661' name='afii57393'/>
+    <glyph codepoint='0662' name='afii57394'/>
+    <glyph codepoint='0663' name='afii57395'/>
+    <glyph codepoint='0664' name='afii57396'/>
+    <glyph codepoint='0665' name='afii57397'/>
+    <glyph codepoint='0666' name='afii57398'/>
+    <glyph codepoint='0667' name='afii57399'/>
+    <glyph codepoint='0668' name='afii57400'/>
+    <glyph codepoint='0669' name='afii57401'/>
+    <glyph codepoint='061B' name='afii57403'/>
+    <glyph codepoint='061F' name='afii57407'/>
+    <glyph codepoint='0621' name='afii57409'/>
+    <glyph codepoint='0622' name='afii57410'/>
+    <glyph codepoint='0623' name='afii57411'/>
+    <glyph codepoint='0624' name='afii57412'/>
+    <glyph codepoint='0625' name='afii57413'/>
+    <glyph codepoint='0626' name='afii57414'/>
+    <glyph codepoint='0627' name='afii57415'/>
+    <glyph codepoint='0628' name='afii57416'/>
+    <glyph codepoint='0629' name='afii57417'/>
+    <glyph codepoint='062A' name='afii57418'/>
+    <glyph codepoint='062B' name='afii57419'/>
+    <glyph codepoint='062C' name='afii57420'/>
+    <glyph codepoint='062D' name='afii57421'/>
+    <glyph codepoint='062E' name='afii57422'/>
+    <glyph codepoint='062F' name='afii57423'/>
+    <glyph codepoint='0630' name='afii57424'/>
+    <glyph codepoint='0631' name='afii57425'/>
+    <glyph codepoint='0632' name='afii57426'/>
+    <glyph codepoint='0633' name='afii57427'/>
+    <glyph codepoint='0634' name='afii57428'/>
+    <glyph codepoint='0635' name='afii57429'/>
+    <glyph codepoint='0636' name='afii57430'/>
+    <glyph codepoint='0637' name='afii57431'/>
+    <glyph codepoint='0638' name='afii57432'/>
+    <glyph codepoint='0639' name='afii57433'/>
+    <glyph codepoint='063A' name='afii57434'/>
+    <glyph codepoint='0640' name='afii57440'/>
+    <glyph codepoint='0641' name='afii57441'/>
+    <glyph codepoint='0642' name='afii57442'/>
+    <glyph codepoint='0643' name='afii57443'/>
+    <glyph codepoint='0644' name='afii57444'/>
+    <glyph codepoint='0645' name='afii57445'/>
+    <glyph codepoint='0646' name='afii57446'/>
+    <glyph codepoint='0648' name='afii57448'/>
+    <glyph codepoint='0649' name='afii57449'/>
+    <glyph codepoint='064A' name='afii57450'/>
+    <glyph codepoint='064B' name='afii57451'/>
+    <glyph codepoint='064C' name='afii57452'/>
+    <glyph codepoint='064D' name='afii57453'/>
+    <glyph codepoint='064E' name='afii57454'/>
+    <glyph codepoint='064F' name='afii57455'/>
+    <glyph codepoint='0650' name='afii57456'/>
+    <glyph codepoint='0651' name='afii57457'/>
+    <glyph codepoint='0652' name='afii57458'/>
+    <glyph codepoint='0647' name='afii57470'/>
+    <glyph codepoint='06A4' name='afii57505'/>
+    <glyph codepoint='067E' name='afii57506'/>
+    <glyph codepoint='0686' name='afii57507'/>
+    <glyph codepoint='0698' name='afii57508'/>
+    <glyph codepoint='06AF' name='afii57509'/>
+    <glyph codepoint='0679' name='afii57511'/>
+    <glyph codepoint='0688' name='afii57512'/>
+    <glyph codepoint='0691' name='afii57513'/>
+    <glyph codepoint='06BA' name='afii57514'/>
+    <glyph codepoint='06D2' name='afii57519'/>
+    <glyph codepoint='06D5' name='afii57534'/>
+    <glyph codepoint='20AA' name='afii57636'/>
+    <glyph codepoint='05BE' name='afii57645'/>
+    <glyph codepoint='05C3' name='afii57658'/>
+    <glyph codepoint='05D0' name='afii57664'/>
+    <glyph codepoint='05D1' name='afii57665'/>
+    <glyph codepoint='05D2' name='afii57666'/>
+    <glyph codepoint='05D3' name='afii57667'/>
+    <glyph codepoint='05D4' name='afii57668'/>
+    <glyph codepoint='05D5' name='afii57669'/>
+    <glyph codepoint='05D6' name='afii57670'/>
+    <glyph codepoint='05D7' name='afii57671'/>
+    <glyph codepoint='05D8' name='afii57672'/>
+    <glyph codepoint='05D9' name='afii57673'/>
+    <glyph codepoint='05DA' name='afii57674'/>
+    <glyph codepoint='05DB' name='afii57675'/>
+    <glyph codepoint='05DC' name='afii57676'/>
+    <glyph codepoint='05DD' name='afii57677'/>
+    <glyph codepoint='05DE' name='afii57678'/>
+    <glyph codepoint='05DF' name='afii57679'/>
+    <glyph codepoint='05E0' name='afii57680'/>
+    <glyph codepoint='05E1' name='afii57681'/>
+    <glyph codepoint='05E2' name='afii57682'/>
+    <glyph codepoint='05E3' name='afii57683'/>
+    <glyph codepoint='05E4' name='afii57684'/>
+    <glyph codepoint='05E5' name='afii57685'/>
+    <glyph codepoint='05E6' name='afii57686'/>
+    <glyph codepoint='05E7' name='afii57687'/>
+    <glyph codepoint='05E8' name='afii57688'/>
+    <glyph codepoint='05E9' name='afii57689'/>
+    <glyph codepoint='05EA' name='afii57690'/>
+    <glyph codepoint='FB2A' name='afii57694'/>
+    <glyph codepoint='FB2B' name='afii57695'/>
+    <glyph codepoint='FB4B' name='afii57700'/>
+    <glyph codepoint='FB1F' name='afii57705'/>
+    <glyph codepoint='05F0' name='afii57716'/>
+    <glyph codepoint='05F1' name='afii57717'/>
+    <glyph codepoint='05F2' name='afii57718'/>
+    <glyph codepoint='FB35' name='afii57723'/>
+    <glyph codepoint='05B4' name='afii57793'/>
+    <glyph codepoint='05B5' name='afii57794'/>
+    <glyph codepoint='05B6' name='afii57795'/>
+    <glyph codepoint='05BB' name='afii57796'/>
+    <glyph codepoint='05B8' name='afii57797'/>
+    <glyph codepoint='05B7' name='afii57798'/>
+    <glyph codepoint='05B0' name='afii57799'/>
+    <glyph codepoint='05B2' name='afii57800'/>
+    <glyph codepoint='05B1' name='afii57801'/>
+    <glyph codepoint='05B3' name='afii57802'/>
+    <glyph codepoint='05C2' name='afii57803'/>
+    <glyph codepoint='05C1' name='afii57804'/>
+    <glyph codepoint='05B9' name='afii57806'/>
+    <glyph codepoint='05BC' name='afii57807'/>
+    <glyph codepoint='05BD' name='afii57839'/>
+    <glyph codepoint='05BF' name='afii57841'/>
+    <glyph codepoint='05C0' name='afii57842'/>
+    <glyph codepoint='02BC' name='afii57929'/>
+    <glyph codepoint='2105' name='afii61248'/>
+    <glyph codepoint='2113' name='afii61289'/>
+    <glyph codepoint='2116' name='afii61352'/>
+    <glyph codepoint='202C' name='afii61573'/>
+    <glyph codepoint='202D' name='afii61574'/>
+    <glyph codepoint='202E' name='afii61575'/>
+    <glyph codepoint='200C' name='afii61664'/>
+    <glyph codepoint='066D' name='afii63167'/>
+    <glyph codepoint='02BD' name='afii64937'/>
+    <glyph codepoint='00E0' name='agrave'/>
+    <glyph codepoint='2135' name='aleph'/>
+    <glyph codepoint='03B1' name='alpha'/>
+    <glyph codepoint='03AC' name='alphatonos'/>
+    <glyph codepoint='0101' name='amacron'/>
+    <glyph codepoint='0026' name='ampersand'/>
+    <glyph codepoint='F726' name='ampersandsmall'/>
+    <glyph codepoint='2220' name='angle'/>
+    <glyph codepoint='2329' name='angleleft'/>
+    <glyph codepoint='232A' name='angleright'/>
+    <glyph codepoint='0387' name='anoteleia'/>
+    <glyph codepoint='0105' name='aogonek'/>
+    <glyph codepoint='2248' name='approxequal'/>
+    <glyph codepoint='00E5' name='aring'/>
+    <glyph codepoint='01FB' name='aringacute'/>
+    <glyph codepoint='2194' name='arrowboth'/>
+    <glyph codepoint='21D4' name='arrowdblboth'/>
+    <glyph codepoint='21D3' name='arrowdbldown'/>
+    <glyph codepoint='21D0' name='arrowdblleft'/>
+    <glyph codepoint='21D2' name='arrowdblright'/>
+    <glyph codepoint='21D1' name='arrowdblup'/>
+    <glyph codepoint='2193' name='arrowdown'/>
+    <glyph codepoint='F8E7' name='arrowhorizex'/>
+    <glyph codepoint='2190' name='arrowleft'/>
+    <glyph codepoint='2192' name='arrowright'/>
+    <glyph codepoint='2191' name='arrowup'/>
+    <glyph codepoint='2195' name='arrowupdn'/>
+    <glyph codepoint='21A8' name='arrowupdnbse'/>
+    <glyph codepoint='F8E6' name='arrowvertex'/>
+    <glyph codepoint='005E' name='asciicircum'/>
+    <glyph codepoint='007E' name='asciitilde'/>
+    <glyph codepoint='002A' name='asterisk'/>
+    <glyph codepoint='2217' name='asteriskmath'/>
+    <glyph codepoint='F6E9' name='asuperior'/>
+    <glyph codepoint='0040' name='at'/>
+    <glyph codepoint='00E3' name='atilde'/>
+    <glyph codepoint='0062' name='b'/>
+    <glyph codepoint='005C' name='backslash'/>
+    <glyph codepoint='007C' name='bar'/>
+    <glyph codepoint='03B2' name='beta'/>
+    <glyph codepoint='2588' name='block'/>
+    <glyph codepoint='F8F4' name='braceex'/>
+    <glyph codepoint='007B' name='braceleft'/>
+    <glyph codepoint='F8F3' name='braceleftbt'/>
+    <glyph codepoint='F8F2' name='braceleftmid'/>
+    <glyph codepoint='F8F1' name='bracelefttp'/>
+    <glyph codepoint='007D' name='braceright'/>
+    <glyph codepoint='F8FE' name='bracerightbt'/>
+    <glyph codepoint='F8FD' name='bracerightmid'/>
+    <glyph codepoint='F8FC' name='bracerighttp'/>
+    <glyph codepoint='005B' name='bracketleft'/>
+    <glyph codepoint='F8F0' name='bracketleftbt'/>
+    <glyph codepoint='F8EF' name='bracketleftex'/>
+    <glyph codepoint='F8EE' name='bracketlefttp'/>
+    <glyph codepoint='005D' name='bracketright'/>
+    <glyph codepoint='F8FB' name='bracketrightbt'/>
+    <glyph codepoint='F8FA' name='bracketrightex'/>
+    <glyph codepoint='F8F9' name='bracketrighttp'/>
+    <glyph codepoint='02D8' name='breve'/>
+    <glyph codepoint='00A6' name='brokenbar'/>
+    <glyph codepoint='F6EA' name='bsuperior'/>
+    <glyph codepoint='2022' name='bullet'/>
+    <glyph codepoint='0063' name='c'/>
+    <glyph codepoint='0107' name='cacute'/>
+    <glyph codepoint='02C7' name='caron'/>
+    <glyph codepoint='21B5' name='carriagereturn'/>
+    <glyph codepoint='010D' name='ccaron'/>
+    <glyph codepoint='00E7' name='ccedilla'/>
+    <glyph codepoint='0109' name='ccircumflex'/>
+    <glyph codepoint='010B' name='cdotaccent'/>
+    <glyph codepoint='00B8' name='cedilla'/>
+    <glyph codepoint='00A2' name='cent'/>
+    <glyph codepoint='F6DF' name='centinferior'/>
+    <glyph codepoint='F7A2' name='centoldstyle'/>
+    <glyph codepoint='F6E0' name='centsuperior'/>
+    <glyph codepoint='03C7' name='chi'/>
+    <glyph codepoint='25CB' name='circle'/>
+    <glyph codepoint='2297' name='circlemultiply'/>
+    <glyph codepoint='2295' name='circleplus'/>
+    <glyph codepoint='02C6' name='circumflex'/>
+    <glyph codepoint='2663' name='club'/>
+    <glyph codepoint='003A' name='colon'/>
+    <glyph codepoint='20A1' name='colonmonetary'/>
+    <glyph codepoint='002C' name='comma'/>
+    <glyph codepoint='F6C3' name='commaaccent'/>
+    <glyph codepoint='F6E1' name='commainferior'/>
+    <glyph codepoint='F6E2' name='commasuperior'/>
+    <glyph codepoint='2245' name='congruent'/>
+    <glyph codepoint='00A9' name='copyright'/>
+    <glyph codepoint='F8E9' name='copyrightsans'/>
+    <glyph codepoint='F6D9' name='copyrightserif'/>
+    <glyph codepoint='00A4' name='currency'/>
+    <glyph codepoint='F6D1' name='cyrBreve'/>
+    <glyph codepoint='F6D2' name='cyrFlex'/>
+    <glyph codepoint='F6D4' name='cyrbreve'/>
+    <glyph codepoint='F6D5' name='cyrflex'/>
+    <glyph codepoint='0064' name='d'/>
+    <glyph codepoint='2020' name='dagger'/>
+    <glyph codepoint='2021' name='daggerdbl'/>
+    <glyph codepoint='F6D3' name='dblGrave'/>
+    <glyph codepoint='F6D6' name='dblgrave'/>
+    <glyph codepoint='010F' name='dcaron'/>
+    <glyph codepoint='0111' name='dcroat'/>
+    <glyph codepoint='00B0' name='degree'/>
+    <glyph codepoint='03B4' name='delta'/>
+    <glyph codepoint='2666' name='diamond'/>
+    <glyph codepoint='00A8' name='dieresis'/>
+    <glyph codepoint='F6D7' name='dieresisacute'/>
+    <glyph codepoint='F6D8' name='dieresisgrave'/>
+    <glyph codepoint='0385' name='dieresistonos'/>
+    <glyph codepoint='00F7' name='divide'/>
+    <glyph codepoint='2593' name='dkshade'/>
+    <glyph codepoint='2584' name='dnblock'/>
+    <glyph codepoint='0024' name='dollar'/>
+    <glyph codepoint='F6E3' name='dollarinferior'/>
+    <glyph codepoint='F724' name='dollaroldstyle'/>
+    <glyph codepoint='F6E4' name='dollarsuperior'/>
+    <glyph codepoint='20AB' name='dong'/>
+    <glyph codepoint='02D9' name='dotaccent'/>
+    <glyph codepoint='0323' name='dotbelowcomb'/>
+    <glyph codepoint='0131' name='dotlessi'/>
+    <glyph codepoint='F6BE' name='dotlessj'/>
+    <glyph codepoint='22C5' name='dotmath'/>
+    <glyph codepoint='F6EB' name='dsuperior'/>
+    <glyph codepoint='0065' name='e'/>
+    <glyph codepoint='00E9' name='eacute'/>
+    <glyph codepoint='0115' name='ebreve'/>
+    <glyph codepoint='011B' name='ecaron'/>
+    <glyph codepoint='00EA' name='ecircumflex'/>
+    <glyph codepoint='00EB' name='edieresis'/>
+    <glyph codepoint='0117' name='edotaccent'/>
+    <glyph codepoint='00E8' name='egrave'/>
+    <glyph codepoint='0038' name='eight'/>
+    <glyph codepoint='2088' name='eightinferior'/>
+    <glyph codepoint='F738' name='eightoldstyle'/>
+    <glyph codepoint='2078' name='eightsuperior'/>
+    <glyph codepoint='2208' name='element'/>
+    <glyph codepoint='2026' name='ellipsis'/>
+    <glyph codepoint='0113' name='emacron'/>
+    <glyph codepoint='2014' name='emdash'/>
+    <glyph codepoint='2205' name='emptyset'/>
+    <glyph codepoint='2013' name='endash'/>
+    <glyph codepoint='014B' name='eng'/>
+    <glyph codepoint='0119' name='eogonek'/>
+    <glyph codepoint='03B5' name='epsilon'/>
+    <glyph codepoint='03AD' name='epsilontonos'/>
+    <glyph codepoint='003D' name='equal'/>
+    <glyph codepoint='2261' name='equivalence'/>
+    <glyph codepoint='212E' name='estimated'/>
+    <glyph codepoint='F6EC' name='esuperior'/>
+    <glyph codepoint='03B7' name='eta'/>
+    <glyph codepoint='03AE' name='etatonos'/>
+    <glyph codepoint='00F0' name='eth'/>
+    <glyph codepoint='0021' name='exclam'/>
+    <glyph codepoint='203C' name='exclamdbl'/>
+    <glyph codepoint='00A1' name='exclamdown'/>
+    <glyph codepoint='F7A1' name='exclamdownsmall'/>
+    <glyph codepoint='F721' name='exclamsmall'/>
+    <glyph codepoint='2203' name='existential'/>
+    <glyph codepoint='0066' name='f'/>
+    <glyph codepoint='2640' name='female'/>
+    <glyph codepoint='FB00' name='ff'/>
+    <glyph codepoint='FB03' name='ffi'/>
+    <glyph codepoint='FB04' name='ffl'/>
+    <glyph codepoint='FB01' name='fi'/>
+    <glyph codepoint='2012' name='figuredash'/>
+    <glyph codepoint='25A0' name='filledbox'/>
+    <glyph codepoint='25AC' name='filledrect'/>
+    <glyph codepoint='0035' name='five'/>
+    <glyph codepoint='215D' name='fiveeighths'/>
+    <glyph codepoint='2085' name='fiveinferior'/>
+    <glyph codepoint='F735' name='fiveoldstyle'/>
+    <glyph codepoint='2075' name='fivesuperior'/>
+    <glyph codepoint='FB02' name='fl'/>
+    <glyph codepoint='0192' name='florin'/>
+    <glyph codepoint='0034' name='four'/>
+    <glyph codepoint='2084' name='fourinferior'/>
+    <glyph codepoint='F734' name='fouroldstyle'/>
+    <glyph codepoint='2074' name='foursuperior'/>
+    <glyph codepoint='2044' name='fraction'/>
+    <glyph codepoint='2215' name='fraction'/>
+    <glyph codepoint='20A3' name='franc'/>
+    <glyph codepoint='0067' name='g'/>
+    <glyph codepoint='03B3' name='gamma'/>
+    <glyph codepoint='011F' name='gbreve'/>
+    <glyph codepoint='01E7' name='gcaron'/>
+    <glyph codepoint='011D' name='gcircumflex'/>
+    <glyph codepoint='0123' name='gcommaaccent'/>
+    <glyph codepoint='0121' name='gdotaccent'/>
+    <glyph codepoint='00DF' name='germandbls'/>
+    <glyph codepoint='2207' name='gradient'/>
+    <glyph codepoint='0060' name='grave'/>
+    <glyph codepoint='0300' name='gravecomb'/>
+    <glyph codepoint='003E' name='greater'/>
+    <glyph codepoint='2265' name='greaterequal'/>
+    <glyph codepoint='00AB' name='guillemotleft'/>
+    <glyph codepoint='00BB' name='guillemotright'/>
+    <glyph codepoint='2039' name='guilsinglleft'/>
+    <glyph codepoint='203A' name='guilsinglright'/>
+    <glyph codepoint='0068' name='h'/>
+    <glyph codepoint='0127' name='hbar'/>
+    <glyph codepoint='0125' name='hcircumflex'/>
+    <glyph codepoint='2665' name='heart'/>
+    <glyph codepoint='0309' name='hookabovecomb'/>
+    <glyph codepoint='2302' name='house'/>
+    <glyph codepoint='02DD' name='hungarumlaut'/>
+    <glyph codepoint='002D' name='hyphen'/>
+    <glyph codepoint='00AD' name='hyphen'/>
+    <glyph codepoint='F6E5' name='hypheninferior'/>
+    <glyph codepoint='F6E6' name='hyphensuperior'/>
+    <glyph codepoint='0069' name='i'/>
+    <glyph codepoint='00ED' name='iacute'/>
+    <glyph codepoint='012D' name='ibreve'/>
+    <glyph codepoint='00EE' name='icircumflex'/>
+    <glyph codepoint='00EF' name='idieresis'/>
+    <glyph codepoint='00EC' name='igrave'/>
+    <glyph codepoint='0133' name='ij'/>
+    <glyph codepoint='012B' name='imacron'/>
+    <glyph codepoint='221E' name='infinity'/>
+    <glyph codepoint='222B' name='integral'/>
+    <glyph codepoint='2321' name='integralbt'/>
+    <glyph codepoint='F8F5' name='integralex'/>
+    <glyph codepoint='2320' name='integraltp'/>
+    <glyph codepoint='2229' name='intersection'/>
+    <glyph codepoint='25D8' name='invbullet'/>
+    <glyph codepoint='25D9' name='invcircle'/>
+    <glyph codepoint='263B' name='invsmileface'/>
+    <glyph codepoint='012F' name='iogonek'/>
+    <glyph codepoint='03B9' name='iota'/>
+    <glyph codepoint='03CA' name='iotadieresis'/>
+    <glyph codepoint='0390' name='iotadieresistonos'/>
+    <glyph codepoint='03AF' name='iotatonos'/>
+    <glyph codepoint='F6ED' name='isuperior'/>
+    <glyph codepoint='0129' name='itilde'/>
+    <glyph codepoint='006A' name='j'/>
+    <glyph codepoint='0135' name='jcircumflex'/>
+    <glyph codepoint='006B' name='k'/>
+    <glyph codepoint='03BA' name='kappa'/>
+    <glyph codepoint='0137' name='kcommaaccent'/>
+    <glyph codepoint='0138' name='kgreenlandic'/>
+    <glyph codepoint='006C' name='l'/>
+    <glyph codepoint='013A' name='lacute'/>
+    <glyph codepoint='03BB' name='lambda'/>
+    <glyph codepoint='013E' name='lcaron'/>
+    <glyph codepoint='013C' name='lcommaaccent'/>
+    <glyph codepoint='0140' name='ldot'/>
+    <glyph codepoint='003C' name='less'/>
+    <glyph codepoint='2264' name='lessequal'/>
+    <glyph codepoint='258C' name='lfblock'/>
+    <glyph codepoint='20A4' name='lira'/>
+    <glyph codepoint='F6C0' name='ll'/>
+    <glyph codepoint='2227' name='logicaland'/>
+    <glyph codepoint='00AC' name='logicalnot'/>
+    <glyph codepoint='2228' name='logicalor'/>
+    <glyph codepoint='017F' name='longs'/>
+    <glyph codepoint='25CA' name='lozenge'/>
+    <glyph codepoint='0142' name='lslash'/>
+    <glyph codepoint='F6EE' name='lsuperior'/>
+    <glyph codepoint='2591' name='ltshade'/>
+    <glyph codepoint='006D' name='m'/>
+    <glyph codepoint='00AF' name='macron'/>
+    <glyph codepoint='02C9' name='macron'/>
+    <glyph codepoint='2642' name='male'/>
+    <glyph codepoint='2212' name='minus'/>
+    <glyph codepoint='2032' name='minute'/>
+    <glyph codepoint='F6EF' name='msuperior'/>
+    <glyph codepoint='00B5' name='mu'/>
+    <glyph codepoint='03BC' name='mu'/>
+    <glyph codepoint='00D7' name='multiply'/>
+    <glyph codepoint='266A' name='musicalnote'/>
+    <glyph codepoint='266B' name='musicalnotedbl'/>
+    <glyph codepoint='006E' name='n'/>
+    <glyph codepoint='0144' name='nacute'/>
+    <glyph codepoint='0149' name='napostrophe'/>
+    <glyph codepoint='0148' name='ncaron'/>
+    <glyph codepoint='0146' name='ncommaaccent'/>
+    <glyph codepoint='0039' name='nine'/>
+    <glyph codepoint='2089' name='nineinferior'/>
+    <glyph codepoint='F739' name='nineoldstyle'/>
+    <glyph codepoint='2079' name='ninesuperior'/>
+    <glyph codepoint='2209' name='notelement'/>
+    <glyph codepoint='2260' name='notequal'/>
+    <glyph codepoint='2284' name='notsubset'/>
+    <glyph codepoint='207F' name='nsuperior'/>
+    <glyph codepoint='00F1' name='ntilde'/>
+    <glyph codepoint='03BD' name='nu'/>
+    <glyph codepoint='0023' name='numbersign'/>
+    <glyph codepoint='006F' name='o'/>
+    <glyph codepoint='00F3' name='oacute'/>
+    <glyph codepoint='014F' name='obreve'/>
+    <glyph codepoint='00F4' name='ocircumflex'/>
+    <glyph codepoint='00F6' name='odieresis'/>
+    <glyph codepoint='0153' name='oe'/>
+    <glyph codepoint='02DB' name='ogonek'/>
+    <glyph codepoint='00F2' name='ograve'/>
+    <glyph codepoint='01A1' name='ohorn'/>
+    <glyph codepoint='0151' name='ohungarumlaut'/>
+    <glyph codepoint='014D' name='omacron'/>
+    <glyph codepoint='03C9' name='omega'/>
+    <glyph codepoint='03D6' name='omega1'/>
+    <glyph codepoint='03CE' name='omegatonos'/>
+    <glyph codepoint='03BF' name='omicron'/>
+    <glyph codepoint='03CC' name='omicrontonos'/>
+    <glyph codepoint='0031' name='one'/>
+    <glyph codepoint='2024' name='onedotenleader'/>
+    <glyph codepoint='215B' name='oneeighth'/>
+    <glyph codepoint='F6DC' name='onefitted'/>
+    <glyph codepoint='00BD' name='onehalf'/>
+    <glyph codepoint='2081' name='oneinferior'/>
+    <glyph codepoint='F731' name='oneoldstyle'/>
+    <glyph codepoint='00BC' name='onequarter'/>
+    <glyph codepoint='00B9' name='onesuperior'/>
+    <glyph codepoint='2153' name='onethird'/>
+    <glyph codepoint='25E6' name='openbullet'/>
+    <glyph codepoint='00AA' name='ordfeminine'/>
+    <glyph codepoint='00BA' name='ordmasculine'/>
+    <glyph codepoint='221F' name='orthogonal'/>
+    <glyph codepoint='00F8' name='oslash'/>
+    <glyph codepoint='01FF' name='oslashacute'/>
+    <glyph codepoint='F6F0' name='osuperior'/>
+    <glyph codepoint='00F5' name='otilde'/>
+    <glyph codepoint='0070' name='p'/>
+    <glyph codepoint='00B6' name='paragraph'/>
+    <glyph codepoint='0028' name='parenleft'/>
+    <glyph codepoint='F8ED' name='parenleftbt'/>
+    <glyph codepoint='F8EC' name='parenleftex'/>
+    <glyph codepoint='208D' name='parenleftinferior'/>
+    <glyph codepoint='207D' name='parenleftsuperior'/>
+    <glyph codepoint='F8EB' name='parenlefttp'/>
+    <glyph codepoint='0029' name='parenright'/>
+    <glyph codepoint='F8F8' name='parenrightbt'/>
+    <glyph codepoint='F8F7' name='parenrightex'/>
+    <glyph codepoint='208E' name='parenrightinferior'/>
+    <glyph codepoint='207E' name='parenrightsuperior'/>
+    <glyph codepoint='F8F6' name='parenrighttp'/>
+    <glyph codepoint='2202' name='partialdiff'/>
+    <glyph codepoint='0025' name='percent'/>
+    <glyph codepoint='002E' name='period'/>
+    <glyph codepoint='00B7' name='periodcentered'/>
+    <glyph codepoint='2219' name='periodcentered'/>
+    <glyph codepoint='F6E7' name='periodinferior'/>
+    <glyph codepoint='F6E8' name='periodsuperior'/>
+    <glyph codepoint='22A5' name='perpendicular'/>
+    <glyph codepoint='2030' name='perthousand'/>
+    <glyph codepoint='20A7' name='peseta'/>
+    <glyph codepoint='03C6' name='phi'/>
+    <glyph codepoint='03D5' name='phi1'/>
+    <glyph codepoint='03C0' name='pi'/>
+    <glyph codepoint='002B' name='plus'/>
+    <glyph codepoint='00B1' name='plusminus'/>
+    <glyph codepoint='211E' name='prescription'/>
+    <glyph codepoint='220F' name='product'/>
+    <glyph codepoint='2282' name='propersubset'/>
+    <glyph codepoint='2283' name='propersuperset'/>
+    <glyph codepoint='221D' name='proportional'/>
+    <glyph codepoint='03C8' name='psi'/>
+    <glyph codepoint='0071' name='q'/>
+    <glyph codepoint='003F' name='question'/>
+    <glyph codepoint='00BF' name='questiondown'/>
+    <glyph codepoint='F7BF' name='questiondownsmall'/>
+    <glyph codepoint='F73F' name='questionsmall'/>
+    <glyph codepoint='0022' name='quotedbl'/>
+    <glyph codepoint='201E' name='quotedblbase'/>
+    <glyph codepoint='201C' name='quotedblleft'/>
+    <glyph codepoint='201D' name='quotedblright'/>
+    <glyph codepoint='2018' name='quoteleft'/>
+    <glyph codepoint='201B' name='quotereversed'/>
+    <glyph codepoint='2019' name='quoteright'/>
+    <glyph codepoint='201A' name='quotesinglbase'/>
+    <glyph codepoint='0027' name='quotesingle'/>
+    <glyph codepoint='0072' name='r'/>
+    <glyph codepoint='0155' name='racute'/>
+    <glyph codepoint='221A' name='radical'/>
+    <glyph codepoint='F8E5' name='radicalex'/>
+    <glyph codepoint='0159' name='rcaron'/>
+    <glyph codepoint='0157' name='rcommaaccent'/>
+    <glyph codepoint='2286' name='reflexsubset'/>
+    <glyph codepoint='2287' name='reflexsuperset'/>
+    <glyph codepoint='00AE' name='registered'/>
+    <glyph codepoint='F8E8' name='registersans'/>
+    <glyph codepoint='F6DA' name='registerserif'/>
+    <glyph codepoint='2310' name='revlogicalnot'/>
+    <glyph codepoint='03C1' name='rho'/>
+    <glyph codepoint='02DA' name='ring'/>
+    <glyph codepoint='F6F1' name='rsuperior'/>
+    <glyph codepoint='2590' name='rtblock'/>
+    <glyph codepoint='F6DD' name='rupiah'/>
+    <glyph codepoint='0073' name='s'/>
+    <glyph codepoint='015B' name='sacute'/>
+    <glyph codepoint='0161' name='scaron'/>
+    <glyph codepoint='015F' name='scedilla'/>
+    <glyph codepoint='F6C2' name='scedilla'/>
+    <glyph codepoint='015D' name='scircumflex'/>
+    <glyph codepoint='0219' name='scommaaccent'/>
+    <glyph codepoint='2033' name='second'/>
+    <glyph codepoint='00A7' name='section'/>
+    <glyph codepoint='003B' name='semicolon'/>
+    <glyph codepoint='0037' name='seven'/>
+    <glyph codepoint='215E' name='seveneighths'/>
+    <glyph codepoint='2087' name='seveninferior'/>
+    <glyph codepoint='F737' name='sevenoldstyle'/>
+    <glyph codepoint='2077' name='sevensuperior'/>
+    <glyph codepoint='2592' name='shade'/>
+    <glyph codepoint='03C3' name='sigma'/>
+    <glyph codepoint='03C2' name='sigma1'/>
+    <glyph codepoint='223C' name='similar'/>
+    <glyph codepoint='0036' name='six'/>
+    <glyph codepoint='2086' name='sixinferior'/>
+    <glyph codepoint='F736' name='sixoldstyle'/>
+    <glyph codepoint='2076' name='sixsuperior'/>
+    <glyph codepoint='002F' name='slash'/>
+    <glyph codepoint='263A' name='smileface'/>
+    <glyph codepoint='0020' name='space'/>
+    <glyph codepoint='00A0' name='space'/>
+    <glyph codepoint='2660' name='spade'/>
+    <glyph codepoint='F6F2' name='ssuperior'/>
+    <glyph codepoint='00A3' name='sterling'/>
+    <glyph codepoint='220B' name='suchthat'/>
+    <glyph codepoint='2211' name='summation'/>
+    <glyph codepoint='263C' name='sun'/>
+    <glyph codepoint='0074' name='t'/>
+    <glyph codepoint='03C4' name='tau'/>
+    <glyph codepoint='0167' name='tbar'/>
+    <glyph codepoint='0165' name='tcaron'/>
+    <glyph codepoint='0163' name='tcommaaccent'/>
+    <glyph codepoint='021B' name='tcommaaccent'/>
+    <glyph codepoint='2234' name='therefore'/>
+    <glyph codepoint='03B8' name='theta'/>
+    <glyph codepoint='03D1' name='theta1'/>
+    <glyph codepoint='00FE' name='thorn'/>
+    <glyph codepoint='0033' name='three'/>
+    <glyph codepoint='215C' name='threeeighths'/>
+    <glyph codepoint='2083' name='threeinferior'/>
+    <glyph codepoint='F733' name='threeoldstyle'/>
+    <glyph codepoint='00BE' name='threequarters'/>
+    <glyph codepoint='F6DE' name='threequartersemdash'/>
+    <glyph codepoint='00B3' name='threesuperior'/>
+    <glyph codepoint='02DC' name='tilde'/>
+    <glyph codepoint='0303' name='tildecomb'/>
+    <glyph codepoint='0384' name='tonos'/>
+    <glyph codepoint='2122' name='trademark'/>
+    <glyph codepoint='F8EA' name='trademarksans'/>
+    <glyph codepoint='F6DB' name='trademarkserif'/>
+    <glyph codepoint='25BC' name='triagdn'/>
+    <glyph codepoint='25C4' name='triaglf'/>
+    <glyph codepoint='25BA' name='triagrt'/>
+    <glyph codepoint='25B2' name='triagup'/>
+    <glyph codepoint='F6F3' name='tsuperior'/>
+    <glyph codepoint='0032' name='two'/>
+    <glyph codepoint='2025' name='twodotenleader'/>
+    <glyph codepoint='2082' name='twoinferior'/>
+    <glyph codepoint='F732' name='twooldstyle'/>
+    <glyph codepoint='00B2' name='twosuperior'/>
+    <glyph codepoint='2154' name='twothirds'/>
+    <glyph codepoint='0075' name='u'/>
+    <glyph codepoint='00FA' name='uacute'/>
+    <glyph codepoint='016D' name='ubreve'/>
+    <glyph codepoint='00FB' name='ucircumflex'/>
+    <glyph codepoint='00FC' name='udieresis'/>
+    <glyph codepoint='00F9' name='ugrave'/>
+    <glyph codepoint='01B0' name='uhorn'/>
+    <glyph codepoint='0171' name='uhungarumlaut'/>
+    <glyph codepoint='016B' name='umacron'/>
+    <glyph codepoint='005F' name='underscore'/>
+    <glyph codepoint='2017' name='underscoredbl'/>
+    <glyph codepoint='222A' name='union'/>
+    <glyph codepoint='2200' name='universal'/>
+    <glyph codepoint='0173' name='uogonek'/>
+    <glyph codepoint='2580' name='upblock'/>
+    <glyph codepoint='03C5' name='upsilon'/>
+    <glyph codepoint='03CB' name='upsilondieresis'/>
+    <glyph codepoint='03B0' name='upsilondieresistonos'/>
+    <glyph codepoint='03CD' name='upsilontonos'/>
+    <glyph codepoint='016F' name='uring'/>
+    <glyph codepoint='0169' name='utilde'/>
+    <glyph codepoint='0076' name='v'/>
+    <glyph codepoint='0077' name='w'/>
+    <glyph codepoint='1E83' name='wacute'/>
+    <glyph codepoint='0175' name='wcircumflex'/>
+    <glyph codepoint='1E85' name='wdieresis'/>
+    <glyph codepoint='2118' name='weierstrass'/>
+    <glyph codepoint='1E81' name='wgrave'/>
+    <glyph codepoint='0078' name='x'/>
+    <glyph codepoint='03BE' name='xi'/>
+    <glyph codepoint='0079' name='y'/>
+    <glyph codepoint='00FD' name='yacute'/>
+    <glyph codepoint='0177' name='ycircumflex'/>
+    <glyph codepoint='00FF' name='ydieresis'/>
+    <glyph codepoint='00A5' name='yen'/>
+    <glyph codepoint='1EF3' name='ygrave'/>
+    <glyph codepoint='007A' name='z'/>
+    <glyph codepoint='017A' name='zacute'/>
+    <glyph codepoint='017E' name='zcaron'/>
+    <glyph codepoint='017C' name='zdotaccent'/>
+    <glyph codepoint='0030' name='zero'/>
+    <glyph codepoint='2080' name='zeroinferior'/>
+    <glyph codepoint='F730' name='zerooldstyle'/>
+    <glyph codepoint='2070' name='zerosuperior'/>
+    <glyph codepoint='03B6' name='zeta'/>
+  </glyphlist>
+
+  <!-- This encodes the Zapf Dingbats Glyph List, version 1.0 (17 July 1997)
+       located at http://partners.adobe.com/asn/developer/type/zapfdingbats.txt
+  -->
+  <glyphlist id='ZGL'>
+    <glyph codepoint='0020' name='space'/>
+    <glyph codepoint='00A0' name='space'/>
+    <glyph codepoint='2701' name='a1'/>
+    <glyph codepoint='2702' name='a2'/>
+    <glyph codepoint='2703' name='a202'/>
+    <glyph codepoint='2704' name='a3'/>
+    <glyph codepoint='260E' name='a4'/>
+    <glyph codepoint='2706' name='a5'/>
+    <glyph codepoint='2707' name='a119'/>
+    <glyph codepoint='2708' name='a118'/>
+    <glyph codepoint='2709' name='a117'/>
+    <glyph codepoint='261B' name='a11'/>
+    <glyph codepoint='261E' name='a12'/>
+    <glyph codepoint='270C' name='a13'/>
+    <glyph codepoint='270D' name='a14'/>
+    <glyph codepoint='270E' name='a15'/>
+    <glyph codepoint='270F' name='a16'/>
+    <glyph codepoint='2710' name='a105'/>
+    <glyph codepoint='2711' name='a17'/>
+    <glyph codepoint='2712' name='a18'/>
+    <glyph codepoint='2713' name='a19'/>
+    <glyph codepoint='2714' name='a20'/>
+    <glyph codepoint='2715' name='a21'/>
+    <glyph codepoint='2716' name='a22'/>
+    <glyph codepoint='2717' name='a23'/>
+    <glyph codepoint='2718' name='a24'/>
+    <glyph codepoint='2719' name='a25'/>
+    <glyph codepoint='271A' name='a26'/>
+    <glyph codepoint='271B' name='a27'/>
+    <glyph codepoint='271C' name='a28'/>
+    <glyph codepoint='271D' name='a6'/>
+    <glyph codepoint='271E' name='a7'/>
+    <glyph codepoint='271F' name='a8'/>
+    <glyph codepoint='2720' name='a9'/>
+    <glyph codepoint='2721' name='a10'/>
+    <glyph codepoint='2722' name='a29'/>
+    <glyph codepoint='2723' name='a30'/>
+    <glyph codepoint='2724' name='a31'/>
+    <glyph codepoint='2725' name='a32'/>
+    <glyph codepoint='2726' name='a33'/>
+    <glyph codepoint='2727' name='a34'/>
+    <glyph codepoint='2605' name='a35'/>
+    <glyph codepoint='2729' name='a36'/>
+    <glyph codepoint='272A' name='a37'/>
+    <glyph codepoint='272B' name='a38'/>
+    <glyph codepoint='272C' name='a39'/>
+    <glyph codepoint='272D' name='a40'/>
+    <glyph codepoint='272E' name='a41'/>
+    <glyph codepoint='272F' name='a42'/>
+    <glyph codepoint='2730' name='a43'/>
+    <glyph codepoint='2731' name='a44'/>
+    <glyph codepoint='2732' name='a45'/>
+    <glyph codepoint='2733' name='a46'/>
+    <glyph codepoint='2734' name='a47'/>
+    <glyph codepoint='2735' name='a48'/>
+    <glyph codepoint='2736' name='a49'/>
+    <glyph codepoint='2737' name='a50'/>
+    <glyph codepoint='2738' name='a51'/>
+    <glyph codepoint='2739' name='a52'/>
+    <glyph codepoint='273A' name='a53'/>
+    <glyph codepoint='273B' name='a54'/>
+    <glyph codepoint='273C' name='a55'/>
+    <glyph codepoint='273D' name='a56'/>
+    <glyph codepoint='273E' name='a57'/>
+    <glyph codepoint='273F' name='a58'/>
+    <glyph codepoint='2740' name='a59'/>
+    <glyph codepoint='2741' name='a60'/>
+    <glyph codepoint='2742' name='a61'/>
+    <glyph codepoint='2743' name='a62'/>
+    <glyph codepoint='2744' name='a63'/>
+    <glyph codepoint='2745' name='a64'/>
+    <glyph codepoint='2746' name='a65'/>
+    <glyph codepoint='2747' name='a66'/>
+    <glyph codepoint='2748' name='a67'/>
+    <glyph codepoint='2749' name='a68'/>
+    <glyph codepoint='274A' name='a69'/>
+    <glyph codepoint='274B' name='a70'/>
+    <glyph codepoint='25CF' name='a71'/>
+    <glyph codepoint='274D' name='a72'/>
+    <glyph codepoint='25A0' name='a73'/>
+    <glyph codepoint='274F' name='a74'/>
+    <glyph codepoint='2750' name='a203'/>
+    <glyph codepoint='2751' name='a75'/>
+    <glyph codepoint='2752' name='a204'/>
+    <glyph codepoint='25B2' name='a76'/>
+    <glyph codepoint='25BC' name='a77'/>
+    <glyph codepoint='25C6' name='a78'/>
+    <glyph codepoint='2756' name='a79'/>
+    <glyph codepoint='25D7' name='a81'/>
+    <glyph codepoint='2758' name='a82'/>
+    <glyph codepoint='2759' name='a83'/>
+    <glyph codepoint='275A' name='a84'/>
+    <glyph codepoint='275B' name='a97'/>
+    <glyph codepoint='275C' name='a98'/>
+    <glyph codepoint='275D' name='a99'/>
+    <glyph codepoint='275E' name='a100'/>
+    <glyph codepoint='F8D7' name='a89'/>
+    <glyph codepoint='F8D8' name='a90'/>
+    <glyph codepoint='F8D9' name='a93'/>
+    <glyph codepoint='F8DA' name='a94'/>
+    <glyph codepoint='F8DB' name='a91'/>
+    <glyph codepoint='F8DC' name='a92'/>
+    <glyph codepoint='F8DD' name='a205'/>
+    <glyph codepoint='F8DE' name='a85'/>
+    <glyph codepoint='F8DF' name='a206'/>
+    <glyph codepoint='F8E0' name='a86'/>
+    <glyph codepoint='F8E1' name='a87'/>
+    <glyph codepoint='F8E2' name='a88'/>
+    <glyph codepoint='F8E3' name='a95'/>
+    <glyph codepoint='F8E4' name='a96'/>
+    <glyph codepoint='2761' name='a101'/>
+    <glyph codepoint='2762' name='a102'/>
+    <glyph codepoint='2763' name='a103'/>
+    <glyph codepoint='2764' name='a104'/>
+    <glyph codepoint='2765' name='a106'/>
+    <glyph codepoint='2766' name='a107'/>
+    <glyph codepoint='2767' name='a108'/>
+    <glyph codepoint='2663' name='a112'/>
+    <glyph codepoint='2666' name='a111'/>
+    <glyph codepoint='2665' name='a110'/>
+    <glyph codepoint='2660' name='a109'/>
+    <glyph codepoint='2460' name='a120'/>
+    <glyph codepoint='2461' name='a121'/>
+    <glyph codepoint='2462' name='a122'/>
+    <glyph codepoint='2463' name='a123'/>
+    <glyph codepoint='2464' name='a124'/>
+    <glyph codepoint='2465' name='a125'/>
+    <glyph codepoint='2466' name='a126'/>
+    <glyph codepoint='2467' name='a127'/>
+    <glyph codepoint='2468' name='a128'/>
+    <glyph codepoint='2469' name='a129'/>
+    <glyph codepoint='2776' name='a130'/>
+    <glyph codepoint='2777' name='a131'/>
+    <glyph codepoint='2778' name='a132'/>
+    <glyph codepoint='2779' name='a133'/>
+    <glyph codepoint='277A' name='a134'/>
+    <glyph codepoint='277B' name='a135'/>
+    <glyph codepoint='277C' name='a136'/>
+    <glyph codepoint='277D' name='a137'/>
+    <glyph codepoint='277E' name='a138'/>
+    <glyph codepoint='277F' name='a139'/>
+    <glyph codepoint='2780' name='a140'/>
+    <glyph codepoint='2781' name='a141'/>
+    <glyph codepoint='2782' name='a142'/>
+    <glyph codepoint='2783' name='a143'/>
+    <glyph codepoint='2784' name='a144'/>
+    <glyph codepoint='2785' name='a145'/>
+    <glyph codepoint='2786' name='a146'/>
+    <glyph codepoint='2787' name='a147'/>
+    <glyph codepoint='2788' name='a148'/>
+    <glyph codepoint='2789' name='a149'/>
+    <glyph codepoint='278A' name='a150'/>
+    <glyph codepoint='278B' name='a151'/>
+    <glyph codepoint='278C' name='a152'/>
+    <glyph codepoint='278D' name='a153'/>
+    <glyph codepoint='278E' name='a154'/>
+    <glyph codepoint='278F' name='a155'/>
+    <glyph codepoint='2790' name='a156'/>
+    <glyph codepoint='2791' name='a157'/>
+    <glyph codepoint='2792' name='a158'/>
+    <glyph codepoint='2793' name='a159'/>
+    <glyph codepoint='2794' name='a160'/>
+    <glyph codepoint='2192' name='a161'/>
+    <glyph codepoint='2194' name='a163'/>
+    <glyph codepoint='2195' name='a164'/>
+    <glyph codepoint='2798' name='a196'/>
+    <glyph codepoint='2799' name='a165'/>
+    <glyph codepoint='279A' name='a192'/>
+    <glyph codepoint='279B' name='a166'/>
+    <glyph codepoint='279C' name='a167'/>
+    <glyph codepoint='279D' name='a168'/>
+    <glyph codepoint='279E' name='a169'/>
+    <glyph codepoint='279F' name='a170'/>
+    <glyph codepoint='27A0' name='a171'/>
+    <glyph codepoint='27A1' name='a172'/>
+    <glyph codepoint='27A2' name='a173'/>
+    <glyph codepoint='27A3' name='a162'/>
+    <glyph codepoint='27A4' name='a174'/>
+    <glyph codepoint='27A5' name='a175'/>
+    <glyph codepoint='27A6' name='a176'/>
+    <glyph codepoint='27A7' name='a177'/>
+    <glyph codepoint='27A8' name='a178'/>
+    <glyph codepoint='27A9' name='a179'/>
+    <glyph codepoint='27AA' name='a193'/>
+    <glyph codepoint='27AB' name='a180'/>
+    <glyph codepoint='27AC' name='a199'/>
+    <glyph codepoint='27AD' name='a181'/>
+    <glyph codepoint='27AE' name='a200'/>
+    <glyph codepoint='27AF' name='a182'/>
+    <glyph codepoint='27B1' name='a201'/>
+    <glyph codepoint='27B2' name='a183'/>
+    <glyph codepoint='27B3' name='a184'/>
+    <glyph codepoint='27B4' name='a197'/>
+    <glyph codepoint='27B5' name='a185'/>
+    <glyph codepoint='27B6' name='a194'/>
+    <glyph codepoint='27B7' name='a198'/>
+    <glyph codepoint='27B8' name='a186'/>
+    <glyph codepoint='27B9' name='a195'/>
+    <glyph codepoint='27BA' name='a187'/>
+    <glyph codepoint='27BB' name='a188'/>
+    <glyph codepoint='27BC' name='a189'/>
+    <glyph codepoint='27BD' name='a190'/>
+    <glyph codepoint='27BE' name='a191'/>
+  </glyphlist>
+</glyphlist-set>
diff --git a/src/codegen/fonts/t1font-file.xsl b/src/codegen/fonts/t1font-file.xsl
new file mode 100644 (file)
index 0000000..f5c2850
--- /dev/null
@@ -0,0 +1,225 @@
+<!--
+  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$ -->
+<!--
+This files writes the class files for the Adobe Type 1 fonts.
+It uses the information in the font description files (Courier.xml, Helvetica.xml) to this
+In these font description files each character is referenced by its adobe name:
+      <char name="A" width="667"/>
+To resolve this name and to find the code for this character it looks up the adobe name in the
+file charlist.xml and extracts the WinAnsi code.
+-->
+
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:lxslt="http://xml.apache.org/xslt"
+                xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
+                extension-element-prefixes="redirect">
+<xsl:output method="text" />
+
+<xsl:template match="font-metrics">
+<xsl:variable name="class-name" select="class-name"/>
+<!--<redirect:write select="concat('org/apache/fop/render/pdf/fonts/', $class-name, '.java')">-->
+package org.apache.fop.render.pdf.fonts;
+
+import org.apache.fop.render.pdf.Font;
+import org.apache.fop.layout.FontDescriptor;
+import org.apache.fop.fonts.Glyphs;
+import org.apache.fop.pdf.PDFStream;
+import org.apache.fop.pdf.PDFT1Stream;
+import java.io.InputStream;
+import java.io.FileInputStream;
+import java.io.BufferedInputStream;
+import java.util.HashMap;
+
+public class <xsl:value-of select="class-name"/> extends Font implements FontDescriptor {
+    private final static String fontName = "<xsl:value-of select="font-name"/>";
+    private final static String encoding = "<xsl:value-of select="encoding"/>";
+    private final static int capHeight = <xsl:value-of select="cap-height"/>;
+    private final static int xHeight = <xsl:value-of select="x-height"/>;
+    private final static int ascender = <xsl:value-of select="ascender"/>;
+    private final static int descender = <xsl:value-of select="descender"/>;
+    private final static int[] fontBBox = {
+        <xsl:value-of select="bbox/left"/>,
+        <xsl:value-of select="bbox/bottom"/>,
+        <xsl:value-of select="bbox/right"/>,
+        <xsl:value-of select="bbox/top"/>
+    };
+    private final static String embedFileName = <xsl:value-of select="embedFile"/>;
+    private final static String embedResourceName = <xsl:value-of select="embedResource"/>;
+    private static PDFT1Stream embeddedFont=null;
+    private final static int flags = <xsl:value-of select="flags"/>;
+    private final static int stemV = <xsl:value-of select="stemv"/>;
+    private final static int italicAngle = <xsl:value-of select="italicangle"/>;
+    private final static int firstChar = <xsl:value-of select="first-char"/>;
+    private final static int lastChar = <xsl:value-of select="last-char"/>;
+    private final static int[] width;
+    private final static HashMap kerning=new HashMap();
+
+    static {
+        width = new int[256];
+<xsl:for-each select="widths/char"><xsl:variable name="char-name" select="@name"/><xsl:variable name="char-num" select="document('charlist.xml')/font-mappings/map[@adobe-name=$char-name]/@win-ansi"/><xsl:if test="$char-num!='-1'">        width[<xsl:value-of select="$char-num"/>] = <xsl:value-of select="@width"/>;
+</xsl:if></xsl:for-each>
+
+    HashMap tmptable;
+<xsl:for-each select="kerning">
+<xsl:variable name="kpx1-name" select="@kpx1"/>
+    tmptable=new HashMap();<xsl:for-each select="pair"><xsl:variable name="kpx2-name" select="@kpx2"/><xsl:variable name="kern-name" select="@kern"/>
+    tmptable.put(Glyphs.glyphToString("<xsl:value-of select="$kpx2-name"/>"), new Integer(<xsl:value-of select="$kern-name"/>));</xsl:for-each>
+    kerning.put(Glyphs.glyphToString("<xsl:value-of select="$kpx1-name"/>"), tmptable);
+</xsl:for-each>
+    }
+
+    public final boolean hasKerningInfo() {return kerning.isEmpty();}
+    public final java.util.HashMap getKerningInfo() {return kerning;}
+    public byte getSubType() {return org.apache.fop.pdf.PDFFont.TYPE1;}
+
+    public boolean isEmbeddable() {
+        return (embedFileName==null &amp;&amp; embedResourceName==null) ? false : true;
+    }
+
+    public PDFStream getFontFile(int i) {
+        InputStream instream=null;
+
+        // Get file first
+        if (embedFileName!=null)
+        try {
+           instream=new FileInputStream(embedFileName);
+        } catch (Exception e) {
+           System.out.println("Failed to embed fontfile: "+embedFileName);
+        }
+
+        // Get resource
+        if (instream==null &amp;&amp; embedResourceName!=null)
+        try {
+           instream=new BufferedInputStream(this.getClass().getResourceAsStream(embedResourceName));
+        } catch (Exception e) {
+           System.out.println("Failed to embed fontresource: "+embedResourceName);
+        }
+
+        if (instream==null)
+            return (PDFStream)null;
+
+        // Read fontdata
+        byte[] file = new byte[128000];
+        int fsize = 0;
+
+        try {
+          int l = instream.read(file, 0, 128000);
+          fsize += l;
+
+          if (l==128000) {
+                 // More to read - needs to extend
+             byte[] tmpbuf;
+
+             while (l &gt; 0) {
+                 tmpbuf = new byte[file.length + 64000];
+                 System.arraycopy(file, 0, tmpbuf, 0, file.length);
+                 l=instream.read(tmpbuf, file.length, 64000);
+                 fsize += l;
+                 file = tmpbuf;
+
+                 if (l &lt; 64000) // whole file read. No need to loop again
+                    l=0;
+             }
+          }
+
+          embeddedFont=new PDFT1Stream(i, fsize);
+          embeddedFont.addFilter("flate");
+          embeddedFont.addFilter("ascii-85");
+          embeddedFont.setData(file, fsize);
+          instream.close();
+        } catch (Exception e) {}
+
+        return (PDFStream) embeddedFont;
+    }
+
+    public String encoding() {
+        return encoding;
+    }
+
+    public String fontName() {
+        return fontName;
+    }
+
+    public int getAscender() {
+        return ascender;
+    }
+
+    public int getCapHeight() {
+        return capHeight;
+    }
+
+    public int getDescender() {
+        return descender;
+    }
+
+    public int getAscender(int size) {
+        return size * ascender;
+    }
+
+    public int getCapHeight(int size) {
+        return size * capHeight;
+    }
+
+    public int getDescender(int size) {
+        return size * descender;
+    }
+
+    public int getXHeight(int size) {
+        return size * xHeight;
+    }
+
+    public int getFlags() {
+        return flags;
+    }
+
+    public int[] getFontBBox() {
+        return fontBBox;
+    }
+
+    public int getItalicAngle() {
+        return italicAngle;
+    }
+
+    public int getStemV() {
+        return stemV;
+    }
+
+    public int getFirstChar() {
+        return firstChar;
+    }
+
+    public int getLastChar() {
+        return lastChar;
+    }
+
+    public int width(int i, int size) {
+        return size * width[i];
+    }
+
+    public int[] getWidths(int size) {
+        int[] arr = new int[getLastChar()-getFirstChar()+1];
+        System.arraycopy(width, getFirstChar(), arr, 0, getLastChar()-getFirstChar()+1);
+        for( int i = 0; i &lt; arr.length; i++) arr[i] *= size;
+        return arr;
+    }
+}
+<!--</redirect:write>-->
+</xsl:template>
+</xsl:stylesheet>
+
diff --git a/src/codegen/fonts/ttffontfile.xsl b/src/codegen/fonts/ttffontfile.xsl
new file mode 100644 (file)
index 0000000..7231010
--- /dev/null
@@ -0,0 +1,217 @@
+<!--
+  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$ -->
+<!--
+This files writes the class files for the Adobe Type 1 fonts.
+It uses the information in the font description files (Courier.xml, Helvetica.xml) to this
+In these font description files each character is referenced by its adobe name:
+      <char name="A" width="667"/>
+To resolve this name and to find the code for this character it looks up the adobe name in the
+file charlist.xml and extracts the WinAnsi code.
+-->
+
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:lxslt="http://xml.apache.org/xslt"
+                xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
+                extension-element-prefixes="redirect">
+<xsl:output method="text" />
+
+<xsl:template match="font-metrics">
+<xsl:variable name="class-name" select="class-name"/>
+<!--<redirect:write select="concat('org/apache/fop/render/pdf/fonts/', $class-name, '.java')">-->
+package org.apache.fop.render.pdf.fonts;
+
+import org.apache.fop.render.pdf.Font;
+import org.apache.fop.layout.FontDescriptor;
+import org.apache.fop.fonts.Glyphs;
+import org.apache.fop.pdf.PDFStream;
+import org.apache.fop.pdf.PDFTTFStream;
+import java.io.InputStream;
+import java.io.FileInputStream;
+import java.io.BufferedInputStream;
+import java.util.HashMap;
+
+public class <xsl:value-of select="class-name"/> extends Font implements FontDescriptor {
+    private final static String fontName = "<xsl:value-of select="font-name"/>";
+    private final static String encoding = "<xsl:value-of select="encoding"/>";
+    private final static int capHeight = <xsl:value-of select="cap-height"/>;
+    private final static int xHeight = <xsl:value-of select="x-height"/>;
+    private final static int ascender = <xsl:value-of select="ascender"/>;
+    private final static int descender = <xsl:value-of select="descender"/>;
+    private final static int[] fontBBox = {
+        <xsl:value-of select="bbox/left"/>,
+        <xsl:value-of select="bbox/bottom"/>,
+        <xsl:value-of select="bbox/right"/>,
+        <xsl:value-of select="bbox/top"/>
+    };
+
+    private final static String embedFileName = <xsl:value-of select="embedFile"/>;
+    private final static String embedResourceName = <xsl:value-of select="embedResource"/>;
+    private static PDFTTFStream embeddedFont=null;
+    private final static int flags = <xsl:value-of select="flags"/>;
+    private final static int stemV = <xsl:value-of select="stemv"/>;
+    private final static int italicAngle = <xsl:value-of select="italicangle"/>;
+    private final static int firstChar = <xsl:value-of select="first-char"/>;
+    private final static int lastChar = <xsl:value-of select="last-char"/>;
+    private final static int[] width;
+    private final static HashMap kerning=new HashMap();
+    static {
+        width = new int[256];
+<!--<xsl:for-each select="widths/char"><xsl:variable name="char-name" select="@name"/><xsl:variable name="char-num" select="document('charlist.xml')/font-mappings/map[@adobe-name=$char-name]/@win-ansi"/><xsl:if test="$char-num!='-1'">        width[<xsl:value-of select="$char-num"/>] = <xsl:value-of select="@width"/>;</xsl:if>-->
+<xsl:for-each select="widths/char"><xsl:variable name="char-name" select="@name"/>   width[<xsl:value-of select="$char-name"/>] = <xsl:value-of select="@width"/>;
+</xsl:for-each>
+
+    HashMap tmptable;
+<xsl:for-each select="kerning">
+<xsl:variable name="kpx1-name" select="@kpx1"/>
+    tmptable=new HashMap();<xsl:for-each select="pair"><xsl:variable name="kpx2-name" select="@kpx2"/><xsl:variable name="kern-name" select="@kern"/>
+    tmptable.put(Glyphs.glyphToString("<xsl:value-of select="$kpx2-name"/>"), new Integer(<xsl:value-of select="$kern-name"/>));</xsl:for-each>
+    kerning.put(Glyphs.glyphToString("<xsl:value-of select="$kpx1-name"/>"), tmptable);
+</xsl:for-each>
+    }
+
+    public final boolean hasKerningInfo() {return kerning.isEmpty();}
+    public final java.util.HashMap getKerningInfo() {return kerning;}
+
+    public byte getSubType() {return org.apache.fop.pdf.PDFFont.TRUETYPE;}
+    public boolean isEmbeddable() {
+        return (embedFileName==null &amp;&amp; embedResourceName==null) ? false : true;
+    }
+    public PDFStream getFontFile(int i) {
+        InputStream instream=null;
+
+        // Get file first
+        if (embedFileName!=null)
+        try {
+           instream=new FileInputStream(embedFileName);
+        } catch (Exception e) {
+           System.out.println("Failed to embed fontfile: "+embedFileName);
+        }
+
+        // Get resource
+        if (instream==null &amp;&amp; embedResourceName!=null)
+        try {
+           instream=new BufferedInputStream(this.getClass().getResourceAsStream(embedResourceName));
+        } catch (Exception e) {
+           System.out.println("Failed to embed fontresource: "+embedResourceName);
+        }
+
+        if (instream==null)
+            return (PDFStream)null;
+
+        // Read fontdata
+        byte[] file = new byte[128000];
+        int fsize = 0;
+
+        try {
+          int l = instream.read(file, 0, 128000);
+          fsize += l;
+
+          if (l==128000) {
+                 // More to read - needs to extend
+             byte[] tmpbuf;
+
+             while (l &gt; 0) {
+                 tmpbuf = new byte[file.length + 64000];
+                 System.arraycopy(file, 0, tmpbuf, 0, file.length);
+                 l=instream.read(tmpbuf, file.length, 64000);
+                 fsize += l;
+                 file = tmpbuf;
+
+                 if (l &lt; 64000) // whole file read. No need to loop again
+                    l=0;
+             }
+          }
+
+          embeddedFont=new PDFTTFStream(i, fsize);
+          embeddedFont.addFilter("flate");
+          embeddedFont.addFilter("ascii-85");
+          embeddedFont.setData(file, fsize);
+          instream.close();
+        } catch (Exception e) {}
+
+        return (PDFStream) embeddedFont;
+    }
+    public String encoding() {
+        return encoding;
+    }
+
+    public String fontName() {
+        return fontName;
+    }
+
+    public int getAscender() {return ascender;}
+    public int getDescender() {return descender;}
+    public int getCapHeight() {return capHeight;}
+
+    public int getAscender(int size) {
+        return size * ascender;
+    }
+
+    public int getCapHeight(int size) {
+        return size * capHeight;
+    }
+
+    public int getDescender(int size) {
+        return size * descender;
+    }
+
+    public int getXHeight(int size) {
+        return size * xHeight;
+    }
+
+    public int getFlags() {
+        return flags;
+    }
+
+    public int[] getFontBBox() {
+        return fontBBox;
+    }
+
+    public int getItalicAngle() {
+        return italicAngle;
+    }
+
+    public int getStemV() {
+        return stemV;
+    }
+
+    public int getFirstChar() {
+        return firstChar;
+    }
+
+    public int getLastChar() {
+        return lastChar;
+    }
+
+    public int width(int i, int size) {
+        return size * width[i];
+    }
+
+    public int[] getWidths(int size) {
+        int[] arr = new int[getLastChar()-getFirstChar()+1];
+        System.arraycopy(width, getFirstChar(), arr, 0, getLastChar()-getFirstChar()+1);
+        for( int i = 0; i &lt; arr.length; i++) arr[i] *= size;
+        return arr;
+    }
+}
+<!--</redirect:write>-->
+</xsl:template>
+</xsl:stylesheet>
+
+
diff --git a/src/codegen/foproperties.xml b/src/codegen/foproperties.xml
deleted file mode 100644 (file)
index f4a19eb..0000000
+++ /dev/null
@@ -1,2241 +0,0 @@
-<?xml version="1.0" standalone="yes" ?>
-<!--
-  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$ -->
-<property-list family="FO">
- <generic-property-list>
-  <property type="generic">
-    <name>generic-color</name>
-    <class-name>GenericColor</class-name>
-    <datatype>ColorType</datatype>
-    <extfile href="colorkw.xml"/>
-<!--
-    <datatype-conversion from-type="String" varname="strval">
-       new ColorType(strval)</datatype-conversion>
--->
-  </property>
-  <property type="generic">
-    <name>generic-boolean</name>
-    <class-name>GenericBoolean</class-name>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="TRUE">true</value>
-        <value const="FALSE">false</value>
-      </enumeration>
-  </property>
-  <property type="generic">
-    <name>generic-keep</name>
-    <class-name>GenericKeep</class-name>
-    <datatype>Keep</datatype> <!-- CompoundDatatype -->
-    <compound>
-      <subproperty set-by-shorthand="true">
-        <name>within-page</name>
-    <datatype>Number</datatype>
-    <default>auto</default>
-      <enumeration>
-        <value const="AUTO">auto</value>
-        <value const="ALWAYS">always</value>
-      </enumeration>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>within-line</name>
-    <datatype>Number</datatype>
-    <default>auto</default>
-      <enumeration>
-        <value const="AUTO">auto</value>
-        <value const="ALWAYS">always</value>
-      </enumeration>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>within-column</name>
-    <datatype>Number</datatype>
-    <default>auto</default>
-      <enumeration>
-        <value const="AUTO">auto</value>
-        <value const="ALWAYS">always</value>
-      </enumeration>
-      </subproperty>
-    </compound>
-  </property>
-  <property type="generic">
-    <name>conditional-length-template</name>
-    <class-name>GenericCondLength</class-name>
-    <datatype>CondLength</datatype>
-    <compound>
-      <subproperty set-by-shorthand="true">
-        <name>length</name>
-        <datatype>Length</datatype>
-      </subproperty>
-      <subproperty>
-        <name>conditionality</name>
-        <datatype>Enum</datatype>
-        <enumeration>
-          <value const="DISCARD">discard</value>
-          <value const="RETAIN">retain</value>
-        </enumeration>
-      </subproperty>
-    </compound>
-  </property>
-  <property type="generic">
-    <name>padding-template</name>
-    <class-name>GenericCondPadding</class-name>
-    <use-generic>GenericCondLength</use-generic>
-    <inherited>false</inherited>
-    <default subproperty="length">0pt</default>
-  </property>
-  <property type="generic">
-    <name>padding-template</name>
-    <class-name>GenericPadding</class-name>
-    <datatype>Length</datatype>
-    <inherited>false</inherited>
-    <default>0pt</default>
-                <shorthand>padding</shorthand>
-  </property>
-
-<!-- Before, After, Start, End border width props -->
-<!-- CondLength, but adds keyword values both to the "shorthand" setting
-     and to the length component. So we redefine the components here,
-     rather than doing a "use-generic" on GenericCondLength.
--->
-  <property type="generic">
-    <name>border-cond-width-template</name>
-    <class-name>GenericCondBorderWidth</class-name>
-    <keyword-equiv match="thin">0.5pt</keyword-equiv>
-    <keyword-equiv match="medium">1pt</keyword-equiv>
-    <keyword-equiv match="thick">2pt</keyword-equiv>
-    <inherited>false</inherited>
-    <datatype>CondLength</datatype>
-    <compound>
-      <subproperty set-by-shorthand="true">
-        <name>length</name>
-        <datatype>Length</datatype>
-        <keyword-equiv match="thin">0.5pt</keyword-equiv>
-        <keyword-equiv match="medium">1pt</keyword-equiv>
-        <keyword-equiv match="thick">2pt</keyword-equiv>
-        <default>medium</default>
-      </subproperty>
-      <subproperty>
-        <datatype>Enum</datatype>
-        <name>conditionality</name>
-        <enumeration>
-          <value const="DISCARD">discard</value>
-          <value const="RETAIN">retain</value>
-        </enumeration>
-      </subproperty>
-    </compound>
-  </property>
-<!-- Left, Right, Top, Bottom borderwidth props -->
-  <property type="generic">
-    <name>border-width-template</name>
-    <class-name>GenericBorderWidth</class-name>
-    <datatype>Length</datatype>
-    <keyword-equiv match="thin">0.5pt</keyword-equiv>
-    <keyword-equiv match="medium">1pt</keyword-equiv>
-    <keyword-equiv match="thick">2pt</keyword-equiv>
-    <inherited>false</inherited>
-    <default>0pt</default>
-    <shorthand>border-width</shorthand>
-  </property>
-  <property type="generic">
-    <name>border-style-template</name>
-    <class-name>GenericBorderStyle</class-name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="NONE">none</value>
-        <value const="HIDDEN">hidden</value>
-        <value const="DOTTED">dotted</value>
-        <value const="DASHED">dashed</value>
-        <value const="SOLID">solid</value>
-        <value const="DOUBLE">double</value>
-        <value const="GROOVE">groove</value>
-        <value const="RIDGE">ridge</value>
-        <value const="INSET">inset</value>
-        <value const="OUTSET">outset</value>
-      </enumeration>
-    <default>none</default>
-    <shorthand>border-style</shorthand>
-  </property>
-  <property type="generic">
-    <name>break-template</name>
-    <class-name>GenericBreak</class-name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="AUTO">auto</value>
-        <value const="COLUMN">column</value>
-        <value const="PAGE">page</value>
-        <value const="EVEN_PAGE">even-page</value>
-        <value const="ODD_PAGE">odd-page</value>
-      </enumeration>
-    <default>auto</default>
-  </property>
-  <property type="generic">
-    <name>generic-space</name>
-    <class-name>GenericSpace</class-name>
-    <inherited>false</inherited>
-    <datatype>Space</datatype>
-    <compound>
-      <subproperty set-by-shorthand="true">
-        <name>minimum</name>
-        <datatype>Length</datatype>
-        <default>0pt</default>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>optimum</name>
-        <datatype>Length</datatype>
-        <default>0pt</default>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>maximum</name>
-        <datatype>Length</datatype>
-        <default>0pt</default>
-      </subproperty>
-      <subproperty>
-        <name>precedence</name>
-        <datatype>Number</datatype>
-        <enumeration>
-          <value const="FORCE">force</value>
-        </enumeration>
-        <default>0</default>
-      </subproperty>
-      <subproperty>
-        <name>conditionality</name>
-        <datatype>Enum</datatype>
-        <enumeration>
-          <value const="DISCARD">discard</value>
-          <value const="RETAIN">retain</value>
-        </enumeration>
-        <default>discard</default>
-      </subproperty>
-    </compound>
-  </property>
-
-<!-- Common Accessibility Properties -->
-
-  <property>
-    <name>source-document</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>role</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default>none</default>
-  </property>
-
-<!-- Common Absolute Position Properties -->
-
-  <property>
-    <name>absolute-position</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="AUTO">auto</value>
-        <value const="FIXED">fixed</value>
-        <value const="ABSOLUTE">absolute</value>
-      </enumeration>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>top</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <auto-ok/>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>right</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <auto-ok/>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>bottom</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <auto-ok/>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>left</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <auto-ok/>
-    <default>auto</default>
-  </property>
-
-<!-- Common Aural Properties -->
-
-  <property>
-    <name>azimuth</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>center</default>
-  </property>
-  <property>
-    <name>cue-after</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>cue-before</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>elevation</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>level</default>
-  </property>
-  <property>
-    <name>pause-after</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>pause-before</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>pitch</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>medium</default>
-  </property>
-  <property>
-    <name>pitch-range</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>50</default>
-  </property>
-  <property>
-    <name>play-during</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>richness</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>50</default>
-  </property>
-  <property>
-    <name>speak</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>normal</default>
-  </property>
-  <property>
-    <name>speak-header</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>once</default>
-  </property>
-  <property>
-    <name>speak-numeral</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>continuous</default>
-  </property>
-  <property>
-    <name>speak-punctuation</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>speech-rate</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>medium</default>
-  </property>
-  <property>
-    <name>stress</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>50</default>
-  </property>
-  <property>
-    <name>voice-family</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>volume</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>medium</default>
-  </property>
-
-<!-- Common Border, Padding, and Background Properties -->
-
-  <property>
-    <name>background-attachment</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>scroll</default>
-  </property>
-  <property>
-    <name>background-color</name>
-    <inherited>false</inherited>
-    <use-generic>GenericColor</use-generic>
-    <default>transparent</default>
-    <!-- Handle transparent -->
-    <datatype-conversion from-type="NCname" vartype="String" varname="nameval">
-       new ColorType(nameval)</datatype-conversion>
-  </property>
-  <property>
-    <name>background-image</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>background-repeat</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="REPEAT">repeat</value>
-        <value const="REPEATX">repeat-x</value>
-        <value const="REPEATY">repeat-y</value>
-        <value const="NOREPEAT">no-repeat</value>
-      </enumeration>
-    <default>repeat</default>
-  </property>
-  <property>
-    <name>background-position-horizontal</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <default>0%</default>
-  </property>
-  <property>
-    <name>background-position-vertical</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <default>0%</default>
-  </property>
-  <property>
-    <name>border-before-color</name>
-    <inherited>false</inherited>
-    <use-generic>GenericColor</use-generic>
-    <default>black</default>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="BEFORE"/>-color</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-before-style</name>
-    <use-generic>GenericBorderStyle</use-generic>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="BEFORE"/>-style</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-before-width</name>
-    <use-generic>GenericCondBorderWidth</use-generic>
-    <default subproperty="conditionality">retain</default>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="BEFORE"/>-width</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-after-color</name>
-    <inherited>false</inherited>
-    <use-generic>GenericColor</use-generic>
-    <default>black</default>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="AFTER"/>-color</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-after-style</name>
-    <use-generic>GenericBorderStyle</use-generic>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="AFTER"/>-style</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-after-width</name>
-    <use-generic>GenericCondBorderWidth</use-generic>
-    <default subproperty="conditionality">retain</default>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="AFTER"/>-width</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-start-color</name>
-    <inherited>false</inherited>
-    <use-generic>GenericColor</use-generic>
-    <default>black</default>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="START"/>-color</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-start-style</name>
-    <use-generic>GenericBorderStyle</use-generic>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="START"/>-style</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-start-width</name>
-    <use-generic>GenericCondBorderWidth</use-generic>
-    <default subproperty="conditionality">discard</default>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="START"/>-width</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-end-color</name>
-    <inherited>false</inherited>
-    <use-generic>GenericColor</use-generic>
-    <default>black</default>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="END"/>-color</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-end-style</name>
-    <use-generic>GenericBorderStyle</use-generic>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="END"/>-style</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-end-width</name>
-    <use-generic>GenericCondBorderWidth</use-generic>
-    <default subproperty="conditionality">discard</default>
-    <corresponding use-if-specified="true">
-      <propval>border-<wmrel2abs dir="END"/>-width</propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>border-top-color</name>
-    <inherited>false</inherited>
-    <use-generic>GenericColor</use-generic>
-    <default>black</default>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="TOP"/>-color</propval>
-    </corresponding>
-                <shorthand>border-top</shorthand>
-                <shorthand>border-color</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-top-style</name>
-    <use-generic>GenericBorderStyle</use-generic>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="TOP"/>-style</propval>
-    </corresponding>
-                <shorthand>border-top</shorthand>
-                <shorthand>border-style</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-top-width</name>
-    <use-generic>GenericBorderWidth</use-generic>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="TOP"/>-width</propval>
-    </corresponding>
-                <shorthand>border-top</shorthand>
-                <shorthand>border-width</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-bottom-color</name>
-    <inherited>false</inherited>
-    <use-generic>GenericColor</use-generic>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="BOTTOM"/>-color</propval>
-    </corresponding>
-    <default>black</default>
-                <shorthand>border-bottom</shorthand>
-                <shorthand>border-color</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-bottom-style</name>
-    <use-generic>GenericBorderStyle</use-generic>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="BOTTOM"/>-style</propval>
-    </corresponding>
-                <shorthand>border-bottom</shorthand>
-                <shorthand>border-style</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-bottom-width</name>
-    <use-generic>GenericBorderWidth</use-generic>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="BOTTOM"/>-width</propval>
-    </corresponding>
-                <shorthand>border-bottom</shorthand>
-                <shorthand>border-width</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-left-color</name>
-    <inherited>false</inherited>
-    <use-generic>GenericColor</use-generic>
-    <default>black</default>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="LEFT"/>-color</propval>
-    </corresponding>
-                <shorthand>border-left</shorthand>
-                <shorthand>border-color</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-left-style</name>
-    <use-generic>GenericBorderStyle</use-generic>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="LEFT"/>-style</propval>
-    </corresponding>
-                <shorthand>border-left</shorthand>
-                <shorthand>border-style</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-left-width</name>
-    <use-generic>GenericBorderWidth</use-generic>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="LEFT"/>-width</propval>
-    </corresponding>
-                <shorthand>border-left</shorthand>
-                <shorthand>border-width</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-right-color</name>
-    <inherited>false</inherited>
-    <use-generic>GenericColor</use-generic>
-    <default>black</default>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="RIGHT"/>-color</propval>
-    </corresponding>
-                <shorthand>border-right</shorthand>
-                <shorthand>border-color</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-right-style</name>
-    <use-generic>GenericBorderStyle</use-generic>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="RIGHT"/>-style</propval>
-    </corresponding>
-                <shorthand>border-right</shorthand>
-                <shorthand>border-style</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>border-right-width</name>
-    <use-generic>GenericBorderWidth</use-generic>
-    <corresponding>
-      <propval>border-<wmabs2rel dir="RIGHT"/>-width</propval>
-    </corresponding>
-                <shorthand>border-right</shorthand>
-                <shorthand>border-width</shorthand>
-                <shorthand>border</shorthand>
-  </property>
-  <property>
-    <name>padding-before</name>
-    <use-generic>GenericCondPadding</use-generic>
-    <default subproperty="conditionality">retain</default>
-    <corresponding use-if-specified="true">
-      <propval>padding-<wmrel2abs dir="BEFORE"/></propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>padding-after</name>
-    <use-generic>GenericCondPadding</use-generic>
-    <default subproperty="conditionality">retain</default>
-    <corresponding use-if-specified="true">
-      <propval>padding-<wmrel2abs dir="AFTER"/></propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>padding-start</name>
-    <use-generic>GenericCondPadding</use-generic>
-    <default subproperty="conditionality">discard</default>
-    <corresponding use-if-specified="true">
-      <propval>padding-<wmrel2abs dir="START"/></propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>padding-end</name>
-    <use-generic>GenericCondPadding</use-generic>
-    <default subproperty="conditionality">discard</default>
-    <corresponding use-if-specified="true">
-      <propval>padding-<wmrel2abs dir="END"/></propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>padding-top</name>
-    <use-generic>GenericPadding</use-generic>
-    <corresponding>
-      <propval>padding-<wmabs2rel dir="TOP"/></propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>padding-bottom</name>
-    <use-generic>GenericPadding</use-generic>
-    <corresponding>
-      <propval>padding-<wmabs2rel dir="BOTTOM"/></propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>padding-left</name>
-    <use-generic>GenericPadding</use-generic>
-    <corresponding>
-      <propval>padding-<wmabs2rel dir="LEFT"/></propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>padding-right</name>
-    <use-generic>GenericPadding</use-generic>
-    <corresponding>
-      <propval>padding-<wmabs2rel dir="RIGHT"/></propval>
-    </corresponding>
-  </property>
-
-<!-- Common Font Properties -->
-
-  <property>
-    <name>font-family</name>
-    <inherited>true</inherited>
-    <datatype>String</datatype>
-    <default>sans-serif</default>
-  </property>
-  <property>
-    <name>font-selection-strategy</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>font-size</name>
-    <inherited>true</inherited>
-    <datatype>Length</datatype>
-    <default>12pt</default>
-    <!-- percent refers to inherited font size -->
-    <percent-ok base="INH_FONTSIZE"/>
-  </property>
-  <property>
-    <name>font-stretch</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>normal</default>
-  </property>
-  <property>
-    <name>font-size-adjust</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>font-style</name>
-    <inherited>true</inherited>
-    <datatype>String</datatype>
-    <default>normal</default>
-  </property>
-  <property>
-    <name>font-variant</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-        <enumeration>
-          <value const="NORMAL">normal</value>
-          <value const="SMALL_CAPS">small-caps</value>
-        </enumeration>
-    <default>normal</default>
-  </property>
-  <property>
-    <name>font-weight</name>
-    <inherited>true</inherited>
-    <datatype>String</datatype>
-    <keyword-equiv match="normal">400</keyword-equiv>
-    <keyword-equiv match="bold">700</keyword-equiv>
-    <default>400</default>
-  </property>
-
-<!-- Common Hyphenation Properties -->
-
-  <property>
-    <name>country</name>
-    <class-name>Country</class-name>
-    <inherited>true</inherited>
-    <datatype>String</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>language</name>
-    <class-name>Language</class-name>
-    <inherited>true</inherited>
-    <datatype>String</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>script</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>hyphenate</name>
-    <class-name>Hyphenate</class-name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="TRUE">true</value>
-        <value const="FALSE">false</value>
-      </enumeration>
-    <default>false</default>
-  </property>
-  <property>
-    <name>hyphenation-character</name>
-    <class-name>HyphenationCharacter</class-name>
-    <inherited>true</inherited>
-    <datatype>Character</datatype>
-    <default>-</default>
-  </property>
-  <property>
-    <name>hyphenation-push-character-count</name>
-    <class-name>HyphenationPushCharacterCount</class-name>
-    <inherited>true</inherited>
-    <datatype>Number</datatype>
-    <default>2</default>
-  </property>
-  <property>
-    <name>hyphenation-remain-character-count</name>
-    <class-name>HyphenationRemainCharacterCount</class-name>
-    <inherited>true</inherited>
-    <datatype>Number</datatype>
-    <default>2</default>
-  </property>
-
-<!-- Common Margin Properties-Block -->
-
-  <property>
-    <name>margin-top</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>margin-bottom</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>margin-left</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>margin-right</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>space-before</name>
-    <use-generic>GenericSpace</use-generic>
-    <!-- Get corresponding margin property using PARENT's writing-mode -->
-    <corresponding use-if-specified="true">
-      <propval>margin-<parwmrel2abs dir="BEFORE"/></propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>space-after</name>
-    <use-generic>GenericSpace</use-generic>
-    <!-- Get corresponding margin property using PARENT's writing-mode -->
-    <corresponding use-if-specified="true">
-      <propval>margin-<parwmrel2abs dir="AFTER"/></propval>
-    </corresponding>
-  </property>
-  <property>
-    <name>start-indent</name>
-    <inherited>true</inherited>
-    <datatype>Length</datatype>
-    <default>0pt</default>
-    <corresponding use-if-specified="true">
-      <propval>margin-<wmrel2abs dir="START"/></propval>
-      <propexpr>
-      <propval>margin-<wmrel2abs dir="START"/></propval>+
-      <propval>padding-<wmrel2abs dir="START"/></propval>+
-      <propval>border-<wmrel2abs dir="START"/>-width</propval>
-      <!-- + parent start-indent unless parent generates ref area (?) -->
-      </propexpr>
-    </corresponding>
-  </property>
-  <property>
-    <name>end-indent</name>
-    <inherited>true</inherited>
-    <datatype>Length</datatype>
-    <default>0pt</default>
-    <corresponding use-if-specified="true">
-      <propval>margin-<wmrel2abs dir="END"/></propval>
-      <propexpr>
-      <propval>margin-<wmrel2abs dir="END"/></propval>+
-      <propval>padding-<wmrel2abs dir="END"/></propval>+
-      <propval>border-<wmrel2abs dir="END"/>-width</propval>
-      </propexpr>
-    </corresponding>
-  </property>
-
-<!-- Common Margin Properties-Inline -->
-
-  <property>
-    <name>space-end</name>
-    <use-generic>GenericSpace</use-generic>
-  </property>
-  <property>
-    <name>space-start</name>
-    <use-generic>GenericSpace</use-generic>
-  </property>
-
-<!-- Common Relative Position Properties -->
-
-  <property>
-    <name>relative-position</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>static</default>
-  </property>
-
-<!-- Area Alignment Properties -->
-
-  <property>
-    <name>alignment-adjust</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>alignment-baseline</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>baseline-shift</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-      <enumeration>
-        <value const="BASELINE">baseline</value>
-        <value const="SUB">sub</value>
-        <value const="SUPER">super</value>
-      </enumeration>
-    <default>baseline</default>
-  </property>
-  <property>
-    <name>display-align</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="BEFORE">before</value>
-        <value const="AFTER">after</value>
-        <value const="CENTER">center</value>
-        <value const="AUTO">auto</value>
-      </enumeration>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>dominant-baseline</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>relative-align</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="BEFORE">before</value>
-        <value const="BASELINE">after</value>
-      </enumeration>
-    <default>before</default>
-  </property>
-
-<!-- Area Dimension Properties -->
-
-  <property>
-    <name>block-progression-dimension</name>
-    <inherited>false</inherited>
-    <datatype>LengthRange</datatype>
-    <corresponding use-if-specified="true">
-      <propval><wmrel2abs dir="BLOCKPROGDIM"/></propval>
-    </corresponding>
-    <compound>
-      <subproperty set-by-shorthand="true">
-        <name>minimum</name>
-        <datatype>Length</datatype>
-        <default>auto</default>
-        <auto-ok/>
-        <percent-ok base="CONTAINING_BOX"/>
-        <corresponding>
-          <propval>min-<wmrel2abs dir="BLOCKPROGDIM"/></propval>
-        </corresponding>>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>optimum</name>
-        <datatype>Length</datatype>
-        <default>auto</default>
-        <auto-ok/>
-        <percent-ok base="CONTAINING_BOX"/>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>maximum</name>
-        <datatype>Length</datatype>
-        <auto-ok/>
-        <default>auto</default>
-        <percent-ok base="CONTAINING_BOX"/>
-        <corresponding>
-          <propval>max-<wmrel2abs dir="BLOCKPROGDIM"/></propval>
-        </corresponding>>
-      </subproperty>
-    </compound>
-  </property>
-  <property>
-    <name>content-height</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <auto-ok/>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>content-width</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <auto-ok/>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>height</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <auto-ok/>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>inline-progression-dimension</name>
-    <inherited>false</inherited>
-    <datatype>LengthRange</datatype>
-    <corresponding use-if-specified="true">
-      <propval><wmrel2abs dir="INLINEPROGDIM"/></propval>
-    </corresponding>
-    <compound>
-      <subproperty set-by-shorthand="true">
-        <name>minimum</name>
-        <datatype>Length</datatype>
-        <default>auto</default>
-        <auto-ok/>
-        <percent-ok base="CONTAINING_BOX"/>
-        <corresponding>
-          <propval>min-<wmrel2abs dir="INLINEPROGDIM"/></propval>
-        </corresponding>>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>optimum</name>
-        <datatype>Length</datatype>
-        <default>auto</default>
-        <auto-ok/>
-        <percent-ok base="CONTAINING_BOX"/>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>maximum</name>
-        <datatype>Length</datatype>
-        <auto-ok/>
-        <default>auto</default>
-        <percent-ok base="CONTAINING_BOX"/>
-        <corresponding>
-          <propval>max-<wmrel2abs dir="INLINEPROGDIM"/></propval>
-        </corresponding>>
-      </subproperty>
-    </compound>
-  </property>  <property>
-    <name>max-height</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>max-width</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>min-height</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>min-width</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>scaling</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="UNIFORM">uniform</value>
-        <value const="NON_UNIFORM">non-uniform</value>
-      </enumeration>
-    <default>uniform</default>
-  </property>
-  <property>
-    <name>scaling-method</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>width</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <auto-ok/>
-    <percent-ok base="CONTAINING_BOX"/>
-    <default>auto</default>
-  </property>
-
-<!-- Block and Line-related Properties -->
-
-  <property>
-    <name>hyphenation-keep</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>hyphenation-ladder-count</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>no-limit</default>
-  </property>
-  <property>
-    <name>last-line-end-indent</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>line-height</name>
-    <inherited type="specified">true</inherited>
-    <datatype>Length</datatype>
-    <default contextdep="true">normal</default>
-    <keyword-equiv match="normal">1.2em</keyword-equiv>
-    <datatype-conversion from-type="Number" varname="numval">
-    new PercentLength(numval.doubleValue(),
-         getPercentBase(fo,propertyList))</datatype-conversion>
-    <!-- percent refers to font size -->
-    <percent-ok base="FONTSIZE"/>
-  </property>
-  <property>
-    <name>line-height-shift-adjustment</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>consider-shifts</default>
-  </property>
-  <property>
-    <name>line-stacking-strategy</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>line-height</default>
-  </property>
-  <property>
-    <name>linefeed-treatment</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="IGNORE">ignore</value>
-        <value const="PRESERVE">preserve</value>
-        <value const="TREAT_AS_SPACE">treat-as-space</value>
-        <value const="TREAT_AS_ZERO_WIDTH_SPACE">treat-as-zero-width-space</value>
-      </enumeration>
-    <default>treat-as-space</default>
-  </property>
-  <property>
-    <name>space-treatment</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>preserve</default>
-  </property>
-  <property>
-    <name>text-align</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-<!-- Note: both 'end' and 'right' are mapped to END -->
-<!--       both 'start' and 'left' are mapped to START -->
-      <enumeration>
-        <value const="CENTER">center</value>
-        <value const="END">end right</value>
-        <value const="START">start left</value>
-        <value const="JUSTIFY">justify</value>
-      </enumeration>
-    <default>start</default>
-  </property>
-  <property>
-    <name>text-align-last</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="CENTER">center</value>
-        <value const="END">end</value>
-        <value const="START">start</value>
-        <value const="JUSTIFY">justify</value>
-      </enumeration>
-    <default>start</default>
-    <derive from="text-align">
-      <if match="TextAlign.JUSTIFY">START</if>
-      <if match="TextAlign.END">END</if>
-      <if match="TextAlign.START">START</if>
-      <if match="TextAlign.CENTER">CENTER</if>
-    </derive>
-  </property>
-  <property>
-    <name>text-indent</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>white-space-collapse</name>
-    <inherited>true</inherited>
-    <use-generic>GenericBoolean</use-generic>
-    <default>true</default>
-  </property>
-  <property>
-    <name>wrap-option</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="WRAP">wrap</value>
-        <value const="NO_WRAP">no-wrap</value>
-      </enumeration>
-    <default>wrap</default>
-  </property>
-
-<!-- Character Properties -->
-
-  <property>
-    <name>character</name>
-    <class-name>Character</class-name>
-    <inherited>false</inherited>
-    <datatype>Character</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>letter-spacing</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>normal</default>
-  </property>
-  <property>
-    <name>suppress-at-line-break</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-   <property>
-    <name>text-decoration</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="NONE">none</value>
-        <value const="UNDERLINE">underline</value>
-        <value const="OVERLINE">overline</value>
-        <value const="LINE_THROUGH">line-through</value>
-        <value const="BLINK">blink</value>
-        <value const="NO_UNDERLINE">no-underline</value>
-        <value const="NO_OVERLINE">no-overline</value>
-        <value const="NO_LINE_THROUGH">no-line-through</value>
-        <value const="NO_BLINK">no-blink</value>
-      </enumeration>
-    <default>none</default>
-  </property>
-  <property>
-    <name>text-shadow</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>text-transform</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-    <enumeration>
-      <value const="NONE">none</value>
-      <value const="CAPITALIZE">capitalize</value>
-      <value const="UPPERCASE">uppercase</value>
-      <value const="LOWERCASE">lowercase</value>
-    </enumeration>
-    <default>none</default>
-  </property>
-  <property>
-    <name>treat-as-word-space</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>word-spacing</name>
-    <inherited>true</inherited>
-    <use-generic>GenericSpace</use-generic>
-    <default subproperty="precedence">force</default>
-    <default subproperty="conditionality">discard</default>
-    <default>0pt</default>
-    <!-- <default>normal</default> -->
-  </property>
-
-<!-- Color-related Properties -->
-
-  <property>
-    <name>color</name>
-    <inherited>true</inherited>
-    <use-generic>GenericColor</use-generic>
-    <default>black</default>
-  </property>
-  <property>
-    <name>color-profile-name</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>rendering-intent</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="AUTO">auto</value>
-        <value const="PERCEPTUAL">perceptual</value>
-        <value const="RELATIVE_COLOMETRIC">relative-colorimetric</value>
-        <value const="SATURATION">saturation</value>
-        <value const="ABSOLUTE_COLORMETRIC">absolute-colorimetric</value>
-      </enumeration>
-    <default>auto</default>
-  </property>
-
-<!-- Float-related Properties -->
-
-  <property>
-    <name>clear</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>float</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-
-<!-- Keeps and Breaks Properties -->
-
-  <property>
-    <name>break-after</name>
-    <use-generic>GenericBreak</use-generic>
-  </property>
-  <property>
-    <name>break-before</name>
-    <use-generic>GenericBreak</use-generic>
-  </property>
-  <property>
-    <name>keep-together</name>
-    <inherited>false</inherited>
-    <use-generic>GenericKeep</use-generic>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>keep-with-next</name>
-    <inherited>false</inherited>
-    <use-generic>GenericKeep</use-generic>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>keep-with-previous</name>
-    <inherited>false</inherited>
-    <use-generic>GenericKeep</use-generic>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>orphans</name>
-    <inherited>true</inherited>
-    <datatype>Number</datatype>
-    <default>2</default>
-  </property>
-  <property>
-    <name>widows</name>
-    <inherited>true</inherited>
-    <datatype>Number</datatype>
-    <default>2</default>
-  </property>
-
-<!-- Layout-related Properties -->
-
-  <property>
-    <name>clip</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>overflow</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="VISIBLE">visible</value>
-        <value const="HIDDEN">hidden</value>
-        <value const="SCROLL">scroll</value>
-        <value const="ERROR_IF_OVERFLOW">error-if-overflow</value>
-        <value const="AUTO">auto</value>
-      </enumeration>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>reference-orientation</name>
-    <inherited>true</inherited>
-    <datatype>Number</datatype>
-    <default>0</default>
-  </property>
-  <property>
-  <name>span</name>
-  <inherited>false</inherited>
-    <datatype>Enum</datatype>
-    <enumeration>
-        <value const="NONE">none</value>
-        <value const="ALL">all</value>
-      </enumeration>
-  <default>none</default>
-   </property>
-
-<!-- Leader and Rule Properties -->
-
-  <property>
-    <name>leader-alignment</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="NONE">none</value>
-        <value const="REFERENCE_AREA">reference-area</value>
-        <value const="PAGE">page</value>
-      </enumeration>
-    <default>none</default>
-  </property>
-  <property>
-  <name>leader-pattern</name>
-  <inherited>true</inherited>
-  <datatype>Enum</datatype>
-      <enumeration>
-        <value const="SPACE">space</value>
-        <value const="RULE">rule</value>
-        <value const="DOTS">dots</value>
-        <value const="USECONTENT">use-content</value>
-      </enumeration>
-  <default>space</default>
-  </property>
-  <property>
-    <name>leader-pattern-width</name>
-    <class-name>LeaderPatternWidth</class-name>
-    <inherited>true</inherited>
-    <datatype>Length</datatype>
-    <default contextdep="true">use-font-metrics</default>
-    <keyword-equiv match="use-font-metrics">0pt</keyword-equiv>
-    <percent-ok base="CONTAINING_BOX"/>
-
-   </property>
-  <property>
-  <name>leader-length</name>
-  <inherited>true</inherited>
-  <datatype>LengthRange</datatype>
-  <percent-ok base="CONTAINING_BOX"/>
-    <compound>
-      <subproperty set-by-shorthand="true">
-        <name>minimum</name>
-        <datatype>Length</datatype>
-  <default>0pt</default>
-  <percent-ok base="CONTAINING_BOX"/>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>optimum</name>
-        <datatype>Length</datatype>
-  <default>12.0pt</default>
-  <percent-ok base="CONTAINING_BOX"/>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>maximum</name>
-        <datatype>Length</datatype>
-  <default contextdep="true">100%</default>
-  <percent-ok base="CONTAINING_BOX"/>
-      </subproperty>
-    </compound>
-   </property>
-  <property>
-  <name>rule-style</name>
-  <inherited>true</inherited>
-  <datatype>Enum</datatype>
-      <enumeration>
-        <value const="NONE">none</value>
-        <value const="DOTTED">dotted</value>
-        <value const="DASHED">dashed</value>
-        <value const="SOLID">solid</value>
-        <value const="DOUBLE">double</value>
-        <value const="GROOVE">groove</value>
-        <value const="RIDGE">ridge</value>
-      </enumeration>
-  <default>solid</default>
-  </property>
-  <property>
-    <name>rule-thickness</name>
-    <inherited>true</inherited>
-    <datatype>Length</datatype>
-    <default>1.0pt</default>
-  </property>
-
-<!-- Properties for Dynamic Effects Formatting Objects -->
-
-  <property>
-    <name>active-state</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>auto-restore</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>false</default>
-  </property>
-  <property>
-    <name>case-name</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>case-title</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>destination-placement-offset</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>external-destination</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>indicate-destination</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>false</default>
-  </property>
-  <property>
-    <name>internal-destination</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>show-destination</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>replace</default>
-  </property>
-  <property>
-    <name>starting-state</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>show</default>
-  </property>
-  <property>
-    <name>switch-to</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>xsl-any</default>
-  </property>
-  <property>
-    <name>target-presentation-context</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>use-target-processing-context</default>
-  </property>
-  <property>
-    <name>target-processing-context</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>document-root</default>
-  </property>
-  <property>
-    <name>target-stylesheet</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>use-normal-stylesheet</default>
-  </property>
-
-<!-- Properties for Markers -->
-
-  <property>
-    <name>marker-class-name</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>retrieve-class-name</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>retrieve-position</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="FSWP">first-starting-within-page</value>
-        <value const="FIC">first-including-carryover</value>
-        <value const="LSWP">last-starting-within-page</value>
-        <value const="LEWP">last-ending-within-page</value>
-      </enumeration>
-    <default>first-starting-within-page</default>
-  </property>
-  <property>
-    <name>retrieve-boundary</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="PAGE">page</value>
-        <value const="PAGE_SEQUENCE">page-sequence</value>
-        <value const="DOCUMENT">document</value>
-      </enumeration>
-    <default>page-sequence</default>
-  </property>
-
-<!-- Properties for Number to String Conversion -->
-
-  <property>
-    <name>format</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default>1</default>
-  </property>
-  <property>
-    <name>grouping-separator</name>
-    <inherited>false</inherited>
-    <datatype>Character</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>grouping-size</name>
-    <inherited>false</inherited>
-    <datatype>Number</datatype>
-    <!-- 0 means no grouping -->
-    <default>0</default>
-  </property>
-  <property>
-    <name>letter-value</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="ALPHABETIC">alphabetic</value>
-        <value const="TRADITIONAL">traditional</value>
-        <value const="AUTO">auto</value>
-      </enumeration>
-    <default>auto</default>
-  </property>
-
-<!-- Pagination and Layout Properties -->
-
-  <property>
-  <name>blank-or-not-blank</name>
-  <inherited>false</inherited>
-  <datatype>Enum</datatype>
-      <enumeration>
-        <value const="BLANK">blank</value>
-        <value const="NOT_BLANK">not-blank</value>
-        <value const="ANY">any</value>
-      </enumeration>
-  <default>any</default>
-   </property>
-  <property>
-  <name>column-count</name>
-  <inherited>false</inherited>
-  <datatype>Number</datatype>
-  <default>1</default>
-   </property>
-  <property>
-  <name>column-gap</name>
-  <inherited>false</inherited>
-  <datatype>Length</datatype>
-  <auto-ok/>
-  <default>0.25in</default>
-   </property>
-  <property>
-    <name>extent</name>
-    <inherited>true</inherited>
-    <datatype>Length</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>flow-name</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>force-page-count</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="EVEN">even</value>
-        <value const="ODD">odd</value>
-        <value const="END_ON_EVEN">end-on-even</value>
-        <value const="END_ON_ODD">end-on-odd</value>
-        <value const="NO_FORCE">no-force</value>
-        <value const="AUTO">auto</value>
-      </enumeration>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>initial-page-number</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>master-name</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>master-reference</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default></default>
-  </property>
-  <property>
-  <name>maximum-repeats</name>
-  <inherited>false</inherited>
-  <datatype>String</datatype>
-  <default>no-limit</default>
-   </property>
-  <property>
-    <name>media-usage</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-  <name>odd-or-even</name>
-  <inherited>false</inherited>
-  <datatype>Enum</datatype>
-      <enumeration>
-        <value const="ODD">odd</value>
-        <value const="EVEN">even</value>
-        <value const="ANY">any</value>
-      </enumeration>
-  <default>any</default>
-   </property>
-  <property>
-    <name>page-height</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <auto-ok/>
-    <default>11in</default>
-  </property>
-  <property>
-  <name>page-position</name>
-  <inherited>false</inherited>
-  <datatype>Enum</datatype>
-      <enumeration>
-        <value const="FIRST">first</value>
-        <value const="LAST">last</value>
-        <value const="REST">rest</value>
-        <value const="ANY">any</value>
-      </enumeration>
-  <default>any</default>
-   </property>
-  <property>
-    <name>page-width</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <auto-ok/>
-    <default>8in</default>
-  </property>
-  <property>
-    <name>precedence</name>
-    <class-name>Precedence</class-name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="TRUE">true</value>
-        <value const="FALSE">false</value>
-      </enumeration>
-    <default>false</default>
-  </property>
-  <property>
-    <name>region-name</name>
-    <class-name>RegionName</class-name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default></default>
-  </property>
-
-<!-- Table Properties -->
-
-  <property>
-    <name>border-after-precedence</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>border-before-precedence</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>border-collapse</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-    <default>collapse</default>
-    <enumeration>
-      <value const="SEPARATE">separate</value>
-      <value const="COLLAPSE">collapse</value>
-    </enumeration>
-  </property>
-  <property>
-    <name>border-end-precedence</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>border-separation</name>
-    <inherited>true</inherited>
-    <datatype>LengthPair</datatype>
-    <compound>
-      <subproperty set-by-shorthand="true">
-        <name>block-progression-direction</name>
-        <datatype>Length</datatype>
-        <default>0pt</default>
-      </subproperty>
-      <subproperty set-by-shorthand="true">
-        <name>inline-progression-direction</name>
-        <datatype>Length</datatype>
-        <default>0pt</default>
-      </subproperty>
-    </compound>
-  </property>
-  <property>
-    <name>border-start-precedence</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>caption-side</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="BEFORE">before</value>
-        <value const="AFTER">after</value>
-        <value const="START">start</value>
-        <value const="END">end</value>
-        <value const="TOP">top</value>
-        <value const="BOTTOM">bottom</value>
-        <value const="LEFT">left</value>
-        <value const="RIGHT">right</value>
-      </enumeration>
-    <default>before</default>
-  </property>
-  <property>
-    <name>column-number</name>
-    <inherited>false</inherited>
-    <datatype>Number</datatype>
-    <default>0</default>
-  </property>
-  <property>
-    <name>column-width</name>
-    <inherited>false</inherited>
-    <datatype>Length</datatype>
-    <default contextdep="true">proportional-column-width(1)</default>
-  </property>
-  <property>
-    <name>empty-cells</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>show</default>
-  </property>
-  <property>
-    <name>ends-row</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>false</default>
-  </property>
-  <property>
-    <name>number-columns-repeated</name>
-    <inherited>false</inherited>
-    <datatype>Number</datatype>
-    <default>1</default>
-  </property>
-  <property>
-    <name>number-columns-spanned</name>
-    <inherited>false</inherited>
-    <datatype>Number</datatype>
-    <default>1</default>
-  </property>
-  <property>
-    <name>number-rows-spanned</name>
-    <inherited>false</inherited>
-    <datatype>Number</datatype>
-    <default>1</default>
-  </property>
-  <property>
-    <name>starts-row</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>false</default>
-  </property>
-  <property>
-    <name>table-layout</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-    <default>auto</default>
-    <enumeration>
-      <value const="AUTO">auto</value>
-      <value const="FIXED">fixed</value>
-    </enumeration>  </property>
-  <property>
-    <name>table-omit-footer-at-break</name>
-    <inherited>false</inherited>
-    <use-generic>GenericBoolean</use-generic>
-    <default>false</default>
-  </property>
-  <property>
-    <name>table-omit-header-at-break</name>
-    <inherited>false</inherited>
-    <use-generic>GenericBoolean</use-generic>
-    <default>false</default>
-  </property>
-
-<!-- Writing-mode-related Properties -->
-
-  <property>
-    <name>direction</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>ltr</default>
-  </property>
-  <property>
-    <name>glyph-orientation-horizontal</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>0deg</default>
-  </property>
-  <property>
-    <name>glyph-orientation-vertical</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>text-altitude</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>use-font-metrics</default>
-  </property>
-  <property>
-    <name>text-depth</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>use-font-metrics</default>
-  </property>
-  <property>
-    <name>unicode-bidi</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>normal</default>
-  </property>
-  <property>
-    <name>writing-mode</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-    <default>lr-tb</default>
-    <enumeration>
-      <value const="LR_TB">lr-tb</value>
-      <value const="RL_TB">rl-tb</value>
-      <value const="TB_RL">tb-rl</value>
-    </enumeration>
-  </property>
-
-<!-- Miscellaneous Properties -->
-
-  <property>
-    <name>content-type</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-  <name>id</name>
-  <inherited>false</inherited>
-  <datatype>String</datatype>
-  <default></default>
-   </property>
-  <property>
-    <name>provisional-label-separation</name>
-    <inherited>true</inherited>
-    <datatype>Length</datatype>
-    <default>6pt</default>
-  </property>
-  <property>
-    <name>provisional-distance-between-starts</name>
-    <inherited>true</inherited>
-    <datatype>Length</datatype>
-    <default>24pt</default>
-  </property>
-  <property>
-   <name>ref-id</name>
-  <inherited>false</inherited>
-  <datatype>String</datatype>
-  <default></default>
-  </property>
-  <property>
-    <name>score-spaces</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>true</default>
-  </property>
-  <property>
-    <name>src</name>
-    <inherited>false</inherited>
-    <datatype>String</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>visibility</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>visible</default>
-  </property>
-  <property>
-    <name>z-index</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-
-<!-- Shorthand Properties -->
-
-  <property>
-    <name>background</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>none</default>
-  </property>
-  <property>
-    <name>background-position</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>0%</default>
-  </property>
-  <property>
-    <name>border</name>
-    <inherited>false</inherited>
-    <datatype>List</datatype>
-    <datatype-parser>GenericShorthandParser</datatype-parser>
-  </property>
-  <property>
-    <name>border-bottom</name>
-    <inherited>false</inherited>
-    <datatype>List</datatype>
-    <datatype-parser>GenericShorthandParser</datatype-parser>
-  </property>
-  <property>
-    <name>border-color</name>
-    <inherited>false</inherited>
-    <datatype>List</datatype>
-    <datatype-parser>BoxPropShorthandParser</datatype-parser>
-  </property>
-  <property>
-    <name>border-left</name>
-    <inherited>false</inherited>
-    <datatype>List</datatype>
-    <datatype-parser>GenericShorthandParser</datatype-parser>
-  </property>
-  <property>
-    <name>border-right</name>
-    <inherited>false</inherited>
-    <datatype>List</datatype>
-    <datatype-parser>GenericShorthandParser</datatype-parser>
-  </property>
-  <property>
-    <name>border-style</name>
-    <inherited>false</inherited>
-    <datatype>List</datatype>
-    <datatype-parser>BoxPropShorthandParser</datatype-parser>
-  </property>
-  <property>
-    <name>border-spacing</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>0pt</default>
-  </property>
-  <property>
-    <name>border-top</name>
-    <inherited>false</inherited>
-    <datatype>List</datatype>
-    <datatype-parser>GenericShorthandParser</datatype-parser>
-  </property>
-  <property>
-    <name>border-width</name>
-    <inherited>false</inherited>
-    <datatype>List</datatype>
-    <datatype-parser>BoxPropShorthandParser</datatype-parser>
-  </property>
-  <property>
-    <name>cue</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>font</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>margin</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>padding</name>
-    <inherited>false</inherited>
-    <datatype>List</datatype>
-    <datatype-parser>BoxPropShorthandParser</datatype-parser>
-  </property>
-  <property>
-    <name>page-break-after</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>page-break-before</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>page-break-inside</name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>pause</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
-  <property>
-    <name>position</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="STATIC">static</value>
-        <value const="RELATIVE">relative</value>
-        <value const="ABSOLUTE">absolute</value>
-        <value const="FIXED">fixed</value>
-      </enumeration>
-    <default>static</default>
-  </property>
-  <property>
-    <name>size</name>
-    <inherited>false</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default>auto</default>
-  </property>
-  <property>
-    <name>vertical-align</name>
-    <inherited>false</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="BASELINE">baseline</value>
-        <value const="MIDDLE">middle</value>
-        <value const="SUB">sub</value>
-        <value const="SUPER">super</value>
-        <value const="TEXT_TOP">text-top</value>
-        <value const="TEXT_BOTTOM">text-bottom</value>
-        <value const="TOP">top</value>
-        <value const="BOTTOM">bottom</value>
-      </enumeration>
-    <default>baseline</default>
-  </property>
-  <property>
-    <name>white-space-treatment</name>
-    <inherited>true</inherited>
-    <datatype>Enum</datatype>
-      <enumeration>
-        <value const="IGNORE">ignore</value>
-        <value const="PRESERVE">preserve</value>
-        <value const="IGNORE_IF_BEFORE_LINEFEED">ignore-if-before-linefeed</value>
-        <value const="IGNORE_IF_AFTER_LINEFEED">ignore-if-after-linefeed</value>
-        <value const="IGNORE_IF_SURROUNDING_LINEFEED">ignore-if-surrounding-linefeed</value>
-      </enumeration>
-    <default>ignore-if-surrounding-linefeed</default>
-  </property>
-  <property>
-    <name>xml:lang</name>
-    <class-name>XMLLang</class-name>
-    <inherited>true</inherited>
-    <datatype>ToBeImplemented</datatype>
-    <default></default>
-  </property>
- </generic-property-list>
-</property-list>
-
diff --git a/src/codegen/glyphlist.xml b/src/codegen/glyphlist.xml
deleted file mode 100644 (file)
index aeb56e2..0000000
+++ /dev/null
@@ -1,1293 +0,0 @@
-<?xml version='1.0'?>
-<!--
-  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$ -->
-<!DOCTYPE glyphlist-set [
-  <!ELEMENT glyphlist-set (glyphlist+)>
-  <!ELEMENT glyphlist (glyph+)>
-  <!ATTLIST glyphlist id ID #REQUIRED>
-  <!ELEMENT glyph EMPTY>
-  <!ATTLIST glyph codepoint CDATA #REQUIRED name CDATA #REQUIRED>
-]>
-<glyphlist-set>
-
-  <!-- This encodes the Adobe Glyph List, version 1.2 (22 Oct 1998),
-       located at http://partners.adobe.com/asn/developer/type/glyphlist.txt
-  -->
-  <glyphlist id='AGL'>
-    <glyph codepoint='0041' name='A'/>
-    <glyph codepoint='00C6' name='AE'/>
-    <glyph codepoint='01FC' name='AEacute'/>
-    <glyph codepoint='F7E6' name='AEsmall'/>
-    <glyph codepoint='00C1' name='Aacute'/>
-    <glyph codepoint='F7E1' name='Aacutesmall'/>
-    <glyph codepoint='0102' name='Abreve'/>
-    <glyph codepoint='00C2' name='Acircumflex'/>
-    <glyph codepoint='F7E2' name='Acircumflexsmall'/>
-    <glyph codepoint='F6C9' name='Acute'/>
-    <glyph codepoint='F7B4' name='Acutesmall'/>
-    <glyph codepoint='00C4' name='Adieresis'/>
-    <glyph codepoint='F7E4' name='Adieresissmall'/>
-    <glyph codepoint='00C0' name='Agrave'/>
-    <glyph codepoint='F7E0' name='Agravesmall'/>
-    <glyph codepoint='0391' name='Alpha'/>
-    <glyph codepoint='0386' name='Alphatonos'/>
-    <glyph codepoint='0100' name='Amacron'/>
-    <glyph codepoint='0104' name='Aogonek'/>
-    <glyph codepoint='00C5' name='Aring'/>
-    <glyph codepoint='01FA' name='Aringacute'/>
-    <glyph codepoint='F7E5' name='Aringsmall'/>
-    <glyph codepoint='F761' name='Asmall'/>
-    <glyph codepoint='00C3' name='Atilde'/>
-    <glyph codepoint='F7E3' name='Atildesmall'/>
-    <glyph codepoint='0042' name='B'/>
-    <glyph codepoint='0392' name='Beta'/>
-    <glyph codepoint='F6F4' name='Brevesmall'/>
-    <glyph codepoint='F762' name='Bsmall'/>
-    <glyph codepoint='0043' name='C'/>
-    <glyph codepoint='0106' name='Cacute'/>
-    <glyph codepoint='F6CA' name='Caron'/>
-    <glyph codepoint='F6F5' name='Caronsmall'/>
-    <glyph codepoint='010C' name='Ccaron'/>
-    <glyph codepoint='00C7' name='Ccedilla'/>
-    <glyph codepoint='F7E7' name='Ccedillasmall'/>
-    <glyph codepoint='0108' name='Ccircumflex'/>
-    <glyph codepoint='010A' name='Cdotaccent'/>
-    <glyph codepoint='F7B8' name='Cedillasmall'/>
-    <glyph codepoint='03A7' name='Chi'/>
-    <glyph codepoint='F6F6' name='Circumflexsmall'/>
-    <glyph codepoint='F763' name='Csmall'/>
-    <glyph codepoint='0044' name='D'/>
-    <glyph codepoint='010E' name='Dcaron'/>
-    <glyph codepoint='0110' name='Dcroat'/>
-    <glyph codepoint='2206' name='Delta'/>
-    <glyph codepoint='0394' name='Delta'/>
-    <glyph codepoint='F6CB' name='Dieresis'/>
-    <glyph codepoint='F6CC' name='DieresisAcute'/>
-    <glyph codepoint='F6CD' name='DieresisGrave'/>
-    <glyph codepoint='F7A8' name='Dieresissmall'/>
-    <glyph codepoint='F6F7' name='Dotaccentsmall'/>
-    <glyph codepoint='F764' name='Dsmall'/>
-    <glyph codepoint='0045' name='E'/>
-    <glyph codepoint='00C9' name='Eacute'/>
-    <glyph codepoint='F7E9' name='Eacutesmall'/>
-    <glyph codepoint='0114' name='Ebreve'/>
-    <glyph codepoint='011A' name='Ecaron'/>
-    <glyph codepoint='00CA' name='Ecircumflex'/>
-    <glyph codepoint='F7EA' name='Ecircumflexsmall'/>
-    <glyph codepoint='00CB' name='Edieresis'/>
-    <glyph codepoint='F7EB' name='Edieresissmall'/>
-    <glyph codepoint='0116' name='Edotaccent'/>
-    <glyph codepoint='00C8' name='Egrave'/>
-    <glyph codepoint='F7E8' name='Egravesmall'/>
-    <glyph codepoint='0112' name='Emacron'/>
-    <glyph codepoint='014A' name='Eng'/>
-    <glyph codepoint='0118' name='Eogonek'/>
-    <glyph codepoint='0395' name='Epsilon'/>
-    <glyph codepoint='0388' name='Epsilontonos'/>
-    <glyph codepoint='F765' name='Esmall'/>
-    <glyph codepoint='0397' name='Eta'/>
-    <glyph codepoint='0389' name='Etatonos'/>
-    <glyph codepoint='00D0' name='Eth'/>
-    <glyph codepoint='F7F0' name='Ethsmall'/>
-    <glyph codepoint='20AC' name='Euro'/>
-    <glyph codepoint='0046' name='F'/>
-    <glyph codepoint='F766' name='Fsmall'/>
-    <glyph codepoint='0047' name='G'/>
-    <glyph codepoint='0393' name='Gamma'/>
-    <glyph codepoint='011E' name='Gbreve'/>
-    <glyph codepoint='01E6' name='Gcaron'/>
-    <glyph codepoint='011C' name='Gcircumflex'/>
-    <glyph codepoint='0122' name='Gcommaaccent'/>
-    <glyph codepoint='0120' name='Gdotaccent'/>
-    <glyph codepoint='F6CE' name='Grave'/>
-    <glyph codepoint='F760' name='Gravesmall'/>
-    <glyph codepoint='F767' name='Gsmall'/>
-    <glyph codepoint='0048' name='H'/>
-    <glyph codepoint='25CF' name='H18533'/>
-    <glyph codepoint='25AA' name='H18543'/>
-    <glyph codepoint='25AB' name='H18551'/>
-    <glyph codepoint='25A1' name='H22073'/>
-    <glyph codepoint='0126' name='Hbar'/>
-    <glyph codepoint='0124' name='Hcircumflex'/>
-    <glyph codepoint='F768' name='Hsmall'/>
-    <glyph codepoint='F6CF' name='Hungarumlaut'/>
-    <glyph codepoint='F6F8' name='Hungarumlautsmall'/>
-    <glyph codepoint='0049' name='I'/>
-    <glyph codepoint='0132' name='IJ'/>
-    <glyph codepoint='00CD' name='Iacute'/>
-    <glyph codepoint='F7ED' name='Iacutesmall'/>
-    <glyph codepoint='012C' name='Ibreve'/>
-    <glyph codepoint='00CE' name='Icircumflex'/>
-    <glyph codepoint='F7EE' name='Icircumflexsmall'/>
-    <glyph codepoint='00CF' name='Idieresis'/>
-    <glyph codepoint='F7EF' name='Idieresissmall'/>
-    <glyph codepoint='0130' name='Idotaccent'/>
-    <glyph codepoint='2111' name='Ifraktur'/>
-    <glyph codepoint='00CC' name='Igrave'/>
-    <glyph codepoint='F7EC' name='Igravesmall'/>
-    <glyph codepoint='012A' name='Imacron'/>
-    <glyph codepoint='012E' name='Iogonek'/>
-    <glyph codepoint='0399' name='Iota'/>
-    <glyph codepoint='03AA' name='Iotadieresis'/>
-    <glyph codepoint='038A' name='Iotatonos'/>
-    <glyph codepoint='F769' name='Ismall'/>
-    <glyph codepoint='0128' name='Itilde'/>
-    <glyph codepoint='004A' name='J'/>
-    <glyph codepoint='0134' name='Jcircumflex'/>
-    <glyph codepoint='F76A' name='Jsmall'/>
-    <glyph codepoint='004B' name='K'/>
-    <glyph codepoint='039A' name='Kappa'/>
-    <glyph codepoint='0136' name='Kcommaaccent'/>
-    <glyph codepoint='F76B' name='Ksmall'/>
-    <glyph codepoint='004C' name='L'/>
-    <glyph codepoint='F6BF' name='LL'/>
-    <glyph codepoint='0139' name='Lacute'/>
-    <glyph codepoint='039B' name='Lambda'/>
-    <glyph codepoint='013D' name='Lcaron'/>
-    <glyph codepoint='013B' name='Lcommaaccent'/>
-    <glyph codepoint='013F' name='Ldot'/>
-    <glyph codepoint='0141' name='Lslash'/>
-    <glyph codepoint='F6F9' name='Lslashsmall'/>
-    <glyph codepoint='F76C' name='Lsmall'/>
-    <glyph codepoint='004D' name='M'/>
-    <glyph codepoint='F6D0' name='Macron'/>
-    <glyph codepoint='F7AF' name='Macronsmall'/>
-    <glyph codepoint='F76D' name='Msmall'/>
-    <glyph codepoint='039C' name='Mu'/>
-    <glyph codepoint='004E' name='N'/>
-    <glyph codepoint='0143' name='Nacute'/>
-    <glyph codepoint='0147' name='Ncaron'/>
-    <glyph codepoint='0145' name='Ncommaaccent'/>
-    <glyph codepoint='F76E' name='Nsmall'/>
-    <glyph codepoint='00D1' name='Ntilde'/>
-    <glyph codepoint='F7F1' name='Ntildesmall'/>
-    <glyph codepoint='039D' name='Nu'/>
-    <glyph codepoint='004F' name='O'/>
-    <glyph codepoint='0152' name='OE'/>
-    <glyph codepoint='F6FA' name='OEsmall'/>
-    <glyph codepoint='00D3' name='Oacute'/>
-    <glyph codepoint='F7F3' name='Oacutesmall'/>
-    <glyph codepoint='014E' name='Obreve'/>
-    <glyph codepoint='00D4' name='Ocircumflex'/>
-    <glyph codepoint='F7F4' name='Ocircumflexsmall'/>
-    <glyph codepoint='00D6' name='Odieresis'/>
-    <glyph codepoint='F7F6' name='Odieresissmall'/>
-    <glyph codepoint='F6FB' name='Ogoneksmall'/>
-    <glyph codepoint='00D2' name='Ograve'/>
-    <glyph codepoint='F7F2' name='Ogravesmall'/>
-    <glyph codepoint='01A0' name='Ohorn'/>
-    <glyph codepoint='0150' name='Ohungarumlaut'/>
-    <glyph codepoint='014C' name='Omacron'/>
-    <glyph codepoint='2126' name='Omega'/>
-    <glyph codepoint='03A9' name='Omega'/>
-    <glyph codepoint='038F' name='Omegatonos'/>
-    <glyph codepoint='039F' name='Omicron'/>
-    <glyph codepoint='038C' name='Omicrontonos'/>
-    <glyph codepoint='00D8' name='Oslash'/>
-    <glyph codepoint='01FE' name='Oslashacute'/>
-    <glyph codepoint='F7F8' name='Oslashsmall'/>
-    <glyph codepoint='F76F' name='Osmall'/>
-    <glyph codepoint='00D5' name='Otilde'/>
-    <glyph codepoint='F7F5' name='Otildesmall'/>
-    <glyph codepoint='0050' name='P'/>
-    <glyph codepoint='03A6' name='Phi'/>
-    <glyph codepoint='03A0' name='Pi'/>
-    <glyph codepoint='03A8' name='Psi'/>
-    <glyph codepoint='F770' name='Psmall'/>
-    <glyph codepoint='0051' name='Q'/>
-    <glyph codepoint='F771' name='Qsmall'/>
-    <glyph codepoint='0052' name='R'/>
-    <glyph codepoint='0154' name='Racute'/>
-    <glyph codepoint='0158' name='Rcaron'/>
-    <glyph codepoint='0156' name='Rcommaaccent'/>
-    <glyph codepoint='211C' name='Rfraktur'/>
-    <glyph codepoint='03A1' name='Rho'/>
-    <glyph codepoint='F6FC' name='Ringsmall'/>
-    <glyph codepoint='F772' name='Rsmall'/>
-    <glyph codepoint='0053' name='S'/>
-    <glyph codepoint='250C' name='SF010000'/>
-    <glyph codepoint='2514' name='SF020000'/>
-    <glyph codepoint='2510' name='SF030000'/>
-    <glyph codepoint='2518' name='SF040000'/>
-    <glyph codepoint='253C' name='SF050000'/>
-    <glyph codepoint='252C' name='SF060000'/>
-    <glyph codepoint='2534' name='SF070000'/>
-    <glyph codepoint='251C' name='SF080000'/>
-    <glyph codepoint='2524' name='SF090000'/>
-    <glyph codepoint='2500' name='SF100000'/>
-    <glyph codepoint='2502' name='SF110000'/>
-    <glyph codepoint='2561' name='SF190000'/>
-    <glyph codepoint='2562' name='SF200000'/>
-    <glyph codepoint='2556' name='SF210000'/>
-    <glyph codepoint='2555' name='SF220000'/>
-    <glyph codepoint='2563' name='SF230000'/>
-    <glyph codepoint='2551' name='SF240000'/>
-    <glyph codepoint='2557' name='SF250000'/>
-    <glyph codepoint='255D' name='SF260000'/>
-    <glyph codepoint='255C' name='SF270000'/>
-    <glyph codepoint='255B' name='SF280000'/>
-    <glyph codepoint='255E' name='SF360000'/>
-    <glyph codepoint='255F' name='SF370000'/>
-    <glyph codepoint='255A' name='SF380000'/>
-    <glyph codepoint='2554' name='SF390000'/>
-    <glyph codepoint='2569' name='SF400000'/>
-    <glyph codepoint='2566' name='SF410000'/>
-    <glyph codepoint='2560' name='SF420000'/>
-    <glyph codepoint='2550' name='SF430000'/>
-    <glyph codepoint='256C' name='SF440000'/>
-    <glyph codepoint='2567' name='SF450000'/>
-    <glyph codepoint='2568' name='SF460000'/>
-    <glyph codepoint='2564' name='SF470000'/>
-    <glyph codepoint='2565' name='SF480000'/>
-    <glyph codepoint='2559' name='SF490000'/>
-    <glyph codepoint='2558' name='SF500000'/>
-    <glyph codepoint='2552' name='SF510000'/>
-    <glyph codepoint='2553' name='SF520000'/>
-    <glyph codepoint='256B' name='SF530000'/>
-    <glyph codepoint='256A' name='SF540000'/>
-    <glyph codepoint='015A' name='Sacute'/>
-    <glyph codepoint='0160' name='Scaron'/>
-    <glyph codepoint='F6FD' name='Scaronsmall'/>
-    <glyph codepoint='015E' name='Scedilla'/>
-    <glyph codepoint='F6C1' name='Scedilla'/>
-    <glyph codepoint='015C' name='Scircumflex'/>
-    <glyph codepoint='0218' name='Scommaaccent'/>
-    <glyph codepoint='03A3' name='Sigma'/>
-    <glyph codepoint='F773' name='Ssmall'/>
-    <glyph codepoint='0054' name='T'/>
-    <glyph codepoint='03A4' name='Tau'/>
-    <glyph codepoint='0166' name='Tbar'/>
-    <glyph codepoint='0164' name='Tcaron'/>
-    <glyph codepoint='0162' name='Tcommaaccent'/>
-    <glyph codepoint='021A' name='Tcommaaccent'/>
-    <glyph codepoint='0398' name='Theta'/>
-    <glyph codepoint='00DE' name='Thorn'/>
-    <glyph codepoint='F7FE' name='Thornsmall'/>
-    <glyph codepoint='F6FE' name='Tildesmall'/>
-    <glyph codepoint='F774' name='Tsmall'/>
-    <glyph codepoint='0055' name='U'/>
-    <glyph codepoint='00DA' name='Uacute'/>
-    <glyph codepoint='F7FA' name='Uacutesmall'/>
-    <glyph codepoint='016C' name='Ubreve'/>
-    <glyph codepoint='00DB' name='Ucircumflex'/>
-    <glyph codepoint='F7FB' name='Ucircumflexsmall'/>
-    <glyph codepoint='00DC' name='Udieresis'/>
-    <glyph codepoint='F7FC' name='Udieresissmall'/>
-    <glyph codepoint='00D9' name='Ugrave'/>
-    <glyph codepoint='F7F9' name='Ugravesmall'/>
-    <glyph codepoint='01AF' name='Uhorn'/>
-    <glyph codepoint='0170' name='Uhungarumlaut'/>
-    <glyph codepoint='016A' name='Umacron'/>
-    <glyph codepoint='0172' name='Uogonek'/>
-    <glyph codepoint='03A5' name='Upsilon'/>
-    <glyph codepoint='03D2' name='Upsilon1'/>
-    <glyph codepoint='03AB' name='Upsilondieresis'/>
-    <glyph codepoint='038E' name='Upsilontonos'/>
-    <glyph codepoint='016E' name='Uring'/>
-    <glyph codepoint='F775' name='Usmall'/>
-    <glyph codepoint='0168' name='Utilde'/>
-    <glyph codepoint='0056' name='V'/>
-    <glyph codepoint='F776' name='Vsmall'/>
-    <glyph codepoint='0057' name='W'/>
-    <glyph codepoint='1E82' name='Wacute'/>
-    <glyph codepoint='0174' name='Wcircumflex'/>
-    <glyph codepoint='1E84' name='Wdieresis'/>
-    <glyph codepoint='1E80' name='Wgrave'/>
-    <glyph codepoint='F777' name='Wsmall'/>
-    <glyph codepoint='0058' name='X'/>
-    <glyph codepoint='039E' name='Xi'/>
-    <glyph codepoint='F778' name='Xsmall'/>
-    <glyph codepoint='0059' name='Y'/>
-    <glyph codepoint='00DD' name='Yacute'/>
-    <glyph codepoint='F7FD' name='Yacutesmall'/>
-    <glyph codepoint='0176' name='Ycircumflex'/>
-    <glyph codepoint='0178' name='Ydieresis'/>
-    <glyph codepoint='F7FF' name='Ydieresissmall'/>
-    <glyph codepoint='1EF2' name='Ygrave'/>
-    <glyph codepoint='F779' name='Ysmall'/>
-    <glyph codepoint='005A' name='Z'/>
-    <glyph codepoint='0179' name='Zacute'/>
-    <glyph codepoint='017D' name='Zcaron'/>
-    <glyph codepoint='F6FF' name='Zcaronsmall'/>
-    <glyph codepoint='017B' name='Zdotaccent'/>
-    <glyph codepoint='0396' name='Zeta'/>
-    <glyph codepoint='F77A' name='Zsmall'/>
-    <glyph codepoint='0061' name='a'/>
-    <glyph codepoint='00E1' name='aacute'/>
-    <glyph codepoint='0103' name='abreve'/>
-    <glyph codepoint='00E2' name='acircumflex'/>
-    <glyph codepoint='00B4' name='acute'/>
-    <glyph codepoint='0301' name='acutecomb'/>
-    <glyph codepoint='00E4' name='adieresis'/>
-    <glyph codepoint='00E6' name='ae'/>
-    <glyph codepoint='01FD' name='aeacute'/>
-    <glyph codepoint='2015' name='afii00208'/>
-    <glyph codepoint='0410' name='afii10017'/>
-    <glyph codepoint='0411' name='afii10018'/>
-    <glyph codepoint='0412' name='afii10019'/>
-    <glyph codepoint='0413' name='afii10020'/>
-    <glyph codepoint='0414' name='afii10021'/>
-    <glyph codepoint='0415' name='afii10022'/>
-    <glyph codepoint='0401' name='afii10023'/>
-    <glyph codepoint='0416' name='afii10024'/>
-    <glyph codepoint='0417' name='afii10025'/>
-    <glyph codepoint='0418' name='afii10026'/>
-    <glyph codepoint='0419' name='afii10027'/>
-    <glyph codepoint='041A' name='afii10028'/>
-    <glyph codepoint='041B' name='afii10029'/>
-    <glyph codepoint='041C' name='afii10030'/>
-    <glyph codepoint='041D' name='afii10031'/>
-    <glyph codepoint='041E' name='afii10032'/>
-    <glyph codepoint='041F' name='afii10033'/>
-    <glyph codepoint='0420' name='afii10034'/>
-    <glyph codepoint='0421' name='afii10035'/>
-    <glyph codepoint='0422' name='afii10036'/>
-    <glyph codepoint='0423' name='afii10037'/>
-    <glyph codepoint='0424' name='afii10038'/>
-    <glyph codepoint='0425' name='afii10039'/>
-    <glyph codepoint='0426' name='afii10040'/>
-    <glyph codepoint='0427' name='afii10041'/>
-    <glyph codepoint='0428' name='afii10042'/>
-    <glyph codepoint='0429' name='afii10043'/>
-    <glyph codepoint='042A' name='afii10044'/>
-    <glyph codepoint='042B' name='afii10045'/>
-    <glyph codepoint='042C' name='afii10046'/>
-    <glyph codepoint='042D' name='afii10047'/>
-    <glyph codepoint='042E' name='afii10048'/>
-    <glyph codepoint='042F' name='afii10049'/>
-    <glyph codepoint='0490' name='afii10050'/>
-    <glyph codepoint='0402' name='afii10051'/>
-    <glyph codepoint='0403' name='afii10052'/>
-    <glyph codepoint='0404' name='afii10053'/>
-    <glyph codepoint='0405' name='afii10054'/>
-    <glyph codepoint='0406' name='afii10055'/>
-    <glyph codepoint='0407' name='afii10056'/>
-    <glyph codepoint='0408' name='afii10057'/>
-    <glyph codepoint='0409' name='afii10058'/>
-    <glyph codepoint='040A' name='afii10059'/>
-    <glyph codepoint='040B' name='afii10060'/>
-    <glyph codepoint='040C' name='afii10061'/>
-    <glyph codepoint='040E' name='afii10062'/>
-    <glyph codepoint='F6C4' name='afii10063'/>
-    <glyph codepoint='F6C5' name='afii10064'/>
-    <glyph codepoint='0430' name='afii10065'/>
-    <glyph codepoint='0431' name='afii10066'/>
-    <glyph codepoint='0432' name='afii10067'/>
-    <glyph codepoint='0433' name='afii10068'/>
-    <glyph codepoint='0434' name='afii10069'/>
-    <glyph codepoint='0435' name='afii10070'/>
-    <glyph codepoint='0451' name='afii10071'/>
-    <glyph codepoint='0436' name='afii10072'/>
-    <glyph codepoint='0437' name='afii10073'/>
-    <glyph codepoint='0438' name='afii10074'/>
-    <glyph codepoint='0439' name='afii10075'/>
-    <glyph codepoint='043A' name='afii10076'/>
-    <glyph codepoint='043B' name='afii10077'/>
-    <glyph codepoint='043C' name='afii10078'/>
-    <glyph codepoint='043D' name='afii10079'/>
-    <glyph codepoint='043E' name='afii10080'/>
-    <glyph codepoint='043F' name='afii10081'/>
-    <glyph codepoint='0440' name='afii10082'/>
-    <glyph codepoint='0441' name='afii10083'/>
-    <glyph codepoint='0442' name='afii10084'/>
-    <glyph codepoint='0443' name='afii10085'/>
-    <glyph codepoint='0444' name='afii10086'/>
-    <glyph codepoint='0445' name='afii10087'/>
-    <glyph codepoint='0446' name='afii10088'/>
-    <glyph codepoint='0447' name='afii10089'/>
-    <glyph codepoint='0448' name='afii10090'/>
-    <glyph codepoint='0449' name='afii10091'/>
-    <glyph codepoint='044A' name='afii10092'/>
-    <glyph codepoint='044B' name='afii10093'/>
-    <glyph codepoint='044C' name='afii10094'/>
-    <glyph codepoint='044D' name='afii10095'/>
-    <glyph codepoint='044E' name='afii10096'/>
-    <glyph codepoint='044F' name='afii10097'/>
-    <glyph codepoint='0491' name='afii10098'/>
-    <glyph codepoint='0452' name='afii10099'/>
-    <glyph codepoint='0453' name='afii10100'/>
-    <glyph codepoint='0454' name='afii10101'/>
-    <glyph codepoint='0455' name='afii10102'/>
-    <glyph codepoint='0456' name='afii10103'/>
-    <glyph codepoint='0457' name='afii10104'/>
-    <glyph codepoint='0458' name='afii10105'/>
-    <glyph codepoint='0459' name='afii10106'/>
-    <glyph codepoint='045A' name='afii10107'/>
-    <glyph codepoint='045B' name='afii10108'/>
-    <glyph codepoint='045C' name='afii10109'/>
-    <glyph codepoint='045E' name='afii10110'/>
-    <glyph codepoint='040F' name='afii10145'/>
-    <glyph codepoint='0462' name='afii10146'/>
-    <glyph codepoint='0472' name='afii10147'/>
-    <glyph codepoint='0474' name='afii10148'/>
-    <glyph codepoint='F6C6' name='afii10192'/>
-    <glyph codepoint='045F' name='afii10193'/>
-    <glyph codepoint='0463' name='afii10194'/>
-    <glyph codepoint='0473' name='afii10195'/>
-    <glyph codepoint='0475' name='afii10196'/>
-    <glyph codepoint='F6C7' name='afii10831'/>
-    <glyph codepoint='F6C8' name='afii10832'/>
-    <glyph codepoint='04D9' name='afii10846'/>
-    <glyph codepoint='200E' name='afii299'/>
-    <glyph codepoint='200F' name='afii300'/>
-    <glyph codepoint='200D' name='afii301'/>
-    <glyph codepoint='066A' name='afii57381'/>
-    <glyph codepoint='060C' name='afii57388'/>
-    <glyph codepoint='0660' name='afii57392'/>
-    <glyph codepoint='0661' name='afii57393'/>
-    <glyph codepoint='0662' name='afii57394'/>
-    <glyph codepoint='0663' name='afii57395'/>
-    <glyph codepoint='0664' name='afii57396'/>
-    <glyph codepoint='0665' name='afii57397'/>
-    <glyph codepoint='0666' name='afii57398'/>
-    <glyph codepoint='0667' name='afii57399'/>
-    <glyph codepoint='0668' name='afii57400'/>
-    <glyph codepoint='0669' name='afii57401'/>
-    <glyph codepoint='061B' name='afii57403'/>
-    <glyph codepoint='061F' name='afii57407'/>
-    <glyph codepoint='0621' name='afii57409'/>
-    <glyph codepoint='0622' name='afii57410'/>
-    <glyph codepoint='0623' name='afii57411'/>
-    <glyph codepoint='0624' name='afii57412'/>
-    <glyph codepoint='0625' name='afii57413'/>
-    <glyph codepoint='0626' name='afii57414'/>
-    <glyph codepoint='0627' name='afii57415'/>
-    <glyph codepoint='0628' name='afii57416'/>
-    <glyph codepoint='0629' name='afii57417'/>
-    <glyph codepoint='062A' name='afii57418'/>
-    <glyph codepoint='062B' name='afii57419'/>
-    <glyph codepoint='062C' name='afii57420'/>
-    <glyph codepoint='062D' name='afii57421'/>
-    <glyph codepoint='062E' name='afii57422'/>
-    <glyph codepoint='062F' name='afii57423'/>
-    <glyph codepoint='0630' name='afii57424'/>
-    <glyph codepoint='0631' name='afii57425'/>
-    <glyph codepoint='0632' name='afii57426'/>
-    <glyph codepoint='0633' name='afii57427'/>
-    <glyph codepoint='0634' name='afii57428'/>
-    <glyph codepoint='0635' name='afii57429'/>
-    <glyph codepoint='0636' name='afii57430'/>
-    <glyph codepoint='0637' name='afii57431'/>
-    <glyph codepoint='0638' name='afii57432'/>
-    <glyph codepoint='0639' name='afii57433'/>
-    <glyph codepoint='063A' name='afii57434'/>
-    <glyph codepoint='0640' name='afii57440'/>
-    <glyph codepoint='0641' name='afii57441'/>
-    <glyph codepoint='0642' name='afii57442'/>
-    <glyph codepoint='0643' name='afii57443'/>
-    <glyph codepoint='0644' name='afii57444'/>
-    <glyph codepoint='0645' name='afii57445'/>
-    <glyph codepoint='0646' name='afii57446'/>
-    <glyph codepoint='0648' name='afii57448'/>
-    <glyph codepoint='0649' name='afii57449'/>
-    <glyph codepoint='064A' name='afii57450'/>
-    <glyph codepoint='064B' name='afii57451'/>
-    <glyph codepoint='064C' name='afii57452'/>
-    <glyph codepoint='064D' name='afii57453'/>
-    <glyph codepoint='064E' name='afii57454'/>
-    <glyph codepoint='064F' name='afii57455'/>
-    <glyph codepoint='0650' name='afii57456'/>
-    <glyph codepoint='0651' name='afii57457'/>
-    <glyph codepoint='0652' name='afii57458'/>
-    <glyph codepoint='0647' name='afii57470'/>
-    <glyph codepoint='06A4' name='afii57505'/>
-    <glyph codepoint='067E' name='afii57506'/>
-    <glyph codepoint='0686' name='afii57507'/>
-    <glyph codepoint='0698' name='afii57508'/>
-    <glyph codepoint='06AF' name='afii57509'/>
-    <glyph codepoint='0679' name='afii57511'/>
-    <glyph codepoint='0688' name='afii57512'/>
-    <glyph codepoint='0691' name='afii57513'/>
-    <glyph codepoint='06BA' name='afii57514'/>
-    <glyph codepoint='06D2' name='afii57519'/>
-    <glyph codepoint='06D5' name='afii57534'/>
-    <glyph codepoint='20AA' name='afii57636'/>
-    <glyph codepoint='05BE' name='afii57645'/>
-    <glyph codepoint='05C3' name='afii57658'/>
-    <glyph codepoint='05D0' name='afii57664'/>
-    <glyph codepoint='05D1' name='afii57665'/>
-    <glyph codepoint='05D2' name='afii57666'/>
-    <glyph codepoint='05D3' name='afii57667'/>
-    <glyph codepoint='05D4' name='afii57668'/>
-    <glyph codepoint='05D5' name='afii57669'/>
-    <glyph codepoint='05D6' name='afii57670'/>
-    <glyph codepoint='05D7' name='afii57671'/>
-    <glyph codepoint='05D8' name='afii57672'/>
-    <glyph codepoint='05D9' name='afii57673'/>
-    <glyph codepoint='05DA' name='afii57674'/>
-    <glyph codepoint='05DB' name='afii57675'/>
-    <glyph codepoint='05DC' name='afii57676'/>
-    <glyph codepoint='05DD' name='afii57677'/>
-    <glyph codepoint='05DE' name='afii57678'/>
-    <glyph codepoint='05DF' name='afii57679'/>
-    <glyph codepoint='05E0' name='afii57680'/>
-    <glyph codepoint='05E1' name='afii57681'/>
-    <glyph codepoint='05E2' name='afii57682'/>
-    <glyph codepoint='05E3' name='afii57683'/>
-    <glyph codepoint='05E4' name='afii57684'/>
-    <glyph codepoint='05E5' name='afii57685'/>
-    <glyph codepoint='05E6' name='afii57686'/>
-    <glyph codepoint='05E7' name='afii57687'/>
-    <glyph codepoint='05E8' name='afii57688'/>
-    <glyph codepoint='05E9' name='afii57689'/>
-    <glyph codepoint='05EA' name='afii57690'/>
-    <glyph codepoint='FB2A' name='afii57694'/>
-    <glyph codepoint='FB2B' name='afii57695'/>
-    <glyph codepoint='FB4B' name='afii57700'/>
-    <glyph codepoint='FB1F' name='afii57705'/>
-    <glyph codepoint='05F0' name='afii57716'/>
-    <glyph codepoint='05F1' name='afii57717'/>
-    <glyph codepoint='05F2' name='afii57718'/>
-    <glyph codepoint='FB35' name='afii57723'/>
-    <glyph codepoint='05B4' name='afii57793'/>
-    <glyph codepoint='05B5' name='afii57794'/>
-    <glyph codepoint='05B6' name='afii57795'/>
-    <glyph codepoint='05BB' name='afii57796'/>
-    <glyph codepoint='05B8' name='afii57797'/>
-    <glyph codepoint='05B7' name='afii57798'/>
-    <glyph codepoint='05B0' name='afii57799'/>
-    <glyph codepoint='05B2' name='afii57800'/>
-    <glyph codepoint='05B1' name='afii57801'/>
-    <glyph codepoint='05B3' name='afii57802'/>
-    <glyph codepoint='05C2' name='afii57803'/>
-    <glyph codepoint='05C1' name='afii57804'/>
-    <glyph codepoint='05B9' name='afii57806'/>
-    <glyph codepoint='05BC' name='afii57807'/>
-    <glyph codepoint='05BD' name='afii57839'/>
-    <glyph codepoint='05BF' name='afii57841'/>
-    <glyph codepoint='05C0' name='afii57842'/>
-    <glyph codepoint='02BC' name='afii57929'/>
-    <glyph codepoint='2105' name='afii61248'/>
-    <glyph codepoint='2113' name='afii61289'/>
-    <glyph codepoint='2116' name='afii61352'/>
-    <glyph codepoint='202C' name='afii61573'/>
-    <glyph codepoint='202D' name='afii61574'/>
-    <glyph codepoint='202E' name='afii61575'/>
-    <glyph codepoint='200C' name='afii61664'/>
-    <glyph codepoint='066D' name='afii63167'/>
-    <glyph codepoint='02BD' name='afii64937'/>
-    <glyph codepoint='00E0' name='agrave'/>
-    <glyph codepoint='2135' name='aleph'/>
-    <glyph codepoint='03B1' name='alpha'/>
-    <glyph codepoint='03AC' name='alphatonos'/>
-    <glyph codepoint='0101' name='amacron'/>
-    <glyph codepoint='0026' name='ampersand'/>
-    <glyph codepoint='F726' name='ampersandsmall'/>
-    <glyph codepoint='2220' name='angle'/>
-    <glyph codepoint='2329' name='angleleft'/>
-    <glyph codepoint='232A' name='angleright'/>
-    <glyph codepoint='0387' name='anoteleia'/>
-    <glyph codepoint='0105' name='aogonek'/>
-    <glyph codepoint='2248' name='approxequal'/>
-    <glyph codepoint='00E5' name='aring'/>
-    <glyph codepoint='01FB' name='aringacute'/>
-    <glyph codepoint='2194' name='arrowboth'/>
-    <glyph codepoint='21D4' name='arrowdblboth'/>
-    <glyph codepoint='21D3' name='arrowdbldown'/>
-    <glyph codepoint='21D0' name='arrowdblleft'/>
-    <glyph codepoint='21D2' name='arrowdblright'/>
-    <glyph codepoint='21D1' name='arrowdblup'/>
-    <glyph codepoint='2193' name='arrowdown'/>
-    <glyph codepoint='F8E7' name='arrowhorizex'/>
-    <glyph codepoint='2190' name='arrowleft'/>
-    <glyph codepoint='2192' name='arrowright'/>
-    <glyph codepoint='2191' name='arrowup'/>
-    <glyph codepoint='2195' name='arrowupdn'/>
-    <glyph codepoint='21A8' name='arrowupdnbse'/>
-    <glyph codepoint='F8E6' name='arrowvertex'/>
-    <glyph codepoint='005E' name='asciicircum'/>
-    <glyph codepoint='007E' name='asciitilde'/>
-    <glyph codepoint='002A' name='asterisk'/>
-    <glyph codepoint='2217' name='asteriskmath'/>
-    <glyph codepoint='F6E9' name='asuperior'/>
-    <glyph codepoint='0040' name='at'/>
-    <glyph codepoint='00E3' name='atilde'/>
-    <glyph codepoint='0062' name='b'/>
-    <glyph codepoint='005C' name='backslash'/>
-    <glyph codepoint='007C' name='bar'/>
-    <glyph codepoint='03B2' name='beta'/>
-    <glyph codepoint='2588' name='block'/>
-    <glyph codepoint='F8F4' name='braceex'/>
-    <glyph codepoint='007B' name='braceleft'/>
-    <glyph codepoint='F8F3' name='braceleftbt'/>
-    <glyph codepoint='F8F2' name='braceleftmid'/>
-    <glyph codepoint='F8F1' name='bracelefttp'/>
-    <glyph codepoint='007D' name='braceright'/>
-    <glyph codepoint='F8FE' name='bracerightbt'/>
-    <glyph codepoint='F8FD' name='bracerightmid'/>
-    <glyph codepoint='F8FC' name='bracerighttp'/>
-    <glyph codepoint='005B' name='bracketleft'/>
-    <glyph codepoint='F8F0' name='bracketleftbt'/>
-    <glyph codepoint='F8EF' name='bracketleftex'/>
-    <glyph codepoint='F8EE' name='bracketlefttp'/>
-    <glyph codepoint='005D' name='bracketright'/>
-    <glyph codepoint='F8FB' name='bracketrightbt'/>
-    <glyph codepoint='F8FA' name='bracketrightex'/>
-    <glyph codepoint='F8F9' name='bracketrighttp'/>
-    <glyph codepoint='02D8' name='breve'/>
-    <glyph codepoint='00A6' name='brokenbar'/>
-    <glyph codepoint='F6EA' name='bsuperior'/>
-    <glyph codepoint='2022' name='bullet'/>
-    <glyph codepoint='0063' name='c'/>
-    <glyph codepoint='0107' name='cacute'/>
-    <glyph codepoint='02C7' name='caron'/>
-    <glyph codepoint='21B5' name='carriagereturn'/>
-    <glyph codepoint='010D' name='ccaron'/>
-    <glyph codepoint='00E7' name='ccedilla'/>
-    <glyph codepoint='0109' name='ccircumflex'/>
-    <glyph codepoint='010B' name='cdotaccent'/>
-    <glyph codepoint='00B8' name='cedilla'/>
-    <glyph codepoint='00A2' name='cent'/>
-    <glyph codepoint='F6DF' name='centinferior'/>
-    <glyph codepoint='F7A2' name='centoldstyle'/>
-    <glyph codepoint='F6E0' name='centsuperior'/>
-    <glyph codepoint='03C7' name='chi'/>
-    <glyph codepoint='25CB' name='circle'/>
-    <glyph codepoint='2297' name='circlemultiply'/>
-    <glyph codepoint='2295' name='circleplus'/>
-    <glyph codepoint='02C6' name='circumflex'/>
-    <glyph codepoint='2663' name='club'/>
-    <glyph codepoint='003A' name='colon'/>
-    <glyph codepoint='20A1' name='colonmonetary'/>
-    <glyph codepoint='002C' name='comma'/>
-    <glyph codepoint='F6C3' name='commaaccent'/>
-    <glyph codepoint='F6E1' name='commainferior'/>
-    <glyph codepoint='F6E2' name='commasuperior'/>
-    <glyph codepoint='2245' name='congruent'/>
-    <glyph codepoint='00A9' name='copyright'/>
-    <glyph codepoint='F8E9' name='copyrightsans'/>
-    <glyph codepoint='F6D9' name='copyrightserif'/>
-    <glyph codepoint='00A4' name='currency'/>
-    <glyph codepoint='F6D1' name='cyrBreve'/>
-    <glyph codepoint='F6D2' name='cyrFlex'/>
-    <glyph codepoint='F6D4' name='cyrbreve'/>
-    <glyph codepoint='F6D5' name='cyrflex'/>
-    <glyph codepoint='0064' name='d'/>
-    <glyph codepoint='2020' name='dagger'/>
-    <glyph codepoint='2021' name='daggerdbl'/>
-    <glyph codepoint='F6D3' name='dblGrave'/>
-    <glyph codepoint='F6D6' name='dblgrave'/>
-    <glyph codepoint='010F' name='dcaron'/>
-    <glyph codepoint='0111' name='dcroat'/>
-    <glyph codepoint='00B0' name='degree'/>
-    <glyph codepoint='03B4' name='delta'/>
-    <glyph codepoint='2666' name='diamond'/>
-    <glyph codepoint='00A8' name='dieresis'/>
-    <glyph codepoint='F6D7' name='dieresisacute'/>
-    <glyph codepoint='F6D8' name='dieresisgrave'/>
-    <glyph codepoint='0385' name='dieresistonos'/>
-    <glyph codepoint='00F7' name='divide'/>
-    <glyph codepoint='2593' name='dkshade'/>
-    <glyph codepoint='2584' name='dnblock'/>
-    <glyph codepoint='0024' name='dollar'/>
-    <glyph codepoint='F6E3' name='dollarinferior'/>
-    <glyph codepoint='F724' name='dollaroldstyle'/>
-    <glyph codepoint='F6E4' name='dollarsuperior'/>
-    <glyph codepoint='20AB' name='dong'/>
-    <glyph codepoint='02D9' name='dotaccent'/>
-    <glyph codepoint='0323' name='dotbelowcomb'/>
-    <glyph codepoint='0131' name='dotlessi'/>
-    <glyph codepoint='F6BE' name='dotlessj'/>
-    <glyph codepoint='22C5' name='dotmath'/>
-    <glyph codepoint='F6EB' name='dsuperior'/>
-    <glyph codepoint='0065' name='e'/>
-    <glyph codepoint='00E9' name='eacute'/>
-    <glyph codepoint='0115' name='ebreve'/>
-    <glyph codepoint='011B' name='ecaron'/>
-    <glyph codepoint='00EA' name='ecircumflex'/>
-    <glyph codepoint='00EB' name='edieresis'/>
-    <glyph codepoint='0117' name='edotaccent'/>
-    <glyph codepoint='00E8' name='egrave'/>
-    <glyph codepoint='0038' name='eight'/>
-    <glyph codepoint='2088' name='eightinferior'/>
-    <glyph codepoint='F738' name='eightoldstyle'/>
-    <glyph codepoint='2078' name='eightsuperior'/>
-    <glyph codepoint='2208' name='element'/>
-    <glyph codepoint='2026' name='ellipsis'/>
-    <glyph codepoint='0113' name='emacron'/>
-    <glyph codepoint='2014' name='emdash'/>
-    <glyph codepoint='2205' name='emptyset'/>
-    <glyph codepoint='2013' name='endash'/>
-    <glyph codepoint='014B' name='eng'/>
-    <glyph codepoint='0119' name='eogonek'/>
-    <glyph codepoint='03B5' name='epsilon'/>
-    <glyph codepoint='03AD' name='epsilontonos'/>
-    <glyph codepoint='003D' name='equal'/>
-    <glyph codepoint='2261' name='equivalence'/>
-    <glyph codepoint='212E' name='estimated'/>
-    <glyph codepoint='F6EC' name='esuperior'/>
-    <glyph codepoint='03B7' name='eta'/>
-    <glyph codepoint='03AE' name='etatonos'/>
-    <glyph codepoint='00F0' name='eth'/>
-    <glyph codepoint='0021' name='exclam'/>
-    <glyph codepoint='203C' name='exclamdbl'/>
-    <glyph codepoint='00A1' name='exclamdown'/>
-    <glyph codepoint='F7A1' name='exclamdownsmall'/>
-    <glyph codepoint='F721' name='exclamsmall'/>
-    <glyph codepoint='2203' name='existential'/>
-    <glyph codepoint='0066' name='f'/>
-    <glyph codepoint='2640' name='female'/>
-    <glyph codepoint='FB00' name='ff'/>
-    <glyph codepoint='FB03' name='ffi'/>
-    <glyph codepoint='FB04' name='ffl'/>
-    <glyph codepoint='FB01' name='fi'/>
-    <glyph codepoint='2012' name='figuredash'/>
-    <glyph codepoint='25A0' name='filledbox'/>
-    <glyph codepoint='25AC' name='filledrect'/>
-    <glyph codepoint='0035' name='five'/>
-    <glyph codepoint='215D' name='fiveeighths'/>
-    <glyph codepoint='2085' name='fiveinferior'/>
-    <glyph codepoint='F735' name='fiveoldstyle'/>
-    <glyph codepoint='2075' name='fivesuperior'/>
-    <glyph codepoint='FB02' name='fl'/>
-    <glyph codepoint='0192' name='florin'/>
-    <glyph codepoint='0034' name='four'/>
-    <glyph codepoint='2084' name='fourinferior'/>
-    <glyph codepoint='F734' name='fouroldstyle'/>
-    <glyph codepoint='2074' name='foursuperior'/>
-    <glyph codepoint='2044' name='fraction'/>
-    <glyph codepoint='2215' name='fraction'/>
-    <glyph codepoint='20A3' name='franc'/>
-    <glyph codepoint='0067' name='g'/>
-    <glyph codepoint='03B3' name='gamma'/>
-    <glyph codepoint='011F' name='gbreve'/>
-    <glyph codepoint='01E7' name='gcaron'/>
-    <glyph codepoint='011D' name='gcircumflex'/>
-    <glyph codepoint='0123' name='gcommaaccent'/>
-    <glyph codepoint='0121' name='gdotaccent'/>
-    <glyph codepoint='00DF' name='germandbls'/>
-    <glyph codepoint='2207' name='gradient'/>
-    <glyph codepoint='0060' name='grave'/>
-    <glyph codepoint='0300' name='gravecomb'/>
-    <glyph codepoint='003E' name='greater'/>
-    <glyph codepoint='2265' name='greaterequal'/>
-    <glyph codepoint='00AB' name='guillemotleft'/>
-    <glyph codepoint='00BB' name='guillemotright'/>
-    <glyph codepoint='2039' name='guilsinglleft'/>
-    <glyph codepoint='203A' name='guilsinglright'/>
-    <glyph codepoint='0068' name='h'/>
-    <glyph codepoint='0127' name='hbar'/>
-    <glyph codepoint='0125' name='hcircumflex'/>
-    <glyph codepoint='2665' name='heart'/>
-    <glyph codepoint='0309' name='hookabovecomb'/>
-    <glyph codepoint='2302' name='house'/>
-    <glyph codepoint='02DD' name='hungarumlaut'/>
-    <glyph codepoint='002D' name='hyphen'/>
-    <glyph codepoint='00AD' name='hyphen'/>
-    <glyph codepoint='F6E5' name='hypheninferior'/>
-    <glyph codepoint='F6E6' name='hyphensuperior'/>
-    <glyph codepoint='0069' name='i'/>
-    <glyph codepoint='00ED' name='iacute'/>
-    <glyph codepoint='012D' name='ibreve'/>
-    <glyph codepoint='00EE' name='icircumflex'/>
-    <glyph codepoint='00EF' name='idieresis'/>
-    <glyph codepoint='00EC' name='igrave'/>
-    <glyph codepoint='0133' name='ij'/>
-    <glyph codepoint='012B' name='imacron'/>
-    <glyph codepoint='221E' name='infinity'/>
-    <glyph codepoint='222B' name='integral'/>
-    <glyph codepoint='2321' name='integralbt'/>
-    <glyph codepoint='F8F5' name='integralex'/>
-    <glyph codepoint='2320' name='integraltp'/>
-    <glyph codepoint='2229' name='intersection'/>
-    <glyph codepoint='25D8' name='invbullet'/>
-    <glyph codepoint='25D9' name='invcircle'/>
-    <glyph codepoint='263B' name='invsmileface'/>
-    <glyph codepoint='012F' name='iogonek'/>
-    <glyph codepoint='03B9' name='iota'/>
-    <glyph codepoint='03CA' name='iotadieresis'/>
-    <glyph codepoint='0390' name='iotadieresistonos'/>
-    <glyph codepoint='03AF' name='iotatonos'/>
-    <glyph codepoint='F6ED' name='isuperior'/>
-    <glyph codepoint='0129' name='itilde'/>
-    <glyph codepoint='006A' name='j'/>
-    <glyph codepoint='0135' name='jcircumflex'/>
-    <glyph codepoint='006B' name='k'/>
-    <glyph codepoint='03BA' name='kappa'/>
-    <glyph codepoint='0137' name='kcommaaccent'/>
-    <glyph codepoint='0138' name='kgreenlandic'/>
-    <glyph codepoint='006C' name='l'/>
-    <glyph codepoint='013A' name='lacute'/>
-    <glyph codepoint='03BB' name='lambda'/>
-    <glyph codepoint='013E' name='lcaron'/>
-    <glyph codepoint='013C' name='lcommaaccent'/>
-    <glyph codepoint='0140' name='ldot'/>
-    <glyph codepoint='003C' name='less'/>
-    <glyph codepoint='2264' name='lessequal'/>
-    <glyph codepoint='258C' name='lfblock'/>
-    <glyph codepoint='20A4' name='lira'/>
-    <glyph codepoint='F6C0' name='ll'/>
-    <glyph codepoint='2227' name='logicaland'/>
-    <glyph codepoint='00AC' name='logicalnot'/>
-    <glyph codepoint='2228' name='logicalor'/>
-    <glyph codepoint='017F' name='longs'/>
-    <glyph codepoint='25CA' name='lozenge'/>
-    <glyph codepoint='0142' name='lslash'/>
-    <glyph codepoint='F6EE' name='lsuperior'/>
-    <glyph codepoint='2591' name='ltshade'/>
-    <glyph codepoint='006D' name='m'/>
-    <glyph codepoint='00AF' name='macron'/>
-    <glyph codepoint='02C9' name='macron'/>
-    <glyph codepoint='2642' name='male'/>
-    <glyph codepoint='2212' name='minus'/>
-    <glyph codepoint='2032' name='minute'/>
-    <glyph codepoint='F6EF' name='msuperior'/>
-    <glyph codepoint='00B5' name='mu'/>
-    <glyph codepoint='03BC' name='mu'/>
-    <glyph codepoint='00D7' name='multiply'/>
-    <glyph codepoint='266A' name='musicalnote'/>
-    <glyph codepoint='266B' name='musicalnotedbl'/>
-    <glyph codepoint='006E' name='n'/>
-    <glyph codepoint='0144' name='nacute'/>
-    <glyph codepoint='0149' name='napostrophe'/>
-    <glyph codepoint='0148' name='ncaron'/>
-    <glyph codepoint='0146' name='ncommaaccent'/>
-    <glyph codepoint='0039' name='nine'/>
-    <glyph codepoint='2089' name='nineinferior'/>
-    <glyph codepoint='F739' name='nineoldstyle'/>
-    <glyph codepoint='2079' name='ninesuperior'/>
-    <glyph codepoint='2209' name='notelement'/>
-    <glyph codepoint='2260' name='notequal'/>
-    <glyph codepoint='2284' name='notsubset'/>
-    <glyph codepoint='207F' name='nsuperior'/>
-    <glyph codepoint='00F1' name='ntilde'/>
-    <glyph codepoint='03BD' name='nu'/>
-    <glyph codepoint='0023' name='numbersign'/>
-    <glyph codepoint='006F' name='o'/>
-    <glyph codepoint='00F3' name='oacute'/>
-    <glyph codepoint='014F' name='obreve'/>
-    <glyph codepoint='00F4' name='ocircumflex'/>
-    <glyph codepoint='00F6' name='odieresis'/>
-    <glyph codepoint='0153' name='oe'/>
-    <glyph codepoint='02DB' name='ogonek'/>
-    <glyph codepoint='00F2' name='ograve'/>
-    <glyph codepoint='01A1' name='ohorn'/>
-    <glyph codepoint='0151' name='ohungarumlaut'/>
-    <glyph codepoint='014D' name='omacron'/>
-    <glyph codepoint='03C9' name='omega'/>
-    <glyph codepoint='03D6' name='omega1'/>
-    <glyph codepoint='03CE' name='omegatonos'/>
-    <glyph codepoint='03BF' name='omicron'/>
-    <glyph codepoint='03CC' name='omicrontonos'/>
-    <glyph codepoint='0031' name='one'/>
-    <glyph codepoint='2024' name='onedotenleader'/>
-    <glyph codepoint='215B' name='oneeighth'/>
-    <glyph codepoint='F6DC' name='onefitted'/>
-    <glyph codepoint='00BD' name='onehalf'/>
-    <glyph codepoint='2081' name='oneinferior'/>
-    <glyph codepoint='F731' name='oneoldstyle'/>
-    <glyph codepoint='00BC' name='onequarter'/>
-    <glyph codepoint='00B9' name='onesuperior'/>
-    <glyph codepoint='2153' name='onethird'/>
-    <glyph codepoint='25E6' name='openbullet'/>
-    <glyph codepoint='00AA' name='ordfeminine'/>
-    <glyph codepoint='00BA' name='ordmasculine'/>
-    <glyph codepoint='221F' name='orthogonal'/>
-    <glyph codepoint='00F8' name='oslash'/>
-    <glyph codepoint='01FF' name='oslashacute'/>
-    <glyph codepoint='F6F0' name='osuperior'/>
-    <glyph codepoint='00F5' name='otilde'/>
-    <glyph codepoint='0070' name='p'/>
-    <glyph codepoint='00B6' name='paragraph'/>
-    <glyph codepoint='0028' name='parenleft'/>
-    <glyph codepoint='F8ED' name='parenleftbt'/>
-    <glyph codepoint='F8EC' name='parenleftex'/>
-    <glyph codepoint='208D' name='parenleftinferior'/>
-    <glyph codepoint='207D' name='parenleftsuperior'/>
-    <glyph codepoint='F8EB' name='parenlefttp'/>
-    <glyph codepoint='0029' name='parenright'/>
-    <glyph codepoint='F8F8' name='parenrightbt'/>
-    <glyph codepoint='F8F7' name='parenrightex'/>
-    <glyph codepoint='208E' name='parenrightinferior'/>
-    <glyph codepoint='207E' name='parenrightsuperior'/>
-    <glyph codepoint='F8F6' name='parenrighttp'/>
-    <glyph codepoint='2202' name='partialdiff'/>
-    <glyph codepoint='0025' name='percent'/>
-    <glyph codepoint='002E' name='period'/>
-    <glyph codepoint='00B7' name='periodcentered'/>
-    <glyph codepoint='2219' name='periodcentered'/>
-    <glyph codepoint='F6E7' name='periodinferior'/>
-    <glyph codepoint='F6E8' name='periodsuperior'/>
-    <glyph codepoint='22A5' name='perpendicular'/>
-    <glyph codepoint='2030' name='perthousand'/>
-    <glyph codepoint='20A7' name='peseta'/>
-    <glyph codepoint='03C6' name='phi'/>
-    <glyph codepoint='03D5' name='phi1'/>
-    <glyph codepoint='03C0' name='pi'/>
-    <glyph codepoint='002B' name='plus'/>
-    <glyph codepoint='00B1' name='plusminus'/>
-    <glyph codepoint='211E' name='prescription'/>
-    <glyph codepoint='220F' name='product'/>
-    <glyph codepoint='2282' name='propersubset'/>
-    <glyph codepoint='2283' name='propersuperset'/>
-    <glyph codepoint='221D' name='proportional'/>
-    <glyph codepoint='03C8' name='psi'/>
-    <glyph codepoint='0071' name='q'/>
-    <glyph codepoint='003F' name='question'/>
-    <glyph codepoint='00BF' name='questiondown'/>
-    <glyph codepoint='F7BF' name='questiondownsmall'/>
-    <glyph codepoint='F73F' name='questionsmall'/>
-    <glyph codepoint='0022' name='quotedbl'/>
-    <glyph codepoint='201E' name='quotedblbase'/>
-    <glyph codepoint='201C' name='quotedblleft'/>
-    <glyph codepoint='201D' name='quotedblright'/>
-    <glyph codepoint='2018' name='quoteleft'/>
-    <glyph codepoint='201B' name='quotereversed'/>
-    <glyph codepoint='2019' name='quoteright'/>
-    <glyph codepoint='201A' name='quotesinglbase'/>
-    <glyph codepoint='0027' name='quotesingle'/>
-    <glyph codepoint='0072' name='r'/>
-    <glyph codepoint='0155' name='racute'/>
-    <glyph codepoint='221A' name='radical'/>
-    <glyph codepoint='F8E5' name='radicalex'/>
-    <glyph codepoint='0159' name='rcaron'/>
-    <glyph codepoint='0157' name='rcommaaccent'/>
-    <glyph codepoint='2286' name='reflexsubset'/>
-    <glyph codepoint='2287' name='reflexsuperset'/>
-    <glyph codepoint='00AE' name='registered'/>
-    <glyph codepoint='F8E8' name='registersans'/>
-    <glyph codepoint='F6DA' name='registerserif'/>
-    <glyph codepoint='2310' name='revlogicalnot'/>
-    <glyph codepoint='03C1' name='rho'/>
-    <glyph codepoint='02DA' name='ring'/>
-    <glyph codepoint='F6F1' name='rsuperior'/>
-    <glyph codepoint='2590' name='rtblock'/>
-    <glyph codepoint='F6DD' name='rupiah'/>
-    <glyph codepoint='0073' name='s'/>
-    <glyph codepoint='015B' name='sacute'/>
-    <glyph codepoint='0161' name='scaron'/>
-    <glyph codepoint='015F' name='scedilla'/>
-    <glyph codepoint='F6C2' name='scedilla'/>
-    <glyph codepoint='015D' name='scircumflex'/>
-    <glyph codepoint='0219' name='scommaaccent'/>
-    <glyph codepoint='2033' name='second'/>
-    <glyph codepoint='00A7' name='section'/>
-    <glyph codepoint='003B' name='semicolon'/>
-    <glyph codepoint='0037' name='seven'/>
-    <glyph codepoint='215E' name='seveneighths'/>
-    <glyph codepoint='2087' name='seveninferior'/>
-    <glyph codepoint='F737' name='sevenoldstyle'/>
-    <glyph codepoint='2077' name='sevensuperior'/>
-    <glyph codepoint='2592' name='shade'/>
-    <glyph codepoint='03C3' name='sigma'/>
-    <glyph codepoint='03C2' name='sigma1'/>
-    <glyph codepoint='223C' name='similar'/>
-    <glyph codepoint='0036' name='six'/>
-    <glyph codepoint='2086' name='sixinferior'/>
-    <glyph codepoint='F736' name='sixoldstyle'/>
-    <glyph codepoint='2076' name='sixsuperior'/>
-    <glyph codepoint='002F' name='slash'/>
-    <glyph codepoint='263A' name='smileface'/>
-    <glyph codepoint='0020' name='space'/>
-    <glyph codepoint='00A0' name='space'/>
-    <glyph codepoint='2660' name='spade'/>
-    <glyph codepoint='F6F2' name='ssuperior'/>
-    <glyph codepoint='00A3' name='sterling'/>
-    <glyph codepoint='220B' name='suchthat'/>
-    <glyph codepoint='2211' name='summation'/>
-    <glyph codepoint='263C' name='sun'/>
-    <glyph codepoint='0074' name='t'/>
-    <glyph codepoint='03C4' name='tau'/>
-    <glyph codepoint='0167' name='tbar'/>
-    <glyph codepoint='0165' name='tcaron'/>
-    <glyph codepoint='0163' name='tcommaaccent'/>
-    <glyph codepoint='021B' name='tcommaaccent'/>
-    <glyph codepoint='2234' name='therefore'/>
-    <glyph codepoint='03B8' name='theta'/>
-    <glyph codepoint='03D1' name='theta1'/>
-    <glyph codepoint='00FE' name='thorn'/>
-    <glyph codepoint='0033' name='three'/>
-    <glyph codepoint='215C' name='threeeighths'/>
-    <glyph codepoint='2083' name='threeinferior'/>
-    <glyph codepoint='F733' name='threeoldstyle'/>
-    <glyph codepoint='00BE' name='threequarters'/>
-    <glyph codepoint='F6DE' name='threequartersemdash'/>
-    <glyph codepoint='00B3' name='threesuperior'/>
-    <glyph codepoint='02DC' name='tilde'/>
-    <glyph codepoint='0303' name='tildecomb'/>
-    <glyph codepoint='0384' name='tonos'/>
-    <glyph codepoint='2122' name='trademark'/>
-    <glyph codepoint='F8EA' name='trademarksans'/>
-    <glyph codepoint='F6DB' name='trademarkserif'/>
-    <glyph codepoint='25BC' name='triagdn'/>
-    <glyph codepoint='25C4' name='triaglf'/>
-    <glyph codepoint='25BA' name='triagrt'/>
-    <glyph codepoint='25B2' name='triagup'/>
-    <glyph codepoint='F6F3' name='tsuperior'/>
-    <glyph codepoint='0032' name='two'/>
-    <glyph codepoint='2025' name='twodotenleader'/>
-    <glyph codepoint='2082' name='twoinferior'/>
-    <glyph codepoint='F732' name='twooldstyle'/>
-    <glyph codepoint='00B2' name='twosuperior'/>
-    <glyph codepoint='2154' name='twothirds'/>
-    <glyph codepoint='0075' name='u'/>
-    <glyph codepoint='00FA' name='uacute'/>
-    <glyph codepoint='016D' name='ubreve'/>
-    <glyph codepoint='00FB' name='ucircumflex'/>
-    <glyph codepoint='00FC' name='udieresis'/>
-    <glyph codepoint='00F9' name='ugrave'/>
-    <glyph codepoint='01B0' name='uhorn'/>
-    <glyph codepoint='0171' name='uhungarumlaut'/>
-    <glyph codepoint='016B' name='umacron'/>
-    <glyph codepoint='005F' name='underscore'/>
-    <glyph codepoint='2017' name='underscoredbl'/>
-    <glyph codepoint='222A' name='union'/>
-    <glyph codepoint='2200' name='universal'/>
-    <glyph codepoint='0173' name='uogonek'/>
-    <glyph codepoint='2580' name='upblock'/>
-    <glyph codepoint='03C5' name='upsilon'/>
-    <glyph codepoint='03CB' name='upsilondieresis'/>
-    <glyph codepoint='03B0' name='upsilondieresistonos'/>
-    <glyph codepoint='03CD' name='upsilontonos'/>
-    <glyph codepoint='016F' name='uring'/>
-    <glyph codepoint='0169' name='utilde'/>
-    <glyph codepoint='0076' name='v'/>
-    <glyph codepoint='0077' name='w'/>
-    <glyph codepoint='1E83' name='wacute'/>
-    <glyph codepoint='0175' name='wcircumflex'/>
-    <glyph codepoint='1E85' name='wdieresis'/>
-    <glyph codepoint='2118' name='weierstrass'/>
-    <glyph codepoint='1E81' name='wgrave'/>
-    <glyph codepoint='0078' name='x'/>
-    <glyph codepoint='03BE' name='xi'/>
-    <glyph codepoint='0079' name='y'/>
-    <glyph codepoint='00FD' name='yacute'/>
-    <glyph codepoint='0177' name='ycircumflex'/>
-    <glyph codepoint='00FF' name='ydieresis'/>
-    <glyph codepoint='00A5' name='yen'/>
-    <glyph codepoint='1EF3' name='ygrave'/>
-    <glyph codepoint='007A' name='z'/>
-    <glyph codepoint='017A' name='zacute'/>
-    <glyph codepoint='017E' name='zcaron'/>
-    <glyph codepoint='017C' name='zdotaccent'/>
-    <glyph codepoint='0030' name='zero'/>
-    <glyph codepoint='2080' name='zeroinferior'/>
-    <glyph codepoint='F730' name='zerooldstyle'/>
-    <glyph codepoint='2070' name='zerosuperior'/>
-    <glyph codepoint='03B6' name='zeta'/>
-  </glyphlist>
-
-  <!-- This encodes the Zapf Dingbats Glyph List, version 1.0 (17 July 1997)
-       located at http://partners.adobe.com/asn/developer/type/zapfdingbats.txt
-  -->
-  <glyphlist id='ZGL'>
-    <glyph codepoint='0020' name='space'/>
-    <glyph codepoint='00A0' name='space'/>
-    <glyph codepoint='2701' name='a1'/>
-    <glyph codepoint='2702' name='a2'/>
-    <glyph codepoint='2703' name='a202'/>
-    <glyph codepoint='2704' name='a3'/>
-    <glyph codepoint='260E' name='a4'/>
-    <glyph codepoint='2706' name='a5'/>
-    <glyph codepoint='2707' name='a119'/>
-    <glyph codepoint='2708' name='a118'/>
-    <glyph codepoint='2709' name='a117'/>
-    <glyph codepoint='261B' name='a11'/>
-    <glyph codepoint='261E' name='a12'/>
-    <glyph codepoint='270C' name='a13'/>
-    <glyph codepoint='270D' name='a14'/>
-    <glyph codepoint='270E' name='a15'/>
-    <glyph codepoint='270F' name='a16'/>
-    <glyph codepoint='2710' name='a105'/>
-    <glyph codepoint='2711' name='a17'/>
-    <glyph codepoint='2712' name='a18'/>
-    <glyph codepoint='2713' name='a19'/>
-    <glyph codepoint='2714' name='a20'/>
-    <glyph codepoint='2715' name='a21'/>
-    <glyph codepoint='2716' name='a22'/>
-    <glyph codepoint='2717' name='a23'/>
-    <glyph codepoint='2718' name='a24'/>
-    <glyph codepoint='2719' name='a25'/>
-    <glyph codepoint='271A' name='a26'/>
-    <glyph codepoint='271B' name='a27'/>
-    <glyph codepoint='271C' name='a28'/>
-    <glyph codepoint='271D' name='a6'/>
-    <glyph codepoint='271E' name='a7'/>
-    <glyph codepoint='271F' name='a8'/>
-    <glyph codepoint='2720' name='a9'/>
-    <glyph codepoint='2721' name='a10'/>
-    <glyph codepoint='2722' name='a29'/>
-    <glyph codepoint='2723' name='a30'/>
-    <glyph codepoint='2724' name='a31'/>
-    <glyph codepoint='2725' name='a32'/>
-    <glyph codepoint='2726' name='a33'/>
-    <glyph codepoint='2727' name='a34'/>
-    <glyph codepoint='2605' name='a35'/>
-    <glyph codepoint='2729' name='a36'/>
-    <glyph codepoint='272A' name='a37'/>
-    <glyph codepoint='272B' name='a38'/>
-    <glyph codepoint='272C' name='a39'/>
-    <glyph codepoint='272D' name='a40'/>
-    <glyph codepoint='272E' name='a41'/>
-    <glyph codepoint='272F' name='a42'/>
-    <glyph codepoint='2730' name='a43'/>
-    <glyph codepoint='2731' name='a44'/>
-    <glyph codepoint='2732' name='a45'/>
-    <glyph codepoint='2733' name='a46'/>
-    <glyph codepoint='2734' name='a47'/>
-    <glyph codepoint='2735' name='a48'/>
-    <glyph codepoint='2736' name='a49'/>
-    <glyph codepoint='2737' name='a50'/>
-    <glyph codepoint='2738' name='a51'/>
-    <glyph codepoint='2739' name='a52'/>
-    <glyph codepoint='273A' name='a53'/>
-    <glyph codepoint='273B' name='a54'/>
-    <glyph codepoint='273C' name='a55'/>
-    <glyph codepoint='273D' name='a56'/>
-    <glyph codepoint='273E' name='a57'/>
-    <glyph codepoint='273F' name='a58'/>
-    <glyph codepoint='2740' name='a59'/>
-    <glyph codepoint='2741' name='a60'/>
-    <glyph codepoint='2742' name='a61'/>
-    <glyph codepoint='2743' name='a62'/>
-    <glyph codepoint='2744' name='a63'/>
-    <glyph codepoint='2745' name='a64'/>
-    <glyph codepoint='2746' name='a65'/>
-    <glyph codepoint='2747' name='a66'/>
-    <glyph codepoint='2748' name='a67'/>
-    <glyph codepoint='2749' name='a68'/>
-    <glyph codepoint='274A' name='a69'/>
-    <glyph codepoint='274B' name='a70'/>
-    <glyph codepoint='25CF' name='a71'/>
-    <glyph codepoint='274D' name='a72'/>
-    <glyph codepoint='25A0' name='a73'/>
-    <glyph codepoint='274F' name='a74'/>
-    <glyph codepoint='2750' name='a203'/>
-    <glyph codepoint='2751' name='a75'/>
-    <glyph codepoint='2752' name='a204'/>
-    <glyph codepoint='25B2' name='a76'/>
-    <glyph codepoint='25BC' name='a77'/>
-    <glyph codepoint='25C6' name='a78'/>
-    <glyph codepoint='2756' name='a79'/>
-    <glyph codepoint='25D7' name='a81'/>
-    <glyph codepoint='2758' name='a82'/>
-    <glyph codepoint='2759' name='a83'/>
-    <glyph codepoint='275A' name='a84'/>
-    <glyph codepoint='275B' name='a97'/>
-    <glyph codepoint='275C' name='a98'/>
-    <glyph codepoint='275D' name='a99'/>
-    <glyph codepoint='275E' name='a100'/>
-    <glyph codepoint='F8D7' name='a89'/>
-    <glyph codepoint='F8D8' name='a90'/>
-    <glyph codepoint='F8D9' name='a93'/>
-    <glyph codepoint='F8DA' name='a94'/>
-    <glyph codepoint='F8DB' name='a91'/>
-    <glyph codepoint='F8DC' name='a92'/>
-    <glyph codepoint='F8DD' name='a205'/>
-    <glyph codepoint='F8DE' name='a85'/>
-    <glyph codepoint='F8DF' name='a206'/>
-    <glyph codepoint='F8E0' name='a86'/>
-    <glyph codepoint='F8E1' name='a87'/>
-    <glyph codepoint='F8E2' name='a88'/>
-    <glyph codepoint='F8E3' name='a95'/>
-    <glyph codepoint='F8E4' name='a96'/>
-    <glyph codepoint='2761' name='a101'/>
-    <glyph codepoint='2762' name='a102'/>
-    <glyph codepoint='2763' name='a103'/>
-    <glyph codepoint='2764' name='a104'/>
-    <glyph codepoint='2765' name='a106'/>
-    <glyph codepoint='2766' name='a107'/>
-    <glyph codepoint='2767' name='a108'/>
-    <glyph codepoint='2663' name='a112'/>
-    <glyph codepoint='2666' name='a111'/>
-    <glyph codepoint='2665' name='a110'/>
-    <glyph codepoint='2660' name='a109'/>
-    <glyph codepoint='2460' name='a120'/>
-    <glyph codepoint='2461' name='a121'/>
-    <glyph codepoint='2462' name='a122'/>
-    <glyph codepoint='2463' name='a123'/>
-    <glyph codepoint='2464' name='a124'/>
-    <glyph codepoint='2465' name='a125'/>
-    <glyph codepoint='2466' name='a126'/>
-    <glyph codepoint='2467' name='a127'/>
-    <glyph codepoint='2468' name='a128'/>
-    <glyph codepoint='2469' name='a129'/>
-    <glyph codepoint='2776' name='a130'/>
-    <glyph codepoint='2777' name='a131'/>
-    <glyph codepoint='2778' name='a132'/>
-    <glyph codepoint='2779' name='a133'/>
-    <glyph codepoint='277A' name='a134'/>
-    <glyph codepoint='277B' name='a135'/>
-    <glyph codepoint='277C' name='a136'/>
-    <glyph codepoint='277D' name='a137'/>
-    <glyph codepoint='277E' name='a138'/>
-    <glyph codepoint='277F' name='a139'/>
-    <glyph codepoint='2780' name='a140'/>
-    <glyph codepoint='2781' name='a141'/>
-    <glyph codepoint='2782' name='a142'/>
-    <glyph codepoint='2783' name='a143'/>
-    <glyph codepoint='2784' name='a144'/>
-    <glyph codepoint='2785' name='a145'/>
-    <glyph codepoint='2786' name='a146'/>
-    <glyph codepoint='2787' name='a147'/>
-    <glyph codepoint='2788' name='a148'/>
-    <glyph codepoint='2789' name='a149'/>
-    <glyph codepoint='278A' name='a150'/>
-    <glyph codepoint='278B' name='a151'/>
-    <glyph codepoint='278C' name='a152'/>
-    <glyph codepoint='278D' name='a153'/>
-    <glyph codepoint='278E' name='a154'/>
-    <glyph codepoint='278F' name='a155'/>
-    <glyph codepoint='2790' name='a156'/>
-    <glyph codepoint='2791' name='a157'/>
-    <glyph codepoint='2792' name='a158'/>
-    <glyph codepoint='2793' name='a159'/>
-    <glyph codepoint='2794' name='a160'/>
-    <glyph codepoint='2192' name='a161'/>
-    <glyph codepoint='2194' name='a163'/>
-    <glyph codepoint='2195' name='a164'/>
-    <glyph codepoint='2798' name='a196'/>
-    <glyph codepoint='2799' name='a165'/>
-    <glyph codepoint='279A' name='a192'/>
-    <glyph codepoint='279B' name='a166'/>
-    <glyph codepoint='279C' name='a167'/>
-    <glyph codepoint='279D' name='a168'/>
-    <glyph codepoint='279E' name='a169'/>
-    <glyph codepoint='279F' name='a170'/>
-    <glyph codepoint='27A0' name='a171'/>
-    <glyph codepoint='27A1' name='a172'/>
-    <glyph codepoint='27A2' name='a173'/>
-    <glyph codepoint='27A3' name='a162'/>
-    <glyph codepoint='27A4' name='a174'/>
-    <glyph codepoint='27A5' name='a175'/>
-    <glyph codepoint='27A6' name='a176'/>
-    <glyph codepoint='27A7' name='a177'/>
-    <glyph codepoint='27A8' name='a178'/>
-    <glyph codepoint='27A9' name='a179'/>
-    <glyph codepoint='27AA' name='a193'/>
-    <glyph codepoint='27AB' name='a180'/>
-    <glyph codepoint='27AC' name='a199'/>
-    <glyph codepoint='27AD' name='a181'/>
-    <glyph codepoint='27AE' name='a200'/>
-    <glyph codepoint='27AF' name='a182'/>
-    <glyph codepoint='27B1' name='a201'/>
-    <glyph codepoint='27B2' name='a183'/>
-    <glyph codepoint='27B3' name='a184'/>
-    <glyph codepoint='27B4' name='a197'/>
-    <glyph codepoint='27B5' name='a185'/>
-    <glyph codepoint='27B6' name='a194'/>
-    <glyph codepoint='27B7' name='a198'/>
-    <glyph codepoint='27B8' name='a186'/>
-    <glyph codepoint='27B9' name='a195'/>
-    <glyph codepoint='27BA' name='a187'/>
-    <glyph codepoint='27BB' name='a188'/>
-    <glyph codepoint='27BC' name='a189'/>
-    <glyph codepoint='27BD' name='a190'/>
-    <glyph codepoint='27BE' name='a191'/>
-  </glyphlist>
-</glyphlist-set>
diff --git a/src/codegen/properties.dtd b/src/codegen/properties.dtd
deleted file mode 100644 (file)
index 8ae36ac..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-<!--
-  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$ -->
-<!--
-DTD for foproperties.xml and svgproperties.xml
--->
-
-<!DOCTYPE property-list [
-<!ELEMENT property-list (generic-property-list?,  element-property-list*) >
-
-<!-- This defines properties which are generic: meaning they are valid for
-     any formatting object in the namespace associated with this properties
-     file.
--->
-<!ELEMENT generic-property-list (property+) >
-
-<!-- This defines properties which are specific to a particular element.
-     The elements are specified in one or more localname elements. This
-     will generate code which can be used to set up element-specific
-     mappings for the PropertyListBuilder object.
--->
-<!ELEMENT element-property-list (localname+, property+) >
-<!ELEMENT localname (#PCDATA) >
-
-<!-- Define a single property in the current namespace -->
-<!ELEMENT property (name, (use-generic | datatype), class-name?, inherited?,
-   default?, enumeration?, datatype-conversion*, compound?,
-   keyword-equiv*, percent-ok?, auto-ok?, derive?, corresponding? ) >
-
-<!-- If type is set to "ref", then this is not a new property definition,
-     but rather a reference to a property allready defined (should be in
-     another namespace). The "family" attribute then indicates in which
-     other property family the referenced attribute is defined. This is
-     used to let SVG reuse font-related properties defined in FO.
-     The family attribute is ignored if type isn't "ref".
-     If type = "generic", this is not a "real" property but rather a
-     template on which one or usually several other properties are
-     based. This reduces typing in the properties files and can reduce the
-     number and size of property classes created.
--->
-<!ATTLIST property
-   type   (ref|generic|normal) "normal"
-   family (fo|svg) "fo"
->
-<!-- Sub-elements of property. -->
-<!-- This gives the name of the attribute used to specify values for this
-     property in input FO or SVG files. It MUST be specified.
--->
-<!ELEMENT name (#PCDATA) >
-
-<!-- This gives the class name of the Java class which will be created to
-     represent values for this property. It doesn't need to be specified if
-     it can be deduced from the "name". The rule is that the first letter
-     of the property name and any name following a "-" are capitalized and
-     the "-" characters are removed. If you want to force a name, use the
-     class-name sub-element.
--->
-<!ELEMENT class-name (#PCDATA) >
-
-<!-- This indicates that this property is based on a generic property
-     datatype. This may be one hand-coded, such as SVGLengthProperty, or it
-     may be one which is created by a generic property definition in the
-     properties.xml file being processed. The content of this element is
-     the CLASSNAME of the generic property (NOTE: not its name). A property
-     can be based on a generic property and still override certain aspects
-     such as the default value, simply by specifying the appropriate
-     sub-elements.
-     If the "ispropclass" attribute = "true", then the contents of the
-     use-generic element is the name of a hard-coded Property subclass
-     and not of a generated Property.Maker subclass. This is currently
-     only used for the SVG properties, because they don't have a
-     rule-based relationship between the actual Property class name
-     and the name of the datatype stored by objects of that class.
--->
-<!ELEMENT use-generic (#PCDATA) >
-<!ATTLIST use-generic
-  ispropclass (true | false ) "false"
->
-
-<!-- This indicates whether the property is inherited or not. Use the value
-     true for inherited and false for non-inherited. If the attribute
-     "type" is set to "specified", the specified rather than the computed
-     value of the property is inherited. An example is line-height, which
-     if specified using relative units or a percent, is recalculated
-     relative to the FONTSIZE of the current FO.
--->
-<!ELEMENT inherited (#PCDATA) >
-<!ATTLIST inherited
-  type  (specified | computed) "computed"
->
-
-<!-- This gives the datatype of the stored property values. It shouldn't be
-     specified if the property has a use-generic element. The value of this
-     element should be the name of either a basic Java class (String,
-     Integer) or a class defined as a FOP or SVG datatype (eg. ColorType).
-     NOTE: the value "Enum" is special and indicates an enumerated
-     datatype, stored as a Java "int". There is an EnumProperty class, but
-     no corresponding Enum class.
--->
-<!ELEMENT datatype (#PCDATA) >
-
-<!-- This element is used to specify the allowable values for enumerated
-     datatypes (<datatype>Enum</datatype>). Each value sub-element
-     specifies a possible value for the property. The "const" attribute for
-     each value is used to generate a public static constant value in the
-     class which can be referenced in code to test the property value. It
-     must be a legal Java identifier. By convention, use all caps.
--->
-<!ELEMENT enumeration (value+) >
-<!ELEMENT value (#PCDATA) >
-<!ATTLIST value
-  const  CDATA  #REQUIRED
->
-
-<!-- This gives the default value for a property if it is not specified on
-     a given FO. (The spec calls this the "initial" value.)
-
-     It may also be used to specify a default value for a particular
-     component of a compound property. This is used to give each component
-     its initial value if components are only partially specified in the
-     FO file.
-
-     NOTE: It should be an expression which can be parsed to give a legal
-     value for the property! This can't be checked by the generating
-     script, so if there is a problem, it will only be seen at runtime.
-     If the attribute "contextdep" is present and set to "true", the
-     generated code for the Maker will create a new Property object each
-     time it is asked to make the default value. Otherwise (the usual
-     case), it will only make one Property object with the default value
-     and return it on each call. Context-dependent default values include
-     those specified with relative units (eg. 1em).
-
-     The "subproperty" attribute can be used on properties which are
-     based on generic property specifications to specify a default value
-     for a particular component. For example, the border-end-width property
-     is based on GenericCondBorderWidth and specifies a specific default
-     for the "conditionality" component.
--->
-<!ELEMENT default (#PCDATA) >
-<!ATTLIST default
-  contextdep  (true | false) "false"
-  subproperty  CDATA #IMPLIED
->
-
-
-<!-- The datatype-conversion element(s) specify how to handle property
-     values which can be specified in several ways. For example, the
-     line-height property can be specified as a Length, or as a number or
-     as a percent, which are both interpreted as being a factor of the
-     current font-size. The datatype for this property is Length. The
-     datatype-conversion element is used to handle the cases in which the
-     Property parser returns a type which is not a Length. Each element
-     tests it against a possible property type. The content gives the
-     actual code which should be inserted in the generated class in order
-     to correctly initialize the property value.
-     NOTE: the use of this for Color properties is rather a hack. All color
-     properties can be specified by a large number of keywords. To be
-     consistent with my logic we should use the keyword-equiv element. But
-     that was a lot of work. So for now, if the value evaluates to a String
-     and not to a ColorType, the datatype-conversion just uses it to
-     directly initialize a ColorType object.
--->
-<!ELEMENT datatype-conversion (#PCDATA) >
-
-<!-- The attribute from-type gives a possible property datatype, such as
-     Number or String. The varname gives the name of a variable which can
-     be used in the content of the datatype-conversion element. If the type
-     of the variable is not the same as from-type, it may be specified with
-     the attribute vartype.
-
-     An example of usage is from the line-height property. This should be
-     a Length object, but may be specified as a Number, which is interpreted
-     as though it were a percentage of the current font-size.
--->
-<!ATTLIST datatype-conversion
-    from-type    CDATA   #REQUIRED
-    vartype      CDATA   #IMPLIED
-    varname      CDATA   #REQUIRED
->
-
-<!-- The compound element indicates that the property is a "compound"
-     property as defined in the XSL specification. It is specified as one
-     or more individual attributes whose names are built up from the base
-     property name and the name of a compoent. Each "subproperty" element
-     describes a component of a compound property.
-     An example is space-before.
--->
-<!ELEMENT compound (subproperty+) >
-
-<!-- Describe one component of a compound property. Only the name and the
-     datatype should be specified. For example, in the space-before
-     property, the optimum component has the name optimum and the datatype
-     Length.
--->
-<!ELEMENT subproperty (name, datatype, auto-ok?, default?, corresponding?,
-   enumeration?, keyword-equiv? ) >
-
-<!-- This element which may be repeated, specifies keyword shorthands for
-     non-enumerated properties. For example, the border-width family of
-     properties can be specified either by a Length (eg. 1pt) or by one of
-     the keywords "thin", "medium", or "thick", each of which corresponds
-     to a "user-agent specific value" (XSL Spec.) These values are defined
-     by the keyword-equiv element. The "match" attribute gives the string
-     keyword value and the content is the replacement value, which should
-     be able to be evaluated to produce an object of the property's
-     datatype (such as Length). An example is:
-        <keyword-equiv match="thin" eval="true">0.5pt</keyword-equiv>
-     The "eval" attribute indicates whether the specified value must be
-     "parsed" using the Property parser or whether it can be used to
-     directly construct an object of the appropriate datatype. The default
-     is to evaluate the specified value (like the default specification).
--->
-<!ELEMENT keyword-equiv (#PCDATA) >
-<!ATTLIST keyword-equiv
-  match  CDATA   #REQUIRED
-  eval  (true|false) "true"
->
-
-<!-- This element if present indicates that percent specifications are
-     allowed as property values. The attribute "base" indicates how the
-     actual value is calculated.
-     FONTSIZE - the value is a percent of the current font-size
-     INH-FONTSIZE - the value is a percent of the inherited
-     font-size. This is necessary because font-size itself can be specified
-     as a percent!
-     CONTAINING-BOX - the value is a percent of the appropriate
-     dimension of the containing box of this FO.
-     If none of these is specified, the content of the element is
-     assumed to be a Java expression which can be used to calculate an
-     absolute value. This expression can assume that the variables
-     propertyList and fo are in scope and refer to the FO on which the
-     property was specified as a percent.
--->
-<!ELEMENT   percent-ok (#PCDATA) >
-<!ATTLIST   percent-ok
-   base  (FONTSIZE | INH-FONTSIZE | CONTAINING-BOX) #IMPLIED
->
-
-<!-- This element if present indicates that a value of "auto" for a Length
-     specification is allowed. If "auto" is specified, a LengthProperty object
-     is created which holds a Length object of type "AUTO".
--->
-<!ELEMENT   auto-ok EMPTY >
-
-<!-- This element if present indicates that the value of the property may
-     be computed (derived) from other properties if it isn't specified. It
-     assumes that the property is an Enum datatype. (Currently only used
-     for text-align-last.)
-     The "from" attribute gives the name of the property from which this
-     property is derived.
-     Each "if" sub-element specifies a possible value. The "match"
-     attribute is compared with the value of the "derive-from" property. If
-     it is equal, the value of the current property is set to the value
-     specified by the content of the "if" element.
--->
-<!ELEMENT   derive (if+) >
-<!ATTLIST   derive
-  from  CDATA  #REQUIRED
->
-<!ELEMENT   if (#PCDATA) >
-<!ATTLIST   if
-  match  CDATA  #REQUIRED
->
-
-<!-- This element indicates that the value of the property is the same as
-     that of a "corresponding" absolute or writing-mode-relative property.
-     if the "use-if-specified" attribute has the value "true", then the
-     corresponding property value takes precedence over the property on
-     which it is specified. To be conformant to the specification, all the
-     the "absolute" versions of properties have precedence.
-     Example: if a get() call is made on padding-end for a FO using lr-tb
-     writing-mode, then the padding-right property will be used if it is
-     specified, even if padding-end is actually specified.
-     However, if a get() is made on padding-right, the value of padding-end
-     will only be used if padding-right isn't specified on the FO.
--->
-
-<!ELEMENT   corresponding (propval, propexpr?) >
-<!ATTLIST   corresponding
-    use-if-specified (true|false) "false"
->
-
-<!-- If the value must be calculated using several other properties, the
-     propexpr element may be used. Then only example I know of are the
-     indent properties which are calculated based on the margin-* values
-     if those are specified, plus the corresponding padding and border-width
-     values.
--->
-<!ELEMENT   propexpr (propval | #PCDATA)+ >
-
-<!-- The name of the corresponding property is given in the propval element.
-     The conversion between absolute and relative property names is
-     made using wmrel2abs or wm2bs2rel elements, intermixed with text.
-     For example, for the property "padding-left", the corresponding
-     property is "padding-start" if the inline progression direction is
-     left to right. This is expressed in the properties file with the
-     expression "padding-<wmabs2rel dir='LEFT'/>". The wmabs2rel element
-     is replaced by the writing-mode relative direction which corresponds
-     to the absolute direction LEFT using the writing-mode in effect for the
-     flow object where this property is specified.
--->
-<!ELEMENT   propval (wmrel2abs | wmabs2rel | #PCDATA)+ >
-
-<!ELEMENT   wmrel2abs EMPTY>
-<!ATTLIST   wmrel2abs
-  dir (BEFORE | AFTER | START | END | BLOCKPROGDIM | INLINEPROGDIM)
-  #REQUIRED
->
-
-<!ELEMENT   wmabs2rel EMPTY>
-<!ATTLIST   wmabs2rel
-  dir (TOP | BOTTOM | LEFT | RIGHT | HEIGHT | WIDTH )  #REQUIRED
->
-
diff --git a/src/codegen/property-sets.xsl b/src/codegen/property-sets.xsl
deleted file mode 100644 (file)
index 761a2cd..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-<!--
-  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$ -->
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<xsl:output method="text" />
-
-<xsl:include href="propinc.xsl"/>
-
-<xsl:template match="root">
-  <xsl:text>
-package org.apache.fop.fo;
-
-import org.apache.fop.fo.Constants;
-import java.util.BitSet;
-import java.util.ArrayList;
-
-public class PropertySets {
-    private static short[][] mapping = null;
-
-    private Element[] elements = new Element[Constants.ELEMENT_COUNT+1];
-    private BitSet block_elems = new BitSet();
-    private BitSet inline_elems = new BitSet();
-
-</xsl:text>
-  <xsl:apply-templates select="common" mode="decl"/>
-<xsl:text>
-    public void initializeElements() {
-        block_elems.set(Constants.FO_BLOCK);
-        block_elems.set(Constants.FO_BLOCK_CONTAINER);
-        block_elems.set(Constants.FO_TABLE_AND_CAPTION);
-        block_elems.set(Constants.FO_TABLE);
-        block_elems.set(Constants.FO_LIST_BLOCK);
-
-        inline_elems.set(Constants.FO_BIDI_OVERRIDE);
-        inline_elems.set(Constants.FO_CHARACTER);
-        inline_elems.set(Constants.FO_EXTERNAL_GRAPHIC);
-        inline_elems.set(Constants.FO_INSTREAM_FOREIGN_OBJECT);
-        inline_elems.set(Constants.FO_INLINE);
-        inline_elems.set(Constants.FO_INLINE_CONTAINER);
-        inline_elems.set(Constants.FO_LEADER);
-        inline_elems.set(Constants.FO_PAGE_NUMBER);
-        inline_elems.set(Constants.FO_PAGE_NUMBER_CITATION);
-        inline_elems.set(Constants.FO_BASIC_LINK);
-        inline_elems.set(Constants.FO_MULTI_TOGGLE);
-    }
-
-    public void initializeCommon() {
-</xsl:text>
-<xsl:apply-templates select="common"/>
-<xsl:text>
-    }
-
-    public void initialize() {
-        // define the fo: elements
-        for (int i = 1; i &lt; elements.length; i++) {
-            elements[i] = new Element(i);
-        }
-
-        // populate the elements with properties and content elements.
-        Element elem;
-</xsl:text>
-
-<xsl:apply-templates select="//element"/>
-<xsl:text>
-
-        // Merge the attributes from the children into the parent.
-        for (boolean dirty = true; dirty; ) {
-            dirty = false;
-            for (int i = 1; i &lt; elements.length; i++) {
-                dirty = dirty || elements[i].merge();
-            }
-        }
-        // Calculate the sparse indices for each element.
-        for (int i = 1; i &lt; elements.length; i++) {
-            mapping[i] = makeSparseIndices(elements[i].valid);
-        }
-    }
-
-    /**
-     * Turn a BitSet into an array of shorts with the first element
-     * on the array the number of set bits in the BitSet.
-     */
-    private static short[] makeSparseIndices(BitSet set) {
-        short[] indices = new short[Constants.PROPERTY_COUNT+1];
-        int j = 1;
-        for (int i = 0; i &lt; Constants.PROPERTY_COUNT+1; i++) {
-            if (set.get(i)) {
-                indices[i] = (short) j++;
-            }
-        }
-        indices[0] = (short)j;
-        return indices;
-    }
-
-
-    public static short[] getPropertySet(int elementId) {
-        if (mapping == null) {
-            mapping = new short[Constants.ELEMENT_COUNT+1][];
-            PropertySets ps = new PropertySets();
-            ps.initializeElements();
-            ps.initializeCommon();
-            ps.initialize();
-        }
-        return mapping[elementId];
-    }
-
-    /**
-     * An object that represent the properties and contents of a fo element
-     */
-    class Element {
-        BitSet relevant = new BitSet();
-        BitSet valid = new BitSet();
-        int elementId;
-        ArrayList children;
-
-        Element(int elementId) {
-            this.elementId = elementId;
-        }
-
-        /**
-         * Add a single property to the element.
-         */
-        public void addProperty(int propId) {
-            relevant.set(propId);
-            valid.set(propId);
-        }
-
-        /**
-         * Add a set of properties to the element.
-         */
-        public void addProperties(BitSet properties) {
-            relevant.or(properties);
-            valid.or(properties);
-        }
-
-        /**
-         * Add a single fo element as a content child.
-         */
-        public void addContent(int elementId) {
-            if (children == null) {
-                children = new ArrayList();
-            }
-            children.add(elements[elementId]);
-        }
-
-        /**
-         * Add a set of fo elements as content children.
-         */
-        public void addContent(BitSet elements) {
-            for (int i = 0; i &lt; elements.size(); i++) {
-                if (elements.get(i)) {
-                    addContent(i);
-                }
-            }
-        }
-
-        /**
-         * Merge the properties from the children into the set of valid
-         * properties. Return true if at least one property could be added.
-         */
-        public boolean merge() {
-            if (children == null) {
-                return false;
-            }
-            boolean dirty = false;
-            for (int i = 0; i &lt; children.size(); i++) {
-                Element child = (Element) children.get(i);
-                BitSet childValid = child.valid;
-                int n = childValid.length();
-                for (int j = 0; j &lt; n; j++) {
-                    if (childValid.get(j) &amp;&amp; !valid.get(j)) {
-                        dirty = true;
-                        valid.set(j);
-                    }
-                }
-            }
-            return dirty;
-        }
-    }
-}
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="common" mode="decl">
-  <xsl:variable name="name" select="name"/>
-  <xsl:text>    BitSet </xsl:text><xsl:value-of select="$name"/>
-  <xsl:text> = new BitSet();
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="common">
-  <xsl:variable name="name" select="name"/>
-  <xsl:apply-templates select="property">
-    <xsl:with-param name="setname" select="$name"/>
-  </xsl:apply-templates>
-  <xsl:text>
-</xsl:text>
-</xsl:template>
-
-<xsl:template match="common/property">
-  <xsl:param name="setname"/>
-
-  <xsl:text>        </xsl:text>
-  <xsl:value-of select="../name"/><xsl:text>.set(Constants.PR_</xsl:text>
-  <xsl:call-template name="makeEnumConstant">
-    <xsl:with-param name="propstr" select="." />
-  </xsl:call-template>);
-</xsl:template>
-
-
-<xsl:template match="element">
-  <xsl:variable name="name">
-    <xsl:call-template name="makeEnumConstant">
-      <xsl:with-param name="propstr" select="name" />
-    </xsl:call-template>
-  </xsl:variable>
-  <xsl:text>        elem = elements[Constants.FO_</xsl:text>
-  <xsl:value-of select="$name"/>
-  <xsl:text>];
-</xsl:text>
-  <xsl:apply-templates select="common-ref | property"/>
-  <xsl:apply-templates select="content"/>
-  <xsl:text>
-</xsl:text>
-</xsl:template>
-
-
-<xsl:template match="element/common-ref">
-  <xsl:param name="setname"/>
-
-  <xsl:text>        elem.addProperties(</xsl:text>
-  <xsl:value-of select="."/>);
-</xsl:template>
-
-<xsl:template match="element/property">
-  <xsl:param name="setname"/>
-
-  <xsl:text>        elem.addProperty(Constants.PR_</xsl:text>
-  <xsl:call-template name="makeEnumConstant">
-    <xsl:with-param name="propstr" select="." />
-  </xsl:call-template>);
-</xsl:template>
-
-<xsl:template match="element/content">
-  <xsl:variable name="name">
-    <xsl:text>Constants.FO_</xsl:text>
-    <xsl:call-template name="makeEnumConstant">
-      <xsl:with-param name="propstr" select="." />
-    </xsl:call-template>
-  </xsl:variable>
-
-  <xsl:choose>
-    <xsl:when test=". = '%block;'">
-       <xsl:text>        elem.addContent(block_elems);
-</xsl:text>
-    </xsl:when>
-    <xsl:when test=". = '%inline;'">
-       <xsl:text>        elem.addContent(inline_elems);
-</xsl:text>
-    </xsl:when>
-    <xsl:otherwise>
-       <xsl:text>        elem.addContent(</xsl:text>
-      <xsl:value-of select="$name"/>
-      <xsl:text>);
-</xsl:text>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-
-<xsl:template match="text()"/>
-
-</xsl:stylesheet>
-
diff --git a/src/codegen/propinc.xsl b/src/codegen/propinc.xsl
deleted file mode 100644 (file)
index 9f9adf9..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-<!--
-  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$ -->
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
-
-<xsl:key name="genericref" match="property[@type='generic']" use="class-name"/>
-<xsl:key name="shorthandref" match="property" use="name"/>
-
-<xsl:template name="capfirst">
-  <xsl:param name="str"/>
-  <xsl:variable name="lcletters" select="'abcdefghijklmnopqrstuvwxyz'" />
-  <xsl:variable name="ucletters" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
-     <xsl:value-of select="concat(translate(substring($str, 1, 1),
-              $lcletters, $ucletters), substring($str, 2))"/>
-</xsl:template>
-
-<xsl:template name="makeClassName">
-  <xsl:param name="propstr"/>
-  <xsl:choose>
-   <xsl:when test="contains($propstr, '-')">
-    <xsl:call-template name="capfirst">
-      <xsl:with-param name="str" select="substring-before($propstr, '-')"/>
-    </xsl:call-template>
-    <xsl:call-template name="makeClassName">
-      <xsl:with-param name="propstr" select="substring-after($propstr, '-')"/>
-    </xsl:call-template>
-   </xsl:when>
-   <xsl:otherwise>
-    <xsl:call-template name="capfirst">
-      <xsl:with-param name="str" select="$propstr"/>
-    </xsl:call-template>
-   </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<!-- Generate enumeration constants for FO's, Properties, etc. -->
-<xsl:template name="makeEnumConstant">
-  <xsl:param name="propstr"/>
-  <xsl:variable name="lcletters" select="'abcdefghijklmnopqrstuvwxyz-:'" />
-  <xsl:variable name="ucletters" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ__'" />
-  <xsl:value-of select="translate($propstr, $lcletters, $ucletters)"/>
-</xsl:template>
-
-<!-- The name of the subclass of Property to be created -->
-<xsl:template name="propclass">
-  <xsl:param name="prop" select="."/>
-  <xsl:choose>
-    <xsl:when test="$prop/datatype">
-      <xsl:value-of select="$prop/datatype"/><xsl:text>Property</xsl:text>
-    </xsl:when>
-    <xsl:when test="$prop/use-generic[@ispropclass='true']">
-      <xsl:value-of select="$prop/use-generic"/>
-    </xsl:when>
-    <xsl:when test="$prop/use-generic">
-      <!-- If no datatype child, then the prop must use the same datatype as
-           its template. -->
-  <xsl:call-template name="propclass">
-    <xsl:with-param name="prop"
-     select="key('genericref', $prop/use-generic)"/>
-        </xsl:call-template>
-    </xsl:when>
-    <xsl:otherwise>
-      <!-- ERROR -->
-      <xsl:message terminate="yes">
-  No datatype found for property: <xsl:value-of select="$prop/name"/>
-      </xsl:message>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<!-- return a boolean value -->
-<xsl:template name="hasEnum">
-  <xsl:param name="prop" select="."/>
-  <xsl:choose>
-    <xsl:when test="$prop/enumeration">true</xsl:when>
-    <xsl:when test="$prop/use-generic">
-      <!-- If no datatype child, then the prop must use the same datatype as
-           its template. -->
-  <xsl:call-template name="hasEnum">
-    <xsl:with-param name="prop"
-     select="key('genericref', $prop/use-generic)"/>
-        </xsl:call-template>
-    </xsl:when>
-    <xsl:otherwise>false</xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<!-- return a boolean value -->
-<xsl:template name="hasSubpropEnum">
-  <xsl:param name="prop" select="."/>
-  <xsl:choose>
-    <xsl:when test="$prop/compound/subproperty/enumeration">true</xsl:when>
-    <xsl:when test="$prop/use-generic">
-      <!-- If no datatype child, then the prop must use the same datatype as
-           its template. -->
-  <xsl:call-template name="hasSubpropEnum">
-    <xsl:with-param name="prop"
-     select="key('genericref', $prop/use-generic)"/>
-        </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="$prop/compound/subproperty/use-generic">
-  <xsl:for-each select="$prop/compound/subproperty[use-generic]">
-    <xsl:call-template name="hasEnum">
-      <xsl:with-param name="prop"
-       select="key('genericref', use-generic)"/>
-          </xsl:call-template>
-  </xsl:for-each>
-    </xsl:when>
-    <xsl:otherwise>false</xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet>
diff --git a/src/codegen/propmaker.xsl b/src/codegen/propmaker.xsl
deleted file mode 100644 (file)
index 21cde4c..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
-  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$ -->
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:lxslt="http://xml.apache.org/xslt"
-                xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
-                extension-element-prefixes="redirect">
-
-<xsl:import href="elements.xsl"/>
-
-<xsl:output method="xml" />
-
-<xsl:template match="elements">
-<property-list>
-<xsl:attribute name="family">
-<xsl:call-template name="capall"><xsl:with-param name="str" select="$prefixVal"/></xsl:call-template>
-</xsl:attribute>
-  <generic-property-list>
-    <xsl:apply-templates select="*//attribute"/>
- </generic-property-list>
-</property-list>
-</xsl:template>
-
-<xsl:template match="*//attribute">
-  <property>
-  <name><xsl:apply-templates/></name>
-    <use-generic ispropclass="true">SVGStringProperty</use-generic>
-  </property>
-</xsl:template>
-
-
-</xsl:stylesheet>
diff --git a/src/codegen/t1font-file.xsl b/src/codegen/t1font-file.xsl
deleted file mode 100644 (file)
index f5c2850..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-<!--
-  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$ -->
-<!--
-This files writes the class files for the Adobe Type 1 fonts.
-It uses the information in the font description files (Courier.xml, Helvetica.xml) to this
-In these font description files each character is referenced by its adobe name:
-      <char name="A" width="667"/>
-To resolve this name and to find the code for this character it looks up the adobe name in the
-file charlist.xml and extracts the WinAnsi code.
--->
-
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:lxslt="http://xml.apache.org/xslt"
-                xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
-                extension-element-prefixes="redirect">
-<xsl:output method="text" />
-
-<xsl:template match="font-metrics">
-<xsl:variable name="class-name" select="class-name"/>
-<!--<redirect:write select="concat('org/apache/fop/render/pdf/fonts/', $class-name, '.java')">-->
-package org.apache.fop.render.pdf.fonts;
-
-import org.apache.fop.render.pdf.Font;
-import org.apache.fop.layout.FontDescriptor;
-import org.apache.fop.fonts.Glyphs;
-import org.apache.fop.pdf.PDFStream;
-import org.apache.fop.pdf.PDFT1Stream;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.BufferedInputStream;
-import java.util.HashMap;
-
-public class <xsl:value-of select="class-name"/> extends Font implements FontDescriptor {
-    private final static String fontName = "<xsl:value-of select="font-name"/>";
-    private final static String encoding = "<xsl:value-of select="encoding"/>";
-    private final static int capHeight = <xsl:value-of select="cap-height"/>;
-    private final static int xHeight = <xsl:value-of select="x-height"/>;
-    private final static int ascender = <xsl:value-of select="ascender"/>;
-    private final static int descender = <xsl:value-of select="descender"/>;
-    private final static int[] fontBBox = {
-        <xsl:value-of select="bbox/left"/>,
-        <xsl:value-of select="bbox/bottom"/>,
-        <xsl:value-of select="bbox/right"/>,
-        <xsl:value-of select="bbox/top"/>
-    };
-    private final static String embedFileName = <xsl:value-of select="embedFile"/>;
-    private final static String embedResourceName = <xsl:value-of select="embedResource"/>;
-    private static PDFT1Stream embeddedFont=null;
-    private final static int flags = <xsl:value-of select="flags"/>;
-    private final static int stemV = <xsl:value-of select="stemv"/>;
-    private final static int italicAngle = <xsl:value-of select="italicangle"/>;
-    private final static int firstChar = <xsl:value-of select="first-char"/>;
-    private final static int lastChar = <xsl:value-of select="last-char"/>;
-    private final static int[] width;
-    private final static HashMap kerning=new HashMap();
-
-    static {
-        width = new int[256];
-<xsl:for-each select="widths/char"><xsl:variable name="char-name" select="@name"/><xsl:variable name="char-num" select="document('charlist.xml')/font-mappings/map[@adobe-name=$char-name]/@win-ansi"/><xsl:if test="$char-num!='-1'">        width[<xsl:value-of select="$char-num"/>] = <xsl:value-of select="@width"/>;
-</xsl:if></xsl:for-each>
-
-    HashMap tmptable;
-<xsl:for-each select="kerning">
-<xsl:variable name="kpx1-name" select="@kpx1"/>
-    tmptable=new HashMap();<xsl:for-each select="pair"><xsl:variable name="kpx2-name" select="@kpx2"/><xsl:variable name="kern-name" select="@kern"/>
-    tmptable.put(Glyphs.glyphToString("<xsl:value-of select="$kpx2-name"/>"), new Integer(<xsl:value-of select="$kern-name"/>));</xsl:for-each>
-    kerning.put(Glyphs.glyphToString("<xsl:value-of select="$kpx1-name"/>"), tmptable);
-</xsl:for-each>
-    }
-
-    public final boolean hasKerningInfo() {return kerning.isEmpty();}
-    public final java.util.HashMap getKerningInfo() {return kerning;}
-    public byte getSubType() {return org.apache.fop.pdf.PDFFont.TYPE1;}
-
-    public boolean isEmbeddable() {
-        return (embedFileName==null &amp;&amp; embedResourceName==null) ? false : true;
-    }
-
-    public PDFStream getFontFile(int i) {
-        InputStream instream=null;
-
-        // Get file first
-        if (embedFileName!=null)
-        try {
-           instream=new FileInputStream(embedFileName);
-        } catch (Exception e) {
-           System.out.println("Failed to embed fontfile: "+embedFileName);
-        }
-
-        // Get resource
-        if (instream==null &amp;&amp; embedResourceName!=null)
-        try {
-           instream=new BufferedInputStream(this.getClass().getResourceAsStream(embedResourceName));
-        } catch (Exception e) {
-           System.out.println("Failed to embed fontresource: "+embedResourceName);
-        }
-
-        if (instream==null)
-            return (PDFStream)null;
-
-        // Read fontdata
-        byte[] file = new byte[128000];
-        int fsize = 0;
-
-        try {
-          int l = instream.read(file, 0, 128000);
-          fsize += l;
-
-          if (l==128000) {
-                 // More to read - needs to extend
-             byte[] tmpbuf;
-
-             while (l &gt; 0) {
-                 tmpbuf = new byte[file.length + 64000];
-                 System.arraycopy(file, 0, tmpbuf, 0, file.length);
-                 l=instream.read(tmpbuf, file.length, 64000);
-                 fsize += l;
-                 file = tmpbuf;
-
-                 if (l &lt; 64000) // whole file read. No need to loop again
-                    l=0;
-             }
-          }
-
-          embeddedFont=new PDFT1Stream(i, fsize);
-          embeddedFont.addFilter("flate");
-          embeddedFont.addFilter("ascii-85");
-          embeddedFont.setData(file, fsize);
-          instream.close();
-        } catch (Exception e) {}
-
-        return (PDFStream) embeddedFont;
-    }
-
-    public String encoding() {
-        return encoding;
-    }
-
-    public String fontName() {
-        return fontName;
-    }
-
-    public int getAscender() {
-        return ascender;
-    }
-
-    public int getCapHeight() {
-        return capHeight;
-    }
-
-    public int getDescender() {
-        return descender;
-    }
-
-    public int getAscender(int size) {
-        return size * ascender;
-    }
-
-    public int getCapHeight(int size) {
-        return size * capHeight;
-    }
-
-    public int getDescender(int size) {
-        return size * descender;
-    }
-
-    public int getXHeight(int size) {
-        return size * xHeight;
-    }
-
-    public int getFlags() {
-        return flags;
-    }
-
-    public int[] getFontBBox() {
-        return fontBBox;
-    }
-
-    public int getItalicAngle() {
-        return italicAngle;
-    }
-
-    public int getStemV() {
-        return stemV;
-    }
-
-    public int getFirstChar() {
-        return firstChar;
-    }
-
-    public int getLastChar() {
-        return lastChar;
-    }
-
-    public int width(int i, int size) {
-        return size * width[i];
-    }
-
-    public int[] getWidths(int size) {
-        int[] arr = new int[getLastChar()-getFirstChar()+1];
-        System.arraycopy(width, getFirstChar(), arr, 0, getLastChar()-getFirstChar()+1);
-        for( int i = 0; i &lt; arr.length; i++) arr[i] *= size;
-        return arr;
-    }
-}
-<!--</redirect:write>-->
-</xsl:template>
-</xsl:stylesheet>
-
diff --git a/src/codegen/ttffontfile.xsl b/src/codegen/ttffontfile.xsl
deleted file mode 100644 (file)
index 7231010..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-<!--
-  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$ -->
-<!--
-This files writes the class files for the Adobe Type 1 fonts.
-It uses the information in the font description files (Courier.xml, Helvetica.xml) to this
-In these font description files each character is referenced by its adobe name:
-      <char name="A" width="667"/>
-To resolve this name and to find the code for this character it looks up the adobe name in the
-file charlist.xml and extracts the WinAnsi code.
--->
-
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                xmlns:lxslt="http://xml.apache.org/xslt"
-                xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect"
-                extension-element-prefixes="redirect">
-<xsl:output method="text" />
-
-<xsl:template match="font-metrics">
-<xsl:variable name="class-name" select="class-name"/>
-<!--<redirect:write select="concat('org/apache/fop/render/pdf/fonts/', $class-name, '.java')">-->
-package org.apache.fop.render.pdf.fonts;
-
-import org.apache.fop.render.pdf.Font;
-import org.apache.fop.layout.FontDescriptor;
-import org.apache.fop.fonts.Glyphs;
-import org.apache.fop.pdf.PDFStream;
-import org.apache.fop.pdf.PDFTTFStream;
-import java.io.InputStream;
-import java.io.FileInputStream;
-import java.io.BufferedInputStream;
-import java.util.HashMap;
-
-public class <xsl:value-of select="class-name"/> extends Font implements FontDescriptor {
-    private final static String fontName = "<xsl:value-of select="font-name"/>";
-    private final static String encoding = "<xsl:value-of select="encoding"/>";
-    private final static int capHeight = <xsl:value-of select="cap-height"/>;
-    private final static int xHeight = <xsl:value-of select="x-height"/>;
-    private final static int ascender = <xsl:value-of select="ascender"/>;
-    private final static int descender = <xsl:value-of select="descender"/>;
-    private final static int[] fontBBox = {
-        <xsl:value-of select="bbox/left"/>,
-        <xsl:value-of select="bbox/bottom"/>,
-        <xsl:value-of select="bbox/right"/>,
-        <xsl:value-of select="bbox/top"/>
-    };
-
-    private final static String embedFileName = <xsl:value-of select="embedFile"/>;
-    private final static String embedResourceName = <xsl:value-of select="embedResource"/>;
-    private static PDFTTFStream embeddedFont=null;
-    private final static int flags = <xsl:value-of select="flags"/>;
-    private final static int stemV = <xsl:value-of select="stemv"/>;
-    private final static int italicAngle = <xsl:value-of select="italicangle"/>;
-    private final static int firstChar = <xsl:value-of select="first-char"/>;
-    private final static int lastChar = <xsl:value-of select="last-char"/>;
-    private final static int[] width;
-    private final static HashMap kerning=new HashMap();
-    static {
-        width = new int[256];
-<!--<xsl:for-each select="widths/char"><xsl:variable name="char-name" select="@name"/><xsl:variable name="char-num" select="document('charlist.xml')/font-mappings/map[@adobe-name=$char-name]/@win-ansi"/><xsl:if test="$char-num!='-1'">        width[<xsl:value-of select="$char-num"/>] = <xsl:value-of select="@width"/>;</xsl:if>-->
-<xsl:for-each select="widths/char"><xsl:variable name="char-name" select="@name"/>   width[<xsl:value-of select="$char-name"/>] = <xsl:value-of select="@width"/>;
-</xsl:for-each>
-
-    HashMap tmptable;
-<xsl:for-each select="kerning">
-<xsl:variable name="kpx1-name" select="@kpx1"/>
-    tmptable=new HashMap();<xsl:for-each select="pair"><xsl:variable name="kpx2-name" select="@kpx2"/><xsl:variable name="kern-name" select="@kern"/>
-    tmptable.put(Glyphs.glyphToString("<xsl:value-of select="$kpx2-name"/>"), new Integer(<xsl:value-of select="$kern-name"/>));</xsl:for-each>
-    kerning.put(Glyphs.glyphToString("<xsl:value-of select="$kpx1-name"/>"), tmptable);
-</xsl:for-each>
-    }
-
-    public final boolean hasKerningInfo() {return kerning.isEmpty();}
-    public final java.util.HashMap getKerningInfo() {return kerning;}
-
-    public byte getSubType() {return org.apache.fop.pdf.PDFFont.TRUETYPE;}
-    public boolean isEmbeddable() {
-        return (embedFileName==null &amp;&amp; embedResourceName==null) ? false : true;
-    }
-    public PDFStream getFontFile(int i) {
-        InputStream instream=null;
-
-        // Get file first
-        if (embedFileName!=null)
-        try {
-           instream=new FileInputStream(embedFileName);
-        } catch (Exception e) {
-           System.out.println("Failed to embed fontfile: "+embedFileName);
-        }
-
-        // Get resource
-        if (instream==null &amp;&amp; embedResourceName!=null)
-        try {
-           instream=new BufferedInputStream(this.getClass().getResourceAsStream(embedResourceName));
-        } catch (Exception e) {
-           System.out.println("Failed to embed fontresource: "+embedResourceName);
-        }
-
-        if (instream==null)
-            return (PDFStream)null;
-
-        // Read fontdata
-        byte[] file = new byte[128000];
-        int fsize = 0;
-
-        try {
-          int l = instream.read(file, 0, 128000);
-          fsize += l;
-
-          if (l==128000) {
-                 // More to read - needs to extend
-             byte[] tmpbuf;
-
-             while (l &gt; 0) {
-                 tmpbuf = new byte[file.length + 64000];
-                 System.arraycopy(file, 0, tmpbuf, 0, file.length);
-                 l=instream.read(tmpbuf, file.length, 64000);
-                 fsize += l;
-                 file = tmpbuf;
-
-                 if (l &lt; 64000) // whole file read. No need to loop again
-                    l=0;
-             }
-          }
-
-          embeddedFont=new PDFTTFStream(i, fsize);
-          embeddedFont.addFilter("flate");
-          embeddedFont.addFilter("ascii-85");
-          embeddedFont.setData(file, fsize);
-          instream.close();
-        } catch (Exception e) {}
-
-        return (PDFStream) embeddedFont;
-    }
-    public String encoding() {
-        return encoding;
-    }
-
-    public String fontName() {
-        return fontName;
-    }
-
-    public int getAscender() {return ascender;}
-    public int getDescender() {return descender;}
-    public int getCapHeight() {return capHeight;}
-
-    public int getAscender(int size) {
-        return size * ascender;
-    }
-
-    public int getCapHeight(int size) {
-        return size * capHeight;
-    }
-
-    public int getDescender(int size) {
-        return size * descender;
-    }
-
-    public int getXHeight(int size) {
-        return size * xHeight;
-    }
-
-    public int getFlags() {
-        return flags;
-    }
-
-    public int[] getFontBBox() {
-        return fontBBox;
-    }
-
-    public int getItalicAngle() {
-        return italicAngle;
-    }
-
-    public int getStemV() {
-        return stemV;
-    }
-
-    public int getFirstChar() {
-        return firstChar;
-    }
-
-    public int getLastChar() {
-        return lastChar;
-    }
-
-    public int width(int i, int size) {
-        return size * width[i];
-    }
-
-    public int[] getWidths(int size) {
-        int[] arr = new int[getLastChar()-getFirstChar()+1];
-        System.arraycopy(width, getFirstChar(), arr, 0, getLastChar()-getFirstChar()+1);
-        for( int i = 0; i &lt; arr.length; i++) arr[i] *= size;
-        return arr;
-    }
-}
-<!--</redirect:write>-->
-</xsl:template>
-</xsl:stylesheet>
-
-
diff --git a/src/codegen/unicode/data/LineBreakPairTable.txt b/src/codegen/unicode/data/LineBreakPairTable.txt
new file mode 100755 (executable)
index 0000000..93388e1
--- /dev/null
@@ -0,0 +1,28 @@
+       OP      CL      QU      GL      NS      EX      SY      IS      PR      PO      NU      AL      ID      IN      HY      BA      BB      B2      ZW      CM      WJ      H2      H3      JL      JV      JT
+OP     ^       ^       ^       ^       ^       ^       ^       ^       ^       ^       ^       ^       ^       ^       ^       ^       ^       ^       ^       @       ^       ^       ^       ^       ^       ^
+CL     _       ^       %       %       ^       ^       ^       ^       %       %       %       %       _       _       %       %       _       _       ^       #       ^       _       _       _       _       _
+QU     ^       ^       %       %       %       ^       ^       ^       %       %       %       %       %       %       %       %       %       %       ^       #       ^       %       %       %       %       %
+GL     %       ^       %       %       %       ^       ^       ^       %       %       %       %       %       %       %       %       %       %       ^       #       ^       %       %       %       %       %
+NS     _       ^       %       %       %       ^       ^       ^       _       _       _       _       _       _       %       %       _       _       ^       #       ^       _       _       _       _       _
+EX     _       ^       %       %       %       ^       ^       ^       _       _       _       _       _       _       %       %       _       _       ^       #       ^       _       _       _       _       _
+SY     _       ^       %       %       %       ^       ^       ^       _       _       %       _       _       _       %       %       _       _       ^       #       ^       _       _       _       _       _
+IS     _       ^       %       %       %       ^       ^       ^       _       _       %       %       _       _       %       %       _       _       ^       #       ^       _       _       _       _       _
+PR     %       ^       %       %       %       ^       ^       ^       _       _       %       %       %       _       %       %       _       _       ^       #       ^       %       %       %       %       %
+PO     %       ^       %       %       %       ^       ^       ^       _       _       %       %       _       _       %       %       _       _       ^       #       ^       _       _       _       _       _
+NU     %       ^       %       %       %       ^       ^       ^       %       %       %       %       _       %       %       %       _       _       ^       #       ^       _       _       _       _       _
+AL     %       ^       %       %       %       ^       ^       ^       _       _       %       %       _       %       %       %       _       _       ^       #       ^       _       _       _       _       _
+ID     _       ^       %       %       %       ^       ^       ^       _       %       _       _       _       %       %       %       _       _       ^       #       ^       _       _       _       _       _
+IN     _       ^       %       %       %       ^       ^       ^       _       _       _       _       _       %       %       %       _       _       ^       #       ^       _       _       _       _       _
+HY     _       ^       %       %       %       ^       ^       ^       _       _       %       _       _       _       %       %       _       _       ^       #       ^       _       _       _       _       _
+BA     _       ^       %       %       %       ^       ^       ^       _       _       _       _       _       _       %       %       _       _       ^       #       ^       _       _       _       _       _
+BB     %       ^       %       %       %       ^       ^       ^       %       %       %       %       %       %       %       %       %       %       ^       #       ^       %       %       %       %       %
+B2     _       ^       %       %       %       ^       ^       ^       _       _       _       _       _       _       %       %       _       ^       ^       #       ^       _       _       _       _       _
+ZW     _       _       _       _       _       _       _       _       _       _       _       _       _       _       _       _       _       _       ^       _       _       _       _       _       _       _
+CM     _       ^       %       %       %       ^       ^       ^       _       _       %       %       _       %       %       %       _       _       ^       #       ^       _       _       _       _       _
+WJ     %       ^       %       %       %       ^       ^       ^       %       %       %       %       %       %       %       %       %       %       ^       #       ^       %       %       %       %       %
+H2     _       ^       %       %       %       ^       ^       ^       _       %       _       _       _       %       %       %       _       _       ^       #       ^       _       _       _       %       %
+H3     _       ^       %       %       %       ^       ^       ^       _       %       _       _       _       %       %       %       _       _       ^       #       ^       _       _       _       _       %
+JL     _       ^       %       %       %       ^       ^       ^       _       %       _       _       _       %       %       %       _       _       ^       #       ^       %       %       %       %       _
+JV     _       ^       %       %       %       ^       ^       ^       _       %       _       _       _       %       %       %       _       _       ^       #       ^       _       _       _       %       %
+JT     _       ^       %       %       %       ^       ^       ^       _       %       _       _       _       %       %       %       _       _       ^       #       ^       _       _       _       _       %
diff --git a/src/codegen/unicode/java/org/apache/fop/text/linebreak/GenerateLineBreakUtils.java b/src/codegen/unicode/java/org/apache/fop/text/linebreak/GenerateLineBreakUtils.java
new file mode 100644 (file)
index 0000000..b956cab
--- /dev/null
@@ -0,0 +1,659 @@
+/* 
+ * 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.text.linebreak;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+/**
+ * <p>Utility for generating a Java class representing line break properties
+ * from the Unicode property files.</p>
+ * <p>Customizations:
+ * <ul>
+ * <li>The pair table file is a cut+paste of the sample table from the TR14
+ * HTML file into a text file.</li>
+ * <li>Because the sample table does not cover all line break classes, check the
+ * 'not in pair table' list of property value short names.</li>
+ * <li>Check MAX_LINE_LENGTH.</li>
+ * </ul>
+ *
+ */
+public class GenerateLineBreakUtils {
+
+    private static final int MAX_LINE_LENGTH = 110;
+
+    private static final byte DIRECT_BREAK = 0;                 // _ in table
+    private static final byte INDIRECT_BREAK = 1;               // % in table
+    private static final byte COMBINING_INDIRECT_BREAK = 2;     // # in table
+    private static final byte COMBINING_PROHIBITED_BREAK = 3;   // @ in table
+    private static final byte PROHIBITED_BREAK = 4;             // ^ in table
+    private static final byte EXPLICIT_BREAK = 5;               // ! in rules
+    private static final String notInPairTable[] = { "AI", "BK", "CB", "CR", "LF", "NL", "SA", "SG", "SP", "XX" };
+
+    private static final byte lineBreakProperties[] = new byte[0x10000];
+    private static final Map lineBreakPropertyValues = new HashMap();
+    private static final List lineBreakPropertyShortNames = new ArrayList();
+    private static final List lineBreakPropertyLongNames = new ArrayList();
+
+    /**
+     * Generate a class managing line break properties for Unicode characters and a sample
+     * table for the table driven line breaking algorithm described in
+     * <a href="http://unicode.org/reports/tr14/#PairBasedImplementation">UTR #14</a>.
+     * TODO: Code points above the base plane are simply ignored.
+     * 
+     * @param lineBreakFileName Name of line break property file (part of Unicode files).
+     * @param propertyValueFileName Name of property values alias file (part of Unicode files).
+     * @param breakPairFileName Name of pair table file (<i>not</i> part of the unicode files).
+     * @param outFileName Name of the output file.
+     * @throws Exception in case anything goes wrong.
+     */
+    private static void convertLineBreakProperties(
+        String lineBreakFileName,
+        String propertyValueFileName,
+        String breakPairFileName,
+        String outFileName)
+        throws Exception {
+
+        readLineBreakProperties(lineBreakFileName, propertyValueFileName);
+        // read break pair table
+        int lineBreakPropertyValueCount = lineBreakPropertyValues.size();
+        int tableSize = lineBreakPropertyValueCount - notInPairTable.length;
+        Map notInPairTableMap = new HashMap(notInPairTable.length);
+        for (int i = 0; i < notInPairTable.length; i++) {
+            Object v = lineBreakPropertyValues.get(notInPairTable[i]);
+            if (v == null) {
+                throw new Exception("'not in pair table' property not found: " + notInPairTable[i]);
+            }
+            notInPairTableMap.put(notInPairTable[i], v);
+        }
+        byte pairTable[][] = new byte[tableSize][];
+        byte columnHeader[] = new byte[tableSize];
+        byte rowHeader[] = new byte[tableSize];
+        byte columnMap[] = new byte[lineBreakPropertyValueCount + 1];
+        Arrays.fill(columnMap, (byte)255);
+        byte rowMap[] = new byte[lineBreakPropertyValueCount + 1];
+        Arrays.fill(rowMap, (byte)255);
+        BufferedReader b = new BufferedReader(new FileReader(breakPairFileName));
+        String line = b.readLine();
+        int lineNumber = 1;
+        // read header
+        if (line != null) {
+            StringTokenizer tok = new StringTokenizer(line);
+            byte columnNumber = 0;
+            while (tok.hasMoreTokens()) {
+                String name = tok.nextToken();
+                if (columnNumber >= columnHeader.length) {
+                    throw new Exception(breakPairFileName + ':' + lineNumber + ": unexpected column header " + name);
+                }
+                if (notInPairTableMap.get(name) != null) {
+                    throw new Exception(breakPairFileName + ':' + lineNumber + ": invalid column header " + name);
+                }
+                Byte v = (Byte)lineBreakPropertyValues.get(name);
+                if (v != null) {
+                    byte vv = v.byteValue();
+                    columnHeader[columnNumber] = vv;
+                    columnMap[vv] = columnNumber;
+                } else {
+                    throw new Exception(breakPairFileName + ':' + lineNumber + ": unknown column header " + name);
+                }
+                columnNumber++;
+            }
+            if (columnNumber < columnHeader.length) {
+                StringBuffer missing = new StringBuffer();
+                for (int j = 0; j < lineBreakPropertyShortNames.size(); j++) {
+                    boolean found = false;
+                    for (int k = 0; k < columnNumber; k++) {
+                        if (columnHeader[k] == j + 1) {
+                            found = true;
+                            break;
+                        }
+                    }
+                    if (!found) {
+                        if (missing.length() > 0) {
+                            missing.append(", ");
+                        }
+                        missing.append((String)lineBreakPropertyShortNames.get(j));
+                    }
+                }
+                throw new Exception(
+                    breakPairFileName + ':' + lineNumber + ": missing column for properties: " + missing.toString());
+            }
+        } else {
+            throw new Exception(breakPairFileName + ':' + lineNumber + ": can't read table header");
+        }
+        line = b.readLine().trim();
+        lineNumber++;
+        byte rowNumber = 0;
+        while (line != null && line.length() > 0) {
+            if (rowNumber >= rowHeader.length) {
+                throw new Exception(breakPairFileName + ':' + lineNumber + ": unexpected row " + line);
+            }
+            pairTable[rowNumber] = new byte[tableSize];
+            StringTokenizer tok = new StringTokenizer(line);
+            if (tok.hasMoreTokens()) {
+                String name = tok.nextToken();
+                if (notInPairTableMap.get(name) != null) {
+                    throw new Exception(breakPairFileName + ':' + lineNumber + ": invalid row header " + name);
+                }
+                Byte v = (Byte)lineBreakPropertyValues.get(name);
+                if (v != null) {
+                    byte vv = v.byteValue();
+                    rowHeader[rowNumber] = vv;
+                    rowMap[vv] = rowNumber;
+                } else {
+                    throw new Exception(breakPairFileName + ':' + lineNumber + ": unknown row header " + name);
+                }
+            } else {
+                throw new Exception(breakPairFileName + ':' + lineNumber + ": can't read row header");
+            }
+            int columnNumber = 0;
+            while (tok.hasMoreTokens()) {
+                String token = tok.nextToken();
+                if (token.length() == 1) {
+                    switch (token.charAt(0)) {
+                        case '^' :
+                            pairTable[rowNumber][columnNumber] = PROHIBITED_BREAK;
+                            break;
+                        case '%' :
+                            pairTable[rowNumber][columnNumber] = INDIRECT_BREAK;
+                            break;
+                        case '_' :
+                            pairTable[rowNumber][columnNumber] = DIRECT_BREAK;
+                            break;
+                        case '#' :
+                            pairTable[rowNumber][columnNumber] = COMBINING_INDIRECT_BREAK;
+                            break;
+                        case '@' :
+                            pairTable[rowNumber][columnNumber] = COMBINING_PROHIBITED_BREAK;
+                            break;
+                        default :
+                            throw new Exception(breakPairFileName + ':' + lineNumber + ": unexpected token: " + token);
+                    }
+                } else {
+                    throw new Exception(breakPairFileName + ':' + lineNumber + ": token too long: " + token);
+                }
+                columnNumber++;
+            }
+            line = b.readLine().trim();
+            lineNumber++;
+            rowNumber++;
+        }
+        if (rowNumber < rowHeader.length) {
+            StringBuffer missing = new StringBuffer();
+            for (int j = 0; j < lineBreakPropertyShortNames.size(); j++) {
+                boolean found = false;
+                for (int k = 0; k < rowNumber; k++) {
+                    if (rowHeader[k] == j + 1) {
+                        found = true;
+                        break;
+                    }
+                }
+                if (!found) {
+                    if (missing.length() > 0) {
+                        missing.append(", ");
+                    }
+                    missing.append((String)lineBreakPropertyShortNames.get(j));
+                }
+            }
+            throw new Exception(
+                breakPairFileName + ':' + lineNumber + ": missing row for properties: " + missing.toString());
+        }
+
+        // generate class
+        int rowsize = 512;
+        int blocksize = lineBreakProperties.length / rowsize;
+        byte row[][] = new byte[rowsize][];
+        int idx = 0;
+        StringBuffer doStaticLinkCode = new StringBuffer();
+        PrintWriter out = new PrintWriter(new FileWriter(outFileName));
+        out.println("/*");
+        out.println(" * Licensed to the Apache Software Foundation (ASF) under one or more");
+        out.println(" * contributor license agreements.  See the NOTICE file distributed with");
+        out.println(" * this work for additional information regarding copyright ownership.");
+        out.println(" * The ASF licenses this file to You under the Apache License, Version 2.0");
+        out.println(" * (the \"License\"); you may not use this file except in compliance with");
+        out.println(" * the License.  You may obtain a copy of the License at");
+        out.println(" * ");
+        out.println(" *      http://www.apache.org/licenses/LICENSE-2.0");
+        out.println(" * ");
+        out.println(" * Unless required by applicable law or agreed to in writing, software");
+        out.println(" * distributed under the License is distributed on an \"AS IS\" BASIS,");
+        out.println(" * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.");
+        out.println(" * See the License for the specific language governing permissions and");
+        out.println(" * limitations under the License.");
+        out.println(" */");
+        out.println();
+        out.println("/* $Id$ */");
+        out.println();
+        out.println("package org.apache.commons.text.linebreak;");
+        out.println();
+        out.println("/* ");
+        out.println(" * This is a generated file, DO NOT CHANGE!");
+        out.println(" */");
+        out.println();
+        out.println("class LineBreakUtils {");
+        out.println();
+        out.println("    public static final byte DIRECT_BREAK = " + DIRECT_BREAK + ';');
+        out.println("    public static final byte INDIRECT_BREAK = " + INDIRECT_BREAK + ';');
+        out.println("    public static final byte COMBINING_INDIRECT_BREAK = " + COMBINING_INDIRECT_BREAK + ';');
+        out.println("    public static final byte COMBINING_PROHIBITED_BREAK = " + COMBINING_PROHIBITED_BREAK + ';');
+        out.println("    public static final byte PROHIBITED_BREAK = " + PROHIBITED_BREAK + ';');
+        out.println("    public static final byte EXPLICIT_BREAK = " + EXPLICIT_BREAK + ';');
+        out.println();
+        out.println("    private static final byte PAIR_TABLE[][] = {");
+        boolean printComma = false;
+        for (int i = 1; i <= lineBreakPropertyValueCount; i++) {
+            if (printComma) {
+                out.println(',');
+            } else {
+                printComma = true;
+            }
+            out.print("        {");
+            boolean localPrintComma = false;
+            for (int j = 1; j <= lineBreakPropertyValueCount; j++) {
+                if (localPrintComma) {
+                    out.print(',');
+                } else {
+                    localPrintComma = true;
+                }
+                if (columnMap[j] != -1 && rowMap[i] != -1) {
+                    out.print(pairTable[rowMap[i]][columnMap[j]]);
+                } else {
+                    out.print('0');
+                }
+            }
+            out.print('}');
+        }
+        out.println("};");
+        out.println();
+        out.println("    private static byte lineBreakProperties[][] = new byte[" + rowsize + "][];");
+        out.println();
+        out.println("    private static void init_0() {");
+        int rowsPrinted = 0;
+        int initSections = 0;
+        for (int i = 0; i < rowsize; i++) {
+            boolean found = false;
+            for (int j = 0; j < i; j++) {
+                if (row[j] != null) {
+                    boolean matched = true;
+                    for (int k = 0; k < blocksize; k++) {
+                        if (row[j][k] != lineBreakProperties[idx + k]) {
+                            matched = false;
+                            break;
+                        }
+                    }
+                    if (matched) {
+                        found = true;
+                        doStaticLinkCode.append("        lineBreakProperties[");
+                        doStaticLinkCode.append(i);
+                        doStaticLinkCode.append("]=lineBreakProperties[");
+                        doStaticLinkCode.append(j);
+                        doStaticLinkCode.append("];\n");
+                        break;
+                    }
+                }
+            }
+            if (!found) {
+                if (rowsPrinted >= 64) {
+                    out.println("    };");
+                    out.println();
+                    initSections++;
+                    out.println("    private static void init_" + initSections + "() {");
+                    rowsPrinted = 0;
+                }
+                row[i] = new byte[blocksize];
+                boolean printLocalComma = false;
+                out.print("        lineBreakProperties[" + i + "] = new byte[] { ");
+                for (int k = 0; k < blocksize; k++) {
+                    row[i][k] = lineBreakProperties[idx + k];
+                    if (printLocalComma) {
+                        out.print(',');
+                    } else {
+                        printLocalComma = true;
+                    }
+                    out.print(row[i][k]);
+                }
+                out.println("};");
+                rowsPrinted++;
+            }
+            idx += blocksize;
+        }
+        out.println("    };");
+        out.println();
+        out.println("    static {");
+        for (int i = 0; i <= initSections; i++) {
+            out.println("        init_" + i + "();");
+        }
+        out.print(doStaticLinkCode);
+        out.println("    };");
+        out.println();
+        for (int i = 0; i < lineBreakPropertyShortNames.size(); i++) {
+            String shortName = (String)lineBreakPropertyShortNames.get(i);
+            out.print("    public static final byte LINE_BREAK_PROPERTY_");
+            out.print(shortName);
+            out.print('=');
+            out.print(i + 1);
+            out.println(';');
+        }
+        out.println();
+        final String shortNamePrefix = "    private static String lineBreakPropertyShortNames[] = {";
+        out.print(shortNamePrefix);
+        int lineLength = shortNamePrefix.length();
+        printComma = false;
+        for (int i = 0; i < lineBreakPropertyShortNames.size(); i++) {
+            String name = (String)lineBreakPropertyShortNames.get(i);
+            if (printComma) {
+                out.print(',');
+                lineLength++;
+            } else {
+                printComma = true;
+            }
+            if (lineLength > MAX_LINE_LENGTH) {
+                out.println();
+                out.print("        ");
+                lineLength = 8;
+            }
+            out.print('"');
+            out.print(name);
+            out.print('"');
+            lineLength += (2 + name.length());
+        }
+        out.println("};");
+        out.println();
+        final String longNamePrefix = "    private static String lineBreakPropertyLongNames[] = {";
+        out.print(longNamePrefix);
+        lineLength = longNamePrefix.length();
+        printComma = false;
+        for (int i = 0; i < lineBreakPropertyLongNames.size(); i++) {
+            String name = (String)lineBreakPropertyLongNames.get(i);
+            if (printComma) {
+                out.print(',');
+                lineLength++;
+            } else {
+                printComma = true;
+            }
+            if (lineLength > MAX_LINE_LENGTH) {
+                out.println();
+                out.print("        ");
+                lineLength = 8;
+            }
+            out.print('"');
+            out.print(name);
+            out.print('"');
+            lineLength += (2 + name.length());
+        }
+        out.println("};");
+        out.println();
+        out.println("    public static String getLineBreakPropertyShortName(byte i) {");
+        out.println("        if (i>0 && i<=lineBreakPropertyShortNames.length) {");
+        out.println("            return lineBreakPropertyShortNames[i-1];");
+        out.println("        } else {");
+        out.println("            return null;");
+        out.println("        }");
+        out.println("    }");
+        out.println();
+        out.println("    public static String getLineBreakPropertyLongName(byte i) {");
+        out.println("        if (i>0 && i<=lineBreakPropertyLongNames.length) {");
+        out.println("            return lineBreakPropertyLongNames[i-1];");
+        out.println("        } else {");
+        out.println("            return null;");
+        out.println("        }");
+        out.println("    }");
+        out.println();
+        out.println("    public static byte getLineBreakProperty(char c) {");
+        out.println("        return lineBreakProperties[c/" + blocksize + "][c%" + blocksize + "];");
+        out.println("    }");
+        out.println();
+        out.println(
+            "    public static byte getLineBreakPairProperty(int lineBreakPropertyBefore,int lineBreakPropertyAfter) {");
+        out.println("        return PAIR_TABLE[lineBreakPropertyBefore-1][lineBreakPropertyAfter-1];");
+        out.println("    }");
+        out.println();
+        out.println("};");
+        out.flush();
+        out.close();
+    }
+
+    /**
+     * Read line break property value names and the actual properties for the Unicode
+     * characters from the respective Unicode files.
+     * TODO: Code points above the base plane are simply ignored.
+     * 
+     * @param lineBreakFileName Name of line break property file.
+     * @param propertyValueFileName Name of property values alias file.
+     * @throws Exception in case anything goes wrong.
+     */
+    private static void readLineBreakProperties(String lineBreakFileName, String propertyValueFileName)
+        throws Exception {
+        // read property names
+        BufferedReader b = new BufferedReader(new InputStreamReader(new URL(propertyValueFileName).openStream()));
+        String line = b.readLine();
+        int lineNumber = 1;
+        byte propertyIndex = 1;
+        byte indexForUnknown = 0;
+        while (line != null) {
+            if (line.startsWith("lb")) {
+                String shortName;
+                String longName = null;
+                int semi = line.indexOf(';');
+                if (semi < 0) {
+                    throw new Exception(
+                        propertyValueFileName + ':' + lineNumber + ": missing property short name in " + line);
+                }
+                line = line.substring(semi + 1);
+                semi = line.indexOf(';');
+                if (semi > 0) {
+                    shortName = line.substring(0, semi).trim();
+                    longName = line.substring(semi + 1).trim();
+                    semi = longName.indexOf(';');
+                    if (semi > 0) {
+                        longName = longName.substring(0, semi).trim();
+                    }
+                } else {
+                    shortName = line.trim();
+                }
+                if (shortName.equals("XX")) {
+                    indexForUnknown = propertyIndex;
+                }
+                lineBreakPropertyValues.put(shortName, new Byte((byte)propertyIndex));
+                lineBreakPropertyShortNames.add(shortName);
+                lineBreakPropertyLongNames.add(longName);
+                propertyIndex++;
+                if (propertyIndex <= 0) {
+                    throw new Exception(propertyValueFileName + ':' + lineNumber + ": property rolled over in " + line);
+                }
+            }
+            line = b.readLine();
+            lineNumber++;
+        }
+        if (indexForUnknown == 0) {
+            throw new Exception("index for XX (unknown) line break property value not found");
+        }
+
+        // read property values
+        Arrays.fill(lineBreakProperties, (byte)0);
+        b = new BufferedReader(new InputStreamReader(new URL(lineBreakFileName).openStream()));
+        line = b.readLine();
+        lineNumber = 1;
+        while (line != null) {
+            int idx = line.indexOf('#');
+            if (idx >= 0) {
+                line = line.substring(0, idx);
+            }
+            line = line.trim();
+            if (line.length() > 0) {
+                idx = line.indexOf(';');
+                if (idx <= 0) {
+                    throw new Exception(lineBreakFileName + ':' + lineNumber + ": No field delimiter in " + line);
+                }
+                Byte v = (Byte)lineBreakPropertyValues.get(line.substring(idx + 1).trim());
+                if (v == null) {
+                    throw new Exception(lineBreakFileName + ':' + lineNumber + ": Unknown property value in " + line);
+                }
+                String codepoint = line.substring(0, idx);
+                int low, high;
+                idx = codepoint.indexOf("..");
+                try {
+                    if (idx >= 0) {
+                        low = Integer.parseInt(codepoint.substring(0, idx), 16);
+                        high = Integer.parseInt(codepoint.substring(idx + 2), 16);
+                    } else {
+                        low = Integer.parseInt(codepoint, 16);
+                        high = low;
+                    }
+                } catch (NumberFormatException e) {
+                    throw new Exception(lineBreakFileName + ':' + lineNumber + ": Invalid codepoint number in " + line);
+                }
+                if (high > 0xFFFF) {
+                    // ignore non-baseplane characters for now
+
+                } else {
+                    if (low < 0 || high < 0) {
+                        throw new Exception(
+                            lineBreakFileName + ':' + lineNumber + ": Negative codepoint(s) in " + line);
+                    }
+                    byte vv = v.byteValue();
+                    for (int i = low; i <= high; i++) {
+                        if (lineBreakProperties[i] != 0) {
+                            throw new Exception(
+                                lineBreakFileName
+                                    + ':'
+                                    + lineNumber
+                                    + ": Property already set for "
+                                    + ((char)i)
+                                    + " in "
+                                    + line);
+                        }
+                        lineBreakProperties[i] = vv;
+                    }
+                }
+            }
+            line = b.readLine();
+            lineNumber++;
+        }
+    }
+
+    /**
+     * Determine a good block size for the two stage optimized storage of the
+     * line breaking properties. Note: the memory utilization calculation is a rule of thumb,
+     * don't take it too serious.
+     * 
+     * @param lineBreakFileName Name of line break property file.
+     * @param propertyValueFileName Name of property values alias file.
+     * @throws Exception in case anything goes wrong.
+     */
+    private static void optimizeBlocks(String lineBreakFileName, String propertyValueFileName) throws Exception {
+        readLineBreakProperties(lineBreakFileName, propertyValueFileName);
+        for (int i = 0; i < 16; i++) {
+            int rowsize = 1 << i;
+            int blocksize = lineBreakProperties.length / (rowsize);
+            byte row[][] = new byte[rowsize][];
+            int idx = 0;
+            int nrOfDistinctBlocks = 0;
+            for (int j = 0; j < rowsize; j++) {
+                byte block[] = new byte[blocksize];
+                for (int k = 0; k < blocksize; k++) {
+                    block[k] = lineBreakProperties[idx];
+                    idx++;
+                }
+                boolean found = false;
+                for (int k = 0; k < j; k++) {
+                    if (row[k] != null) {
+                        boolean matched = true;
+                        for (int l = 0; l < blocksize; l++) {
+                            if (row[k][l] != block[l]) {
+                                matched = false;
+                                break;
+                            }
+                        }
+                        if (matched) {
+                            found = true;
+                            break;
+                        }
+                    }
+                }
+                if (!found) {
+                    row[j] = block;
+                    nrOfDistinctBlocks++;
+                } else {
+                    row[j] = null;
+                }
+            }
+            int size = rowsize * 4 + nrOfDistinctBlocks * blocksize;
+            System.out.println(
+                "i=" + i + " blocksize=" + blocksize + " blocks=" + nrOfDistinctBlocks + " size=" + size);
+        }
+    }
+
+    public static void main(String[] args) {
+        String lineBreakFileName = "http://www.unicode.org/Public/UNIDATA/LineBreak.txt";
+        String propertyValueFileName = "http://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt";
+        String breakPairFileName = "src/codegen/unicode/data/LineBreakPairTable.txt";
+        String outFileName = "LineBreakUtils.java";
+        boolean ok = true;
+        for (int i = 0; i < args.length; i = i + 2) {
+            if (i + 1 == args.length) {
+                ok = false;
+            } else {
+                String opt = args[i];
+                if ("-l".equals(opt)) {
+                    lineBreakFileName = args[i+1];
+                } else if ("-p".equals(opt)) {
+                    propertyValueFileName = args[i+1];
+                } else if ("-b".equals(opt)) {
+                    breakPairFileName = args[i+1];
+                } else if("-o".equals(opt)) {
+                    outFileName = args[i+1];
+                } else {
+                    ok = false;
+                }
+            }
+        }
+        if (!ok) {
+            System.out.println("Usage: GenerateLineBreakUtils [-l <lineBreakFile>] [-p <propertyValueFile>] [-b <breakPairFile>] [-o <outputFile>]");
+            System.out.println("  defaults:");
+            System.out.println("    <lineBreakFile>:     " + lineBreakFileName);
+            System.out.println("    <propertyValueFile>: " + propertyValueFileName);
+            System.out.println("    <breakPairFile>:     " + breakPairFileName);
+            System.out.println("    <outputFile>:        " + outFileName);
+        } else {
+            try {
+                convertLineBreakProperties(lineBreakFileName, propertyValueFileName, breakPairFileName, outFileName);
+                System.out.println("Generated " + outFileName + " from");
+                System.out.println("  <lineBreakFile>:     " + lineBreakFileName);
+                System.out.println("  <propertyValueFile>: " + propertyValueFileName);
+                System.out.println("  <breakPairFile>:     " + breakPairFileName);
+            } catch (Exception e) {
+                System.out.println("An unexpected error occured");
+                e.printStackTrace();
+            }
+        }
+    }
+}
index bfacc777bcce1ff5c3d6a502e635df52a19467d1..28ec13b6b4f6b723881cd32d758fbcdd234d686f 100644 (file)
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.LinkedList;
 import java.util.ListIterator;
+import java.util.NoSuchElementException;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -43,6 +44,7 @@ import org.apache.fop.layoutmgr.LeafPosition;
 import org.apache.fop.layoutmgr.Position;
 import org.apache.fop.layoutmgr.PositionIterator;
 import org.apache.fop.layoutmgr.TraitSetter;
+import org.apache.fop.text.linebreak.LineBreakStatus;
 import org.apache.fop.traits.MinOptMax;
 import org.apache.fop.traits.SpaceVal;
 import org.apache.fop.util.CharUtilities;
@@ -543,133 +545,201 @@ public class TextLayoutManager extends LeafNodeLayoutManager {
         AreaInfo ai = null;
         returnList.add(sequence);
 
+        LineBreakStatus lbs = new LineBreakStatus();
+        iThisStart = iNextStart;
+        boolean inWord = false;
+        boolean inWhitespace = false;
+        char ch = 0; 
         while (iNextStart < textArray.length) {
-            char ch = textArray[iNextStart]; 
-            if (ch == CharUtilities.SPACE 
-                && foText.getWhitespaceTreatment() != Constants.EN_PRESERVE) {
-                // normal non preserved space - collect them all
-                // advance to the next character
-                iThisStart = iNextStart;
-                iNextStart++;
-                while (iNextStart < textArray.length 
-                    && textArray[iNextStart] == CharUtilities.SPACE) {
-                    iNextStart++;
-                }
-                // create the AreaInfo object
-                ai = new AreaInfo(iThisStart, (short) (iNextStart),
-                        (short) (iNextStart - iThisStart), (short) 0,
-                        MinOptMax.multiply(wordSpaceIPD, iNextStart - iThisStart),
-                        false, true); 
-                vecAreaInfo.add(ai);
+            ch = textArray[iNextStart]; 
+            boolean breakOpportunity = false;
+            byte breakAction = lbs.nextChar(ch);
+            switch (breakAction) {
+                case LineBreakStatus.COMBINING_PROHIBITED_BREAK:
+                case LineBreakStatus.PROHIBITED_BREAK:
+                    break;
+                case LineBreakStatus.EXPLICIT_BREAK:
+                    break;
+                case LineBreakStatus.COMBINING_INDIRECT_BREAK:
+                case LineBreakStatus.DIRECT_BREAK:
+                case LineBreakStatus.INDIRECT_BREAK:
+                    breakOpportunity = true;
+                    break;
+                default:
+                    log.error("Unexpected breakAction: " + breakAction);
+            }
+            if (inWord) {
+                if (breakOpportunity || isSpace(ch) || ch == NEWLINE) {
+                    //Word boundary found, process widths and kerning
+                    int wordLength = iNextStart - iThisStart;
+                    boolean kerning = font.hasKerning();
+                    MinOptMax wordIPD = new MinOptMax(0);
+                    for (int i = iThisStart; i < iNextStart; i++) {
+                        char c = textArray[i];
+
+                        //character width
+                        int charWidth = font.getCharWidth(c);
+                        wordIPD.add(charWidth);
+
+                        //kerning
+                        int kern = 0;
+                        if (kerning && (i > iThisStart)) {
+                            char previous = textArray[i - 1];
+                            kern = font.getKernValue(previous, c) * font.getFontSize() / 1000;
+                            if (kern != 0) {
+                                //log.info("Kerning between " + previous + " and " + c + ": " + kern);
+                                addToLetterAdjust(i, kern);
+                            }
+                            wordIPD.add(kern);
+                        }
+                    }
+                    int iLetterSpaces = wordLength - 1;
+                    // if the last character is '-' or '/' and the next one
+                    // is not a space, it could be used as a line end;
+                    // add one more letter space, in case other text follows
+                    if (breakOpportunity && !isSpace(ch)) {
+                        iLetterSpaces++;
+                    }
+                    wordIPD.add(MinOptMax.multiply(letterSpaceIPD, iLetterSpaces));
 
-                // create the elements
-                sequence.addAll
-                    (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1));
+                    // create the AreaInfo object
+                    ai = new AreaInfo(iThisStart, iNextStart, (short) 0,
+                            (short) iLetterSpaces,
+                            wordIPD, false, false);
+                    vecAreaInfo.add(ai);
+                    iTempStart = iNextStart;
 
-            } else if (ch == CharUtilities.SPACE || ch == CharUtilities.NBSPACE) {
+                    // create the elements
+                    sequence.addAll(createElementsForAWordFragment(alignment, ai,
+                            vecAreaInfo.size() - 1, letterSpaceIPD, breakOpportunity));
+                    ai = null;
+
+                    iThisStart = iNextStart;
+                }
+            } else if (inWhitespace) {
+                if (ch != CharUtilities.SPACE || breakOpportunity) {
+                    // End of whitespace
+                    // create the AreaInfo object
+                    ai = new AreaInfo(iThisStart, (short) (iNextStart),
+                            (short) (iNextStart - iThisStart), (short) 0,
+                            MinOptMax.multiply(wordSpaceIPD, iNextStart - iThisStart),
+                            false, true); 
+                    vecAreaInfo.add(ai);
+
+                    // create the elements
+                    sequence.addAll
+                        (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1, breakOpportunity));
+                    ai = null;
+
+                    iThisStart = iNextStart;
+                }
+            } else {
+                if (ai != null) {
+                    vecAreaInfo.add(ai);
+                    sequence.addAll
+                        (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1, ch == CharUtilities.SPACE || breakOpportunity));
+                    ai = null;
+                }
+                if (breakAction == LineBreakStatus.EXPLICIT_BREAK) {
+                    if (lineEndBAP != 0) {
+                        sequence.add
+                            (new KnuthGlue(lineEndBAP, 0, 0,
+                                           new LeafPosition(this, -1), true));
+                    }
+                    sequence.endSequence();
+                    sequence = new InlineKnuthSequence();
+                    returnList.add(sequence);
+                }
+            }
+            
+            if (ch == CharUtilities.SPACE && foText.getWhitespaceTreatment() == Constants.EN_PRESERVE || ch == CharUtilities.NBSPACE) {
                 // preserved space or non-breaking space:
                 // create the AreaInfo object
                 ai = new AreaInfo(iNextStart, (short) (iNextStart + 1),
                         (short) 1, (short) 0,
-                        wordSpaceIPD, false, true); 
-                vecAreaInfo.add(ai);
-
-                // create the elements
-                sequence.addAll
-                    (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1));
-
-                // advance to the next character
-                iNextStart++;
+                        wordSpaceIPD, false, true);
+                iThisStart = (short) (iNextStart + 1);
             } else if (CharUtilities.isFixedWidthSpace(ch)) {
                 // create the AreaInfo object
                 MinOptMax ipd = new MinOptMax(font.getCharWidth(ch));
                 ai = new AreaInfo(iNextStart, (short) (iNextStart + 1),
                         (short) 0, (short) 0,
                         ipd, false, true); 
-                vecAreaInfo.add(ai);
-
-                // create the elements
-                sequence.addAll
-                    (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1));
-
-                // advance to the next character
-                iNextStart++;
+                iThisStart = (short) (iNextStart + 1);
             } else if (ch == NEWLINE) {
                 // linefeed; this can happen when linefeed-treatment="preserve"
-                // add a penalty item to the list and start a new sequence
-                if (lineEndBAP != 0) {
-                    sequence.add
-                        (new KnuthGlue(lineEndBAP, 0, 0,
-                                       new LeafPosition(this, -1), true));
-                }
-                sequence.endSequence();
-                sequence = new InlineKnuthSequence();
-                returnList.add(sequence);
+                iThisStart = (short) (iNextStart + 1);
+            }
+            inWord = !isSpace(ch) && ch != NEWLINE;
+            inWhitespace = ch == CharUtilities.SPACE && foText.getWhitespaceTreatment() != Constants.EN_PRESERVE;
+            iNextStart++;
+        } // end of while
+        
+        // Process any last elements
+        if (inWord) {
+            int wordLength = iNextStart - iThisStart;
+            boolean kerning = font.hasKerning();
+            MinOptMax wordIPD = new MinOptMax(0);
+            for (int i = iThisStart; i < iNextStart; i++) {
+                char c = textArray[i];
 
-                // advance to the next character
-                iNextStart++;
-            } else {
-                // the beginning of a word
-                iThisStart = iNextStart;
-                iTempStart = iNextStart;
-                for (; iTempStart < textArray.length
-                        && !isSpace(textArray[iTempStart])
-                        && textArray[iTempStart] != NEWLINE
-                        && !(iTempStart > iNextStart
-                             && isBreakChar(textArray[iTempStart - 1]));
-                        iTempStart++) {
-                    //nop, just find the word boundary
-                }
-                
-                //Word boundary found, process widths and kerning
-                int wordLength = iTempStart - iThisStart;
-                boolean kerning = font.hasKerning();
-                MinOptMax wordIPD = new MinOptMax(0);
-                for (int i = iThisStart; i < iTempStart; i++) {
-                    char c = textArray[i];
-                    
-                    //character width
-                    int charWidth = font.getCharWidth(c);
-                    wordIPD.add(charWidth);
-                    
-                    //kerning
-                    int kern = 0;
-                    if (kerning && (i > iThisStart)) {
-                        char previous = textArray[i - 1];
-                        kern = font.getKernValue(previous, c) * font.getFontSize() / 1000;
-                        if (kern != 0) {
-                            //log.info("Kerning between " + previous + " and " + c + ": " + kern);
-                            addToLetterAdjust(i, kern);
-                        }
-                        wordIPD.add(kern);
+                //character width
+                int charWidth = font.getCharWidth(c);
+                wordIPD.add(charWidth);
+
+                //kerning
+                int kern = 0;
+                if (kerning && (i > iThisStart)) {
+                    char previous = textArray[i - 1];
+                    kern = font.getKernValue(previous, c) * font.getFontSize() / 1000;
+                    if (kern != 0) {
+                        //log.info("Kerning between " + previous + " and " + c + ": " + kern);
+                        addToLetterAdjust(i, kern);
                     }
+                    wordIPD.add(kern);
                 }
-                
-                int iLetterSpaces = wordLength - 1;
-                // if the last character is '-' or '/' and the next one
-                // is not a space, it could be used as a line end;
-                // add one more letter space, in case other text follows
-                if (isBreakChar(textArray[iTempStart - 1])
-                        && iTempStart < textArray.length
-                        && !isSpace(textArray[iTempStart])) {
-                    iLetterSpaces++;
-                }
-                wordIPD.add(MinOptMax.multiply(letterSpaceIPD, iLetterSpaces));
-
-                // create the AreaInfo object
-                ai = new AreaInfo(iThisStart, iTempStart, (short) 0,
-                        (short) iLetterSpaces,
-                        wordIPD, false, false);
-                vecAreaInfo.add(ai);
-
-                // create the elements
-                sequence.addAll(createElementsForAWordFragment(alignment, ai,
-                        vecAreaInfo.size() - 1, letterSpaceIPD));
-
-                // advance to the next character
-                iNextStart = iTempStart;
             }
-        } // end of while
+            int iLetterSpaces = wordLength - 1;
+            wordIPD.add(MinOptMax.multiply(letterSpaceIPD, iLetterSpaces));
+
+            // create the AreaInfo object
+            ai = new AreaInfo(iThisStart, iNextStart, (short) 0,
+                    (short) iLetterSpaces,
+                    wordIPD, false, false);
+            vecAreaInfo.add(ai);
+            iTempStart = iNextStart;
+
+            // create the elements
+            sequence.addAll(createElementsForAWordFragment(alignment, ai,
+                    vecAreaInfo.size() - 1, letterSpaceIPD, false));
+            ai = null;
+        } else if (inWhitespace) {
+            ai = new AreaInfo(iThisStart, (short) (iNextStart),
+                    (short) (iNextStart - iThisStart), (short) 0,
+                    MinOptMax.multiply(wordSpaceIPD, iNextStart - iThisStart),
+                    false, true); 
+            vecAreaInfo.add(ai);
+
+            // create the elements
+            sequence.addAll
+                (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1, true));
+            ai = null;
+        } else if (ai != null) {
+            vecAreaInfo.add(ai);
+            sequence.addAll
+                (createElementsForASpace(alignment, ai, vecAreaInfo.size() - 1, ch == CharUtilities.ZERO_WIDTH_SPACE));
+            ai = null;
+        } else if (ch == NEWLINE) {
+            if (lineEndBAP != 0) {
+                sequence.add
+                    (new KnuthGlue(lineEndBAP, 0, 0,
+                                   new LeafPosition(this, -1), true));
+            }
+            sequence.endSequence();
+            sequence = new InlineKnuthSequence();
+            returnList.add(sequence);
+        }
+
         if (((List)returnList.getLast()).size() == 0) {
             //Remove an empty sequence because of a trailing newline
             returnList.removeLast();
@@ -872,11 +942,11 @@ public class TextLayoutManager extends LeafNodeLayoutManager {
             if (ai.iWScount == 0) {
                 // ai refers either to a word or a word fragment
                 returnList.addAll
-                (createElementsForAWordFragment(alignment, ai, iReturnedIndex, letterSpaceIPD));
+                (createElementsForAWordFragment(alignment, ai, iReturnedIndex, letterSpaceIPD, false));
             } else {
                 // ai refers to a space
                 returnList.addAll
-                (createElementsForASpace(alignment, ai, iReturnedIndex));
+                (createElementsForASpace(alignment, ai, iReturnedIndex, textArray[ai.iStartIndex] == CharUtilities.SPACE));
             }
             iReturnedIndex++;
         } // end of while
@@ -896,13 +966,12 @@ public class TextLayoutManager extends LeafNodeLayoutManager {
     }
 
     private LinkedList createElementsForASpace(int alignment,
-            AreaInfo ai, int leafValue) {
+            AreaInfo ai, int leafValue, boolean breakOpportunity) {
         LinkedList spaceElements = new LinkedList();
         LeafPosition mainPosition = new LeafPosition(this, leafValue);
         
-        if (textArray[ai.iStartIndex] == CharUtilities.NBSPACE) {
+        if (!breakOpportunity) {
             // a non-breaking space
-            //TODO: other kinds of non-breaking spaces
             if (alignment == EN_JUSTIFY) {
                 // the space can stretch and shrink, and must be preserved
                 // when starting a line
@@ -918,215 +987,215 @@ public class TextLayoutManager extends LeafNodeLayoutManager {
                 spaceElements.add(new KnuthInlineBox(ai.ipdArea.opt, null,
                         mainPosition, true));
             }
-        } else if (textArray[ai.iStartIndex] == CharUtilities.SPACE
-                    && foText.getWhitespaceTreatment() == Constants.EN_PRESERVE) {
-            // a breaking space that needs to be preserved
-            switch (alignment) {
-            case EN_CENTER:
-                // centered text:
-                // if the second element is chosen as a line break these elements 
-                // add a constant amount of stretch at the end of a line and at the
-                // beginning of the next one, otherwise they don't add any stretch
-                spaceElements.add(new KnuthGlue(lineEndBAP,
-                        3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
-                        new LeafPosition(this, -1), false));
-                spaceElements
-                        .add(new KnuthPenalty(
-                                0,
-                                (textArray[ai.iStartIndex] == CharUtilities.NBSPACE 
-                                        ? KnuthElement.INFINITE
-                                        : 0), false,
-                                new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthGlue(
-                        - (lineStartBAP + lineEndBAP), -6
-                        * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
-                        new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthInlineBox(0, null,
-                        notifyPos(new LeafPosition(this, -1)), false));
-                spaceElements.add(new KnuthPenalty(0, KnuthElement.INFINITE,
-                        false, new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthGlue(ai.ipdArea.opt + lineStartBAP,
-                        3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
-                        mainPosition, false));
-                break;
-
-            case EN_START: // fall through
-            case EN_END:
-                // left- or right-aligned text:
-                // if the second element is chosen as a line break these elements 
-                // add a constant amount of stretch at the end of a line, otherwise
-                // they don't add any stretch
-                spaceElements.add(new KnuthGlue(lineEndBAP,
-                        3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
-                        new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthPenalty(0, 0, false,
-                        new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthGlue(
-                        - (lineStartBAP + lineEndBAP), -3
-                        * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
-                        new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthInlineBox(0, null,
-                        notifyPos(new LeafPosition(this, -1)), false));
-                spaceElements.add(new KnuthPenalty(0,
-                        KnuthElement.INFINITE, false, new LeafPosition(
-                                this, -1), false));
-                spaceElements.add(new KnuthGlue(ai.ipdArea.opt + lineStartBAP, 0, 0,
-                        mainPosition, false));
-                break;
-
-            case EN_JUSTIFY:
-                // justified text:
-                // the stretch and shrink depends on the space width
-                spaceElements.add(new KnuthGlue(lineEndBAP, 0, 0,
-                        new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthPenalty(0, 0, false,
-                        new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthGlue(
-                        - (lineStartBAP + lineEndBAP), ai.ipdArea.max
-                        - ai.ipdArea.opt, ai.ipdArea.opt - ai.ipdArea.min,
-                        new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthInlineBox(0, null,
-                        notifyPos(new LeafPosition(this, -1)), false));
-                spaceElements.add(new KnuthPenalty(0,
-                        KnuthElement.INFINITE, false, new LeafPosition(
-                                this, -1), false));
-                spaceElements.add(new KnuthGlue(lineStartBAP + ai.ipdArea.opt, 0, 0,
-                        mainPosition, false));
-                break;
-
-            default:
-                // last line justified, the other lines unjustified:
-                // use only the space stretch
-                spaceElements.add(new KnuthGlue(lineEndBAP, 0, 0,
-                        new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthPenalty(0, 0, false,
-                        new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthGlue(
-                        - (lineStartBAP + lineEndBAP), ai.ipdArea.max
-                        - ai.ipdArea.opt, 0,
-                        new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthInlineBox(0, null,
-                        notifyPos(new LeafPosition(this, -1)), false));
-                spaceElements.add(new KnuthPenalty(0,
-                        KnuthElement.INFINITE, false, new LeafPosition(
-                                this, -1), false));
-                spaceElements.add(new KnuthGlue(lineStartBAP + ai.ipdArea.opt, 0, 0,
-                        mainPosition, false));
-            }
         } else {
-            // a (possible block) of breaking spaces
-            switch (alignment) {
-            case EN_CENTER:
-                // centered text:
-                // if the second element is chosen as a line break these elements 
-                // add a constant amount of stretch at the end of a line and at the
-                // beginning of the next one, otherwise they don't add any stretch
-                spaceElements.add(new KnuthGlue(lineEndBAP,
-                        3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
-                        new LeafPosition(this, -1), false));
-                spaceElements
-                        .add(new KnuthPenalty(
-                                0, 0, false,
-                                new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthGlue(ai.ipdArea.opt
-                        - (lineStartBAP + lineEndBAP), -6
-                        * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
-                        mainPosition, false));
-                spaceElements.add(new KnuthInlineBox(0, null,
-                        notifyPos(new LeafPosition(this, -1)), false));
-                spaceElements.add(new KnuthPenalty(0, KnuthElement.INFINITE,
-                        false, new LeafPosition(this, -1), false));
-                spaceElements.add(new KnuthGlue(lineStartBAP,
-                        3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
-                        new LeafPosition(this, -1), false));
-                break;
-
-            case EN_START: // fall through
-            case EN_END:
-                // left- or right-aligned text:
-                // if the second element is chosen as a line break these elements 
-                // add a constant amount of stretch at the end of a line, otherwise
-                // they don't add any stretch
-                if (lineStartBAP != 0 || lineEndBAP != 0) {
+            if (textArray[ai.iStartIndex] != CharUtilities.SPACE
+                    || foText.getWhitespaceTreatment() == Constants.EN_PRESERVE) {
+                // a breaking space that needs to be preserved
+                switch (alignment) {
+                case EN_CENTER:
+                    // centered text:
+                    // if the second element is chosen as a line break these elements 
+                    // add a constant amount of stretch at the end of a line and at the
+                    // beginning of the next one, otherwise they don't add any stretch
+                    spaceElements.add(new KnuthGlue(lineEndBAP,
+                            3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
+                            new LeafPosition(this, -1), false));
+                    spaceElements
+                            .add(new KnuthPenalty(
+                                    0,
+                                    0, false,
+                                    new LeafPosition(this, -1), false));
+                    spaceElements.add(new KnuthGlue(
+                            - (lineStartBAP + lineEndBAP), -6
+                            * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
+                            new LeafPosition(this, -1), false));
+                    spaceElements.add(new KnuthInlineBox(0, null,
+                            notifyPos(new LeafPosition(this, -1)), false));
+                    spaceElements.add(new KnuthPenalty(0, KnuthElement.INFINITE,
+                            false, new LeafPosition(this, -1), false));
+                    spaceElements.add(new KnuthGlue(ai.ipdArea.opt + lineStartBAP,
+                            3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
+                            mainPosition, false));
+                    break;
+
+                case EN_START: // fall through
+                case EN_END:
+                    // left- or right-aligned text:
+                    // if the second element is chosen as a line break these elements 
+                    // add a constant amount of stretch at the end of a line, otherwise
+                    // they don't add any stretch
                     spaceElements.add(new KnuthGlue(lineEndBAP,
                             3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
                             new LeafPosition(this, -1), false));
                     spaceElements.add(new KnuthPenalty(0, 0, false,
                             new LeafPosition(this, -1), false));
-                    spaceElements.add(new KnuthGlue(ai.ipdArea.opt
+                    spaceElements.add(new KnuthGlue(
                             - (lineStartBAP + lineEndBAP), -3
                             * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
-                            mainPosition, false));
+                            new LeafPosition(this, -1), false));
                     spaceElements.add(new KnuthInlineBox(0, null,
                             notifyPos(new LeafPosition(this, -1)), false));
                     spaceElements.add(new KnuthPenalty(0,
                             KnuthElement.INFINITE, false, new LeafPosition(
                                     this, -1), false));
-                    spaceElements.add(new KnuthGlue(lineStartBAP, 0, 0,
-                            new LeafPosition(this, -1), false));
-                } else {
-                    spaceElements.add(new KnuthGlue(0,
-                            3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
-                            new LeafPosition(this, -1), false));
-                    spaceElements.add(new KnuthPenalty(0, 0, false,
-                            new LeafPosition(this, -1), false));
-                    spaceElements.add(new KnuthGlue(ai.ipdArea.opt, -3
-                            * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
+                    spaceElements.add(new KnuthGlue(ai.ipdArea.opt + lineStartBAP, 0, 0,
                             mainPosition, false));
-                }
-                break;
+                    break;
 
-            case EN_JUSTIFY:
-                // justified text:
-                // the stretch and shrink depends on the space width
-                if (lineStartBAP != 0 || lineEndBAP != 0) {
+                case EN_JUSTIFY:
+                    // justified text:
+                    // the stretch and shrink depends on the space width
                     spaceElements.add(new KnuthGlue(lineEndBAP, 0, 0,
                             new LeafPosition(this, -1), false));
                     spaceElements.add(new KnuthPenalty(0, 0, false,
                             new LeafPosition(this, -1), false));
                     spaceElements.add(new KnuthGlue(
-                            ai.ipdArea.opt - (lineStartBAP + lineEndBAP),
-                            ai.ipdArea.max - ai.ipdArea.opt,
-                            ai.ipdArea.opt - ai.ipdArea.min,
-                            mainPosition, false));
+                            - (lineStartBAP + lineEndBAP), ai.ipdArea.max
+                            - ai.ipdArea.opt, ai.ipdArea.opt - ai.ipdArea.min,
+                            new LeafPosition(this, -1), false));
                     spaceElements.add(new KnuthInlineBox(0, null,
                             notifyPos(new LeafPosition(this, -1)), false));
                     spaceElements.add(new KnuthPenalty(0,
                             KnuthElement.INFINITE, false, new LeafPosition(
                                     this, -1), false));
-                    spaceElements.add(new KnuthGlue(lineStartBAP, 0, 0,
-                            new LeafPosition(this, -1), false));
-                } else {
-                    spaceElements.add(new KnuthGlue(ai.ipdArea.opt,
-                            ai.ipdArea.max - ai.ipdArea.opt,
-                            ai.ipdArea.opt - ai.ipdArea.min,
+                    spaceElements.add(new KnuthGlue(lineStartBAP + ai.ipdArea.opt, 0, 0,
                             mainPosition, false));
-                }
-                break;
+                    break;
 
-            default:
-                // last line justified, the other lines unjustified:
-                // use only the space stretch
-                if (lineStartBAP != 0 || lineEndBAP != 0) {
+                default:
+                    // last line justified, the other lines unjustified:
+                    // use only the space stretch
                     spaceElements.add(new KnuthGlue(lineEndBAP, 0, 0,
                             new LeafPosition(this, -1), false));
                     spaceElements.add(new KnuthPenalty(0, 0, false,
                             new LeafPosition(this, -1), false));
                     spaceElements.add(new KnuthGlue(
-                            ai.ipdArea.opt - (lineStartBAP + lineEndBAP),
-                            ai.ipdArea.max - ai.ipdArea.opt,
-                            0, mainPosition, false));
+                            - (lineStartBAP + lineEndBAP), ai.ipdArea.max
+                            - ai.ipdArea.opt, 0,
+                            new LeafPosition(this, -1), false));
                     spaceElements.add(new KnuthInlineBox(0, null,
                             notifyPos(new LeafPosition(this, -1)), false));
                     spaceElements.add(new KnuthPenalty(0,
                             KnuthElement.INFINITE, false, new LeafPosition(
                                     this, -1), false));
-                    spaceElements.add(new KnuthGlue(lineStartBAP, 0, 0,
+                    spaceElements.add(new KnuthGlue(lineStartBAP + ai.ipdArea.opt, 0, 0,
+                            mainPosition, false));
+                } 
+            } else {
+                // a (possible block) of breaking spaces
+                switch (alignment) {
+                case EN_CENTER:
+                    // centered text:
+                    // if the second element is chosen as a line break these elements 
+                    // add a constant amount of stretch at the end of a line and at the
+                    // beginning of the next one, otherwise they don't add any stretch
+                    spaceElements.add(new KnuthGlue(lineEndBAP,
+                            3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
                             new LeafPosition(this, -1), false));
-                } else {
-                    spaceElements.add(new KnuthGlue(ai.ipdArea.opt,
-                            ai.ipdArea.max - ai.ipdArea.opt, 0,
+                    spaceElements
+                            .add(new KnuthPenalty(
+                                    0, 0, false,
+                                    new LeafPosition(this, -1), false));
+                    spaceElements.add(new KnuthGlue(ai.ipdArea.opt
+                            - (lineStartBAP + lineEndBAP), -6
+                            * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
                             mainPosition, false));
+                    spaceElements.add(new KnuthInlineBox(0, null,
+                            notifyPos(new LeafPosition(this, -1)), false));
+                    spaceElements.add(new KnuthPenalty(0, KnuthElement.INFINITE,
+                            false, new LeafPosition(this, -1), false));
+                    spaceElements.add(new KnuthGlue(lineStartBAP,
+                            3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
+                            new LeafPosition(this, -1), false));
+                    break;
+
+                case EN_START: // fall through
+                case EN_END:
+                    // left- or right-aligned text:
+                    // if the second element is chosen as a line break these elements 
+                    // add a constant amount of stretch at the end of a line, otherwise
+                    // they don't add any stretch
+                    if (lineStartBAP != 0 || lineEndBAP != 0) {
+                        spaceElements.add(new KnuthGlue(lineEndBAP,
+                                3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
+                                new LeafPosition(this, -1), false));
+                        spaceElements.add(new KnuthPenalty(0, 0, false,
+                                new LeafPosition(this, -1), false));
+                        spaceElements.add(new KnuthGlue(ai.ipdArea.opt
+                                - (lineStartBAP + lineEndBAP), -3
+                                * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
+                                mainPosition, false));
+                        spaceElements.add(new KnuthInlineBox(0, null,
+                                notifyPos(new LeafPosition(this, -1)), false));
+                        spaceElements.add(new KnuthPenalty(0,
+                                KnuthElement.INFINITE, false, new LeafPosition(
+                                        this, -1), false));
+                        spaceElements.add(new KnuthGlue(lineStartBAP, 0, 0,
+                                new LeafPosition(this, -1), false));
+                    } else {
+                        spaceElements.add(new KnuthGlue(0,
+                                3 * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
+                                new LeafPosition(this, -1), false));
+                        spaceElements.add(new KnuthPenalty(0, 0, false,
+                                new LeafPosition(this, -1), false));
+                        spaceElements.add(new KnuthGlue(ai.ipdArea.opt, -3
+                                * LineLayoutManager.DEFAULT_SPACE_WIDTH, 0,
+                                mainPosition, false));
+                    }
+                    break;
+
+                case EN_JUSTIFY:
+                    // justified text:
+                    // the stretch and shrink depends on the space width
+                    if (lineStartBAP != 0 || lineEndBAP != 0) {
+                        spaceElements.add(new KnuthGlue(lineEndBAP, 0, 0,
+                                new LeafPosition(this, -1), false));
+                        spaceElements.add(new KnuthPenalty(0, 0, false,
+                                new LeafPosition(this, -1), false));
+                        spaceElements.add(new KnuthGlue(
+                                ai.ipdArea.opt - (lineStartBAP + lineEndBAP),
+                                ai.ipdArea.max - ai.ipdArea.opt,
+                                ai.ipdArea.opt - ai.ipdArea.min,
+                                mainPosition, false));
+                        spaceElements.add(new KnuthInlineBox(0, null,
+                                notifyPos(new LeafPosition(this, -1)), false));
+                        spaceElements.add(new KnuthPenalty(0,
+                                KnuthElement.INFINITE, false, new LeafPosition(
+                                        this, -1), false));
+                        spaceElements.add(new KnuthGlue(lineStartBAP, 0, 0,
+                                new LeafPosition(this, -1), false));
+                    } else {
+                        spaceElements.add(new KnuthGlue(ai.ipdArea.opt,
+                                ai.ipdArea.max - ai.ipdArea.opt,
+                                ai.ipdArea.opt - ai.ipdArea.min,
+                                mainPosition, false));
+                    }
+                    break;
+
+                default:
+                    // last line justified, the other lines unjustified:
+                    // use only the space stretch
+                    if (lineStartBAP != 0 || lineEndBAP != 0) {
+                        spaceElements.add(new KnuthGlue(lineEndBAP, 0, 0,
+                                new LeafPosition(this, -1), false));
+                        spaceElements.add(new KnuthPenalty(0, 0, false,
+                                new LeafPosition(this, -1), false));
+                        spaceElements.add(new KnuthGlue(
+                                ai.ipdArea.opt - (lineStartBAP + lineEndBAP),
+                                ai.ipdArea.max - ai.ipdArea.opt,
+                                0, mainPosition, false));
+                        spaceElements.add(new KnuthInlineBox(0, null,
+                                notifyPos(new LeafPosition(this, -1)), false));
+                        spaceElements.add(new KnuthPenalty(0,
+                                KnuthElement.INFINITE, false, new LeafPosition(
+                                        this, -1), false));
+                        spaceElements.add(new KnuthGlue(lineStartBAP, 0, 0,
+                                new LeafPosition(this, -1), false));
+                    } else {
+                        spaceElements.add(new KnuthGlue(ai.ipdArea.opt,
+                                ai.ipdArea.max - ai.ipdArea.opt, 0,
+                                mainPosition, false));
+                    }
                 }
             }
         }
@@ -1135,16 +1204,14 @@ public class TextLayoutManager extends LeafNodeLayoutManager {
     }
 
     private LinkedList createElementsForAWordFragment(int alignment,
-            AreaInfo ai, int leafValue, MinOptMax letterSpaceWidth) {
+            AreaInfo ai, int leafValue, MinOptMax letterSpaceWidth, boolean breakOpportunity) {
         LinkedList wordElements = new LinkedList();
         LeafPosition mainPosition = new LeafPosition(this, leafValue);
 
         // if the last character of the word fragment is '-' or '/',
         // the fragment could end a line; in this case, it loses one
         // of its letter spaces;
-        boolean bSuppressibleLetterSpace 
-            = /*ai.iLScount == (ai.iBreakIndex - ai.iStartIndex)
-                &&*/ isBreakChar(textArray[ai.iBreakIndex - 1]);
+        boolean bSuppressibleLetterSpace = breakOpportunity;
 
         if (letterSpaceWidth.min == letterSpaceWidth.max) {
             // constant letter spacing
@@ -1366,5 +1433,6 @@ public class TextLayoutManager extends LeafNodeLayoutManager {
         
         return hyphenElements;
     }
+    
 }
 
diff --git a/src/java/org/apache/fop/text/linebreak/LineBreakStatus.java b/src/java/org/apache/fop/text/linebreak/LineBreakStatus.java
new file mode 100644 (file)
index 0000000..29583a9
--- /dev/null
@@ -0,0 +1,160 @@
+/* 
+ * 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.text.linebreak;
+
+/**
+ * This class is meant for supporting the Unicode line breaking algorithm.
+ * See <a href="http://unicode.org/reports/tr14/">UTR 14</a>.
+ *
+ */
+public class LineBreakStatus {
+
+    /** Constant indicating a Direct Break */
+    public static final byte DIRECT_BREAK = LineBreakUtils.DIRECT_BREAK;
+    /** Constant indicating an Indirect Break */
+    public static final byte INDIRECT_BREAK = LineBreakUtils.INDIRECT_BREAK;
+    /** Constant indicating a Combining Indirect Break */
+    public static final byte COMBINING_INDIRECT_BREAK = LineBreakUtils.COMBINING_INDIRECT_BREAK;
+    /** Constant indicating a Combining Prohibited Break */
+    public static final byte COMBINING_PROHIBITED_BREAK = LineBreakUtils.COMBINING_PROHIBITED_BREAK;
+    /** Constant indicating a Prohibited Break */
+    public static final byte PROHIBITED_BREAK = LineBreakUtils.PROHIBITED_BREAK;
+    /** Constant indicating a Explicit Break */
+    public static final byte EXPLICIT_BREAK = LineBreakUtils.EXPLICIT_BREAK;
+
+    private byte leftClass;
+    private boolean hadSpace;
+
+    /**
+     * Resets the class to the same state as if new LineBreakStatus() had just been called.
+     */
+    public LineBreakStatus() {
+        reset();
+    }
+    
+    
+    /**
+     * Reset the status.
+     * This method will reset the status to the initial state. It is meant
+     * for recycling objects.
+     */
+    public void reset() {
+        leftClass = -1;
+        hadSpace = false;
+    }
+
+    /**
+     * Check whether a line break may happen.
+     * The function returns the line breaking status of the point before the given character. 
+     * The algorithm is the table driven algorithm described in the Unicode
+     * <a href="http://unicode.org/reports/tr14/#PairBasedImplementation">technical report #14</a>.
+     * The pair table is taken from @see LineBreakUtils
+     * 
+     * TODO: Better handling for AI, SA, CB and other line break classes.
+     * 
+     * @param c The character.
+     * @return the break action to be taken
+     */
+    public byte nextChar(char c) {
+        byte currentClass = LineBreakUtils.getLineBreakProperty(c);
+        if (currentClass == LineBreakUtils.LINE_BREAK_PROPERTY_AI
+            || leftClass == LineBreakUtils.LINE_BREAK_PROPERTY_XX) {
+            currentClass = LineBreakUtils.LINE_BREAK_PROPERTY_AL;
+        } else if (currentClass == LineBreakUtils.LINE_BREAK_PROPERTY_NL) {
+            currentClass = LineBreakUtils.LINE_BREAK_PROPERTY_BK;
+        }
+        if (leftClass == -1) {
+            if (currentClass == LineBreakUtils.LINE_BREAK_PROPERTY_LF) {
+                leftClass = LineBreakUtils.LINE_BREAK_PROPERTY_BK;
+            } else {
+                leftClass = currentClass;
+                if (leftClass == LineBreakUtils.LINE_BREAK_PROPERTY_CM) {
+                    leftClass = LineBreakUtils.LINE_BREAK_PROPERTY_ID;
+                }
+            }
+            // LB 2a
+            return PROHIBITED_BREAK;
+        } else if (!(leftClass != LineBreakUtils.LINE_BREAK_PROPERTY_BK
+                    && (leftClass != LineBreakUtils.LINE_BREAK_PROPERTY_CR
+                        || currentClass == LineBreakUtils.LINE_BREAK_PROPERTY_LF)
+                )) {
+            reset();
+            if (currentClass == LineBreakUtils.LINE_BREAK_PROPERTY_LF) {
+                leftClass = LineBreakUtils.LINE_BREAK_PROPERTY_BK;
+            }
+            return EXPLICIT_BREAK;
+        } else if (currentClass == LineBreakUtils.LINE_BREAK_PROPERTY_BK
+                    || currentClass == LineBreakUtils.LINE_BREAK_PROPERTY_LF) {
+            leftClass = LineBreakUtils.LINE_BREAK_PROPERTY_BK;
+            return PROHIBITED_BREAK;
+        } else if (currentClass == LineBreakUtils.LINE_BREAK_PROPERTY_CR) {
+            leftClass = LineBreakUtils.LINE_BREAK_PROPERTY_CR;
+            return PROHIBITED_BREAK;
+        } else if (currentClass == LineBreakUtils.LINE_BREAK_PROPERTY_SP) {
+            hadSpace = true;
+            return PROHIBITED_BREAK;
+        } else {
+            boolean savedHadSpace = hadSpace;
+            hadSpace = false;
+            switch (LineBreakUtils.getLineBreakPairProperty(leftClass, currentClass)) {
+                case LineBreakUtils.PROHIBITED_BREAK :
+                    leftClass = currentClass;
+                    return PROHIBITED_BREAK;
+                case LineBreakUtils.DIRECT_BREAK :
+                    leftClass = currentClass;
+                    return DIRECT_BREAK;
+                case LineBreakUtils.INDIRECT_BREAK :
+                    leftClass = currentClass;
+                    if (savedHadSpace) {
+                        return INDIRECT_BREAK;
+                    } else {
+                        return PROHIBITED_BREAK;
+                    }
+                case LineBreakUtils.COMBINING_INDIRECT_BREAK :
+                    if (savedHadSpace) {
+                        leftClass = currentClass;
+                        return COMBINING_INDIRECT_BREAK;
+                    } else {
+                        return PROHIBITED_BREAK;
+                    }
+                case LineBreakUtils.COMBINING_PROHIBITED_BREAK :
+                    if (savedHadSpace) {
+                        leftClass = currentClass;
+                    }
+                    return COMBINING_PROHIBITED_BREAK;
+                default :
+                    throw new RuntimeException("duh");
+            }
+
+        }
+    }
+    
+    /**
+     * for debugging only
+     */
+    /*
+    public static void main(String args[]) {
+        LineBreakStatus lbs = new LineBreakStatus();
+        lbs.nextChar('\n');
+        lbs.nextChar('\n');
+        lbs.nextChar('x');
+    }
+    */
+}
diff --git a/src/java/org/apache/fop/text/linebreak/LineBreakUtils.java b/src/java/org/apache/fop/text/linebreak/LineBreakUtils.java
new file mode 100644 (file)
index 0000000..285b8a5
--- /dev/null
@@ -0,0 +1,669 @@
+/*
+ * 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.commons.text.linebreak;
+
+/* 
+ * This is a generated file, DO NOT CHANGE!
+ */
+
+class LineBreakUtils {
+
+    public static final byte DIRECT_BREAK = 0;
+    public static final byte INDIRECT_BREAK = 1;
+    public static final byte COMBINING_INDIRECT_BREAK = 2;
+    public static final byte COMBINING_PROHIBITED_BREAK = 3;
+    public static final byte PROHIBITED_BREAK = 4;
+    public static final byte EXPLICIT_BREAK = 5;
+
+    private static final byte PAIR_TABLE[][] = {
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+        {0,1,0,1,0,0,0,4,2,0,4,1,0,0,1,0,1,4,0,0,0,0,0,1,1,1,0,0,1,0,0,0,4,4,0,4},
+        {0,0,4,1,0,0,0,4,2,0,4,1,0,0,1,0,0,4,0,0,0,0,0,1,0,0,0,0,1,0,0,0,4,4,0,4},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,0,4,0,0,0,0,0,1,0,0,0,0,1,0,0,0,4,4,0,4},
+        {0,1,1,1,1,0,0,4,2,0,4,1,1,1,1,1,1,4,1,1,1,0,0,1,1,1,1,1,1,0,0,0,4,4,0,4},
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+        {0,1,0,1,0,0,0,4,2,0,4,1,0,0,1,0,0,4,0,0,0,0,0,4,1,0,1,1,1,0,0,0,4,4,0,4},
+        {0,1,0,1,0,0,0,4,2,0,4,1,0,0,1,0,1,4,0,0,0,0,0,1,1,0,0,0,1,0,0,0,4,4,0,4},
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,0,4,0,0,0,0,0,1,0,0,0,0,1,0,0,0,4,4,0,4},
+        {0,1,1,1,1,0,0,4,2,0,4,1,1,1,1,1,1,4,1,1,1,0,0,1,1,1,1,1,1,0,0,0,4,4,0,4},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,1,4,0,1,1,0,0,1,0,0,1,0,1,0,0,0,4,4,0,4},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,1,4,0,1,0,0,0,1,0,0,1,0,1,0,0,0,4,4,0,4},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,0,4,0,0,0,0,0,1,1,0,0,0,1,0,0,0,4,4,0,4},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,1,4,0,0,0,0,0,1,0,0,1,0,1,0,0,0,4,4,0,4},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,1,4,0,0,0,0,0,1,0,0,0,0,1,0,0,0,4,4,0,4},
+        {0,1,0,1,0,0,0,4,2,0,4,1,0,0,1,0,0,4,0,0,0,0,0,1,1,0,0,0,1,0,0,0,4,4,0,4},
+        {0,0,0,1,0,0,0,4,2,0,4,1,1,1,1,0,1,4,1,0,1,0,0,1,0,0,1,0,1,0,0,0,4,4,0,4},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,1,4,0,1,0,0,0,1,0,0,1,0,1,0,0,0,4,4,0,4},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,1,4,0,1,1,0,0,1,0,0,1,0,1,0,0,0,4,4,0,4},
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,0,4,0,0,0,0,0,1,0,0,0,0,1,0,0,0,4,4,0,4},
+        {0,1,0,1,0,0,0,4,2,0,4,1,0,0,1,0,1,4,0,0,0,0,0,1,1,1,1,1,1,0,0,0,4,4,0,4},
+        {0,4,4,4,4,0,0,4,3,0,4,4,4,4,4,4,4,4,4,4,4,0,0,4,4,4,4,4,4,0,0,0,4,4,0,4},
+        {0,1,0,1,0,0,0,4,2,0,4,1,0,0,1,0,0,4,0,0,0,0,0,1,1,1,0,0,1,0,0,0,4,4,0,4},
+        {0,1,0,1,0,0,0,4,2,0,4,1,1,1,1,1,0,4,1,1,1,0,0,1,1,1,0,0,1,0,0,0,4,4,0,4},
+        {0,1,1,1,1,0,0,4,2,0,4,1,1,1,1,1,1,4,1,1,1,0,0,1,1,4,1,1,1,0,0,0,4,4,0,4},
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+        {0,0,0,1,0,0,0,4,2,0,4,1,0,0,1,0,0,4,0,0,0,0,0,1,1,0,0,0,1,0,0,0,4,4,0,4},
+        {0,1,1,1,1,0,0,4,2,0,4,1,1,1,1,1,1,4,1,1,1,0,0,1,1,1,1,1,1,0,0,0,4,4,0,4},
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4}};
+
+    private static byte lineBreakProperties[][] = new byte[512][];
+
+    private static void init_0() {
+        lineBreakProperties[0] = new byte[] { 9,9,9,9,9,9,9,9,9,4,22,6,6,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,32,11,29,2,28,27,2,29,26,8,2,28,18,15,18,33,25,25,25,25,25,25,25,25,25,25,18,18,2,2,2,11,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,26,28,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,26,4,8,2,9};
+        lineBreakProperties[1] = new byte[] { 9,9,9,9,9,23,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,12,1,27,28,28,28,2,1,1,2,1,29,2,4,2,2,27,28,1,1,5,2,1,1,1,1,1,29,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2};
+        lineBreakProperties[2] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[5] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,5,1,1,1,5,1,2,2,1,2,2,2,2,2,2,2,1,1,1,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[6] = new byte[] { 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,12,9,9,9,9,9,9,9,9,9,9,9,9,12,12,12,12,12,12,12,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,2,2,0,0,0,0,2,2,2,2,18,0};
+        lineBreakProperties[7] = new byte[] { 0,0,0,0,2,2,2,2,2,2,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[9] = new byte[] { 2,2,2,9,9,9,9,0,9,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[10] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[11] = new byte[] { 2,2,2,2,2,2,2,2,0,18,4,0,0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,4,9,2,9,9,2,9,9,11,9,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[12] = new byte[] { 2,2,2,2,0,0,0,0,0,0,0,27,11,18,2,2,9,9,9,9,9,9,0,0,0,0,0,11,0,0,11,11,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,25,25,25,25,25,25,25,25,25,25,11,25,25,2,2,2,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[13] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,2,9,9,9,9,9,9,9,2,9,9,9,9,9,9,9,2,2,9,9,2,9,9,9,9,2,2,25,25,25,25,25,25,25,25,25,25,2,2,2,2,2,2};
+        lineBreakProperties[14] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[15] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,9,9,9,9,9,9,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,9,9,9,9,9,2,2,2,2,18,11,2,0,0,0,0,0};
+        lineBreakProperties[16] = new byte[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[18] = new byte[] { 0,9,9,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,9,2,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,2,9,9,9,9,0,0,0,2,2,2,2,2,2,2,2,2,2,9,9,4,4,25,25,25,25,25,25,25,25,25,25,2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2};
+        lineBreakProperties[19] = new byte[] { 0,9,9,9,0,2,2,2,2,2,2,2,2,0,0,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,0,0,0,2,2,2,2,0,0,9,2,9,9,9,9,9,9,9,0,0,9,9,0,0,9,9,9,2,0,0,0,0,0,0,0,0,9,0,0,0,0,2,2,0,2,2,2,9,9,0,0,25,25,25,25,25,25,25,25,25,25,2,2,28,28,2,2,2,2,2,2,2,0,0,0,0,0};
+        lineBreakProperties[20] = new byte[] { 0,9,9,9,0,2,2,2,2,2,2,0,0,0,0,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,2,0,2,2,0,2,2,0,0,9,0,9,9,9,9,9,0,0,0,0,9,9,0,0,9,9,9,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,2,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,9,9,2,2,2,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[21] = new byte[] { 0,9,9,9,0,2,2,2,2,2,2,2,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,0,9,2,9,9,9,9,9,9,9,9,0,9,9,9,0,9,9,9,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,9,9,0,0,25,25,25,25,25,25,25,25,25,25,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[22] = new byte[] { 0,9,9,9,0,2,2,2,2,2,2,2,2,0,0,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,0,9,2,9,9,9,9,9,9,0,0,0,9,9,0,0,9,9,9,0,0,0,0,0,0,0,0,9,9,0,0,0,0,2,2,0,2,2,2,0,0,0,0,25,25,25,25,25,25,25,25,25,25,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[23] = new byte[] { 0,0,9,2,0,2,2,2,2,2,2,0,0,0,2,2,2,0,2,2,2,2,0,0,0,2,2,0,2,0,2,2,0,0,0,2,2,0,0,0,2,2,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,9,9,9,9,9,0,0,0,9,9,9,0,9,9,9,9,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,2,2,2,2,2,2,2,2,2,28,2,0,0,0,0,0};
+        lineBreakProperties[24] = new byte[] { 0,9,9,9,0,2,2,2,2,2,2,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,0,0,0,9,9,9,9,9,9,9,0,9,9,9,0,9,9,9,9,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[25] = new byte[] { 0,0,9,9,0,2,2,2,2,2,2,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,0,9,2,9,9,9,9,9,9,9,0,9,9,9,0,9,9,9,9,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,2,0,2,2,9,9,0,0,25,25,25,25,25,25,25,25,25,25,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[26] = new byte[] { 0,0,9,9,0,2,2,2,2,2,2,2,2,0,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,9,9,9,9,9,9,0,0,9,9,9,0,9,9,9,9,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,2,2,0,0,0,0,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[27] = new byte[] { 0,0,9,9,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,0,2,0,0,2,2,2,2,2,2,2,0,0,0,9,0,0,0,0,9,9,9,9,9,9,0,9,0,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,2,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[28] = new byte[] { 0,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,0,0,0,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,2,25,25,25,25,25,25,25,25,25,25,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[29] = new byte[] { 0,30,30,0,30,0,0,30,30,0,30,0,0,30,0,0,0,0,0,0,30,30,30,30,0,30,30,30,30,30,30,30,0,30,30,30,0,30,0,30,0,0,30,30,0,30,30,30,30,30,30,30,30,30,30,30,30,30,0,30,30,30,0,0,30,30,30,30,30,0,30,0,30,30,30,30,30,30,0,0,25,25,25,25,25,25,25,25,25,25,0,0,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[30] = new byte[] { 2,5,5,5,5,2,5,5,12,5,5,4,12,11,11,11,11,11,12,2,11,2,2,2,9,9,2,2,2,2,2,2,25,25,25,25,25,25,25,25,25,25,2,2,2,2,2,2,2,2,2,2,4,9,2,9,2,9,26,8,26,8,9,9,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,4};
+        lineBreakProperties[31] = new byte[] { 9,9,9,9,9,4,9,9,2,2,2,2,0,0,0,0,9,9,9,9,9,9,9,9,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,4,4,2,2,2,2,2,2,9,2,2,2,2,2,2,0,0,2,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[32] = new byte[] { 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,30,30,30,30,30,0,30,30,0,30,30,30,30,30,30,30,0,0,0,30,30,30,30,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,4,4,2,2,2,2,30,30,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[33] = new byte[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0};
+        lineBreakProperties[34] = new byte[] { 19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0,0,19,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21};
+        lineBreakProperties[35] = new byte[] { 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,0,0,0,0,0,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,0,0,0,0,0,0};
+        lineBreakProperties[36] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,0,2,2,2,2,2,2,2,0,2,0,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[37] = new byte[] { 2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,0,2,2,2,2,2,2,2,0,2,0,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[38] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,9,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0};
+        lineBreakProperties[39] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[40] = new byte[] { 0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[44] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[45] = new byte[] { 4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,26,8,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[46] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,9,9,9,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,9,4,4,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[47] = new byte[] { 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,4,4,24,30,4,2,4,28,30,30,0,0,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0};
+        lineBreakProperties[48] = new byte[] { 2,2,4,4,4,4,5,2,4,4,2,9,9,9,12,0,25,25,25,25,25,25,25,25,25,25,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0};
+        lineBreakProperties[49] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[50] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,2,0,0,0,11,11,25,25,25,25,25,25,25,25,25,25,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,0,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[51] = new byte[] { 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,0,0,0,0,0,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,0,0,0,0,0,0,25,25,25,25,25,25,25,25,25,25,0,0,0,0,30,30,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[52] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,9,0,0,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[54] = new byte[] { 9,9,9,9,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,2,2,2,2,2,2,2,0,0,0,0,25,25,25,25,25,25,25,25,25,25,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2,9,9,9,9,9,9,9,9,9,2,2,2,2,2,2,2,2,2,0,0,0};
+        lineBreakProperties[59] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9};
+        lineBreakProperties[61] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0};
+        lineBreakProperties[62] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,2,0,2,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0};
+        lineBreakProperties[63] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,0,2,2,2,2,2,2,2,2,2,0};
+        lineBreakProperties[64] = new byte[] { 4,4,4,4,4,4,4,12,4,4,4,36,9,9,9,9,4,12,4,4,3,1,1,2,29,29,26,29,29,29,26,29,1,1,2,2,17,17,17,4,6,6,9,9,9,9,9,12,27,27,27,27,27,27,27,27,2,29,29,1,24,24,2,2,2,2,2,2,18,26,8,24,24,24,2,2,2,2,2,2,2,2,2,2,2,2,4,2,4,4,4,4,2,4,4,4,34,2,2,2,0,0,0,0,0,0,9,9,9,9,9,9,2,2,0,0,1,2,2,2,2,2,2,2,2,26,8,1};
+        lineBreakProperties[65] = new byte[] { 2,1,1,1,1,2,2,2,2,2,2,2,2,26,8,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,28,28,28,28,28,28,28,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[66] = new byte[] { 2,2,2,27,2,1,2,2,2,27,2,2,2,2,2,2,2,2,2,1,2,2,28,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,1,1,2,2,2,2,2,1,2,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2};
+        lineBreakProperties[67] = new byte[] { 2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[68] = new byte[] { 1,2,1,1,2,2,2,1,1,2,2,1,2,2,2,1,2,1,28,28,2,1,2,2,2,2,1,2,2,1,1,1,1,2,2,1,2,1,2,1,1,1,1,1,1,2,1,2,2,2,2,2,1,1,1,1,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,1,1,1,1,2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[69] = new byte[] { 2,2,1,1,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[70] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,26,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[71] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[72] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
+        lineBreakProperties[73] = new byte[] { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2};
+        lineBreakProperties[74] = new byte[] { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[75] = new byte[] { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1,2,2,1,1,2,2,2,2,1,1,2,2,1,1,2,2,2,2,1,1,1,2,2,1,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[76] = new byte[] { 2,2,2,2,2,1,1,2,2,1,2,2,2,2,1,1,2,2,2,2,1,1,1,1,2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,1,1,1,2,1,1,1,1,2,1,1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+    };
+
+    private static void init_1() {
+        lineBreakProperties[77] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[78] = new byte[] { 0,2,2,2,2,0,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,2,2,2,2,0,0,0,2,0,2,2,2,29,29,29,29,0,0,2,11,11,2,2,2,2,26,8,26,8,26,8,26,8,26,8,26,8,26,8,1,1,1,1,1,1,1,1,1,1};
+        lineBreakProperties[79] = new byte[] { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,26,8,2,2,2,2,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,26,8,26,8,26,8,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[83] = new byte[] { 2,2,2,26,8,26,8,26,8,26,8,26,8,26,8,26,8,26,8,26,8,26,8,26,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,26,8,26,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,26,8,2,2};
+        lineBreakProperties[86] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[88] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0};
+        lineBreakProperties[89] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,2,4,4};
+        lineBreakProperties[90] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[91] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[92] = new byte[] { 29,29,29,29,29,29,29,29,29,29,29,29,29,29,4,4,4,4,4,4,4,4,2,4,0,0,0,0,29,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[93] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[94] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16};
+        lineBreakProperties[95] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0};
+        lineBreakProperties[96] = new byte[] { 16,8,8,16,16,24,16,16,26,8,26,8,26,8,26,8,26,8,16,16,26,8,26,8,26,8,26,8,24,26,8,8,16,16,16,16,16,16,16,16,16,16,9,9,9,9,9,9,16,16,16,16,16,16,16,16,16,16,16,24,24,16,16,16,0,24,16,24,16,24,16,24,16,24,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16};
+        lineBreakProperties[97] = new byte[] { 16,16,16,24,16,24,16,24,16,16,16,16,16,16,24,16,16,16,16,16,16,24,24,0,0,9,9,24,24,24,24,16,24,24,16,24,16,24,16,24,16,24,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,16,24,16,24,16,16,16,16,16,16,24,16,16,16,16,16,16,24,24,16,16,16,16,24,24,24,24,16};
+        lineBreakProperties[98] = new byte[] { 0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16};
+        lineBreakProperties[99] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24};
+        lineBreakProperties[100] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16};
+        lineBreakProperties[101] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0};
+        lineBreakProperties[155] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[319] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[320] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16};
+        lineBreakProperties[329] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[334] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[336] = new byte[] { 2,2,9,2,2,2,9,2,2,2,2,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,9,9,9,9,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,11,11,0,0,0,0,0,0,0,0};
+        lineBreakProperties[344] = new byte[] { 13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14};
+        lineBreakProperties[345] = new byte[] { 14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14};
+        lineBreakProperties[346] = new byte[] { 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14};
+        lineBreakProperties[347] = new byte[] { 14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14};
+        lineBreakProperties[348] = new byte[] { 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14};
+        lineBreakProperties[349] = new byte[] { 14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14};
+        lineBreakProperties[350] = new byte[] { 14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14};
+        lineBreakProperties[431] = new byte[] { 14,14,14,14,14,14,14,14,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[432] = new byte[] { 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31};
+        lineBreakProperties[448] = new byte[] { 35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35};
+        lineBreakProperties[500] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16};
+        lineBreakProperties[501] = new byte[] { 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+        lineBreakProperties[502] = new byte[] { 2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,2,9,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,0,2,0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[503] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[506] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,26,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[507] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,27,2,0,0};
+        lineBreakProperties[508] = new byte[] { 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,18,8,8,18,18,11,11,26,8,17,0,0,0,0,0,0,9,9,9,9,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,16,16,26,8,26,8,26,8,26,8,26,8,26,8,26,8,26,8,16,16,26,8,16,16,16,16,16,16,16,8,16,8,0,24,24,11,11,16,26,8,26,8,26,8,16,16,16,16,16,16,16,16,0,16,28,27,16,0,0,0,0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[509] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,34};
+        lineBreakProperties[510] = new byte[] { 0,11,16,16,28,27,16,16,26,8,16,16,8,16,8,16,16,16,16,16,16,16,16,16,16,16,24,24,16,16,16,11,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,26,16,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,26,16,8,16,26,8,8,26,8,8,24,2,24,24,24,24,24,24,24,24,24,24,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
+        lineBreakProperties[511] = new byte[] { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,24,24,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,0,2,2,2,0,0,0,27,28,16,16,16,28,28,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,9,9,9,7,1,0,0};
+    };
+
+    static {
+        init_0();
+        init_1();
+        lineBreakProperties[3]=lineBreakProperties[2];
+        lineBreakProperties[4]=lineBreakProperties[2];
+        lineBreakProperties[8]=lineBreakProperties[2];
+        lineBreakProperties[17]=lineBreakProperties[16];
+        lineBreakProperties[41]=lineBreakProperties[2];
+        lineBreakProperties[42]=lineBreakProperties[2];
+        lineBreakProperties[43]=lineBreakProperties[2];
+        lineBreakProperties[53]=lineBreakProperties[16];
+        lineBreakProperties[55]=lineBreakProperties[16];
+        lineBreakProperties[56]=lineBreakProperties[16];
+        lineBreakProperties[57]=lineBreakProperties[16];
+        lineBreakProperties[58]=lineBreakProperties[2];
+        lineBreakProperties[60]=lineBreakProperties[2];
+        lineBreakProperties[80]=lineBreakProperties[2];
+        lineBreakProperties[81]=lineBreakProperties[2];
+        lineBreakProperties[82]=lineBreakProperties[2];
+        lineBreakProperties[84]=lineBreakProperties[2];
+        lineBreakProperties[85]=lineBreakProperties[2];
+        lineBreakProperties[87]=lineBreakProperties[16];
+        lineBreakProperties[102]=lineBreakProperties[94];
+        lineBreakProperties[103]=lineBreakProperties[94];
+        lineBreakProperties[104]=lineBreakProperties[94];
+        lineBreakProperties[105]=lineBreakProperties[94];
+        lineBreakProperties[106]=lineBreakProperties[94];
+        lineBreakProperties[107]=lineBreakProperties[94];
+        lineBreakProperties[108]=lineBreakProperties[94];
+        lineBreakProperties[109]=lineBreakProperties[94];
+        lineBreakProperties[110]=lineBreakProperties[94];
+        lineBreakProperties[111]=lineBreakProperties[94];
+        lineBreakProperties[112]=lineBreakProperties[94];
+        lineBreakProperties[113]=lineBreakProperties[94];
+        lineBreakProperties[114]=lineBreakProperties[94];
+        lineBreakProperties[115]=lineBreakProperties[94];
+        lineBreakProperties[116]=lineBreakProperties[94];
+        lineBreakProperties[117]=lineBreakProperties[94];
+        lineBreakProperties[118]=lineBreakProperties[94];
+        lineBreakProperties[119]=lineBreakProperties[94];
+        lineBreakProperties[120]=lineBreakProperties[94];
+        lineBreakProperties[121]=lineBreakProperties[94];
+        lineBreakProperties[122]=lineBreakProperties[94];
+        lineBreakProperties[123]=lineBreakProperties[94];
+        lineBreakProperties[124]=lineBreakProperties[94];
+        lineBreakProperties[125]=lineBreakProperties[94];
+        lineBreakProperties[126]=lineBreakProperties[94];
+        lineBreakProperties[127]=lineBreakProperties[94];
+        lineBreakProperties[128]=lineBreakProperties[94];
+        lineBreakProperties[129]=lineBreakProperties[94];
+        lineBreakProperties[130]=lineBreakProperties[94];
+        lineBreakProperties[131]=lineBreakProperties[94];
+        lineBreakProperties[132]=lineBreakProperties[94];
+        lineBreakProperties[133]=lineBreakProperties[94];
+        lineBreakProperties[134]=lineBreakProperties[94];
+        lineBreakProperties[135]=lineBreakProperties[94];
+        lineBreakProperties[136]=lineBreakProperties[94];
+        lineBreakProperties[137]=lineBreakProperties[94];
+        lineBreakProperties[138]=lineBreakProperties[94];
+        lineBreakProperties[139]=lineBreakProperties[94];
+        lineBreakProperties[140]=lineBreakProperties[94];
+        lineBreakProperties[141]=lineBreakProperties[94];
+        lineBreakProperties[142]=lineBreakProperties[94];
+        lineBreakProperties[143]=lineBreakProperties[94];
+        lineBreakProperties[144]=lineBreakProperties[94];
+        lineBreakProperties[145]=lineBreakProperties[94];
+        lineBreakProperties[146]=lineBreakProperties[94];
+        lineBreakProperties[147]=lineBreakProperties[94];
+        lineBreakProperties[148]=lineBreakProperties[94];
+        lineBreakProperties[149]=lineBreakProperties[94];
+        lineBreakProperties[150]=lineBreakProperties[94];
+        lineBreakProperties[151]=lineBreakProperties[94];
+        lineBreakProperties[152]=lineBreakProperties[94];
+        lineBreakProperties[153]=lineBreakProperties[94];
+        lineBreakProperties[154]=lineBreakProperties[94];
+        lineBreakProperties[156]=lineBreakProperties[94];
+        lineBreakProperties[157]=lineBreakProperties[94];
+        lineBreakProperties[158]=lineBreakProperties[94];
+        lineBreakProperties[159]=lineBreakProperties[94];
+        lineBreakProperties[160]=lineBreakProperties[94];
+        lineBreakProperties[161]=lineBreakProperties[94];
+        lineBreakProperties[162]=lineBreakProperties[94];
+        lineBreakProperties[163]=lineBreakProperties[94];
+        lineBreakProperties[164]=lineBreakProperties[94];
+        lineBreakProperties[165]=lineBreakProperties[94];
+        lineBreakProperties[166]=lineBreakProperties[94];
+        lineBreakProperties[167]=lineBreakProperties[94];
+        lineBreakProperties[168]=lineBreakProperties[94];
+        lineBreakProperties[169]=lineBreakProperties[94];
+        lineBreakProperties[170]=lineBreakProperties[94];
+        lineBreakProperties[171]=lineBreakProperties[94];
+        lineBreakProperties[172]=lineBreakProperties[94];
+        lineBreakProperties[173]=lineBreakProperties[94];
+        lineBreakProperties[174]=lineBreakProperties[94];
+        lineBreakProperties[175]=lineBreakProperties[94];
+        lineBreakProperties[176]=lineBreakProperties[94];
+        lineBreakProperties[177]=lineBreakProperties[94];
+        lineBreakProperties[178]=lineBreakProperties[94];
+        lineBreakProperties[179]=lineBreakProperties[94];
+        lineBreakProperties[180]=lineBreakProperties[94];
+        lineBreakProperties[181]=lineBreakProperties[94];
+        lineBreakProperties[182]=lineBreakProperties[94];
+        lineBreakProperties[183]=lineBreakProperties[94];
+        lineBreakProperties[184]=lineBreakProperties[94];
+        lineBreakProperties[185]=lineBreakProperties[94];
+        lineBreakProperties[186]=lineBreakProperties[94];
+        lineBreakProperties[187]=lineBreakProperties[94];
+        lineBreakProperties[188]=lineBreakProperties[94];
+        lineBreakProperties[189]=lineBreakProperties[94];
+        lineBreakProperties[190]=lineBreakProperties[94];
+        lineBreakProperties[191]=lineBreakProperties[94];
+        lineBreakProperties[192]=lineBreakProperties[94];
+        lineBreakProperties[193]=lineBreakProperties[94];
+        lineBreakProperties[194]=lineBreakProperties[94];
+        lineBreakProperties[195]=lineBreakProperties[94];
+        lineBreakProperties[196]=lineBreakProperties[94];
+        lineBreakProperties[197]=lineBreakProperties[94];
+        lineBreakProperties[198]=lineBreakProperties[94];
+        lineBreakProperties[199]=lineBreakProperties[94];
+        lineBreakProperties[200]=lineBreakProperties[94];
+        lineBreakProperties[201]=lineBreakProperties[94];
+        lineBreakProperties[202]=lineBreakProperties[94];
+        lineBreakProperties[203]=lineBreakProperties[94];
+        lineBreakProperties[204]=lineBreakProperties[94];
+        lineBreakProperties[205]=lineBreakProperties[94];
+        lineBreakProperties[206]=lineBreakProperties[94];
+        lineBreakProperties[207]=lineBreakProperties[94];
+        lineBreakProperties[208]=lineBreakProperties[94];
+        lineBreakProperties[209]=lineBreakProperties[94];
+        lineBreakProperties[210]=lineBreakProperties[94];
+        lineBreakProperties[211]=lineBreakProperties[94];
+        lineBreakProperties[212]=lineBreakProperties[94];
+        lineBreakProperties[213]=lineBreakProperties[94];
+        lineBreakProperties[214]=lineBreakProperties[94];
+        lineBreakProperties[215]=lineBreakProperties[94];
+        lineBreakProperties[216]=lineBreakProperties[94];
+        lineBreakProperties[217]=lineBreakProperties[94];
+        lineBreakProperties[218]=lineBreakProperties[94];
+        lineBreakProperties[219]=lineBreakProperties[94];
+        lineBreakProperties[220]=lineBreakProperties[94];
+        lineBreakProperties[221]=lineBreakProperties[94];
+        lineBreakProperties[222]=lineBreakProperties[94];
+        lineBreakProperties[223]=lineBreakProperties[94];
+        lineBreakProperties[224]=lineBreakProperties[94];
+        lineBreakProperties[225]=lineBreakProperties[94];
+        lineBreakProperties[226]=lineBreakProperties[94];
+        lineBreakProperties[227]=lineBreakProperties[94];
+        lineBreakProperties[228]=lineBreakProperties[94];
+        lineBreakProperties[229]=lineBreakProperties[94];
+        lineBreakProperties[230]=lineBreakProperties[94];
+        lineBreakProperties[231]=lineBreakProperties[94];
+        lineBreakProperties[232]=lineBreakProperties[94];
+        lineBreakProperties[233]=lineBreakProperties[94];
+        lineBreakProperties[234]=lineBreakProperties[94];
+        lineBreakProperties[235]=lineBreakProperties[94];
+        lineBreakProperties[236]=lineBreakProperties[94];
+        lineBreakProperties[237]=lineBreakProperties[94];
+        lineBreakProperties[238]=lineBreakProperties[94];
+        lineBreakProperties[239]=lineBreakProperties[94];
+        lineBreakProperties[240]=lineBreakProperties[94];
+        lineBreakProperties[241]=lineBreakProperties[94];
+        lineBreakProperties[242]=lineBreakProperties[94];
+        lineBreakProperties[243]=lineBreakProperties[94];
+        lineBreakProperties[244]=lineBreakProperties[94];
+        lineBreakProperties[245]=lineBreakProperties[94];
+        lineBreakProperties[246]=lineBreakProperties[94];
+        lineBreakProperties[247]=lineBreakProperties[94];
+        lineBreakProperties[248]=lineBreakProperties[94];
+        lineBreakProperties[249]=lineBreakProperties[94];
+        lineBreakProperties[250]=lineBreakProperties[94];
+        lineBreakProperties[251]=lineBreakProperties[94];
+        lineBreakProperties[252]=lineBreakProperties[94];
+        lineBreakProperties[253]=lineBreakProperties[94];
+        lineBreakProperties[254]=lineBreakProperties[94];
+        lineBreakProperties[255]=lineBreakProperties[94];
+        lineBreakProperties[256]=lineBreakProperties[94];
+        lineBreakProperties[257]=lineBreakProperties[94];
+        lineBreakProperties[258]=lineBreakProperties[94];
+        lineBreakProperties[259]=lineBreakProperties[94];
+        lineBreakProperties[260]=lineBreakProperties[94];
+        lineBreakProperties[261]=lineBreakProperties[94];
+        lineBreakProperties[262]=lineBreakProperties[94];
+        lineBreakProperties[263]=lineBreakProperties[94];
+        lineBreakProperties[264]=lineBreakProperties[94];
+        lineBreakProperties[265]=lineBreakProperties[94];
+        lineBreakProperties[266]=lineBreakProperties[94];
+        lineBreakProperties[267]=lineBreakProperties[94];
+        lineBreakProperties[268]=lineBreakProperties[94];
+        lineBreakProperties[269]=lineBreakProperties[94];
+        lineBreakProperties[270]=lineBreakProperties[94];
+        lineBreakProperties[271]=lineBreakProperties[94];
+        lineBreakProperties[272]=lineBreakProperties[94];
+        lineBreakProperties[273]=lineBreakProperties[94];
+        lineBreakProperties[274]=lineBreakProperties[94];
+        lineBreakProperties[275]=lineBreakProperties[94];
+        lineBreakProperties[276]=lineBreakProperties[94];
+        lineBreakProperties[277]=lineBreakProperties[94];
+        lineBreakProperties[278]=lineBreakProperties[94];
+        lineBreakProperties[279]=lineBreakProperties[94];
+        lineBreakProperties[280]=lineBreakProperties[94];
+        lineBreakProperties[281]=lineBreakProperties[94];
+        lineBreakProperties[282]=lineBreakProperties[94];
+        lineBreakProperties[283]=lineBreakProperties[94];
+        lineBreakProperties[284]=lineBreakProperties[94];
+        lineBreakProperties[285]=lineBreakProperties[94];
+        lineBreakProperties[286]=lineBreakProperties[94];
+        lineBreakProperties[287]=lineBreakProperties[94];
+        lineBreakProperties[288]=lineBreakProperties[94];
+        lineBreakProperties[289]=lineBreakProperties[94];
+        lineBreakProperties[290]=lineBreakProperties[94];
+        lineBreakProperties[291]=lineBreakProperties[94];
+        lineBreakProperties[292]=lineBreakProperties[94];
+        lineBreakProperties[293]=lineBreakProperties[94];
+        lineBreakProperties[294]=lineBreakProperties[94];
+        lineBreakProperties[295]=lineBreakProperties[94];
+        lineBreakProperties[296]=lineBreakProperties[94];
+        lineBreakProperties[297]=lineBreakProperties[94];
+        lineBreakProperties[298]=lineBreakProperties[94];
+        lineBreakProperties[299]=lineBreakProperties[94];
+        lineBreakProperties[300]=lineBreakProperties[94];
+        lineBreakProperties[301]=lineBreakProperties[94];
+        lineBreakProperties[302]=lineBreakProperties[94];
+        lineBreakProperties[303]=lineBreakProperties[94];
+        lineBreakProperties[304]=lineBreakProperties[94];
+        lineBreakProperties[305]=lineBreakProperties[94];
+        lineBreakProperties[306]=lineBreakProperties[94];
+        lineBreakProperties[307]=lineBreakProperties[94];
+        lineBreakProperties[308]=lineBreakProperties[94];
+        lineBreakProperties[309]=lineBreakProperties[94];
+        lineBreakProperties[310]=lineBreakProperties[94];
+        lineBreakProperties[311]=lineBreakProperties[94];
+        lineBreakProperties[312]=lineBreakProperties[94];
+        lineBreakProperties[313]=lineBreakProperties[94];
+        lineBreakProperties[314]=lineBreakProperties[94];
+        lineBreakProperties[315]=lineBreakProperties[94];
+        lineBreakProperties[316]=lineBreakProperties[94];
+        lineBreakProperties[317]=lineBreakProperties[94];
+        lineBreakProperties[318]=lineBreakProperties[94];
+        lineBreakProperties[321]=lineBreakProperties[94];
+        lineBreakProperties[322]=lineBreakProperties[94];
+        lineBreakProperties[323]=lineBreakProperties[94];
+        lineBreakProperties[324]=lineBreakProperties[94];
+        lineBreakProperties[325]=lineBreakProperties[94];
+        lineBreakProperties[326]=lineBreakProperties[94];
+        lineBreakProperties[327]=lineBreakProperties[94];
+        lineBreakProperties[328]=lineBreakProperties[94];
+        lineBreakProperties[330]=lineBreakProperties[16];
+        lineBreakProperties[331]=lineBreakProperties[16];
+        lineBreakProperties[332]=lineBreakProperties[16];
+        lineBreakProperties[333]=lineBreakProperties[16];
+        lineBreakProperties[335]=lineBreakProperties[16];
+        lineBreakProperties[337]=lineBreakProperties[16];
+        lineBreakProperties[338]=lineBreakProperties[16];
+        lineBreakProperties[339]=lineBreakProperties[16];
+        lineBreakProperties[340]=lineBreakProperties[16];
+        lineBreakProperties[341]=lineBreakProperties[16];
+        lineBreakProperties[342]=lineBreakProperties[16];
+        lineBreakProperties[343]=lineBreakProperties[16];
+        lineBreakProperties[351]=lineBreakProperties[344];
+        lineBreakProperties[352]=lineBreakProperties[345];
+        lineBreakProperties[353]=lineBreakProperties[346];
+        lineBreakProperties[354]=lineBreakProperties[347];
+        lineBreakProperties[355]=lineBreakProperties[348];
+        lineBreakProperties[356]=lineBreakProperties[349];
+        lineBreakProperties[357]=lineBreakProperties[350];
+        lineBreakProperties[358]=lineBreakProperties[344];
+        lineBreakProperties[359]=lineBreakProperties[345];
+        lineBreakProperties[360]=lineBreakProperties[346];
+        lineBreakProperties[361]=lineBreakProperties[347];
+        lineBreakProperties[362]=lineBreakProperties[348];
+        lineBreakProperties[363]=lineBreakProperties[349];
+        lineBreakProperties[364]=lineBreakProperties[350];
+        lineBreakProperties[365]=lineBreakProperties[344];
+        lineBreakProperties[366]=lineBreakProperties[345];
+        lineBreakProperties[367]=lineBreakProperties[346];
+        lineBreakProperties[368]=lineBreakProperties[347];
+        lineBreakProperties[369]=lineBreakProperties[348];
+        lineBreakProperties[370]=lineBreakProperties[349];
+        lineBreakProperties[371]=lineBreakProperties[350];
+        lineBreakProperties[372]=lineBreakProperties[344];
+        lineBreakProperties[373]=lineBreakProperties[345];
+        lineBreakProperties[374]=lineBreakProperties[346];
+        lineBreakProperties[375]=lineBreakProperties[347];
+        lineBreakProperties[376]=lineBreakProperties[348];
+        lineBreakProperties[377]=lineBreakProperties[349];
+        lineBreakProperties[378]=lineBreakProperties[350];
+        lineBreakProperties[379]=lineBreakProperties[344];
+        lineBreakProperties[380]=lineBreakProperties[345];
+        lineBreakProperties[381]=lineBreakProperties[346];
+        lineBreakProperties[382]=lineBreakProperties[347];
+        lineBreakProperties[383]=lineBreakProperties[348];
+        lineBreakProperties[384]=lineBreakProperties[349];
+        lineBreakProperties[385]=lineBreakProperties[350];
+        lineBreakProperties[386]=lineBreakProperties[344];
+        lineBreakProperties[387]=lineBreakProperties[345];
+        lineBreakProperties[388]=lineBreakProperties[346];
+        lineBreakProperties[389]=lineBreakProperties[347];
+        lineBreakProperties[390]=lineBreakProperties[348];
+        lineBreakProperties[391]=lineBreakProperties[349];
+        lineBreakProperties[392]=lineBreakProperties[350];
+        lineBreakProperties[393]=lineBreakProperties[344];
+        lineBreakProperties[394]=lineBreakProperties[345];
+        lineBreakProperties[395]=lineBreakProperties[346];
+        lineBreakProperties[396]=lineBreakProperties[347];
+        lineBreakProperties[397]=lineBreakProperties[348];
+        lineBreakProperties[398]=lineBreakProperties[349];
+        lineBreakProperties[399]=lineBreakProperties[350];
+        lineBreakProperties[400]=lineBreakProperties[344];
+        lineBreakProperties[401]=lineBreakProperties[345];
+        lineBreakProperties[402]=lineBreakProperties[346];
+        lineBreakProperties[403]=lineBreakProperties[347];
+        lineBreakProperties[404]=lineBreakProperties[348];
+        lineBreakProperties[405]=lineBreakProperties[349];
+        lineBreakProperties[406]=lineBreakProperties[350];
+        lineBreakProperties[407]=lineBreakProperties[344];
+        lineBreakProperties[408]=lineBreakProperties[345];
+        lineBreakProperties[409]=lineBreakProperties[346];
+        lineBreakProperties[410]=lineBreakProperties[347];
+        lineBreakProperties[411]=lineBreakProperties[348];
+        lineBreakProperties[412]=lineBreakProperties[349];
+        lineBreakProperties[413]=lineBreakProperties[350];
+        lineBreakProperties[414]=lineBreakProperties[344];
+        lineBreakProperties[415]=lineBreakProperties[345];
+        lineBreakProperties[416]=lineBreakProperties[346];
+        lineBreakProperties[417]=lineBreakProperties[347];
+        lineBreakProperties[418]=lineBreakProperties[348];
+        lineBreakProperties[419]=lineBreakProperties[349];
+        lineBreakProperties[420]=lineBreakProperties[350];
+        lineBreakProperties[421]=lineBreakProperties[344];
+        lineBreakProperties[422]=lineBreakProperties[345];
+        lineBreakProperties[423]=lineBreakProperties[346];
+        lineBreakProperties[424]=lineBreakProperties[347];
+        lineBreakProperties[425]=lineBreakProperties[348];
+        lineBreakProperties[426]=lineBreakProperties[349];
+        lineBreakProperties[427]=lineBreakProperties[350];
+        lineBreakProperties[428]=lineBreakProperties[344];
+        lineBreakProperties[429]=lineBreakProperties[345];
+        lineBreakProperties[430]=lineBreakProperties[346];
+        lineBreakProperties[433]=lineBreakProperties[432];
+        lineBreakProperties[434]=lineBreakProperties[432];
+        lineBreakProperties[435]=lineBreakProperties[432];
+        lineBreakProperties[436]=lineBreakProperties[432];
+        lineBreakProperties[437]=lineBreakProperties[432];
+        lineBreakProperties[438]=lineBreakProperties[432];
+        lineBreakProperties[439]=lineBreakProperties[432];
+        lineBreakProperties[440]=lineBreakProperties[432];
+        lineBreakProperties[441]=lineBreakProperties[432];
+        lineBreakProperties[442]=lineBreakProperties[432];
+        lineBreakProperties[443]=lineBreakProperties[432];
+        lineBreakProperties[444]=lineBreakProperties[432];
+        lineBreakProperties[445]=lineBreakProperties[432];
+        lineBreakProperties[446]=lineBreakProperties[432];
+        lineBreakProperties[447]=lineBreakProperties[432];
+        lineBreakProperties[449]=lineBreakProperties[448];
+        lineBreakProperties[450]=lineBreakProperties[448];
+        lineBreakProperties[451]=lineBreakProperties[448];
+        lineBreakProperties[452]=lineBreakProperties[448];
+        lineBreakProperties[453]=lineBreakProperties[448];
+        lineBreakProperties[454]=lineBreakProperties[448];
+        lineBreakProperties[455]=lineBreakProperties[448];
+        lineBreakProperties[456]=lineBreakProperties[448];
+        lineBreakProperties[457]=lineBreakProperties[448];
+        lineBreakProperties[458]=lineBreakProperties[448];
+        lineBreakProperties[459]=lineBreakProperties[448];
+        lineBreakProperties[460]=lineBreakProperties[448];
+        lineBreakProperties[461]=lineBreakProperties[448];
+        lineBreakProperties[462]=lineBreakProperties[448];
+        lineBreakProperties[463]=lineBreakProperties[448];
+        lineBreakProperties[464]=lineBreakProperties[448];
+        lineBreakProperties[465]=lineBreakProperties[448];
+        lineBreakProperties[466]=lineBreakProperties[448];
+        lineBreakProperties[467]=lineBreakProperties[448];
+        lineBreakProperties[468]=lineBreakProperties[448];
+        lineBreakProperties[469]=lineBreakProperties[448];
+        lineBreakProperties[470]=lineBreakProperties[448];
+        lineBreakProperties[471]=lineBreakProperties[448];
+        lineBreakProperties[472]=lineBreakProperties[448];
+        lineBreakProperties[473]=lineBreakProperties[448];
+        lineBreakProperties[474]=lineBreakProperties[448];
+        lineBreakProperties[475]=lineBreakProperties[448];
+        lineBreakProperties[476]=lineBreakProperties[448];
+        lineBreakProperties[477]=lineBreakProperties[448];
+        lineBreakProperties[478]=lineBreakProperties[448];
+        lineBreakProperties[479]=lineBreakProperties[448];
+        lineBreakProperties[480]=lineBreakProperties[448];
+        lineBreakProperties[481]=lineBreakProperties[448];
+        lineBreakProperties[482]=lineBreakProperties[448];
+        lineBreakProperties[483]=lineBreakProperties[448];
+        lineBreakProperties[484]=lineBreakProperties[448];
+        lineBreakProperties[485]=lineBreakProperties[448];
+        lineBreakProperties[486]=lineBreakProperties[448];
+        lineBreakProperties[487]=lineBreakProperties[448];
+        lineBreakProperties[488]=lineBreakProperties[448];
+        lineBreakProperties[489]=lineBreakProperties[448];
+        lineBreakProperties[490]=lineBreakProperties[448];
+        lineBreakProperties[491]=lineBreakProperties[448];
+        lineBreakProperties[492]=lineBreakProperties[448];
+        lineBreakProperties[493]=lineBreakProperties[448];
+        lineBreakProperties[494]=lineBreakProperties[448];
+        lineBreakProperties[495]=lineBreakProperties[448];
+        lineBreakProperties[496]=lineBreakProperties[448];
+        lineBreakProperties[497]=lineBreakProperties[448];
+        lineBreakProperties[498]=lineBreakProperties[94];
+        lineBreakProperties[499]=lineBreakProperties[94];
+        lineBreakProperties[504]=lineBreakProperties[2];
+        lineBreakProperties[505]=lineBreakProperties[2];
+    };
+
+    public static final byte LINE_BREAK_PROPERTY_AI=1;
+    public static final byte LINE_BREAK_PROPERTY_AL=2;
+    public static final byte LINE_BREAK_PROPERTY_B2=3;
+    public static final byte LINE_BREAK_PROPERTY_BA=4;
+    public static final byte LINE_BREAK_PROPERTY_BB=5;
+    public static final byte LINE_BREAK_PROPERTY_BK=6;
+    public static final byte LINE_BREAK_PROPERTY_CB=7;
+    public static final byte LINE_BREAK_PROPERTY_CL=8;
+    public static final byte LINE_BREAK_PROPERTY_CM=9;
+    public static final byte LINE_BREAK_PROPERTY_CR=10;
+    public static final byte LINE_BREAK_PROPERTY_EX=11;
+    public static final byte LINE_BREAK_PROPERTY_GL=12;
+    public static final byte LINE_BREAK_PROPERTY_H2=13;
+    public static final byte LINE_BREAK_PROPERTY_H3=14;
+    public static final byte LINE_BREAK_PROPERTY_HY=15;
+    public static final byte LINE_BREAK_PROPERTY_ID=16;
+    public static final byte LINE_BREAK_PROPERTY_IN=17;
+    public static final byte LINE_BREAK_PROPERTY_IS=18;
+    public static final byte LINE_BREAK_PROPERTY_JL=19;
+    public static final byte LINE_BREAK_PROPERTY_JT=20;
+    public static final byte LINE_BREAK_PROPERTY_JV=21;
+    public static final byte LINE_BREAK_PROPERTY_LF=22;
+    public static final byte LINE_BREAK_PROPERTY_NL=23;
+    public static final byte LINE_BREAK_PROPERTY_NS=24;
+    public static final byte LINE_BREAK_PROPERTY_NU=25;
+    public static final byte LINE_BREAK_PROPERTY_OP=26;
+    public static final byte LINE_BREAK_PROPERTY_PO=27;
+    public static final byte LINE_BREAK_PROPERTY_PR=28;
+    public static final byte LINE_BREAK_PROPERTY_QU=29;
+    public static final byte LINE_BREAK_PROPERTY_SA=30;
+    public static final byte LINE_BREAK_PROPERTY_SG=31;
+    public static final byte LINE_BREAK_PROPERTY_SP=32;
+    public static final byte LINE_BREAK_PROPERTY_SY=33;
+    public static final byte LINE_BREAK_PROPERTY_WJ=34;
+    public static final byte LINE_BREAK_PROPERTY_XX=35;
+    public static final byte LINE_BREAK_PROPERTY_ZW=36;
+
+    private static String lineBreakPropertyShortNames[] = {"AI","AL","B2","BA","BB","BK","CB","CL","CM","CR","EX",
+        "GL","H2","H3","HY","ID","IN","IS","JL","JT","JV","LF","NL","NS","NU","OP","PO","PR","QU","SA","SG","SP",
+        "SY","WJ","XX","ZW"};
+
+    private static String lineBreakPropertyLongNames[] = {"Ambiguous","Alphabetic","Break_Both","Break_After","Break_Before",
+        "Mandatory_Break","Contingent_Break","Close_Punctuation","Combining_Mark","Carriage_Return","Exclamation",
+        "Glue","H2","H3","Hyphen","Ideographic","Inseparable","Infix_Numeric","JL","JT","JV","Line_Feed","Next_Line",
+        "Nonstarter","Numeric","Open_Punctuation","Postfix_Numeric","Prefix_Numeric","Quotation","Complex_Context",
+        "Surrogate","Space","Break_Symbols","Word_Joiner","Unknown","ZWSpace"};
+
+    public static String getLineBreakPropertyShortName(byte i) {
+        if (i>0 && i<=lineBreakPropertyShortNames.length) {
+            return lineBreakPropertyShortNames[i-1];
+        } else {
+            return null;
+        }
+    }
+
+    public static String getLineBreakPropertyLongName(byte i) {
+        if (i>0 && i<=lineBreakPropertyLongNames.length) {
+            return lineBreakPropertyLongNames[i-1];
+        } else {
+            return null;
+        }
+    }
+
+    public static byte getLineBreakProperty(char c) {
+        return lineBreakProperties[c/128][c%128];
+    }
+
+    public static byte getLineBreakPairProperty(int lineBreakPropertyBefore,int lineBreakPropertyAfter) {
+        return PAIR_TABLE[lineBreakPropertyBefore-1][lineBreakPropertyAfter-1];
+    }
+
+};
index eca23defc8515b01c4ff34bdad9009f8b01167a0..a8e27b53bcd2b4879ca082a89101c2ce07b4adfd 100644 (file)
@@ -28,6 +28,9 @@
 
   <changes>
     <release version="FOP Trunk">
+      <action context="Code" dev="MM" type="add">
+        Added support for UAX#14 type line breaking. Support does not extend across nested fo:inline elements.
+      </action>
       <action context="Code" dev="SP" type="update" fixes-bug="41044" due-to="Richard Wheeldon">
         Commented out unused properties, in order to minimize memory usage. 
       </action>
diff --git a/test/java/org/apache/fop/text/linebreak/LineBreakStatusTest.java b/test/java/org/apache/fop/text/linebreak/LineBreakStatusTest.java
new file mode 100644 (file)
index 0000000..6ec075a
--- /dev/null
@@ -0,0 +1,351 @@
+/*
+ * 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.text.linebreak;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * JUnit test case for the LineBreakStatus class
+ */
+public class LineBreakStatusTest extends TestCase {
+
+    /*
+     * These symbols are used to indicate the break action returned
+     * by the paragraph breaking. Their meaning is as per Unicode
+     * <a href="http://unicode.org/reports/tr14/#PairBasedImplementation">technical 
+     * report #14</a>.
+     */
+    private static final String BREAK_ACTION = "_%#@^!";
+
+    /**
+     * Creates the test with the given name.
+     * @param testName The name for this test.
+     */
+    public LineBreakStatusTest(String testName) {
+        super(testName);
+    }
+
+    /**
+     * Returns an TestSuite constructed from this class.
+     * @return the TestSuite
+     * @see junit.framework.TestSuite#TestSuite(class)
+     */
+    public static Test suite() {
+        TestSuite suite = new TestSuite(LineBreakStatusTest.class);
+        
+        return suite;
+    }
+
+    /**
+     * Test of reset method, of class org.apache.commons.text.linebreak.LineBreakStatus.
+     */
+    public void testReset() {
+        System.out.println("testReset");
+        // TODO
+    }
+
+    /**
+     * Test of nextChar method, of class org.apache.commons.text.linebreak.LineBreakStatus.
+     * Runs tests for most of the Line Breaking Properties defined in the Unicode standard.
+     */
+    public void testNextChar() {
+        System.out.println("testNextChar");
+        
+        // AL -- Ordinary Alphabetic and Symbol Characters (XP)
+        assertTrue(testBreak(
+            "Nobreak", 
+            "^^^^^^^"
+            ));
+        
+        // BA -- Break Opportunity After (A)
+        assertTrue(testBreak(
+            "Thin Space" + "\u2009" + "break", 
+            "^^^^^%^^^^" + "^"      + "_^^^^"
+            ));
+
+        assertTrue(testBreak(
+            "Shy" + "\u00AD" + "break", 
+            "^^^" + "^"      + "_^^^^"
+            ));
+
+
+        // BB -- Break opportunites before characters (B)
+        assertTrue(testBreak(
+            "Acute Accent" + "\u00B4" + "break", 
+            "^^^^^^%^^^^^" + "_"      + "^^^^^"
+            ));
+
+        // B2 -- Break Opportunity Before and After (B/A/XP)
+        assertTrue(testBreak(
+            "Em Dash" + "\u2014" + "break", 
+            "^^^%^^^" + "_"      + "_^^^^"
+            ));
+
+        assertTrue(testBreak(
+            "Em Dash Dash" + "\u2014" + "\u2014" + "break", 
+            "^^^%^^^^%^^^" + "_"      + "^"      + "_^^^^"
+            ));
+
+        // BK Mandatory Break (A) -- normative
+        assertTrue(testBreak(
+            "Form Feed" + "\u000C" + "break", 
+            "^^^^^%^^^" + "^"      + "!^^^^"
+            ));
+
+        assertTrue(testBreak(
+            "Line Separator" + "\u2028" + "break", 
+            "^^^^^%^^^^^^^^" + "^"      + "!^^^^"
+            ));
+
+        assertTrue(testBreak(
+            "Paragraph Separator" + "\u2029" + "break", 
+            "^^^^^^^^^^%^^^^^^^^" + "^"      + "!^^^^"
+            ));
+
+        // CB Contingent Break Opportunity (B/A) -- normative
+        // TODO Don't know quite what to do here
+        
+        // CL -- Closing Punctuation (XB)
+        assertTrue(testBreak(
+            "Right Parenthesis ) break", 
+            "^^^^^^%^^^^^^^^^^^^^_^^^^"
+            ));
+        
+        // CM -- Attached Characters and Combining Marks (XB) -- normative
+        assertTrue(testBreak(
+            "Grave Accent" + "\u0300" + " break", 
+            "^^^^^^%^^^^^" + "^"      + "^%^^^^"
+            ));
+        
+        // CR -- Carriage Return (A) -- normative
+        assertTrue(testBreak(
+            "CR" + "\r" + "break", 
+            "^^" + "^"  + "!^^^^"
+            ));
+        
+        assertTrue(testBreak(
+            "CRLF" + "\r\n" + "break", 
+            "^^^^" + "^^"   + "!^^^^"
+            ));
+        
+        // EX -- Exclamation / interrogation (XB)
+        assertTrue(testBreak(
+            "EX CL ! ) break", 
+            "^^^%^^^^^^_^^^^"
+            ));
+        
+        assertTrue(testBreak(
+            "EX Wave Dash ! " + "\u301C" + " break", 
+            "^^^%^^^^%^^^^^^" + "%"      + "^_^^^^"
+            ));
+        
+        // GL -- Non-breaking ("Glue") (XB/XA) -- normative
+        assertTrue(testBreak(
+            "No" + "\u00a0" + "break", 
+            "^^" + "^"      + "^^^^^"
+            ));
+        
+        assertTrue(testBreak(
+            "Non" + "\u2011" + " Hyphen", 
+            "^^^" + "^"      + "^%^^^^^"
+            ));
+        
+        // H2 -- Hangul LVT Syllable (B/A)
+        // TODO
+
+        // H3 -- Hangul LVT Syllable (B/A)
+        // TODO
+
+        // HY -- Hyphen Minus
+        assertTrue(testBreak(
+            "Normal-Hyphen", 
+            "^^^^^^^_^^^^^"
+            ));
+
+        assertTrue(testBreak(
+            "Normal - Hyphen", 
+            "^^^^^^^%^_^^^^^"
+            ));
+
+        assertTrue(testBreak(
+            "123-456", 
+            "^^^^^^^"
+            ));
+
+        assertTrue(testBreak(
+            "123 - 456", 
+            "^^^^%^%^^"
+            ));
+
+        // ID -- Ideographic (B/A)
+        assertTrue(testBreak(
+            "\u4E00" + "\u3000" + "\u4E02", 
+            "^"      + "_"      + "_"
+            ));
+
+        // IN -- Inseperable characters (XP)
+        assertTrue(testBreak(
+            "IN " + "\u2024" + "\u2025" + "\u2026", 
+            "^^^" + "%"      + "^"      + "^"
+            ));
+
+        // IS -- Numeric Separator (Infix) (XB)
+        assertTrue(testBreak(
+            "123,456.00 12:59", 
+            "^^^^^^^^^^^%^^^^"
+            ));
+
+        // JL -- Hangul L Jamo (B)
+        // TODO
+
+        // JT -- Hangul T Jamo (A)
+        // TODO
+
+        // JV -- Hangul V Jamo (XA/XB)
+        // TODO
+
+        // LF -- Line Feed (A) -- normative
+        assertTrue(testBreak(
+            "Simple" + "\n" + "\n" + "break", 
+            "^^^^^^" + "^" + "!"  + "!^^^^"
+            ));
+
+        // NL -- Next Line (A) -- normative
+        assertTrue(testBreak(
+            "NL" + "\u0085" + "break", 
+            "^^" + "^"      + "!^^^^"
+            ));
+
+        // NS -- Non-starters (XB)
+        // TODO
+
+        // NU -- Numeric (XP)
+        // Tested as part of IS
+
+        // OP -- Opening Punctuation (XA)
+        assertTrue(testBreak(
+            "[ Bracket ( Parenthesis", 
+            "^^^^^^^^^^_^^^^^^^^^^^^"
+            ));
+        
+        // PO -- Postfix (Numeric) (XB)
+        assertTrue(testBreak(
+            "(12.00)%", 
+            "^^^^^^^^"
+            ));
+
+        // PR -- Prefix (Numeric) (XA)
+        assertTrue(testBreak(
+            "$1000.00", 
+            "^^^^^^^^"
+            ));
+
+        // QU -- Ambiguous Quotation (XB/XA)
+        assertTrue(testBreak(
+            "'In Quotes'", 
+            "^^^^%^^^^^^"
+            ));
+
+        assertTrue(testBreak(
+            "' (In Quotes) '", 
+            "^^^^^^%^^^^^^^%"
+            ));
+
+        // SA -- Complex-context Dependent Characters (South East Asian) (P)
+        // TODO
+        
+        // SP -- Space (A) -- normative
+        assertTrue(testBreak(
+            "Simple break", 
+            "^^^^^^^%^^^^"
+            ));
+
+        assertTrue(testBreak(
+            "Simple    break2", 
+            "^^^^^^^^^^%^^^^^"
+            ));
+
+        // SY -- Symbols Allowing Break After (A)
+        assertTrue(testBreak(
+            "http://xmlgraphics.apache.org/fop", 
+            "^^^^^^^_^^^^^^^^^^^^^^^^^^^^^^_^^"
+            ));
+
+        assertTrue(testBreak(
+            "1/2 31/10/2005", 
+            "^^^^%^^^^^^^^^"
+            ));
+
+        // WJ -- Word Joiner (XA/XB) -- (normative)
+        assertTrue(testBreak(
+            "http://" + "\u2060" + "xmlgraphics.apache.org/" + "\uFEFF" + "fop", 
+            "^^^^^^^" + "^"      + "^^^^^^^^^^^^^^^^^^^^^^^" + "^"      + "^^^"
+            ));
+
+        assertTrue(testBreak(
+            "Simple " + "\u2060" + "break", 
+            "^^^^^^^" + "^"      + "^^^^^"
+            ));
+
+        assertTrue(testBreak(
+            "Simple" + "\u200B" + "\u2060" + "break", 
+            "^^^^^^" + "^"      + "_"      + "^^^^^"
+            ));
+
+        // XX -- Unknown (XP)
+        // TODO
+        
+        // ZW -- Zero Width Space (A) -- (normative)
+        assertTrue(testBreak(
+            "Simple" + "\u200B" + "break", 
+            "^^^^^^" + "^"      + "_^^^^"
+            ));
+
+    }
+
+    /**
+     * Tests the paragraph break status (break actions) returned from calling
+     * LineBreakStatus.nextChar() on each character of paragraph against
+     * the expected break actions. There must be a positional match between
+     * the characters in paragraph and characters in breakAction.
+     * @param paragraph The text to be analysed for line breaks
+     * @param breakActions The symbolic representation of the break actions
+     * expected to be returned.
+     */
+    private boolean testBreak(String paragraph, String breakActions) {
+        boolean result = true;
+        int length = paragraph.length();
+        LineBreakStatus lbs = new LineBreakStatus();
+        for (int i = 0; i < length; i++) {
+            byte breakAction = lbs.nextChar(paragraph.charAt(i));
+            if (BREAK_ACTION.charAt(breakAction) != breakActions.charAt(i)) {
+                System.err.println(paragraph);
+                System.err.println(breakActions);
+                System.err.println("pos = " + i 
+                    + " expected '" + breakActions.charAt(i) 
+                    + "' got '" + BREAK_ACTION.charAt(breakAction) + "'");
+                result = false;
+            }
+        }
+        return result;
+    }
+}
diff --git a/test/java/org/apache/fop/text/linebreak/LineBreakUtilsTest.java b/test/java/org/apache/fop/text/linebreak/LineBreakUtilsTest.java
new file mode 100644 (file)
index 0000000..22b8f73
--- /dev/null
@@ -0,0 +1,74 @@
+/* 
+ * 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.text.linebreak;
+
+import junit.framework.TestCase;
+
+/**
+ * TODO add javadoc
+ * 
+ *
+ */
+public class LineBreakUtilsTest extends TestCase {
+
+    /**
+     * @param name
+     */
+    public LineBreakUtilsTest(String name) {
+        super(name);
+    }
+
+    public void testLineBreakProperty() {
+        assertEquals(LineBreakUtils.getLineBreakProperty('A'), LineBreakUtils.LINE_BREAK_PROPERTY_AL);
+        assertEquals(LineBreakUtils.getLineBreakProperty('1'), LineBreakUtils.LINE_BREAK_PROPERTY_NU);
+        assertEquals(LineBreakUtils.getLineBreakProperty('\n'), LineBreakUtils.LINE_BREAK_PROPERTY_LF);
+        assertEquals(LineBreakUtils.getLineBreakProperty('\r'), LineBreakUtils.LINE_BREAK_PROPERTY_CR);
+        assertEquals(LineBreakUtils.getLineBreakProperty('('), LineBreakUtils.LINE_BREAK_PROPERTY_OP);
+    }
+
+    public void testLineBreakPair() {
+        assertEquals(
+            LineBreakUtils.getLineBreakPairProperty(
+                LineBreakUtils.LINE_BREAK_PROPERTY_CM,
+                LineBreakUtils.LINE_BREAK_PROPERTY_CL),
+            LineBreakUtils.PROHIBITED_BREAK);
+        assertEquals(
+            LineBreakUtils.getLineBreakPairProperty(
+                LineBreakUtils.LINE_BREAK_PROPERTY_CL,
+                LineBreakUtils.LINE_BREAK_PROPERTY_CM),
+            LineBreakUtils.COMBINING_INDIRECT_BREAK);
+        assertEquals(
+            LineBreakUtils.getLineBreakPairProperty(
+                LineBreakUtils.LINE_BREAK_PROPERTY_IS,
+                LineBreakUtils.LINE_BREAK_PROPERTY_PR),
+            LineBreakUtils.DIRECT_BREAK);
+        assertEquals(
+            LineBreakUtils.getLineBreakPairProperty(
+                LineBreakUtils.LINE_BREAK_PROPERTY_AL,
+                LineBreakUtils.LINE_BREAK_PROPERTY_OP),
+            LineBreakUtils.DIRECT_BREAK);
+        assertEquals(
+            LineBreakUtils.getLineBreakPairProperty(
+                LineBreakUtils.LINE_BREAK_PROPERTY_LF,
+                LineBreakUtils.LINE_BREAK_PROPERTY_CM),
+            0);
+    }
+
+}
diff --git a/test/layoutengine/standard-testcases/block_uax14_linebreaking.xml b/test/layoutengine/standard-testcases/block_uax14_linebreaking.xml
new file mode 100755 (executable)
index 0000000..973891f
--- /dev/null
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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$ -->
+<testcase>
+  <info>
+    <p>
+      This test checks some of the UAX#14 breaking rules.
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+      <fo:layout-master-set>
+        <fo:simple-page-master master-name="normal" page-width="2.5in" page-height="10in" margin="5pt">
+          <fo:region-body/>
+        </fo:simple-page-master>
+      </fo:layout-master-set>
+      <fo:page-sequence master-reference="normal" white-space-collapse="true">
+        <fo:flow flow-name="xsl-region-body" font-size="10pt">
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            BA -- Break Opportunity After (A)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            VeryLongWordWithAThinSpace&#x2009;PutInTheMiddleOfIt
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            BB -- Break Opportunity Before (B)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            VeryLongWordWithAnAcuteAccent&#x00B4;PutInTheMiddleOfIt
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            B2 -- Break Opportunity Before and After (B/A)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            &#x2014;Very&#x2014;Long&#x2014;Word&#x2014;With&#x2014;LotsOf&#x2014;Em&#x2014;Dashes&#x2014;Put&#x2014;InBetween&#x2014;And&#x2014;Around&#x2014;
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            B2 -- Break Opportunity Before and After (B/A) - as before but don't break between consecutive Em Dashes
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            AVeryLongWordWithSomeDouble&#x2014; &#x2014;Dashes&#x2014; &#x2014;Put&#x2014; &#x2014;In
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            AVeryLongWordWithSomeDouble&#x2014;&#x2014;Dashes&#x2014;&#x2014;Put&#x2014;&#x2014;In
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            CL -- Closing Punctuation (XB)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            Closing )brackets )even )if )preceeded )by )a )space )are )not )a )break )point
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            EX -- Exclamation / interrogation (XB)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            Question ?marks ?and exclamation !marks !even ?if !preceeded ?by !a ?space !are ?not !a ?break !point
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            HY -- Hyphen Minus (XA)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            Very-Long-Word-With-Lots-Of-Hyphens-Put-In-Between
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            Hyphens-in-numbers-do-not-123-567-890-break
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            ID -- Ideographic (B/A)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 0pt 0pt">
+            Need&#x3000;A&#x3000;Proper&#x3000;Test&#x3000;Case&#x3000;For&#x3000;This&#x3000;As&#x3000;Here&#x3000;Only&#x3000;The&#x3000;Ideographic&#x3000;Space&#x3000;Is&#x3000;Used
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            IN -- Inseperable characters (XP)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            There is never a break&#x2026;&#x2026;&#x2026;&#x2026;&#x2026;&#x2026;&#x2026;&#x2026;&#x2026;&#x2026;between characters of this class
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            IS -- Numeric Separator (Infix) (XB)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            Numbers containing separators 123,345,678.00 08:00:23.15 are not broken
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            OP -- Opening Punctuation (XA)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            Opening( brackets( even( if( followed( by( a( space( are( not( a( break( point
+          </fo:block>
+          <fo:block background-color="silver" font-size="8pt" margin="3pt 0pt 0pt 0pt">
+            SY -- Symbols Allowing Break After (A)
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            http://a/very/long/url/can/be/broken/after/the/solidus
+          </fo:block>
+          <fo:block background-color="yellow" margin="0pt 0pt 3pt 0pt">
+            No-break-point-in-normal-dates-12/12/2006-or-fractions-12345678/67890112
+          </fo:block>
+        </fo:flow>
+      </fo:page-sequence>
+    </fo:root>
+  </fo>
+  <checks>
+      <eval expected="2" xpath="count(//flow/block[2]/lineArea)"/>
+      <eval expected="141160" xpath="//flow/block[2]/lineArea[1]/text/@ipd"/>
+      <eval expected="88150" xpath="//flow/block[2]/lineArea[2]/text/@ipd"/>
+
+      <eval expected="2" xpath="count(//flow/block[4]/lineArea)"/>
+      <eval expected="155060" xpath="//flow/block[4]/lineArea[1]/text/@ipd"/>
+      <eval expected="89480" xpath="//flow/block[4]/lineArea[2]/text/@ipd"/>
+
+      <eval expected="3" xpath="count(//flow/block[6]/lineArea)"/>
+      <eval expected="166150" xpath="//flow/block[6]/lineArea[1]/text/@ipd"/>
+      <eval expected="161160" xpath="//flow/block[6]/lineArea[2]/text/@ipd"/>
+      <eval expected="70030" xpath="//flow/block[6]/lineArea[3]/text/@ipd"/>
+
+      <eval expected="2" xpath="count(//flow/block[8]/lineArea)"/>
+      <eval expected="151160" xpath="//flow/block[8]/lineArea[1]/text/@ipd"/>
+      <eval expected="125590" xpath="//flow/block[8]/lineArea[2]/text/@ipd"/>
+
+      <eval expected="2" xpath="count(//flow/block[9]/lineArea)"/>
+      <eval expected="151160" xpath="//flow/block[9]/lineArea[1]/text/@ipd"/>
+      <eval expected="117250" xpath="//flow/block[9]/lineArea[2]/text/@ipd"/>
+
+      <eval expected="3" xpath="count(//flow/block[11]/lineArea)"/>
+      <eval expected="122250" xpath="//flow/block[11]/lineArea[1]/text/@ipd"/>
+      <eval expected="166730" xpath="//flow/block[11]/lineArea[2]/text/@ipd"/>
+      <eval expected="52800" xpath="//flow/block[11]/lineArea[3]/text/@ipd"/>
+
+      <eval expected="3" xpath="count(//flow/block[13]/lineArea)"/>
+      <eval expected="162290" xpath="//flow/block[13]/lineArea[1]/text/@ipd"/>
+      <eval expected="158970" xpath="//flow/block[13]/lineArea[2]/text/@ipd"/>
+      <eval expected="140640" xpath="//flow/block[13]/lineArea[3]/text/@ipd"/>
+
+      <eval expected="2" xpath="count(//flow/block[15]/lineArea)"/>
+      <eval expected="136130" xpath="//flow/block[15]/lineArea[1]/text/@ipd"/>
+      <eval expected="111710" xpath="//flow/block[15]/lineArea[2]/text/@ipd"/>
+
+      <eval expected="2" xpath="count(//flow/block[16]/lineArea)"/>
+      <eval expected="110580" xpath="//flow/block[16]/lineArea[1]/text/@ipd"/>
+      <eval expected="102270" xpath="//flow/block[16]/lineArea[2]/text/@ipd"/>
+
+      <eval expected="3" xpath="count(//flow/block[18]/lineArea)"/>
+      <eval expected="125610" xpath="//flow/block[18]/lineArea[1]/text/@ipd"/>
+      <eval expected="138380" xpath="//flow/block[18]/lineArea[2]/text/@ipd"/>
+      <eval expected="133960" xpath="//flow/block[18]/lineArea[3]/text/@ipd"/>
+
+      <eval expected="3" xpath="count(//flow/block[20]/lineArea)"/>
+      <eval expected="72250" xpath="//flow/block[20]/lineArea[1]/text/@ipd"/>
+      <eval expected="162810" xpath="//flow/block[20]/lineArea[2]/text/@ipd"/>
+      <eval expected="101700" xpath="//flow/block[20]/lineArea[3]/text/@ipd"/>
+
+      <eval expected="3" xpath="count(//flow/block[22]/lineArea)"/>
+      <eval expected="138940" xpath="//flow/block[22]/lineArea[1]/text/@ipd"/>
+      <eval expected="159010" xpath="//flow/block[22]/lineArea[2]/text/@ipd"/>
+      <eval expected="30570" xpath="//flow/block[22]/lineArea[3]/text/@ipd"/>
+
+      <eval expected="3" xpath="count(//flow/block[24]/lineArea)"/>
+      <eval expected="163390" xpath="//flow/block[24]/lineArea[1]/text/@ipd"/>
+      <eval expected="144490" xpath="//flow/block[24]/lineArea[2]/text/@ipd"/>
+      <eval expected="27790" xpath="//flow/block[24]/lineArea[3]/text/@ipd"/>
+
+      <eval expected="2" xpath="count(//flow/block[26]/lineArea)"/>
+      <eval expected="156750" xpath="//flow/block[26]/lineArea[1]/text/@ipd"/>
+      <eval expected="70590" xpath="//flow/block[26]/lineArea[2]/text/@ipd"/>
+
+      <eval expected="3" xpath="count(//flow/block[27]/lineArea)"/>
+      <eval expected="114460" xpath="//flow/block[27]/lineArea[1]/text/@ipd"/>
+      <eval expected="93380" xpath="//flow/block[27]/lineArea[2]/text/@ipd"/>
+      <eval expected="132860" xpath="//flow/block[27]/lineArea[3]/text/@ipd"/>
+  </checks>
+</testcase>
index 67285e8fdeda22bd06b5708ac9612a52c96e7af2..f615e62eee1683d829074fdb91c2f429d847cc8b 100644 (file)
     </fo:root>
   </fo>
   <checks>
-    <element-list category="line" id="l-sp">
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="3336" y="-10008" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- second space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="3336" y="-10008" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- third space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="3336" y="-10008" z="0"/>
-      
-      <box w="6672"/>
-
-      <skip>12</skip>
-    </element-list>
     <eval expected="62040" xpath="//block[@prod-id='l-sp']/lineArea/text/@ipd"/>
     <eval expected="word" xpath="local-name(//block[@prod-id='l-sp']/lineArea/text/*[1])"/>
     <eval expected="space" xpath="local-name(//block[@prod-id='l-sp']/lineArea/text/*[2])"/>
     <true xpath="not(//block[@prod-id='l-sp']/lineArea/text/*[2]/@adj = 'false')"/>
     <true xpath="not(//block[@prod-id='l-sp']/lineArea/text/*[6]/@adj = 'false')"/>
 
-    <element-list category="line" id="l-thin-space">
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="2400" y="-10008" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- second space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="3336" y="-10008" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- third space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="2400" y="-10008" z="0"/>
-      
-      <box w="6672"/>
-
-      <skip>16</skip>
-    </element-list>
     <eval expected="60168" xpath="//block[@prod-id='l-thin-space']/lineArea/text/@ipd"/>
     <eval expected="word" xpath="local-name(//block[@prod-id='l-thin-space']/lineArea/text/*[1])"/>
     <eval expected="space" xpath="local-name(//block[@prod-id='l-thin-space']/lineArea/text/*[2])"/>
     <true xpath="//block[@prod-id='l-thin-space']/lineArea/text/*[2]/@adj = 'false'"/>
     <true xpath="//block[@prod-id='l-thin-space']/lineArea/text/*[6]/@adj = 'false'"/>
 
-    <element-list category="line" id="l-hair-space">
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="1200" y="-10008" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- second space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="3336" y="-10008" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- third space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="1200" y="-10008" z="0"/>
-      
-      <box w="6672"/>
-
-      <skip>16</skip>
-    </element-list>
     <eval expected="57768" xpath="//block[@prod-id='l-hair-space']/lineArea/text/@ipd"/>
     <true xpath="//block[@prod-id='l-hair-space']/lineArea/text/*[2]/@adj = 'false'"/>
     <true xpath="//block[@prod-id='l-hair-space']/lineArea/text/*[6]/@adj = 'false'"/>
 
-    <element-list category="line" id="l-zwsp">
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="0" y="-10008" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- second space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="3336" y="-10008" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- third space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="0" y="-10008" z="0"/>
-      
-      <box w="6672"/>
-
-      <skip>20</skip>
-    </element-list>
     <eval expected="55368" xpath="//block[@prod-id='l-zwsp']/lineArea/text/@ipd"/>
     <true xpath="//block[@prod-id='l-zwsp']/lineArea/text/*[2]/@adj = 'false'"/>
     <true xpath="//block[@prod-id='l-zwsp']/lineArea/text/*[6]/@adj = 'false'"/>
 
-    <element-list category="line" id="l-nosp">
-      <box w="26016"/>
-      
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="3336" y="-10008" z="0"/>
-      
-      <box w="26016"/>
-
-      <skip>12</skip>
-    </element-list>
     <eval expected="55368" xpath="//block[@prod-id='l-nosp']/lineArea/text/@ipd"/>
 
-    <element-list category="line" id="c-thin-space">
-      <glue w="0" y="10008" z="0"/>
-
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="2400" y="-20016" z="0"/>
-      <box w="0"/>
-      <penalty w="0" p="INF"/>
-      <glue w="0" y="10008" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- second space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="3336" y="-20016" z="0"/>
-      <box w="0"/>
-      <penalty w="0" p="INF"/>
-      <glue w="0" y="10008" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- third space -->
-      <glue w="0" y="10008" z="0"/>
-      <penalty w="0" p="0"/>
-      <glue w="2400" y="-20016" z="0"/>
-      <box w="0"/>
-      <penalty w="0" p="INF"/>
-      <glue w="0" y="10008" z="0"/>
-      
-      <box w="6672"/>
-
-      <skip>24</skip>
-    </element-list>
     <eval expected="60168" xpath="//block[@prod-id='c-thin-space']/lineArea/text/@ipd"/>
     <eval expected="word" xpath="local-name(//block[@prod-id='c-thin-space']/lineArea/text/*[1])"/>
     <eval expected="space" xpath="local-name(//block[@prod-id='c-thin-space']/lineArea/text/*[2])"/>
     <true xpath="//block[@prod-id='c-thin-space']/lineArea/text/*[2]/@adj = 'false'"/>
     <true xpath="//block[@prod-id='c-thin-space']/lineArea/text/*[6]/@adj = 'false'"/>
 
-    <element-list category="line" id="j-sp">
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="3336" y="1668" z="1112"/>
-      
-      <box w="19344"/>
-      
-      <!-- second space -->
-      <glue w="3336" y="1668" z="1112"/>
-      
-      <box w="19344"/>
-      
-      <!-- third space -->
-      <glue w="3336" y="1668" z="1112"/>
-      
-      <box w="6672"/>
-
-      <skip>6</skip>
-    </element-list>
     <eval expected="190804" xpath="//block[@prod-id='j-sp']/lineArea/text/@ipd"/>
     <eval expected="42921" xpath="//block[@prod-id='j-sp']/lineArea/text/@twsadjust"/>
 
-    <element-list category="line" id="j-thin-space">
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="2400" y="0" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- second space -->
-      <glue w="3336" y="1668" z="1112"/>
-      
-      <box w="19344"/>
-      
-      <!-- third space -->
-      <glue w="2400" y="0" z="0"/>
-      
-      <box w="6672"/>
-
-      <skip>8</skip>
-    </element-list>
     <eval expected="104277" xpath="//block[@prod-id='j-thin-space']/lineArea/text/@ipd"/>
     <eval expected="44109" xpath="//block[@prod-id='j-thin-space']/lineArea/text/@twsadjust"/>
     <true xpath="//block[@prod-id='j-thin-space']/lineArea/text/*[2]/@adj = 'false'"/>
     <true xpath="//block[@prod-id='j-thin-space']/lineArea/text/*[6]/@adj = 'false'"/>
 
-    <element-list category="line" id="j-zwsp">
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="0" y="0" z="0"/>
-      
-      <box w="19344"/>
-      
-      <!-- second space -->
-      <glue w="3336" y="1668" z="1112"/>
-      
-      <box w="19344"/>
-      
-      <!-- third space -->
-      <glue w="0" y="0" z="0"/>
-      
-      <box w="6672"/>
-
-      <skip>10</skip>
-    </element-list>
     <eval expected="84280" xpath="//block[@prod-id='j-zwsp']/lineArea/text/@ipd"/>
     <eval expected="28912" xpath="//block[@prod-id='j-zwsp']/lineArea/text/@twsadjust"/>
     <true xpath="//block[@prod-id='j-zwsp']/lineArea/text/*[2]/@adj = 'false'"/>
     <true xpath="//block[@prod-id='j-zwsp']/lineArea/text/*[6]/@adj = 'false'"/>
 
-    <element-list category="line" id="lsj-sp">
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="7336" y="1668" z="1112"/>
-      
-      <box w="25344"/>
-      
-      <!-- second space -->
-      <glue w="7336" y="1668" z="1112"/>
-      
-      <box w="25344"/>
-      
-      <!-- third space -->
-      <glue w="7336" y="1668" z="1112"/>
-      
-      <box w="6672"/>
-
-      <skip>6</skip>
-    </element-list>
     <eval expected="182404" xpath="//block[@prod-id='lsj-sp']/lineArea/text/@ipd"/>
     <eval expected="32121" xpath="//block[@prod-id='lsj-sp']/lineArea/text/@twsadjust"/>
     <eval expected="2000" xpath="//block[@prod-id='lsj-sp']/lineArea/text/@tlsadjust"/>
 
-    <element-list category="line" id="lsj-thin-space">
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="2400" y="0" z="0"/>
-      
-      <box w="25344"/>
-      
-      <!-- second space -->
-      <glue w="7336" y="1668" z="1112"/>
-      
-      <box w="25344"/>
-      
-      <!-- third space -->
-      <glue w="2400" y="0" z="0"/>
-      
-      <box w="6672"/>
-
-      <skip>8</skip>
-    </element-list>
     <eval expected="104777" xpath="//block[@prod-id='lsj-thin-space']/lineArea/text/@ipd"/>
     <eval expected="28609" xpath="//block[@prod-id='lsj-thin-space']/lineArea/text/@twsadjust"/>
     <eval expected="2000" xpath="//block[@prod-id='lsj-thin-space']/lineArea/text/@tlsadjust"/>
     <true xpath="//block[@prod-id='lsj-thin-space']/lineArea/text/*[2]/@adj = 'false'"/>
     <true xpath="//block[@prod-id='lsj-thin-space']/lineArea/text/*[6]/@adj = 'false'"/>
 
-    <element-list category="line" id="lsj-zwsp">
-      <box w="6672"/>
-
-      <!-- first space -->
-      <glue w="0" y="0" z="0"/>
-      
-      <box w="25344"/>
-      
-      <!-- second space -->
-      <glue w="7336" y="1668" z="1112"/>
-      
-      <box w="25344"/>
-      
-      <!-- third space -->
-      <glue w="0" y="0" z="0"/>
-      
-      <box w="6672"/>
-
-      <skip>10</skip>
-    </element-list>
     <eval expected="85480" xpath="//block[@prod-id='lsj-zwsp']/lineArea/text/@ipd"/>
     <eval expected="14112" xpath="//block[@prod-id='lsj-zwsp']/lineArea/text/@twsadjust"/>
     <eval expected="2000" xpath="//block[@prod-id='lsj-zwsp']/lineArea/text/@tlsadjust"/>
index 0b03fba30a60fc86ed03c27998caa1515363ec25..fd706d2f0cd4d5455c4d34c2653dd9f12717f530 100644 (file)
     <eval expected="3000" xpath="//flow/block[4]/lineArea[3]/inlineparent/@padding-end"/>\r
     <eval expected="5000" xpath="//flow/block[4]/lineArea[3]/inlineparent/@padding-start"/>\r
 \r
-    <eval expected="183960" xpath="//flow/block[5]/lineArea[1]/inlineparent/@ipd"/>\r
-    <eval expected="193960" xpath="//flow/block[5]/lineArea[1]/inlineparent/@ipda"/>\r
+    <eval expected="149500" xpath="//flow/block[5]/lineArea[1]/inlineparent/@ipd"/>\r
+    <eval expected="159500" xpath="//flow/block[5]/lineArea[1]/inlineparent/@ipda"/>\r
     <eval expected="0" xpath="//flow/block[5]/lineArea[1]/inlineparent/@offset"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[1]/inlineparent/@border-after"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[1]/inlineparent/@border-before"/>\r
     <eval expected="1000" xpath="//flow/block[5]/lineArea[1]/inlineparent/@padding-before"/>\r
     <eval expected="3000" xpath="//flow/block[5]/lineArea[1]/inlineparent/@padding-end"/>\r
     <eval expected="5000" xpath="//flow/block[5]/lineArea[1]/inlineparent/@padding-start"/>\r
-    <eval expected="255680" xpath="//flow/block[5]/lineArea[2]/inlineparent/@ipd"/>\r
-    <eval expected="265680" xpath="//flow/block[5]/lineArea[2]/inlineparent/@ipda"/>\r
+    <eval expected="237340" xpath="//flow/block[5]/lineArea[2]/inlineparent/@ipd"/>\r
+    <eval expected="247340" xpath="//flow/block[5]/lineArea[2]/inlineparent/@ipda"/>\r
     <eval expected="0" xpath="//flow/block[5]/lineArea[2]/inlineparent/@offset"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[2]/inlineparent/@border-after"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[2]/inlineparent/@border-before"/>\r
     <eval expected="1000" xpath="//flow/block[5]/lineArea[2]/inlineparent/@padding-before"/>\r
     <eval expected="3000" xpath="//flow/block[5]/lineArea[2]/inlineparent/@padding-end"/>\r
     <eval expected="5000" xpath="//flow/block[5]/lineArea[2]/inlineparent/@padding-start"/>\r
-    <eval expected="186750" xpath="//flow/block[5]/lineArea[3]/inlineparent/@ipd"/>\r
-    <eval expected="196750" xpath="//flow/block[5]/lineArea[3]/inlineparent/@ipda"/>\r
+    <eval expected="239550" xpath="//flow/block[5]/lineArea[3]/inlineparent/@ipd"/>\r
+    <eval expected="249550" xpath="//flow/block[5]/lineArea[3]/inlineparent/@ipda"/>\r
     <eval expected="0" xpath="//flow/block[5]/lineArea[3]/inlineparent/@offset"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[3]/inlineparent/@border-after"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[5]/lineArea[3]/inlineparent/@border-before"/>\r
     <eval expected="3000" xpath="//flow/block[5]/lineArea[3]/inlineparent/@padding-end"/>\r
     <eval expected="5000" xpath="//flow/block[5]/lineArea[3]/inlineparent/@padding-start"/>\r
 \r
-    <eval expected="172840" xpath="//flow/block[6]/lineArea[1]/inlineparent/@ipd"/>\r
-    <eval expected="178840" xpath="//flow/block[6]/lineArea[1]/inlineparent/@ipda"/>\r
+    <eval expected="149500" xpath="//flow/block[6]/lineArea[1]/inlineparent/@ipd"/>\r
+    <eval expected="155500" xpath="//flow/block[6]/lineArea[1]/inlineparent/@ipda"/>\r
     <eval expected="0" xpath="//flow/block[6]/lineArea[1]/inlineparent/@offset"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[6]/lineArea[1]/inlineparent/@border-after"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[6]/lineArea[1]/inlineparent/@border-before"/>\r
     <eval expected="1000" xpath="//flow/block[6]/lineArea[1]/inlineparent/@padding-after"/>\r
     <eval expected="1000" xpath="//flow/block[6]/lineArea[1]/inlineparent/@padding-before"/>\r
     <eval expected="5000" xpath="//flow/block[6]/lineArea[1]/inlineparent/@padding-start"/>\r
-    <eval expected="266800" xpath="//flow/block[6]/lineArea[2]/inlineparent/@ipd"/>\r
-    <eval expected="266800" xpath="//flow/block[6]/lineArea[2]/inlineparent/@ipda"/>\r
+    <eval expected="237340" xpath="//flow/block[6]/lineArea[2]/inlineparent/@ipd"/>\r
+    <eval expected="237340" xpath="//flow/block[6]/lineArea[2]/inlineparent/@ipda"/>\r
     <eval expected="0" xpath="//flow/block[6]/lineArea[2]/inlineparent/@offset"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[6]/lineArea[2]/inlineparent/@border-after"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[6]/lineArea[2]/inlineparent/@border-before"/>\r
     <eval expected="1000" xpath="//flow/block[6]/lineArea[2]/inlineparent/@padding-after"/>\r
     <eval expected="1000" xpath="//flow/block[6]/lineArea[2]/inlineparent/@padding-before"/>\r
-    <eval expected="186750" xpath="//flow/block[6]/lineArea[3]/inlineparent/@ipd"/>\r
-    <eval expected="190750" xpath="//flow/block[6]/lineArea[3]/inlineparent/@ipda"/>\r
+    <eval expected="239550" xpath="//flow/block[6]/lineArea[3]/inlineparent/@ipd"/>\r
+    <eval expected="243550" xpath="//flow/block[6]/lineArea[3]/inlineparent/@ipda"/>\r
     <eval expected="0" xpath="//flow/block[6]/lineArea[3]/inlineparent/@offset"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[6]/lineArea[3]/inlineparent/@border-after"/>\r
     <eval expected="(solid,#ff0000,1000)" xpath="//flow/block[6]/lineArea[3]/inlineparent/@border-before"/>\r