aboutsummaryrefslogtreecommitdiffstats
path: root/src/codegen/fonts
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen/fonts')
-rw-r--r--src/codegen/fonts/Courier.xml294
-rw-r--r--src/codegen/fonts/CourierBold.xml294
-rw-r--r--src/codegen/fonts/CourierBoldOblique.xml294
-rw-r--r--src/codegen/fonts/CourierOblique.xml294
-rw-r--r--src/codegen/fonts/Helvetica.xml603
-rw-r--r--src/codegen/fonts/HelveticaBold.xml561
-rw-r--r--src/codegen/fonts/HelveticaBoldOblique.xml561
-rw-r--r--src/codegen/fonts/HelveticaOblique.xml603
-rw-r--r--src/codegen/fonts/Symbol.xml220
-rw-r--r--src/codegen/fonts/TimesBold.xml642
-rw-r--r--src/codegen/fonts/TimesBoldItalic.xml642
-rw-r--r--src/codegen/fonts/TimesItalic.xml642
-rw-r--r--src/codegen/fonts/TimesRoman.xml642
-rw-r--r--src/codegen/fonts/ZapfDingbats.xml232
-rw-r--r--src/codegen/fonts/charlist.xml633
-rw-r--r--src/codegen/fonts/code-point-mapping.xsl120
-rw-r--r--src/codegen/fonts/encodings.xml1650
-rw-r--r--src/codegen/fonts/font-file.xsl183
-rw-r--r--src/codegen/fonts/glyphlist.xml1293
-rw-r--r--src/codegen/fonts/t1font-file.xsl225
-rw-r--r--src/codegen/fonts/ttffontfile.xsl217
21 files changed, 10845 insertions, 0 deletions
diff --git a/src/codegen/fonts/Courier.xml b/src/codegen/fonts/Courier.xml
new file mode 100644
index 000000000..89c7314db
--- /dev/null
+++ b/src/codegen/fonts/Courier.xml
@@ -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
index 000000000..92a777a50
--- /dev/null
+++ b/src/codegen/fonts/CourierBold.xml
@@ -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
index 000000000..914fdab84
--- /dev/null
+++ b/src/codegen/fonts/CourierBoldOblique.xml
@@ -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
index 000000000..3b043c17c
--- /dev/null
+++ b/src/codegen/fonts/CourierOblique.xml
@@ -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
index 000000000..d63eb5a11
--- /dev/null
+++ b/src/codegen/fonts/Helvetica.xml
@@ -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
index 000000000..c417937b4
--- /dev/null
+++ b/src/codegen/fonts/HelveticaBold.xml
@@ -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
index 000000000..087b225e4
--- /dev/null
+++ b/src/codegen/fonts/HelveticaBoldOblique.xml
@@ -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
index 000000000..d913b6d51
--- /dev/null
+++ b/src/codegen/fonts/HelveticaOblique.xml
@@ -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
index 000000000..241d4d2c6
--- /dev/null
+++ b/src/codegen/fonts/Symbol.xml
@@ -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
index 000000000..12bb17580
--- /dev/null
+++ b/src/codegen/fonts/TimesBold.xml
@@ -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
index 000000000..540e891e1
--- /dev/null
+++ b/src/codegen/fonts/TimesBoldItalic.xml
@@ -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
index 000000000..4868aed05
--- /dev/null
+++ b/src/codegen/fonts/TimesItalic.xml
@@ -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
index 000000000..1f21290de
--- /dev/null
+++ b/src/codegen/fonts/TimesRoman.xml
@@ -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
index 000000000..0420908a0
--- /dev/null
+++ b/src/codegen/fonts/ZapfDingbats.xml
@@ -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
index 000000000..110714af6
--- /dev/null
+++ b/src/codegen/fonts/charlist.xml
@@ -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
index 000000000..7d0d6cd71
--- /dev/null
+++ b/src/codegen/fonts/code-point-mapping.xsl
@@ -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
index 000000000..85aabb21f
--- /dev/null
+++ b/src/codegen/fonts/encodings.xml
@@ -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
index 000000000..72ee81a68
--- /dev/null
+++ b/src/codegen/fonts/font-file.xsl
@@ -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
index 000000000..aeb56e2b6
--- /dev/null
+++ b/src/codegen/fonts/glyphlist.xml
@@ -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
index 000000000..f5c285097
--- /dev/null
+++ b/src/codegen/fonts/t1font-file.xsl
@@ -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
index 000000000..7231010bf
--- /dev/null
+++ b/src/codegen/fonts/ttffontfile.xsl
@@ -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>
+
+