]> granicus.if.org Git - docbook-dsssl/commitdiff
More charmap reorganization.
authorMichael Smith <xmldoc@users.sourceforge.net>
Tue, 14 Jun 2005 09:17:23 +0000 (09:17 +0000)
committerMichael Smith <xmldoc@users.sourceforge.net>
Tue, 14 Jun 2005 09:17:23 +0000 (09:17 +0000)
  - Removed unicodetrans.xsl file (function moved to lib/lib.xsl).

  - Removed charmap.groff.xml & charmap.roff.min.xml and created a
    single charmap.groff.xsl file that incorporates both (using a
    class="default" attribute/value to mark those mappings that
    are in the default/minimal set).

  - Made charmap.groff.xsl into a "real" (valid) XSLT 2.0 character
    map so it can be used as-is for XSLT 2.0-aware processing (e.g.,
    it can imported or included into another XSLT 2.0 stylesheet).

xsl/manpages/charmap.groff.xml [deleted file]
xsl/manpages/charmap.groff.xsl [new file with mode: 0644]
xsl/manpages/charmap.roff.min.xml [deleted file]
xsl/manpages/unicodetrans.xsl [deleted file]

diff --git a/xsl/manpages/charmap.groff.xml b/xsl/manpages/charmap.groff.xml
deleted file mode 100755 (executable)
index 71a4ac9..0000000
+++ /dev/null
@@ -1,5029 +0,0 @@
-<?xml version="1.0" encoding="US-ASCII"?>
-<xsl:character-map xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                  xmlns:unichar="http://docbook.sourceforge.net/xmlns/unichar/1.0">
-
-<!-- ********************************************************************
-     $Id$
-     ********************************************************************
-
-     This file is part of the XSL DocBook Stylesheet distribution.
-     See ../README or http://docbook.sf.net/release/xsl/current/ for
-     copyright and other information.
-
-     ******************************************************************** -->
-
-<!-- * *************************************************************** -->
-<!-- *    Commentary -->
-<!-- * *************************************************************** -->
-<!-- * -->
-<!-- * This file maps a selected subset of Unicode symbols and special -->
-<!-- * characters (around 800 or so) to corresponding groff escape -->
-<!-- * sequences. Use it when you need to convert Unicode (UTF-8 or -->
-<!-- * UTF-16) encoded XML content to groff output for an environment -->
-<!-- * that uses a good, modern groff instead of nroff (for example, a -->
-<!-- * GNU/Linux system, FreeBSD system, or Cygwin environment). -->
-<!-- * -->
-<!-- * If, on the other hand, you aren't sure what OSes or -->
-<!-- * environments your man-page output might end up being viewed on, -->
-<!-- * and not sure what version of nroff/groff those environments -->
-<!-- * might have, you should probably instead use the accompanying -->
-<!-- * charmap.roff.min.xml file; it has a much smaller and "safer" -->
-<!-- * set of mappings (only about 40 characters). -->
-<!-- * -->
-<!-- * Although the format of this file follows the "character map" -->
-<!-- * format specified in the XSLT 2.0 working draft[1], the file can -->
-<!-- * also be used with an appropriate XSLT 1.0 stylesheet and any -->
-<!-- * XSLT 1.0 processor. -->
-<!-- * -->
-<!-- *   [1] http://www.w3.org/TR/xslt20/#character-maps -->
-<!-- * -->
-<!-- * In order to make the character map more readable, it uses the -->
-<!-- * following "extension attributes" (in the "unichar" namespace): -->
-<!-- * -->
-<!-- * - unichar:name = ISO character name (e.g., "YEN SIGN") -->
-<!-- * - unichar:entity = ISO entity name (e.g., "yen") -->
-<!-- * -->
-<!-- * Use of such extension attributes is permitted by the XSLT 2.0 -->
-<!-- * spec; see the "Extension Attributes" section[2]. -->
-<!-- * -->
-<!-- *   [2] http://www.w3.org/TR/xslt20/#extension-attributes -->
-<!-- * -->
-<!-- * The initial version of this file (before the "string" mappings -->
-<!-- * were added) was generated by taking the "unichars.el" file from -->
-<!-- * Norm Walsh's "xmlunicode.el"[3] elisp distro, and running a -->
-<!-- * script on it to convert it to XML. -->
-<!-- * -->
-<!-- * Note: In place of the literal backlash "\" character used in roff -->
-<!-- * to indicate the start of an escape sequence, this file uses -->
-<!-- * "@esc@". So an additional string-substition step needs to be done -->
-<!-- * on any output generated using the data from this file, before -->
-<!-- * final roff output, to replace the "@esc@" instances with the -->
-<!-- * literal backslash characters that roff expects. -->
-
-<!-- * *************************************************************** -->
-<!-- *    Acknowledgements -->
-<!-- * *************************************************************** -->
-<!-- * References used in selecting roff mappings: -->
-<!-- * -->
-<!-- *   - groff_char(7) man page[3] -->
-<!-- *   - groff info file[4]; in particular, the "Page Motions" node[5] -->
-<!-- *   - tables in "Character Sets" chapter of "XML In a Nutshell"[6] -->
-<!-- * -->
-<!-- *   [3] http://www.linux.se/showMan.php?TITLE=groff_char&SECTION=7 -->
-<!-- *   [4] http://www.fifi.org/cgi-bin/info2www?(groff) -->
-<!-- *   [5] http://www.fifi.org/cgi-bin/info2www?(groff)Page+Motions -->
-<!-- *   [6] http://www.ibiblio.org/xml/books/xian2/ -->
-<!-- * -->
-<!-- * The idea for doing this in XML/XSLT came from working with -->
-<!-- * Steve Cheng's docbook2x package[7] - in particular, the -->
-<!-- * "utf8trans" utility and character-map system in that package. -->
-<!-- * -->
-<!-- *   [7] http://docbook2x.sourceforge.net/ -->
-<!-- * -->
-<!-- * ################################################################# -->
-
-<!-- * ***************************************************************** -->
-<!-- * Begin: Latin-1/ISO-8859-1 -->
-<!-- * x00a0 to x00ff -->
-<!-- * ***************************************************************** -->
-
-<!-- * A no-break space can be written two ways in roff; the difference, -->
-<!-- * according to the "Page Motions" node in the groff info page, is: -->
-<!-- * -->
-<!-- *   "\ " = -->
-<!-- *   An unbreakable and unpaddable (i.e. not expanded during filling) -->
-<!-- *   space. -->
-<!-- * -->
-<!-- *   "\~" = -->
-<!-- *   An unbreakable space that stretches like a normal -->
-<!-- *   inter-word space when a line is adjusted."  -->
-<!-- * -->
-<!-- * Unfortunately, roff seems to do some weird things with long -->
-<!-- * lines that only have words separated by "\~" spaces, so it's -->
-<!-- * safer just to stick with the "\ " space -->
-  <xsl:output-character
-   char="&#x00a0;"
-   unichar:name="NO-BREAK SPACE"
-   unichar:entity="nbsp"
-   string="@esc@ "
-   />
-  <xsl:output-character
-   char="&#x00a1;"
-   unichar:name="INVERTED EXCLAMATION MARK"
-   unichar:entity="iexcl"
-   string="@esc@(r!"
-   />
-  <xsl:output-character
-   char="&#x00a2;"
-   unichar:name="CENT SIGN"
-   unichar:entity="cent"
-   string="@esc@(ct"
-   />
-  <xsl:output-character
-   char="&#x00a3;"
-   unichar:name="POUND SIGN"
-   unichar:entity="pound"
-   string="@esc@(Po"
-   />
-  <xsl:output-character
-   char="&#x00a4;"
-   unichar:name="CURRENCY SIGN"
-   unichar:entity="curren"
-   string="@esc@(Cs"
-   />
-  <xsl:output-character
-   char="&#x00a5;"
-   unichar:name="YEN SIGN"
-   unichar:entity="yen"
-   string="@esc@(Ye"
-   />
-  <xsl:output-character
-   char="&#x00a6;"
-   unichar:name="BROKEN BAR"
-   unichar:entity="brvbar"
-   string="@esc@(bb"
-   />
-  <xsl:output-character
-   char="&#x00a7;"
-   unichar:name="SECTION SIGN"
-   unichar:entity="sect"
-   string="@esc@(sc"
-   />
-  <xsl:output-character
-   char="&#x00a8;"
-   unichar:name="DIAERESIS"
-   unichar:entity="Dot"
-   string="@esc@(ad"
-   />
-  <xsl:output-character
-   char="&#x00a9;"
-   unichar:name="COPYRIGHT SIGN"
-   unichar:entity="copy"
-   string="@esc@(co"
-   />
-  <xsl:output-character
-   char="&#x00aa;"
-   unichar:name="FEMININE ORDINAL INDICATOR"
-   unichar:entity="ordf"
-   string="@esc@(Of"
-   />
-  <xsl:output-character
-   char="&#x00ab;"
-   unichar:name="LEFT-POINTING DOUBLE ANGLE QUOTATION MARK"
-   unichar:entity="laquo"
-   string="@esc@(Fo"
-   />
-  <xsl:output-character
-   char="&#x00ac;"
-   unichar:name="NOT SIGN"
-   unichar:entity="not"
-   string="@esc@(no"
-   />
-  <!-- * groff_char(7) man page says: "the soft hyphen control character -->
-  <!-- * (prints as itself).  groff never use this character for output -->
-  <!-- * (thus it is omitted in the table below); the input character 173 -->
-  <!-- * is onto \%." -->
-  <xsl:output-character
-   char="&#x00ad;"
-   unichar:name="SOFT HYPHEN"
-   unichar:entity="shy"
-   string="@esc@%"
-   />
-  <xsl:output-character
-   char="&#x00ae;"
-   unichar:name="REGISTERED SIGN"
-   unichar:entity="reg"
-   string="@esc@(rg"
-   />
-  <xsl:output-character
-   char="&#x00af;"
-   unichar:name="MACRON"
-   unichar:entity="macr"
-   string="@esc@(a-"
-   />
-  <xsl:output-character
-   char="&#x00b0;"
-   unichar:name="DEGREE SIGN"
-   unichar:entity="deg"
-   string="@esc@(de"
-   />
-  <xsl:output-character
-   char="&#x00b1;"
-   unichar:name="PLUS-MINUS SIGN"
-   unichar:entity="plusmn"
-   string="@esc@(+-"
-   />
-  <xsl:output-character
-   char="&#x00b2;"
-   unichar:name="SUPERSCRIPT TWO"
-   unichar:entity="sup2"
-   string="@esc@(S2"
-   />
-  <xsl:output-character
-   char="&#x00b3;"
-   unichar:name="SUPERSCRIPT THREE"
-   unichar:entity="sup3"
-   string="@esc@(S3"
-   />
-  <xsl:output-character
-   char="&#x00b4;"
-   unichar:name="ACUTE ACCENT"
-   unichar:entity="acute"
-   string="@esc@(aa"
-   />
-  <xsl:output-character
-   char="&#x00b5;"
-   unichar:name="MICRO SIGN"
-   unichar:entity="micro"
-   string="@esc@(mc"
-   />
-  <xsl:output-character
-   char="&#x00b6;"
-   unichar:name="PILCROW SIGN"
-   unichar:entity="para"
-   string="@esc@(ps"
-   />
-  <!-- * according to groff_char(7), I think the escape string \(pc -->
-  <!-- * "periodcentered" could also be used for middot; not sure which -->
-  <!-- * is better, but "md" mnemonic is a better fit :-) -->
-  <xsl:output-character
-   char="&#x00b7;"
-   unichar:name="MIDDLE DOT"
-   unichar:entity="middot"
-   string="@esc@(md"
-   />
-  <xsl:output-character
-   char="&#x00b8;"
-   unichar:name="CEDILLA"
-   unichar:entity="cedil"
-   string="@esc@(ac"
-   />
-  <xsl:output-character
-   char="&#x00b9;"
-   unichar:name="SUPERSCRIPT ONE"
-   unichar:entity="sup1"
-   string="@esc@(S1"
-   />
-  <xsl:output-character
-   char="&#x00ba;"
-   unichar:name="MASCULINE ORDINAL INDICATOR"
-   unichar:entity="ordm"
-   string="@esc@(Om"
-   />
-  <xsl:output-character
-   char="&#x00bb;"
-   unichar:name="RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK"
-   unichar:entity="raquo"
-   string="@esc@(Fc"
-   />
-  <xsl:output-character
-   char="&#x00bc;"
-   unichar:name="VULGAR FRACTION ONE QUARTER"
-   unichar:entity="frac14"
-   string="@esc@(14"
-   />
-  <xsl:output-character
-   char="&#x00bd;"
-   unichar:name="VULGAR FRACTION ONE HALF"
-   unichar:entity="frac12"
-   string="@esc@(12"
-   />
-  <xsl:output-character
-   char="&#x00be;"
-   unichar:name="VULGAR FRACTION THREE QUARTERS"
-   unichar:entity="frac34"
-   string="@esc@(34"
-   />
-  <xsl:output-character
-   char="&#x00bf;"
-   unichar:name="INVERTED QUESTION MARK"
-   unichar:entity="iquest"
-   string="@esc@(r?"
-   />
-  <xsl:output-character
-   char="&#x00c0;"
-   unichar:name="LATIN CAPITAL LETTER A WITH GRAVE"
-   unichar:entity="Agrave"
-   string="@esc@(`A"
-   />
-  <xsl:output-character
-   char="&#x00c1;"
-   unichar:name="LATIN CAPITAL LETTER A WITH ACUTE"
-   unichar:entity="Aacute"
-   string="@esc@('A"
-   />
-  <xsl:output-character
-   char="&#x00c2;"
-   unichar:name="LATIN CAPITAL LETTER A WITH CIRCUMFLEX"
-   unichar:entity="Acirc"
-   string="@esc@(^A"
-   />
-  <xsl:output-character
-   char="&#x00c3;"
-   unichar:name="LATIN CAPITAL LETTER A WITH TILDE"
-   unichar:entity="Atilde"
-   string="@esc@(~A"
-   />
-  <xsl:output-character
-   char="&#x00c4;"
-   unichar:name="LATIN CAPITAL LETTER A WITH DIAERESIS"
-   unichar:entity="Auml"
-   string="@esc@(:A"
-   />
-  <xsl:output-character
-   char="&#x00c5;"
-   unichar:name="LATIN CAPITAL LETTER A WITH RING ABOVE"
-   unichar:entity="Aring"
-   string="@esc@(oA"
-   />
-  <xsl:output-character
-   char="&#x00c6;"
-   unichar:name="LATIN CAPITAL LETTER AE"
-   unichar:entity="AElig"
-   string="@esc@(AE"
-   />
-  <xsl:output-character
-   char="&#x00c7;"
-   unichar:name="LATIN CAPITAL LETTER C WITH CEDILLA"
-   unichar:entity="Ccedil"
-   string="@esc@(,C"
-   />
-  <xsl:output-character
-   char="&#x00c8;"
-   unichar:name="LATIN CAPITAL LETTER E WITH GRAVE"
-   unichar:entity="Egrave"
-   string="@esc@(`E"
-   />
-  <xsl:output-character
-   char="&#x00c9;"
-   unichar:name="LATIN CAPITAL LETTER E WITH ACUTE"
-   unichar:entity="Eacute"
-   string="@esc@('E"
-   />
-  <xsl:output-character
-   char="&#x00ca;"
-   unichar:name="LATIN CAPITAL LETTER E WITH CIRCUMFLEX"
-   unichar:entity="Ecirc"
-   string="@esc@(^E"
-   />
-  <xsl:output-character
-   char="&#x00cb;"
-   unichar:name="LATIN CAPITAL LETTER E WITH DIAERESIS"
-   unichar:entity="Euml"
-   string="@esc@(:E"
-   />
-  <xsl:output-character
-   char="&#x00cc;"
-   unichar:name="LATIN CAPITAL LETTER I WITH GRAVE"
-   unichar:entity="Igrave"
-   string="@esc@(`I"
-   />
-  <xsl:output-character
-   char="&#x00cd;"
-   unichar:name="LATIN CAPITAL LETTER I WITH ACUTE"
-   unichar:entity="Iacute"
-   string="@esc@('I"
-   />
-  <xsl:output-character
-   char="&#x00ce;"
-   unichar:name="LATIN CAPITAL LETTER I WITH CIRCUMFLEX"
-   unichar:entity="Icirc"
-   string="@esc@(^I"
-   />
-  <xsl:output-character
-   char="&#x00cf;"
-   unichar:name="LATIN CAPITAL LETTER I WITH DIAERESIS"
-   unichar:entity="Iuml"
-   string="@esc@(:I"
-   />
-  <xsl:output-character
-   char="&#x00d0;"
-   unichar:name="LATIN CAPITAL LETTER ETH"
-   unichar:entity="ETH"
-   string="@esc@(-D"
-   />
-  <xsl:output-character
-   char="&#x00d1;"
-   unichar:name="LATIN CAPITAL LETTER N WITH TILDE"
-   unichar:entity="Ntilde"
-   string="@esc@(~N"
-   />
-  <xsl:output-character
-   char="&#x00d2;"
-   unichar:name="LATIN CAPITAL LETTER O WITH GRAVE"
-   unichar:entity="Ograve"
-   string="@esc@(`O"
-   />
-  <xsl:output-character
-   char="&#x00d3;"
-   unichar:name="LATIN CAPITAL LETTER O WITH ACUTE"
-   unichar:entity="Oacute"
-   string="@esc@('O"
-   />
-  <xsl:output-character
-   char="&#x00d4;"
-   unichar:name="LATIN CAPITAL LETTER O WITH CIRCUMFLEX"
-   unichar:entity="Ocirc"
-   string="@esc@(^O"
-   />
-  <xsl:output-character
-   char="&#x00d5;"
-   unichar:name="LATIN CAPITAL LETTER O WITH TILDE"
-   unichar:entity="Otilde"
-   string="@esc@(~O"
-   />
-  <xsl:output-character
-   char="&#x00d6;"
-   unichar:name="LATIN CAPITAL LETTER O WITH DIAERESIS"
-   unichar:entity="Ouml"
-   string="@esc@(:O"
-   />
-  <xsl:output-character
-   char="&#x00d7;"
-   unichar:name="MULTIPLICATION SIGN"
-   unichar:entity="times"
-   string="@esc@(mu"
-   />
-  <xsl:output-character
-   char="&#x00d8;"
-   unichar:name="LATIN CAPITAL LETTER O WITH STROKE"
-   unichar:entity="Oslash"
-   string="@esc@(/O"
-   />
-  <xsl:output-character
-   char="&#x00d9;"
-   unichar:name="LATIN CAPITAL LETTER U WITH GRAVE"
-   unichar:entity="Ugrave"
-   string="@esc@(`U"
-   />
-  <xsl:output-character
-   char="&#x00da;"
-   unichar:name="LATIN CAPITAL LETTER U WITH ACUTE"
-   unichar:entity="Uacute"
-   string="@esc@('U"
-   />
-  <xsl:output-character
-   char="&#x00db;"
-   unichar:name="LATIN CAPITAL LETTER U WITH CIRCUMFLEX"
-   unichar:entity="Ucirc"
-   string="@esc@(^U"
-   />
-  <xsl:output-character
-   char="&#x00dc;"
-   unichar:name="LATIN CAPITAL LETTER U WITH DIAERESIS"
-   unichar:entity="Uuml"
-   string="@esc@(:U"
-   />
-  <xsl:output-character
-   char="&#x00dd;"
-   unichar:name="LATIN CAPITAL LETTER Y WITH ACUTE"
-   unichar:entity="Yacute"
-   string="@esc@('Y"
-   />
-  <xsl:output-character
-   char="&#x00de;"
-   unichar:name="LATIN CAPITAL LETTER THORN"
-   unichar:entity="THORN"
-   string="@esc@(TP"
-   />
-  <xsl:output-character
-   char="&#x00df;"
-   unichar:name="LATIN SMALL LETTER SHARP S"
-   unichar:entity="szlig"
-   string="@esc@(ss"
-   />
-  <xsl:output-character
-   char="&#x00e0;"
-   unichar:name="LATIN SMALL LETTER A WITH GRAVE"
-   unichar:entity="agrave"
-   string="@esc@(`a"
-   />
-  <xsl:output-character
-   char="&#x00e1;"
-   unichar:name="LATIN SMALL LETTER A WITH ACUTE"
-   unichar:entity="aacute"
-   string="@esc@('a"
-   />
-  <xsl:output-character
-   char="&#x00e2;"
-   unichar:name="LATIN SMALL LETTER A WITH CIRCUMFLEX"
-   unichar:entity="acirc"
-   string="@esc@(^a"
-   />
-  <xsl:output-character
-   char="&#x00e3;"
-   unichar:name="LATIN SMALL LETTER A WITH TILDE"
-   unichar:entity="atilde"
-   string="@esc@(~a"
-   />
-  <xsl:output-character
-   char="&#x00e4;"
-   unichar:name="LATIN SMALL LETTER A WITH DIAERESIS"
-   unichar:entity="auml"
-   string="@esc@(:a"
-   />
-  <xsl:output-character
-   char="&#x00e5;"
-   unichar:name="LATIN SMALL LETTER A WITH RING ABOVE"
-   unichar:entity="aring"
-   string="@esc@(oa"
-   />
-  <xsl:output-character
-   char="&#x00e6;"
-   unichar:name="LATIN SMALL LETTER AE"
-   unichar:entity="aelig"
-   string="@esc@(ae"
-   />
-  <xsl:output-character
-   char="&#x00e7;"
-   unichar:name="LATIN SMALL LETTER C WITH CEDILLA"
-   unichar:entity="ccedil"
-   string="@esc@(,c"
-   />
-  <xsl:output-character
-   char="&#x00e8;"
-   unichar:name="LATIN SMALL LETTER E WITH GRAVE"
-   unichar:entity="egrave"
-   string="@esc@(`e"
-   />
-  <xsl:output-character
-   char="&#x00e9;"
-   unichar:name="LATIN SMALL LETTER E WITH ACUTE"
-   unichar:entity="eacute"
-   string="@esc@('e"
-   />
-  <xsl:output-character
-   char="&#x00ea;"
-   unichar:name="LATIN SMALL LETTER E WITH CIRCUMFLEX"
-   unichar:entity="ecirc"
-   string="@esc@(^e"
-   />
-  <xsl:output-character
-   char="&#x00eb;"
-   unichar:name="LATIN SMALL LETTER E WITH DIAERESIS"
-   unichar:entity="euml"
-   string="@esc@(:e"
-   />
-  <xsl:output-character
-   char="&#x00ec;"
-   unichar:name="LATIN SMALL LETTER I WITH GRAVE"
-   unichar:entity="igrave"
-   string="@esc@(`i"
-   />
-  <xsl:output-character
-   char="&#x00ed;"
-   unichar:name="LATIN SMALL LETTER I WITH ACUTE"
-   unichar:entity="iacute"
-   string="@esc@('i"
-   />
-  <xsl:output-character
-   char="&#x00ee;"
-   unichar:name="LATIN SMALL LETTER I WITH CIRCUMFLEX"
-   unichar:entity="icirc"
-   string="@esc@(^i"
-   />
-  <xsl:output-character
-   char="&#x00ef;"
-   unichar:name="LATIN SMALL LETTER I WITH DIAERESIS"
-   unichar:entity="iuml"
-   string="@esc@(:i"
-   />
-  <xsl:output-character
-   char="&#x00f0;"
-   unichar:name="LATIN SMALL LETTER ETH"
-   unichar:entity="eth"
-   string="@esc@(Sd"
-   />
-  <xsl:output-character
-   char="&#x00f1;"
-   unichar:name="LATIN SMALL LETTER N WITH TILDE"
-   unichar:entity="ntilde"
-   string="@esc@(~n"
-   />
-  <xsl:output-character
-   char="&#x00f2;"
-   unichar:name="LATIN SMALL LETTER O WITH GRAVE"
-   unichar:entity="ograve"
-   string="@esc@(`o"
-   />
-  <xsl:output-character
-   char="&#x00f3;"
-   unichar:name="LATIN SMALL LETTER O WITH ACUTE"
-   unichar:entity="oacute"
-   string="@esc@('o"
-   />
-  <xsl:output-character
-   char="&#x00f4;"
-   unichar:name="LATIN SMALL LETTER O WITH CIRCUMFLEX"
-   unichar:entity="ocirc"
-   string="@esc@(^o"
-   />
-  <xsl:output-character
-   char="&#x00f5;"
-   unichar:name="LATIN SMALL LETTER O WITH TILDE"
-   unichar:entity="otilde"
-   string="@esc@(~o"
-   />
-  <xsl:output-character
-   char="&#x00f6;"
-   unichar:name="LATIN SMALL LETTER O WITH DIAERESIS"
-   unichar:entity="ouml"
-   string="@esc@(:o"
-   />
-  <xsl:output-character
-   char="&#x00f7;"
-   unichar:name="DIVISION SIGN"
-   unichar:entity="divide"
-   string="@esc@(di"
-   />
-  <xsl:output-character
-   char="&#x00f8;"
-   unichar:name="LATIN SMALL LETTER O WITH STROKE"
-   unichar:entity="oslash"
-   string="@esc@(/o"
-   />
-  <xsl:output-character
-   char="&#x00f9;"
-   unichar:name="LATIN SMALL LETTER U WITH GRAVE"
-   unichar:entity="ugrave"
-   string="@esc@(`u"
-   />
-  <xsl:output-character
-   char="&#x00fa;"
-   unichar:name="LATIN SMALL LETTER U WITH ACUTE"
-   unichar:entity="uacute"
-   string="@esc@('u"
-   />
-  <xsl:output-character
-   char="&#x00fb;"
-   unichar:name="LATIN SMALL LETTER U WITH CIRCUMFLEX"
-   unichar:entity="ucirc"
-   string="@esc@(^u"
-   />
-  <xsl:output-character
-   char="&#x00fc;"
-   unichar:name="LATIN SMALL LETTER U WITH DIAERESIS"
-   unichar:entity="uuml"
-   string="@esc@(:u"
-   />
-  <xsl:output-character
-   char="&#x00fd;"
-   unichar:name="LATIN SMALL LETTER Y WITH ACUTE"
-   unichar:entity="yacute"
-   string="@esc@('y"
-   />
-  <xsl:output-character
-   char="&#x00fe;"
-   unichar:name="LATIN SMALL LETTER THORN"
-   unichar:entity="thorn"
-   string="@esc@(Tp"
-   />
-  <xsl:output-character
-   char="&#x00ff;"
-   unichar:name="LATIN SMALL LETTER Y WITH DIAERESIS"
-   unichar:entity="yuml"
-   string="@esc@(:y"
-   />
-  <!-- * **************************************************************** -->
-  <!-- *   End: Latin-1/ISO-8859-1 -->
-  <!-- * **************************************************************** -->
-  
-  <!-- * **************************************************************** -->
-  <!-- *   Begin: -->
-  <!-- * -->
-  <!-- *     - x0100 to x017f (Latin Extended-A) -->
-  <!-- *     - x0180 to x023f (Latin Extended-B) -->
-  <!-- *     - x0250 to x02ad (IPA Extensions) -->
-  <!-- *     - x02b0 to x02ee (Spacing Modifier Letters) -->
-  <!-- *     - x0300 to x036f (Combining Diacritical Marks) -->
-  <!-- * -->
-  <!-- *   Other than the following exceptions, characters in these -->
-  <!-- *   blocks don't have any roff equivalents -->
-  <!-- * **************************************************************** -->
-
-  <xsl:output-character
-   char="&#x0131;"
-   unichar:name="LATIN SMALL LETTER DOTLESS I"
-   unichar:entity="inodot"
-   string="@esc@(.i"
-   />
-  <xsl:output-character
-   char="&#x0132;"
-   unichar:name="LATIN CAPITAL LIGATURE IJ"
-   unichar:entity="IJlig"
-   string="@esc@(IJ"
-   />
-  <xsl:output-character
-   char="&#x0133;"
-   unichar:name="LATIN SMALL LIGATURE IJ"
-   unichar:entity="ijlig"
-   string="@esc@(ij"
-   />
-  <xsl:output-character
-   char="&#x0141;"
-   unichar:name="LATIN CAPITAL LETTER L WITH STROKE"
-   unichar:entity="Lstrok"
-   string="@esc@(/L"
-   />
-  <xsl:output-character
-   char="&#x0142;"
-   unichar:name="LATIN SMALL LETTER L WITH STROKE"
-   unichar:entity="lstrok"
-   string="@esc@(/l"
-   />
-  <xsl:output-character
-   char="&#x0152;"
-   unichar:name="LATIN CAPITAL LIGATURE OE"
-   unichar:entity="OElig"
-   string="@esc@(OE"
-   />
-  <xsl:output-character
-   char="&#x0153;"
-   unichar:name="LATIN SMALL LIGATURE OE"
-   unichar:entity="oelig"
-   string="@esc@(oe"
-   />
-  <xsl:output-character
-   char="&#x0192;"
-   unichar:name="LATIN SMALL LETTER F WITH HOOK"
-   unichar:entity="fnof"
-   string="@esc@(Fn"
-   />
-  <xsl:output-character
-   char="&#x02c6;"
-   unichar:name="MODIFIER LETTER CIRCUMFLEX ACCENT"
-   unichar:entity="circ"
-   string="@esc@(a^"
-   />
-  <xsl:output-character
-   char="&#x02c7;"
-   unichar:name="CARON"
-   unichar:entity="caron"
-   string="@esc@(ac"
-   />
-  <xsl:output-character
-   char="&#x02c9;"
-   unichar:name="MODIFIER LETTER MACRON"
-   string="@esc@(a-"
-   />
-  <xsl:output-character
-   char="&#x02d8;"
-   unichar:name="BREVE"
-   unichar:entity="breve"
-   string="@esc@(ab"
-   />
-<!-- * there does not seem to by any roff equivalent for "dot above" -->
-<!-- * <xsl:output-character -->
-<!-- *  char="&#x02d9;" -->
-<!-- *  unichar:name="DOT ABOVE" -->
-<!-- *  unichar:entity="dot" -->
-<!-- *  /> -->
-  <xsl:output-character
-   char="&#x02da;"
-   unichar:name="RING ABOVE"
-   unichar:entity="ring"
-   string="@esc@(ao"
-   />
-  <xsl:output-character
-   char="&#x02db;"
-   unichar:name="OGONEK"
-   unichar:entity="ogon"
-   string="@esc@(ho"
-   />
-  <!-- groff_char(7) calls Unicode x02dd a "Hungarian umlaut"  -->
-  <xsl:output-character
-   char="&#x02dd;"
-   unichar:name="DOUBLE ACUTE ACCENT"
-   unichar:entity="dblac"
-   string='@esc@(a"'
-   />
-
-  <!-- * **************************************************************** -->
-  <!-- *   End: -->
-  <!-- *     - Latin Extended-A -->
-  <!-- *     - Latin Extended-B -->
-  <!-- *     - IPA Extensions -->
-  <!-- *     - Spacing Modifier Letters -->
-  <!-- *     - Combining Diacritical Marks -->
-  <!-- * **************************************************************** -->
-  
-  <!-- * **************************************************************** -->
-  <!-- *   Begin: Greek and Coptic -->
-  <!-- *     x0370 to x03ff -->
-  <!-- * **************************************************************** -->
-  
-  <xsl:output-character
-   char="&#x0391;"
-   unichar:name="GREEK CAPITAL LETTER ALPHA"
-   unichar:entity="Agr"
-   string="@esc@(*A)"
-   />
-  <xsl:output-character
-   char="&#x0392;"
-   unichar:name="GREEK CAPITAL LETTER BETA"
-   unichar:entity="Bgr"
-   string="@esc@(*B"
-   />
-  <xsl:output-character
-   char="&#x0393;"
-   unichar:name="GREEK CAPITAL LETTER GAMMA"
-   unichar:entity="Gamma"
-   string="@esc@(*G"
-   />
-  <xsl:output-character
-   char="&#x0394;"
-   unichar:name="GREEK CAPITAL LETTER DELTA"
-   unichar:entity="Delta"
-   string="@esc@(*D"
-   />
-  <xsl:output-character
-   char="&#x0395;"
-   unichar:name="GREEK CAPITAL LETTER EPSILON"
-   unichar:entity="Egr"
-   string="@esc@(*E"
-   />
-  <xsl:output-character
-   char="&#x0396;"
-   unichar:name="GREEK CAPITAL LETTER ZETA"
-   unichar:entity="Zgr"
-   string="@esc@(*Z"
-   />
-  <xsl:output-character
-   char="&#x0397;"
-   unichar:name="GREEK CAPITAL LETTER ETA"
-   unichar:entity="EEgr"
-   string="@esc@(*Y"
-   />
-  <xsl:output-character
-   char="&#x0398;"
-   unichar:name="GREEK CAPITAL LETTER THETA"
-   unichar:entity="THgr"
-   string="@esc@(*H"
-   />
-  <xsl:output-character
-   char="&#x0399;"
-   unichar:name="GREEK CAPITAL LETTER IOTA"
-   unichar:entity="Igr"
-   string="@esc@(*I"
-   />
-  <xsl:output-character
-   char="&#x039a;"
-   unichar:name="GREEK CAPITAL LETTER KAPPA"
-   unichar:entity="Kgr"
-   string="@esc@(*K"
-   />
-  <xsl:output-character
-   char="&#x039b;"
-   unichar:name="GREEK CAPITAL LETTER LAMDA"
-   unichar:entity="Lambda"
-   string="@esc@(*L"
-   />
-  <xsl:output-character
-   char="&#x039c;"
-   unichar:name="GREEK CAPITAL LETTER MU"
-   unichar:entity="Mgr"
-   string="@esc@(*M"
-   />
-  <xsl:output-character
-   char="&#x039d;"
-   unichar:name="GREEK CAPITAL LETTER NU"
-   unichar:entity="Ngr"
-   string="@esc@(*N"
-   />
-  <xsl:output-character
-   char="&#x039e;"
-   unichar:name="GREEK CAPITAL LETTER XI"
-   unichar:entity="Xgr"
-   string="@esc@(*C"
-   />
-  <xsl:output-character
-   char="&#x039f;"
-   unichar:name="GREEK CAPITAL LETTER OMICRON"
-   unichar:entity="Ogr"
-   string="@esc@(*O"
-   />
-  <xsl:output-character
-   char="&#x03a0;"
-   unichar:name="GREEK CAPITAL LETTER PI"
-   unichar:entity="Pgr"
-   string="@esc@(*P"
-   />
-  <xsl:output-character
-   char="&#x03a1;"
-   unichar:name="GREEK CAPITAL LETTER RHO"
-   unichar:entity="Rgr"
-   string="@esc@(*R"
-   />
-  <xsl:output-character
-   char="&#x03a3;"
-   unichar:name="GREEK CAPITAL LETTER SIGMA"
-   unichar:entity="Sgr"
-   string="@esc@(*S"
-   />
-  <xsl:output-character
-   char="&#x03a4;"
-   unichar:name="GREEK CAPITAL LETTER TAU"
-   unichar:entity="Tgr"
-   string="@esc@(*T"
-   />
-  <xsl:output-character
-   char="&#x03a5;"
-   unichar:name="GREEK CAPITAL LETTER UPSILON"
-   unichar:entity="Ugr"
-   string="@esc@(*U"
-   />
-  <xsl:output-character
-   char="&#x03a6;"
-   unichar:name="GREEK CAPITAL LETTER PHI"
-   unichar:entity="PHgr"
-   string="@esc@(*F"
-   />
-  <xsl:output-character
-   char="&#x03a7;"
-   unichar:name="GREEK CAPITAL LETTER CHI"
-   unichar:entity="KHgr"
-   string="@esc@(*X"
-   />
-  <xsl:output-character
-   char="&#x03a8;"
-   unichar:name="GREEK CAPITAL LETTER PSI"
-   unichar:entity="PSgr"
-   string="@esc@(*Q"
-   />
-  <xsl:output-character
-   char="&#x03a9;"
-   unichar:name="GREEK CAPITAL LETTER OMEGA"
-   unichar:entity="OHgr"
-   string="@esc@(*W"
-   />
-  <xsl:output-character
-   char="&#x03aa;"
-   unichar:name="GREEK CAPITAL LETTER IOTA WITH DIALYTIKA"
-   unichar:entity="Idigr"
-   string="@esc@(*I"
-   />
-  <xsl:output-character
-   char="&#x03ab;"
-   unichar:name="GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA"
-   unichar:entity="Udigr"
-   string="@esc@(*U"
-   />
-  <xsl:output-character
-   char="&#x03ac;"
-   unichar:name="GREEK SMALL LETTER ALPHA WITH TONOS"
-   unichar:entity="aacgr"
-   string="@esc@(*a"
-   />
-  <xsl:output-character
-   char="&#x03ad;"
-   unichar:name="GREEK SMALL LETTER EPSILON WITH TONOS"
-   unichar:entity="eacgr"
-   string="@esc@(*e"
-   />
-  <xsl:output-character
-   char="&#x03ae;"
-   unichar:name="GREEK SMALL LETTER ETA WITH TONOS"
-   unichar:entity="eeacgr"
-   string="@esc@(*y"
-   />
-  <xsl:output-character
-   char="&#x03af;"
-   unichar:name="GREEK SMALL LETTER IOTA WITH TONOS"
-   unichar:entity="iacgr"
-   string="@esc@(*i"
-   />
-  <xsl:output-character
-   char="&#x03b0;"
-   unichar:name="GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS"
-   unichar:entity="udiagr"
-   string="@esc@(*u"
-   />
-  <xsl:output-character
-   char="&#x03b1;"
-   unichar:name="GREEK SMALL LETTER ALPHA"
-   unichar:entity="agr"
-   string="@esc@(*a"
-   />
-  <xsl:output-character
-   char="&#x03b2;"
-   unichar:name="GREEK SMALL LETTER BETA"
-   unichar:entity="beta"
-   string="@esc@(*b"
-   />
-  <xsl:output-character
-   char="&#x03b3;"
-   unichar:name="GREEK SMALL LETTER GAMMA"
-   unichar:entity="gamma"
-   string="@esc@(*g"
-   />
-  <xsl:output-character
-   char="&#x03b4;"
-   unichar:name="GREEK SMALL LETTER DELTA"
-   unichar:entity="delta"
-   string="@esc@(*d"
-   />
-  <xsl:output-character
-   char="&#x03b5;"
-   unichar:name="GREEK SMALL LETTER EPSILON"
-   unichar:entity="epsi"
-   string="@esc@(*e"
-   />
-  <xsl:output-character
-   char="&#x03b6;"
-   unichar:name="GREEK SMALL LETTER ZETA"
-   unichar:entity="zeta"
-   string="@esc@(*z"
-   />
-  <xsl:output-character
-   char="&#x03b7;"
-   unichar:name="GREEK SMALL LETTER ETA"
-   unichar:entity="eegr"
-   string="@esc@(*y"
-   />
-  <xsl:output-character
-   char="&#x03b8;"
-   unichar:name="GREEK SMALL LETTER THETA"
-   unichar:entity="thetas"
-   string="@esc@(*h"
-   />
-  <xsl:output-character
-   char="&#x03b9;"
-   unichar:name="GREEK SMALL LETTER IOTA"
-   unichar:entity="igr"
-   string="@esc@(*i"
-   />
-  <xsl:output-character
-   char="&#x03ba;"
-   unichar:name="GREEK SMALL LETTER KAPPA"
-   unichar:entity="kappa"
-   string="@esc@(*k"
-   />
-  <xsl:output-character
-   char="&#x03bb;"
-   unichar:name="GREEK SMALL LETTER LAMDA"
-   unichar:entity="lambda"
-   string="@esc@(*l"
-   />
-  <xsl:output-character
-   char="&#x03bc;"
-   unichar:name="GREEK SMALL LETTER MU"
-   unichar:entity="mgr"
-   string="@esc@(*m"
-   />
-  <xsl:output-character
-   char="&#x03bd;"
-   unichar:name="GREEK SMALL LETTER NU"
-   unichar:entity="ngr"
-   string="@esc@(*n"
-   />
-  <xsl:output-character
-   char="&#x03be;"
-   unichar:name="GREEK SMALL LETTER XI"
-   unichar:entity="xgr"
-   string="@esc@(*c"
-   />
-  <xsl:output-character
-   char="&#x03bf;"
-   unichar:name="GREEK SMALL LETTER OMICRON"
-   unichar:entity="ogr"
-   string="@esc@(*o"
-   />
-  <xsl:output-character
-   char="&#x03c0;"
-   unichar:name="GREEK SMALL LETTER PI"
-   unichar:entity="pgr"
-   string="@esc@(*p"
-   />
-  <xsl:output-character
-   char="&#x03c1;"
-   unichar:name="GREEK SMALL LETTER RHO"
-   unichar:entity="rgr"
-   string="@esc@(*r"
-   />
-  <xsl:output-character
-   char="&#x03c2;"
-   unichar:name="GREEK SMALL LETTER FINAL SIGMA"
-   unichar:entity="sfgr"
-   string="@esc@(ts"
-   />
-  <xsl:output-character
-   char="&#x03c3;"
-   unichar:name="GREEK SMALL LETTER SIGMA"
-   unichar:entity="sgr"
-   string="@esc@(*s"
-   />
-  <xsl:output-character
-   char="&#x03c4;"
-   unichar:name="GREEK SMALL LETTER TAU"
-   unichar:entity="tau"
-   string="@esc@(*t"
-   />
-  <xsl:output-character
-   char="&#x03c5;"
-   unichar:name="GREEK SMALL LETTER UPSILON"
-   unichar:entity="ugr"
-   string="@esc@(*u"
-   />
-  <xsl:output-character
-   char="&#x03c6;"
-   unichar:name="GREEK SMALL LETTER PHI"
-   unichar:entity="phgr"
-   string="@esc@(*f"
-   />
-  <xsl:output-character
-   char="&#x03c7;"
-   unichar:name="GREEK SMALL LETTER CHI"
-   unichar:entity="chi"
-   string="@esc@(*x"
-   />
-  <xsl:output-character
-   char="&#x03c8;"
-   unichar:name="GREEK SMALL LETTER PSI"
-   unichar:entity="psgr"
-   string="@esc@(*q"
-   />
-  <xsl:output-character
-   char="&#x03c9;"
-   unichar:name="GREEK SMALL LETTER OMEGA"
-   unichar:entity="ohgr"
-   string="@esc@(*w"
-   />
-  <xsl:output-character
-   char="&#x03ca;"
-   unichar:name="GREEK SMALL LETTER IOTA WITH DIALYTIKA"
-   unichar:entity="idigr"
-   string="@esc@(*i"
-   />
-  <xsl:output-character
-   char="&#x03cb;"
-   unichar:name="GREEK SMALL LETTER UPSILON WITH DIALYTIKA"
-   unichar:entity="udigr"
-   string="@esc@(*u"
-   />
-  <xsl:output-character
-   char="&#x03cc;"
-   unichar:name="GREEK SMALL LETTER OMICRON WITH TONOS"
-   unichar:entity="oacgr"
-   string="@esc@(*o"
-   />
-  <xsl:output-character
-   char="&#x03cd;"
-   unichar:name="GREEK SMALL LETTER UPSILON WITH TONOS"
-   unichar:entity="uacgr"
-   string="@esc@(*u"
-   />
-  <xsl:output-character
-   char="&#x03ce;"
-   unichar:name="GREEK SMALL LETTER OMEGA WITH TONOS"
-   unichar:entity="ohacgr"
-   string="@esc@(*w"
-   />
-  <xsl:output-character
-   char="&#x03d0;"
-   unichar:name="GREEK BETA SYMBOL"
-   string="@esc@(*B"
-   />
-  <xsl:output-character
-   char="&#x03d1;"
-   unichar:name="GREEK THETA SYMBOL"
-   unichar:entity="thetav"
-   string="@esc@(+h"
-   />
-  <xsl:output-character
-   char="&#x03d2;"
-   unichar:name="GREEK UPSILON WITH HOOK SYMBOL"
-   unichar:entity="Upsi"
-   string="@esc@(*U"
-   />
-  <xsl:output-character
-   char="&#x03d3;"
-   unichar:name="GREEK UPSILON WITH ACUTE AND HOOK SYMBOL"
-   string="@esc@(*U"
-   />
-  <xsl:output-character
-   char="&#x03d4;"
-   unichar:name="GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL"
-   string="@esc@(*U"
-   />
-  <xsl:output-character
-   char="&#x03d5;"
-   unichar:name="GREEK PHI SYMBOL"
-   unichar:entity="phis"
-   string="@esc@(+f"
-   />
-  <xsl:output-character
-   char="&#x03d6;"
-   unichar:name="GREEK PI SYMBOL"
-   unichar:entity="piv"
-   string="@esc@(+p"
-   />
-  <!-- no mappings for remaining chars x03d7 to x03ef -->
-  <xsl:output-character
-   char="&#x03f0;"
-   unichar:name="GREEK KAPPA SYMBOL"
-   unichar:entity="kappav"
-   string="(*k"
-   />
-  <xsl:output-character
-   char="&#x03f1;"
-   unichar:name="GREEK RHO SYMBOL"
-   unichar:entity="rhov"
-   string="@esc@(*r"
-   />
-  <xsl:output-character
-   char="&#x03f2;"
-   unichar:name="GREEK LUNATE SIGMA SYMBOL"
-   string="@esc@(*s"
-   />
-  <xsl:output-character
-   char="&#x03f4;"
-   unichar:name="GREEK CAPITAL THETA SYMBOL"
-   string="@esc@(*H"
-   />
-  <xsl:output-character
-   char="&#x03f5;"
-   unichar:name="GREEK LUNATE EPSILON SYMBOL"
-   string="@esc@(*e"
-   />
-  <xsl:output-character
-   char="&#x03f6;"
-   unichar:name="GREEK REVERSED LUNATE EPSILON SYMBOL"
-   unichar:entity="bepsi"
-   string="@esc@(*e"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Greek and Coptic -->
-  <!-- * ***************************************************************** -->
-  
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-  <!-- *   Cyrillic -->
-  <!-- *   x0400 to x04ff -->
-  <!-- *   - do nothing - -->
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-  
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: General Punctuation -->
-  <!-- *   x2000 to x206f -->
-  <!-- * ***************************************************************** -->
-  
-  <!-- * first, spaces of various widths -->
-
-  <!-- * Note: There does not seem to be either a real em space or en space -->
-  <!-- * in roff; to approximate them, this character map assumes that in -->
-  <!-- * most fonts, an en space is about the same as the width of a digit -->
-  <!-- * (in roff, "\0"), so an em space (which by definition is -->
-  <!-- * equal to the width of two en spaces) is about the same as the width -->
-  <!-- * of two digits (thus, in roff, "\0\0") -->
-
-  <xsl:output-character
-   char="&#x2000;"
-   unichar:name="EN QUAD"
-   string="@esc@0"
-   />
-  <xsl:output-character
-   char="&#x2001;"
-   unichar:name="EM QUAD"
-   string="@esc@0@esc@0"
-   />
-  <xsl:output-character
-   char="&#x2002;"
-   unichar:name="EN SPACE"
-   unichar:entity="ensp"
-   string="@esc@0"
-   />
-  <xsl:output-character
-   char="&#x2003;"
-   unichar:name="EM SPACE"
-   unichar:entity="emsp"
-   string="@esc@0@esc@0"
-   />
-  <!-- * roughly same width as a normal space -->
-  <xsl:output-character
-   char="&#x2004;"
-   unichar:name="THREE-PER-EM SPACE"
-   unichar:entity="emsp13"
-   string=" "
-   />
-  <!-- * roughly same width as a normal space -->
-  <xsl:output-character
-   char="&#x2005;"
-   unichar:name="FOUR-PER-EM SPACE"
-   unichar:entity="emsp14"
-   string=" "
-   />
-  <!-- * roughly same width as a normal space -->
-  <xsl:output-character
-   char="&#x2006;"
-   unichar:name="SIX-PER-EM SPACE"
-   string=" "
-   />
-  <!-- * same as roff "digit" space -->
-  <xsl:output-character
-   char="&#x2007;"
-   unichar:name="FIGURE SPACE"
-   unichar:entity="numsp"
-   string="@esc@0"
-   />
-  <!-- * punctuation space in most fonts is actually closer to a normal -->
-  <!-- * space than it is to a thin space -->
-  <xsl:output-character
-   char="&#x2008;"
-   unichar:name="PUNCTUATION SPACE"
-   unichar:entity="puncsp"
-   string=" "
-   />
-  <!-- * Note: Not sure how best to deal with thin space, because the roff -->
-  <!-- * thin space, "\^", prints as a zero-width space in TTY -->
-  <!-- * output. However, it seems that, unlike a hair space, a thin space, -->
-  <!-- * at 1/12 of an em, is still recognizable to most people as a space, -->
-  <!-- * so treating it as zero-width seems wrong. So, for the sake of making -->
-  <!-- * TTY output look OK, just substitute with a normal space; but real -->
-  <!-- * roff escape is "\(\^" -->
-  <xsl:output-character
-   char="&#x2009;"
-   unichar:name="THIN SPACE"
-   unichar:entity="thinsp"
-   string=" "
-   />
-  <!-- * I don't think there's a standard definition of what a hair -->
-  <!-- * space is; some guides just say it's "less than 1/5 of an em" or -->
-  <!-- * that it's "narrower than a thin space"; seems like in practice, -->
-  <!-- * it's *a lot* narrower than a thin space, to the point where -->
-  <!-- * it's close to being a non-space, so here it's substituted with -->
-  <!-- * roff equivalent of a zero-width no-break space -->
-  <xsl:output-character
-   char="&#x200a;"
-   unichar:name="HAIR SPACE"
-   unichar:entity="hairsp"
-   string="@esc@&amp;"
-   />
-  <!-- * map to roff "zero-width break point"  -->
-  <xsl:output-character
-   char="&#x200b;"
-   unichar:name="ZERO WIDTH SPACE"
-   string="@esc@:"
-   />
-
-  <!-- *   x200c and x200d have special purposes in some Indic languages (I -->
-  <!-- *   think); for the "correct" zero-width space, according to Unicode docs, -->
-  <!-- *   use x2060, not x200c or x200d -->
-  <!-- *     <xsl:output-character -->
-  <!-- *      char="&#x200c;" -->
-  <!-- *      unichar:name="ZERO WIDTH NON-JOINER" -->
-  <!-- *      string="@esc@:" -->
-  <!-- *      /> -->
-  <!-- *     <xsl:output-character -->
-  <!-- *      char="&#x200d;" -->
-  <!-- *      unichar:name="ZERO WIDTH JOINER" -->
-  <!-- *      string="@esc@&amp;" -->
-  <!-- *      /> -->
-  <!-- * non-visible  -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x200e;" -->
-  <!-- *      unichar:name="LEFT-TO-RIGHT MARK" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x200f;" -->
-  <!-- *      unichar:name="RIGHT-TO-LEFT MARK" -->
-  <!-- *      /> -->
-
-  <!-- * .................................................... -->
-  <!-- * next, hyphens and various dashes, bars, underscores  -->
-  <xsl:output-character
-   char="&#x2010;"
-   unichar:name="HYPHEN"
-   unichar:entity="hyphen"
-   string="@esc@(hy"
-   />
-  <xsl:output-character
-   char="&#x2011;"
-   unichar:name="NON-BREAKING HYPHEN"
-   string="@esc@&amp;-@esc@&amp;"
-   />
-  <!-- * roughly same width as en dash -->
-  <xsl:output-character
-   char="&#x2012;"
-   unichar:name="FIGURE DASH"
-   string="@esc@(en"
-   />
-  <xsl:output-character
-   char="&#x2013;"
-   unichar:name="EN DASH"
-   unichar:entity="ndash"
-   string="@esc@(en"
-   />
-  <xsl:output-character
-   char="&#x2014;"
-   unichar:name="EM DASH"
-   unichar:entity="mdash"
-   string="@esc@(em"
-   />
-  <!-- * seems roughly same width as em dash -->
-  <xsl:output-character
-   char="&#x2015;"
-   unichar:name="HORIZONTAL BAR"
-   unichar:entity="horbar"
-   string="@esc@(em"
-   />
-  <xsl:output-character
-   char="&#x2016;"
-   unichar:name="DOUBLE VERTICAL LINE"
-   unichar:entity="Verbar"
-   string="@esc@(bv@esc@(bv"
-   />
-  <!-- * no double-underscore in roff; so just make it a single -->
-  <!-- * underscore -->
-  <xsl:output-character
-   char="&#x2017;"
-   unichar:name="DOUBLE LOW LINE"
-   string="_"
-   />
-
-  <!-- * .................................................... -->
-  <!-- * various quotation marks -->
-  <xsl:output-character
-   char="&#x2018;"
-   unichar:name="LEFT SINGLE QUOTATION MARK"
-   unichar:entity="lsquo"
-   string="@esc@(oq"
-   />
-  <xsl:output-character
-   char="&#x2019;"
-   unichar:name="RIGHT SINGLE QUOTATION MARK"
-   unichar:entity="rsquo"
-   string="@esc@(cq"
-   />
-  <xsl:output-character
-   char="&#x201a;"
-   unichar:name="SINGLE LOW-9 QUOTATION MARK"
-   unichar:entity="lsquor"
-   string="@esc@(bq"
-   />
-  <!-- * no roff equiv; treat same as lsquo -->
-  <xsl:output-character
-   char="&#x201b;"
-   unichar:name="SINGLE HIGH-REVERSED-9 QUOTATION MARK"
-   string="@esc@(oq"
-   />
-  <xsl:output-character
-   char="&#x201c;"
-   unichar:name="LEFT DOUBLE QUOTATION MARK"
-   unichar:entity="ldquo"
-   string="@esc@(lq"
-   />
-  <xsl:output-character
-   char="&#x201d;"
-   unichar:name="RIGHT DOUBLE QUOTATION MARK"
-   unichar:entity="rdquo"
-   string="@esc@(rq"
-   />
-  <xsl:output-character
-   char="&#x201e;"
-   unichar:name="DOUBLE LOW-9 QUOTATION MARK"
-   unichar:entity="ldquor"
-   string="@esc@(Bq"
-   />
-  <!-- * no roff equiv; treat same as rdquo -->
-  <xsl:output-character
-   char="&#x201f;"
-   unichar:name="DOUBLE HIGH-REVERSED-9 QUOTATION MARK"
-   string="@esc@(rq"
-   />
-
-  <!-- * .................................................... -->
-  <!-- * various symbols -->
-  <xsl:output-character
-   char="&#x2020;"
-   unichar:name="DAGGER"
-   unichar:entity="dagger"
-   string="@esc@(dg"
-   />
-  <xsl:output-character
-   char="&#x2021;"
-   unichar:name="DOUBLE DAGGER"
-   unichar:entity="Dagger"
-   string="@esc@(dd"
-   />
-  <xsl:output-character
-   char="&#x2022;"
-   unichar:name="BULLET"
-   unichar:entity="bull"
-   string="@esc@(bu"
-   />
-  <!-- * no roff equiv -->
-  <xsl:output-character
-   char="&#x2023;"
-   unichar:name="TRIANGULAR BULLET"
-   string=">@esc@&amp;"
-   />
-  <!-- * no roff equiv -->
-  <xsl:output-character
-   char="&#x2024;"
-   unichar:name="ONE DOT LEADER"
-   string="@esc@&amp;."
-   />
-  <!-- * no roff equiv -->
-  <xsl:output-character
-   char="&#x2025;"
-   unichar:name="TWO DOT LEADER"
-   unichar:entity="nldr"
-   string="@esc@&amp;.."
-   />
-  <!-- * no roff equiv -->
-  <xsl:output-character
-   char="&#x2026;"
-   unichar:name="HORIZONTAL ELLIPSIS"
-   unichar:entity="hellip"
-   string="@esc@&amp;..."
-   />
-  <xsl:output-character
-   char="&#x2027;"
-   unichar:name="HYPHENATION POINT"
-   string="@esc@%"
-   />
-  <!-- * Begin x2028 to x202e - no idea what to do with these -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2028;" -->
-  <!-- *      unichar:name="LINE SEPARATOR" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2029;" -->
-  <!-- *      unichar:name="PARAGRAPH SEPARATOR" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x202a;" -->
-  <!-- *      unichar:name="LEFT-TO-RIGHT EMBEDDING" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x202b;" -->
-  <!-- *      unichar:name="RIGHT-TO-LEFT EMBEDDING" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x202c;" -->
-  <!-- *      unichar:name="POP DIRECTIONAL FORMATTING" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x202d;" -->
-  <!-- *      unichar:name="LEFT-TO-RIGHT OVERRIDE" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x202e;" -->
-  <!-- *      unichar:name="RIGHT-TO-LEFT OVERRIDE" -->
-  <!-- *      /> -->
-  <!-- *      End x2028 to x202e - no idea what to do with these -->
-
-  <!-- * seems like "narrow" nbsp is basically the same as a no-break -->
-  <!-- * space -->
-  <xsl:output-character
-   char="&#x202f;"
-   unichar:name="NARROW NO-BREAK SPACE"
-   string="@esc@ "
-   />
-  <xsl:output-character
-   char="&#x2030;"
-   unichar:name="PER MILLE SIGN"
-   unichar:entity="permil"
-   string="@esc@(%0"
-   />
-  <!-- * no roff equiv; no idea what to do with it -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2031;" -->
-  <!-- *      unichar:name="PER TEN THOUSAND SIGN" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x2032;"
-   unichar:name="PRIME"
-   unichar:entity="prime"
-   string="@esc@(fm"
-   />
-  <xsl:output-character
-   char="&#x2033;"
-   unichar:name="DOUBLE PRIME"
-   unichar:entity="Prime"
-   string="@esc@(sd"
-   />
-  <xsl:output-character
-   char="&#x2034;"
-   unichar:name="TRIPLE PRIME"
-   unichar:entity="tprime"
-   string="@esc@(sd@esc@(fm"
-   />
-  <!-- * no idea for these  -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2035;" -->
-  <!-- *      unichar:name="REVERSED PRIME" -->
-  <!-- *      unichar:entity="bprime" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2036;" -->
-  <!-- *      unichar:name="REVERSED DOUBLE PRIME" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2037;" -->
-  <!-- *      unichar:name="REVERSED TRIPLE PRIME" -->
-  <!-- *      /> -->
-
-  <!-- * there is no low caret in roff -->
-  <xsl:output-character
-   char="&#x2038;"
-   unichar:name="CARET"
-   string="^"
-   />
-  <xsl:output-character
-   char="&#x2039;"
-   unichar:name="SINGLE LEFT-POINTING ANGLE QUOTATION MARK"
-   string="@esc@(fo"
-   />
-  <xsl:output-character
-   char="&#x203a;"
-   unichar:name="SINGLE RIGHT-POINTING ANGLE QUOTATION MARK"
-   string="@esc@(fc"
-   />
-  <!-- * not in roff -->
-  <xsl:output-character
-   char="&#x203b;"
-   unichar:name="REFERENCE MARK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x203c;"
-   unichar:name="DOUBLE EXCLAMATION MARK"
-   string="!!"
-   />
-  <xsl:output-character
-   char="&#x203d;"
-   unichar:name="INTERROBANG"
-   string="?!"
-   />
-  <xsl:output-character
-   char="&#x203e;"
-   unichar:name="OVERLINE"
-   string="@esc@(rn"
-   />
-  <xsl:output-character
-   char="&#x203f;"
-   unichar:name="UNDERTIE"
-   string="@esc@(ul"
-   />
-  <!-- * not in roff -->
-  <xsl:output-character
-   char="&#x2040;"
-   unichar:name="CHARACTER TIE"
-   string="@esc@(rn"
-   />
-  <!-- * not in roff -->
-  <xsl:output-character
-   char="&#x2041;"
-   unichar:name="CARET INSERTION POINT"
-   unichar:entity="caret"
-   string="^"
-   />
-  <!-- * not in roff -->
-  <xsl:output-character
-   char="&#x2042;"
-   unichar:name="ASTERISM"
-   string="*"
-   />
-  <!-- * not in roff; just make bold hyphen -->
-  <xsl:output-character
-   char="&#x2043;"
-   unichar:name="HYPHEN BULLET"
-   unichar:entity="hybull"
-   string="@esc@fB-@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2044;"
-   unichar:name="FRACTION SLASH"
-   string="@esc@(sl"
-   />
-  <!-- * not in roff -->
-  <xsl:output-character
-   char="&#x2045;"
-   unichar:name="LEFT SQUARE BRACKET WITH QUILL"
-   string="["
-   />
-  <!-- * not in roff -->
-  <xsl:output-character
-   char="&#x2046;"
-   unichar:name="RIGHT SQUARE BRACKET WITH QUILL"
-   string="]"
-   />
-  <xsl:output-character
-   char="&#x2047;"
-   unichar:name="DOUBLE QUESTION MARK"
-   string="??"
-   />
-  <xsl:output-character
-   char="&#x2048;"
-   unichar:name="QUESTION EXCLAMATION MARK"
-   string="?!"
-   />
-  <xsl:output-character
-   char="&#x2049;"
-   unichar:name="EXCLAMATION QUESTION MARK"
-   string="!?"
-   />
-  <!-- * not in roff -->
-  <xsl:output-character
-   char="&#x204a;"
-   unichar:name="TIRONIAN SIGN ET"
-   string="7"
-   />
-  <!-- * not in roff; just replace with un-reversed pilcrow -->
-  <xsl:output-character
-   char="&#x204b;"
-   unichar:name="REVERSED PILCROW SIGN"
-   string="@esc@(ps"
-   />
-  <!-- * not in roff; just make regular bullet -->
-  <xsl:output-character
-   char="&#x204c;"
-   unichar:name="BLACK LEFTWARDS BULLET"
-   string="@esc@(bu"
-   />
-  <!-- * not in roff; just make regular bullet -->
-  <xsl:output-character
-   char="&#x204d;"
-   unichar:name="BLACK RIGHTWARDS BULLET"
-   string="@esc@(bu"
-   />
-  <xsl:output-character
-   char="&#x204e;"
-   unichar:name="LOW ASTERISK"
-   string="*"
-   />
-
-  <!-- * ............................................................... -->
-  <!-- *   Remaining General Punctuation -->
-  <!-- *   from x2050 to x206f -->
-  <!-- *   only map a couple of these -->
-  <!-- * ............................................................... -->
-
-  <!-- * basically same as a normal space -->
-  <xsl:output-character
-   char="&#x205f;"
-   unichar:name="MEDIUM MATHEMATICAL SPACE"
-   string=" "
-   />
-  <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, -->
-  <!-- * Line Breaking Properties"[1] says: -->
-  <!-- * -->
-  <!-- *   The word joiner character [x2060 a.k.a "WJ"] is the preferred -->
-  <!-- *   choice for an invisible character to keep other characters -->
-  <!-- *   together that would otherwise be split across the line at a direct -->
-  <!-- *   break. The character FEFF has the same effect, but because it is -->
-  <!-- *   also used in an unrelated way as a byte order mark, the use of the -->
-  <!-- *   WJ as the preferred interword glue simplifies the handling of FEFF. -->
-  <!-- * -->
-  <!-- * [1] http://www.unicode.org/reports/tr14/ -->
-  <!-- * -->
-  <!-- * The groff docs seem ambiguous about whether \& is a joiner and -->
-  <!-- * prevents breaks, but, based on testing, seems like it does -->
-  <xsl:output-character
-   char="&#x2060;"
-   unichar:name="WORD JOINER"
-   string="@esc@&amp;"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: General Punctuation -->
-  <!-- * ***************************************************************** -->
-  
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Superscripts and Subscripts -->
-  <!-- *    x2070 to x209f -->
-  <!-- *    For superscripts, just do a^n thing -->
-  <!-- *    For subscripts, just do a_n -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x2070;"
-   unichar:name="SUPERSCRIPT ZERO"
-   string="^0"
-   />
-  <xsl:output-character
-   char="&#x2071;"
-   unichar:name="SUPERSCRIPT LATIN SMALL LETTER I"
-   string="^i"
-   />
-  <xsl:output-character
-   char="&#x2074;"
-   unichar:name="SUPERSCRIPT FOUR"
-   string="^4"
-   />
-  <xsl:output-character
-   char="&#x2075;"
-   unichar:name="SUPERSCRIPT FIVE"
-   string="^5"
-   />
-  <xsl:output-character
-   char="&#x2076;"
-   unichar:name="SUPERSCRIPT SIX"
-   string="^6"
-   />
-  <xsl:output-character
-   char="&#x2077;"
-   unichar:name="SUPERSCRIPT SEVEN"
-   string="^7"
-   />
-  <xsl:output-character
-   char="&#x2078;"
-   unichar:name="SUPERSCRIPT EIGHT"
-   string="^8"
-   />
-  <xsl:output-character
-   char="&#x2079;"
-   unichar:name="SUPERSCRIPT NINE"
-   string="^9"
-   />
-  <xsl:output-character
-   char="&#x207a;"
-   unichar:name="SUPERSCRIPT PLUS SIGN"
-   string="^+"
-   />
-  <xsl:output-character
-   char="&#x207b;"
-   unichar:name="SUPERSCRIPT MINUS"
-   string="^-"
-   />
-  <xsl:output-character
-   char="&#x207c;"
-   unichar:name="SUPERSCRIPT EQUALS SIGN"
-   string="^="
-   />
-  <xsl:output-character
-   char="&#x207d;"
-   unichar:name="SUPERSCRIPT LEFT PARENTHESIS"
-   string="^("
-   />
-  <xsl:output-character
-   char="&#x207e;"
-   unichar:name="SUPERSCRIPT RIGHT PARENTHESIS"
-   string="^)"
-   />
-  <xsl:output-character
-   char="&#x207f;"
-   unichar:name="SUPERSCRIPT LATIN SMALL LETTER N"
-   string="^n"
-   />
-  <xsl:output-character
-   char="&#x2080;"
-   unichar:name="SUBSCRIPT ZERO"
-   string="_0"
-   />
-  <xsl:output-character
-   char="&#x2081;"
-   unichar:name="SUBSCRIPT ONE"
-   string="_1"
-   />
-  <xsl:output-character
-   char="&#x2082;"
-   unichar:name="SUBSCRIPT TWO"
-   string="_2"
-   />
-  <xsl:output-character
-   char="&#x2083;"
-   unichar:name="SUBSCRIPT THREE"
-   string="_3"
-   />
-  <xsl:output-character
-   char="&#x2084;"
-   unichar:name="SUBSCRIPT FOUR"
-   string="_4"
-   />
-  <xsl:output-character
-   char="&#x2085;"
-   unichar:name="SUBSCRIPT FIVE"
-   string="_5"
-   />
-  <xsl:output-character
-   char="&#x2086;"
-   unichar:name="SUBSCRIPT SIX"
-   string="_6"
-   />
-  <xsl:output-character
-   char="&#x2087;"
-   unichar:name="SUBSCRIPT SEVEN"
-   string="_7"
-   />
-  <xsl:output-character
-   char="&#x2088;"
-   unichar:name="SUBSCRIPT EIGHT"
-   string="_8"
-   />
-  <xsl:output-character
-   char="&#x2089;"
-   unichar:name="SUBSCRIPT NINE"
-   string="_9"
-   />
-  <xsl:output-character
-   char="&#x208a;"
-   unichar:name="SUBSCRIPT PLUS SIGN"
-   string="_+"
-   />
-  <xsl:output-character
-   char="&#x208b;"
-   unichar:name="SUBSCRIPT MINUS"
-   string="_-"
-   />
-  <xsl:output-character
-   char="&#x208c;"
-   unichar:name="SUBSCRIPT EQUALS SIGN"
-   string="_="
-   />
-  <xsl:output-character
-   char="&#x208d;"
-   unichar:name="SUBSCRIPT LEFT PARENTHESIS"
-   string="_("
-   />
-  <xsl:output-character
-   char="&#x208e;"
-   unichar:name="SUBSCRIPT RIGHT PARENTHESIS"
-   string="_)"
-   />
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Superscripts and Subscripts -->
-  <!-- *     x2070 to x209f -->
-  <!-- * ***************************************************************** -->
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Currency Symbols -->
-  <!-- *     x20a0 to x20b1 -->
-  <!-- *     No mappings for any of these; just spell out -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x20a0;"
-   unichar:name="EURO-CURRENCY SIGN"
-   string="EUR"
-   />
-  <xsl:output-character
-   char="&#x20a1;"
-   unichar:name="COLON SIGN"
-   string="COLON"
-   />
-  <xsl:output-character
-   char="&#x20a2;"
-   unichar:name="CRUZEIRO SIGN"
-   string="CRUZEIRO"
-   />
-  <xsl:output-character
-   char="&#x20a3;"
-   unichar:name="FRENCH FRANC SIGN"
-   string="FRANC"
-   />
-  <xsl:output-character
-   char="&#x20a4;"
-   unichar:name="LIRA SIGN"
-   string="LIRA"
-   />
-  <xsl:output-character
-   char="&#x20a5;"
-   unichar:name="MILL SIGN"
-   string="MILL"
-   />
-  <xsl:output-character
-   char="&#x20a6;"
-   unichar:name="NAIRA SIGN"
-   string="NAIRA"
-   />
-  <xsl:output-character
-   char="&#x20a7;"
-   unichar:name="PESETA SIGN"
-   string="PESETA"
-   />
-  <xsl:output-character
-   char="&#x20a8;"
-   unichar:name="RUPEE SIGN"
-   string="RUPEE"
-   />
-  <xsl:output-character
-   char="&#x20a9;"
-   unichar:name="WON SIGN"
-   string="WON"
-   />
-  <xsl:output-character
-   char="&#x20aa;"
-   unichar:name="NEW SHEQEL SIGN"
-   string="SHEQEL"
-   />
-  <xsl:output-character
-   char="&#x20ab;"
-   unichar:name="DONG SIGN"
-   string="DONG"
-   />
-  <xsl:output-character
-   char="&#x20ac;"
-   unichar:name="EURO SIGN"
-   string="EUR"
-   />
-  <xsl:output-character
-   char="&#x20ad;"
-   unichar:name="KIP SIGN"
-   string="KIP"
-   />
-  <xsl:output-character
-   char="&#x20ae;"
-   unichar:name="TUGRIK SIGN"
-   string="TUGRIK"
-   />
-  <xsl:output-character
-   char="&#x20af;"
-   unichar:name="DRACHMA SIGN"
-   string="DRACHMA"
-   />
-  <xsl:output-character
-   char="&#x20b0;"
-   unichar:name="GERMAN PENNY SIGN"
-   string="?"
-   />
-  <xsl:output-character
-   char="&#x20b1;"
-   unichar:name="PESO SIGN"
-   string="PESO"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Currency Symbols -->
-  <!-- *   x20a0 to x20b1 -->
-  <!-- * ***************************************************************** -->
-
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-  <!-- *   Combining Diacritical Marks for Symbols -->
-  <!-- *     x20do to x20ff -->
-  <!-- *     - do nothing - -->
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Letterlike Symbols -->
-  <!-- *     x2100 to x214b -->
-  <!-- * -->
-  <!-- *     No mappings for any of these, and nothing appropriate for -->
-  <!-- *     most of them; so, just spell out the ones that we can -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x2103;"
-   unichar:name="DEGREE CELSIUS"
-   string="@esc@(deC"
-   />
-  <xsl:output-character
-   char="&#x2105;"
-   unichar:name="CARE OF"
-   unichar:entity="incare"
-   string="c/o"
-   />
-  <xsl:output-character
-   char="&#x2109;"
-   unichar:name="DEGREE FAHRENHEIT"
-   string="@esc@(deF"
-   />
-  <!-- roff Ifraktur -->
-  <xsl:output-character
-   char="&#x2111;"
-   unichar:name="BLACK-LETTER CAPITAL I"
-   string="@esc@(Im"
-   />
-  <xsl:output-character
-   char="&#x2113;"
-   unichar:name="SCRIPT SMALL L"
-   unichar:entity="ell"
-   string="l"
-   />
-  <xsl:output-character
-   char="&#x2116;"
-   unichar:name="NUMERO SIGN"
-   unichar:entity="numero"
-   string="No."
-   />
-  <xsl:output-character
-   char="&#x2118;"
-   unichar:name="SCRIPT CAPITAL P"
-   unichar:entity="weierp"
-   string="@esc@(wp"
-   />
-  <xsl:output-character
-   char="&#x211c;"
-   unichar:name="BLACK-LETTER CAPITAL R"
-   unichar:entity="real"
-   string="@esc@(Re"
-   />
-  <xsl:output-character
-   char="&#x211e;"
-   unichar:name="PRESCRIPTION TAKE"
-   unichar:entity="rx"
-   string="Rx"
-   />
-  <xsl:output-character
-   char="&#x2120;"
-   unichar:name="SERVICE MARK"
-   string="sm"
-   />
-  <xsl:output-character
-   char="&#x2122;"
-   unichar:name="TRADE MARK SIGN"
-   unichar:entity="trade"
-   string="@esc@(tm"
-   />
-  <xsl:output-character
-   char="&#x2126;"
-   unichar:name="OHM SIGN"
-   unichar:entity="ohm"
-   string="@esc@(*W"
-   />
-  <xsl:output-character
-   char="&#x212a;"
-   unichar:name="KELVIN SIGN"
-   string="K"
-   />
-  <xsl:output-character
-   char="&#x212b;"
-   unichar:name="ANGSTROM SIGN"
-   unichar:entity="angst"
-   string="@esc@(oA"
-   />
-  <xsl:output-character
-   char="&#x2135;"
-   unichar:name="ALEF SYMBOL"
-   unichar:entity="aleph"
-   string="@esc@(Ah"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Letterlike Symbols -->
-  <!-- *     x2100 to x214b -->
-  <!-- * ***************************************************************** -->
-  
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Number Forms -->
-  <!-- *     x2150 to x218f -->
-  <!-- * -->
-  <!-- *   No mappings for any of these, and nothing appropriate for most -->
-  <!-- *   of them; so, just spell out the ones that we can -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x2153;"
-   unichar:name="VULGAR FRACTION ONE THIRD"
-   unichar:entity="frac13"
-   string="1/3"
-   />
-  <xsl:output-character
-   char="&#x2154;"
-   unichar:name="VULGAR FRACTION TWO THIRDS"
-   unichar:entity="frac23"
-   string="2/3"
-   />
-  <xsl:output-character
-   char="&#x2155;"
-   unichar:name="VULGAR FRACTION ONE FIFTH"
-   unichar:entity="frac15"
-   string="1/5"
-   />
-  <xsl:output-character
-   char="&#x2156;"
-   unichar:name="VULGAR FRACTION TWO FIFTHS"
-   unichar:entity="frac25"
-   string="2/5"
-   />
-  <xsl:output-character
-   char="&#x2157;"
-   unichar:name="VULGAR FRACTION THREE FIFTHS"
-   unichar:entity="frac35"
-   string="3/5"
-   />
-  <xsl:output-character
-   char="&#x2158;"
-   unichar:name="VULGAR FRACTION FOUR FIFTHS"
-   unichar:entity="frac45"
-   string="4/5"
-   />
-  <xsl:output-character
-   char="&#x2159;"
-   unichar:name="VULGAR FRACTION ONE SIXTH"
-   unichar:entity="frac16"
-   string="1/6"
-   />
-  <xsl:output-character
-   char="&#x215a;"
-   unichar:name="VULGAR FRACTION FIVE SIXTHS"
-   unichar:entity="frac56"
-   string="5/6"
-   />
-  <xsl:output-character
-   char="&#x215b;"
-   unichar:name="VULGAR FRACTION ONE EIGHTH"
-   unichar:entity="frac18"
-   string="1/8"
-   />
-  <xsl:output-character
-   char="&#x215c;"
-   unichar:name="VULGAR FRACTION THREE EIGHTHS"
-   unichar:entity="frac38"
-   string="3/8"
-   />
-  <xsl:output-character
-   char="&#x215d;"
-   unichar:name="VULGAR FRACTION FIVE EIGHTHS"
-   unichar:entity="frac58"
-   string="5/8"
-   />
-  <xsl:output-character
-   char="&#x215e;"
-   unichar:name="VULGAR FRACTION SEVEN EIGHTHS"
-   unichar:entity="frac78"
-   string="7/8"
-   />
-  <xsl:output-character
-   char="&#x215f;"
-   unichar:name="FRACTION NUMERATOR ONE"
-   string="1/"
-   />
-  <xsl:output-character
-   char="&#x2160;"
-   unichar:name="ROMAN NUMERAL ONE"
-   string="I"
-   />
-  <xsl:output-character
-   char="&#x2161;"
-   unichar:name="ROMAN NUMERAL TWO"
-   string="II"
-   />
-  <xsl:output-character
-   char="&#x2162;"
-   unichar:name="ROMAN NUMERAL THREE"
-   string="III"
-   />
-  <xsl:output-character
-   char="&#x2163;"
-   unichar:name="ROMAN NUMERAL FOUR"
-   string="IV"
-   />
-  <xsl:output-character
-   char="&#x2164;"
-   unichar:name="ROMAN NUMERAL FIVE"
-   string="V"
-   />
-  <xsl:output-character
-   char="&#x2165;"
-   unichar:name="ROMAN NUMERAL SIX"
-   string="VI"
-   />
-  <xsl:output-character
-   char="&#x2166;"
-   unichar:name="ROMAN NUMERAL SEVEN"
-   string="VII"
-   />
-  <xsl:output-character
-   char="&#x2167;"
-   unichar:name="ROMAN NUMERAL EIGHT"
-   string="VIII"
-   />
-  <xsl:output-character
-   char="&#x2168;"
-   unichar:name="ROMAN NUMERAL NINE"
-   string="IX"
-   />
-  <xsl:output-character
-   char="&#x2169;"
-   unichar:name="ROMAN NUMERAL TEN"
-   string="X"
-   />
-  <xsl:output-character
-   char="&#x216a;"
-   unichar:name="ROMAN NUMERAL ELEVEN"
-   string="XI"
-   />
-  <xsl:output-character
-   char="&#x216b;"
-   unichar:name="ROMAN NUMERAL TWELVE"
-   string="XII"
-   />
-  <xsl:output-character
-   char="&#x216c;"
-   unichar:name="ROMAN NUMERAL FIFTY"
-   string="L"
-   />
-  <xsl:output-character
-   char="&#x216d;"
-   unichar:name="ROMAN NUMERAL ONE HUNDRED"
-   string="C"
-   />
-  <xsl:output-character
-   char="&#x216e;"
-   unichar:name="ROMAN NUMERAL FIVE HUNDRED"
-   string="D"
-   />
-  <xsl:output-character
-   char="&#x216f;"
-   unichar:name="ROMAN NUMERAL ONE THOUSAND"
-   string="M"
-   />
-  <xsl:output-character
-   char="&#x2170;"
-   unichar:name="SMALL ROMAN NUMERAL ONE"
-   string="i"
-   />
-  <xsl:output-character
-   char="&#x2171;"
-   unichar:name="SMALL ROMAN NUMERAL TWO"
-   string="ii"
-   />
-  <xsl:output-character
-   char="&#x2172;"
-   unichar:name="SMALL ROMAN NUMERAL THREE"
-   string="iii"
-   />
-  <xsl:output-character
-   char="&#x2173;"
-   unichar:name="SMALL ROMAN NUMERAL FOUR"
-   string="iv"
-   />
-  <xsl:output-character
-   char="&#x2174;"
-   unichar:name="SMALL ROMAN NUMERAL FIVE"
-   string="v"
-   />
-  <xsl:output-character
-   char="&#x2175;"
-   unichar:name="SMALL ROMAN NUMERAL SIX"
-   string="vi"
-   />
-  <xsl:output-character
-   char="&#x2176;"
-   unichar:name="SMALL ROMAN NUMERAL SEVEN"
-   string="vii"
-   />
-  <xsl:output-character
-   char="&#x2177;"
-   unichar:name="SMALL ROMAN NUMERAL EIGHT"
-   string="viii"
-   />
-  <xsl:output-character
-   char="&#x2178;"
-   unichar:name="SMALL ROMAN NUMERAL NINE"
-   string="ix"
-   />
-  <xsl:output-character
-   char="&#x2179;"
-   unichar:name="SMALL ROMAN NUMERAL TEN"
-   string="x"
-   />
-  <xsl:output-character
-   char="&#x217a;"
-   unichar:name="SMALL ROMAN NUMERAL ELEVEN"
-   string="xi"
-   />
-  <xsl:output-character
-   char="&#x217b;"
-   unichar:name="SMALL ROMAN NUMERAL TWELVE"
-   string="xii"
-   />
-  <xsl:output-character
-   char="&#x217c;"
-   unichar:name="SMALL ROMAN NUMERAL FIFTY"
-   string="l"
-   />
-  <xsl:output-character
-   char="&#x217d;"
-   unichar:name="SMALL ROMAN NUMERAL ONE HUNDRED"
-   string="c"
-   />
-  <xsl:output-character
-   char="&#x217e;"
-   unichar:name="SMALL ROMAN NUMERAL FIVE HUNDRED"
-   string="d"
-   />
-  <xsl:output-character
-   char="&#x217f;"
-   unichar:name="SMALL ROMAN NUMERAL ONE THOUSAND"
-   string="m"
-   />
-  <xsl:output-character
-   char="&#x2180;"
-   unichar:name="ROMAN NUMERAL ONE THOUSAND C D"
-   string="CD"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Number Forms -->
-  <!-- *     x2150 to x218f -->
-  <!-- * ***************************************************************** -->
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Arrows -->
-  <!-- *   x2190 to x21ff -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x2190;"
-   unichar:name="LEFTWARDS ARROW"
-   unichar:entity="larr"
-   string="@esc@(&lt;-"
-   />
-  <xsl:output-character
-   char="&#x2191;"
-   unichar:name="UPWARDS ARROW"
-   unichar:entity="uarr"
-   string="@esc@(ua"
-   />
-  <xsl:output-character
-   char="&#x2192;"
-   unichar:name="RIGHTWARDS ARROW"
-   unichar:entity="rarr"
-   string="@esc@(->"
-   />
-  <xsl:output-character
-   char="&#x2193;"
-   unichar:name="DOWNWARDS ARROW"
-   unichar:entity="darr"
-   string="@esc@(da"
-   />
-  <xsl:output-character
-   char="&#x2194;"
-   unichar:name="LEFT RIGHT ARROW"
-   unichar:entity="harr"
-   string="@esc@(&lt;>"
-   />
-  <xsl:output-character
-   char="&#x2195;"
-   unichar:name="UP DOWN ARROW"
-   unichar:entity="varr"
-   string="@esc@(va"
-   />
-  <xsl:output-character
-   char="&#x21b5;"
-   unichar:name="DOWNWARDS ARROW WITH CORNER LEFTWARDS"
-   unichar:entity="crarr"
-   string="@esc@(CR"
-   />
-  <xsl:output-character
-   char="&#x21d0;"
-   unichar:name="LEFTWARDS DOUBLE ARROW"
-   unichar:entity="lArr"
-   string="@esc@(la"
-   />
-  <xsl:output-character
-   char="&#x21d1;"
-   unichar:name="UPWARDS DOUBLE ARROW"
-   unichar:entity="uArr"
-   string="@esc@(uA"
-   />
-  <xsl:output-character
-   char="&#x21d2;"
-   unichar:name="RIGHTWARDS DOUBLE ARROW"
-   unichar:entity="rArr"
-   string="@esc@(rA"
-   />
-  <xsl:output-character
-   char="&#x21d3;"
-   unichar:name="DOWNWARDS DOUBLE ARROW"
-   unichar:entity="dArr"
-   string="@esc@(dA"
-   />
-  <xsl:output-character
-   char="&#x21d4;"
-   unichar:name="LEFT RIGHT DOUBLE ARROW"
-   unichar:entity="hArr"
-   string="@esc@(hA"
-   />
-  <!-- no roff equiv; render same as single arrow -->
-  <xsl:output-character
-   char="&#x21d5;"
-   unichar:name="UP DOWN DOUBLE ARROW"
-   unichar:entity="vArr"
-   string="@esc@(va"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Mathematical Operators -->
-  <!-- *     x2200 to x22ff -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x2200;"
-   unichar:name="FOR ALL"
-   unichar:entity="forall"
-   string="@esc@(fa"
-   />
-  <xsl:output-character
-   char="&#x2201;"
-   unichar:name="COMPLEMENT"
-   unichar:entity="comp"
-   string="C"
-   />
-  <xsl:output-character
-   char="&#x2202;"
-   unichar:name="PARTIAL DIFFERENTIAL"
-   unichar:entity="part"
-   string="@esc@(pd"
-   />
-  <xsl:output-character
-   char="&#x2203;"
-   unichar:name="THERE EXISTS"
-   unichar:entity="exist"
-   string="@esc@(te"
-   />
-  <!-- * no roff equiv  -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2204;" -->
-  <!-- *      unichar:name="THERE DOES NOT EXIST" -->
-  <!-- *      unichar:entity="nexist" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x2205;"
-   unichar:name="EMPTY SET"
-   unichar:entity="empty"
-   string="@esc@(es"
-   />
-  <xsl:output-character
-   char="&#x2206;"
-   unichar:name="INCREMENT"
-   string="@esc@(*D"
-   />
-  <xsl:output-character
-   char="&#x2207;"
-   unichar:name="NABLA"
-   unichar:entity="nabla"
-   string="@esc@(gr"
-   />
-  <xsl:output-character
-   char="&#x2208;"
-   unichar:name="ELEMENT OF"
-   unichar:entity="isin"
-   string="@esc@(mo"
-   />
-  <xsl:output-character
-   char="&#x2209;"
-   unichar:name="NOT AN ELEMENT OF"
-   unichar:entity="notin"
-   string="@esc@(nm"
-   />
-  <xsl:output-character
-   char="&#x220a;"
-   unichar:name="SMALL ELEMENT OF"
-   string="@esc@(mo"
-   />
-
-  <xsl:output-character
-   char="&#x220b;"
-   unichar:name="CONTAINS AS MEMBER"
-   unichar:entity="ni"
-   string="@esc@(st"
-   />
-  <!-- * not in roff  -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x220c;" -->
-  <!-- *      unichar:name="DOES NOT CONTAIN AS MEMBER" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x220d;"
-   unichar:name="SMALL CONTAINS AS MEMBER"
-   string="@esc@(st"
-   />
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x220e;" -->
-  <!-- *      unichar:name="END OF PROOF" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x220f;"
-   unichar:name="N-ARY PRODUCT"
-   unichar:entity="prod"
-   string="@esc@(product"
-   />
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2210;" -->
-  <!-- *      unichar:name="N-ARY COPRODUCT" -->
-  <!-- *      unichar:entity="coprod" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x2211;"
-   unichar:name="N-ARY SUMMATION"
-   unichar:entity="sum"
-   string="@esc@(sum"
-   />
-  <xsl:output-character
-   char="&#x2212;"
-   unichar:name="MINUS SIGN"
-   unichar:entity="minus"
-   string="@esc@-"
-   />
-  <xsl:output-character
-   char="&#x2213;"
-   unichar:name="MINUS-OR-PLUS SIGN"
-   unichar:entity="mnplus"
-   string="@esc@(+-"
-   />
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2214;" -->
-  <!-- *      unichar:name="DOT PLUS" -->
-  <!-- *      unichar:entity="plusdo" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x2215;"
-   unichar:name="DIVISION SLASH"
-   string="@esc@(f/"
-   />
-  <xsl:output-character
-    char="&#x2216;"
-    unichar:name="SET MINUS"
-    unichar:entity="setmn"
-    string="@esc@@esc@"
-   />
-  <xsl:output-character
-   char="&#x2217;"
-   unichar:name="ASTERISK OPERATOR"
-   unichar:entity="lowast"
-   string="@esc@(**"
-   />
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2218;" -->
-  <!-- *      unichar:name="RING OPERATOR" -->
-  <!-- *      unichar:entity="compfn" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x2219;"
-   unichar:name="BULLET OPERATOR"
-   string="@esc@(bu"
-   />
-  <xsl:output-character
-   char="&#x221a;"
-   unichar:name="SQUARE ROOT"
-   unichar:entity="radic"
-   string="@esc@(sr"
-   />
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x221b;" -->
-  <!-- *      unichar:name="CUBE ROOT" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x221c;" -->
-  <!-- *      unichar:name="FOURTH ROOT" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x221d;"
-   unichar:name="PROPORTIONAL TO"
-   unichar:entity="prop"
-   string="@esc@(pt"
-   />
-  <xsl:output-character
-   char="&#x221e;"
-   unichar:name="INFINITY"
-   unichar:entity="infin"
-   string="@esc@(if"
-   />
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x221f;" -->
-  <!-- *      unichar:name="RIGHT ANGLE" -->
-  <!-- *      unichar:entity="ang90" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x2220;"
-   unichar:name="ANGLE"
-   unichar:entity="ang"
-   string="@esc@(/_"
-   />
-
-  <!-- * 0x2221 to 0x2226 not in roff; -->
-  <!-- * but fake a parallel sign with vert bars -->
-
-  <xsl:output-character
-   char="&#x2225;"
-   unichar:name="PARALLEL TO"
-   unichar:entity="par"
-   string="@esc@(bv@esc@(bv"
-   />
-
-  <xsl:output-character
-   char="&#x2227;"
-   unichar:name="LOGICAL AND"
-   unichar:entity="and"
-   string="@esc@(AN"
-   />
-  <xsl:output-character
-   char="&#x2228;"
-   unichar:name="LOGICAL OR"
-   unichar:entity="or"
-   string="@esc@(OR"
-   />
-  <xsl:output-character
-   char="&#x2229;"
-   unichar:name="INTERSECTION"
-   unichar:entity="cap"
-   string="@esc@(ca"
-   />
-  <xsl:output-character
-   char="&#x222a;"
-   unichar:name="UNION"
-   unichar:entity="cup"
-   string="@esc@(cu"
-   />
-  <xsl:output-character
-   char="&#x222b;"
-   unichar:name="INTEGRAL"
-   unichar:entity="int"
-   string="@esc@(is"
-   />
-  <xsl:output-character
-   char="&#x222c;"
-   unichar:name="DOUBLE INTEGRAL"
-   string="@esc@(is@esc@(is"
-   />
-  <xsl:output-character
-   char="&#x222d;"
-   unichar:name="TRIPLE INTEGRAL"
-   string="@esc@(is@esc@(is@esc@(is"
-   />
-
-  <!-- * 0x222e to 0x2233 not in roff -->
-
-  <xsl:output-character
-   char="&#x2234;"
-   unichar:name="THEREFORE"
-   unichar:entity="there4"
-   string="@esc@(tf"
-   />
-
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2235;" -->
-  <!-- *      unichar:name="BECAUSE" -->
-  <!-- *      unichar:entity="becaus" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x2236;"
-   unichar:name="RATIO"
-   string=":"
-   />
-  <xsl:output-character
-   char="&#x2237;"
-   unichar:name="PROPORTION"
-   string="::"
-   />
-
-  <!-- * 0x2238 to 0x223b not in roff -->
-
-  <xsl:output-character
-   char="&#x223c;"
-   unichar:name="TILDE OPERATOR"
-   unichar:entity="sim"
-   string="@esc@(ti"
-   />
-
-  <!-- * 0x223d to 0x224b not in roff -->
-
-  <xsl:output-character
-   char="&#x2245;"
-   unichar:name="APPROXIMATELY EQUAL TO"
-   unichar:entity="cong"
-   string="@esc@(=~"
-   />
-
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2246;" -->
-  <!-- *      unichar:name="APPROXIMATELY BUT NOT ACTUALLY EQUAL TO" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2247;" -->
-  <!-- *      unichar:name="NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO" -->
-  <!-- *      unichar:entity="ncong" -->
-  <!-- *      /> -->
-
-  <xsl:output-character
-   char="&#x2248;"
-   unichar:name="ALMOST EQUAL TO"
-   unichar:entity="asymp"
-   string="@esc@(~~"
-   />
-
-  <!-- * x2249 to x2253 not in roff -->
-
-  <xsl:output-character
-   char="&#x2254;"
-   unichar:name="COLON EQUALS"
-   unichar:entity="colone"
-   string=":="
-   />
-  <xsl:output-character
-   char="&#x2255;"
-   unichar:name="EQUALS COLON"
-   unichar:entity="ecolon"
-   string="=:"
-   />
-
-  <!-- * x2256 to x2255 not in roff -->
-
-  <xsl:output-character
-   char="&#x225f;"
-   unichar:name="QUESTIONED EQUAL TO"
-   string="?="
-   />
-  <xsl:output-character
-   char="&#x2260;"
-   unichar:name="NOT EQUAL TO"
-   unichar:entity="ne"
-   string="@esc@(!="
-   />
-  <xsl:output-character
-   char="&#x2261;"
-   unichar:name="IDENTICAL TO"
-   unichar:entity="equiv"
-   string="@esc@(=="
-   />
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2262;" -->
-  <!-- *      unichar:name="NOT IDENTICAL TO" -->
-  <!-- *      unichar:entity="nequiv" -->
-  <!-- *      /> -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2263;" -->
-  <!-- *      unichar:name="STRICTLY EQUIVALENT TO" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x2264;"
-   unichar:name="LESS-THAN OR EQUAL TO"
-   unichar:entity="le"
-   string="@esc@(&lt;="
-   />
-  <xsl:output-character
-   char="&#x2265;"
-   unichar:name="GREATER-THAN OR EQUAL TO"
-   unichar:entity="ge"
-   string="@esc@(>="
-   />
-  <!-- * x2266 to x2269 not in roff -->
-
-  <xsl:output-character
-   char="&#x226a;"
-   unichar:name="MUCH LESS-THAN"
-   unichar:entity="Lt"
-   string="&lt;&lt;"
-   />
-  <xsl:output-character
-   char="&#x226b;"
-   unichar:name="MUCH GREATER-THAN"
-   unichar:entity="Gt"
-   string=">>"
-   />
-  <!-- * x226c to x2281 not in roff -->
-
-  <xsl:output-character
-   char="&#x2282;"
-   unichar:name="SUBSET OF"
-   unichar:entity="sub"
-   string="@esc@(sb"
-   />
-  <xsl:output-character
-   char="&#x2283;"
-   unichar:name="SUPERSET OF"
-   unichar:entity="sup"
-   string="@esc@(sp"
-   />
-  <xsl:output-character
-   char="&#x2284;"
-   unichar:name="NOT A SUBSET OF"
-   unichar:entity="nsub"
-   string="@esc@(nb"
-   />
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x2285;" -->
-  <!-- *      unichar:name="NOT A SUPERSET OF" -->
-  <!-- *      unichar:entity="nsup" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x2286;"
-   unichar:name="SUBSET OF OR EQUAL TO"
-   unichar:entity="sube"
-   string="@esc@(ib"
-   />
-  <xsl:output-character
-   char="&#x2287;"
-   unichar:name="SUPERSET OF OR EQUAL TO"
-   unichar:entity="supe"
-   string="@esc@(ip"
-   />
-  <!-- * x2288 to x2294 not in roff -->
-
-  <xsl:output-character
-   char="&#x2295;"
-   unichar:name="CIRCLED PLUS"
-   unichar:entity="oplus"
-   string="@esc@(c+"
-   />
-  <xsl:output-character
-   char="&#x2296;"
-   unichar:name="CIRCLED MINUS"
-   unichar:entity="ominus"
-   string="@esc@(c*"
-   />
-  <xsl:output-character
-   char="&#x2297;"
-   unichar:name="CIRCLED TIMES"
-   unichar:entity="otimes"
-   string="@esc@(c*"
-   />
-
-  <!-- * x2298 to x22a4 not in roff -->
-
-  <xsl:output-character
-   char="&#x22a5;"
-   unichar:name="UP TACK"
-   unichar:entity="bottom"
-   string="@esc@(pp"
-   />
-
-  <!-- * x22a6 to x22bf not in roff -->
-
-  <xsl:output-character
-   char="&#x22c0;"
-   unichar:name="N-ARY LOGICAL AND"
-   string="@esc@(AN"
-   />
-  <xsl:output-character
-   char="&#x22c1;"
-   unichar:name="N-ARY LOGICAL OR"
-   string="@esc@(OR"
-   />
-  <xsl:output-character
-   char="&#x22c2;"
-   unichar:name="N-ARY INTERSECTION"
-   string="@esc@(ca"
-   />
-  <xsl:output-character
-   char="&#x22c3;"
-   unichar:name="N-ARY UNION"
-   string="@esc@(cu"
-   />
-
-  <!-- * not in roff -->
-  <!-- *      <xsl:output-character -->
-  <!-- *      char="&#x22c4;" -->
-  <!-- *      unichar:name="DIAMOND OPERATOR" -->
-  <!-- *      unichar:entity="diam" -->
-  <!-- *      /> -->
-  <xsl:output-character
-   char="&#x22c5;"
-   unichar:name="DOT OPERATOR"
-   unichar:entity="sdot"
-   string="@esc@(md"
-   />
-  <xsl:output-character
-   char="&#x22c6;"
-   unichar:name="STAR OPERATOR"
-   unichar:entity="sstarf"
-   string="@esc@(**"
-   />
-  <!-- * x22c7 to x22cd not in roff -->
-
-  <xsl:output-character
-   char="&#x22ce;"
-   unichar:name="CURLY LOGICAL OR"
-   unichar:entity="cuvee"
-   string="@esc@(OR"
-   />
-  <xsl:output-character
-   char="&#x22cf;"
-   unichar:name="CURLY LOGICAL AND"
-   unichar:entity="cuwed"
-   string="@esc@(AN"
-   />
-
-  <!-- * x22d0 to x22d7 not in roff -->
-
-  <xsl:output-character
-   char="&#x22d8;"
-   unichar:name="VERY MUCH LESS-THAN"
-   unichar:entity="Ll"
-   string="&lt;&lt;&lt;"
-   />
-  <xsl:output-character
-   char="&#x22d9;"
-   unichar:name="VERY MUCH GREATER-THAN"
-   unichar:entity="Gg"
-   string=">>>"
-   />
-
-  <!-- * x22da to x22ee not in roff -->
-
-  <xsl:output-character
-   char="&#x22ef;"
-   unichar:name="MIDLINE HORIZONTAL ELLIPSIS"
-   string="@esc@&amp;..."
-   />
-
-  <!-- * x22fo to x22ff not in roff -->
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Mathematical Operators -->
-  <!-- * ***************************************************************** -->
-  
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-  <!-- *   Miscellaneous Technical -->
-  <!-- *     x2300 to x23ff -->
-  <!-- *     - do nothing except for angle brackets - -->
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
-  <xsl:output-character
-   char="&#x2329;"
-   unichar:name="LEFT-POINTING ANGLE BRACKET"
-   unichar:entity="lang"
-   string="@esc@(la"
-   />
-  <xsl:output-character
-   char="&#x232a;"
-   unichar:name="RIGHT-POINTING ANGLE BRACKET"
-   unichar:entity="rang"
-   string="@esc@(ra"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Control Pictures -->
-  <!-- *     x2400 to x243f -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x2400;"
-   unichar:name="SYMBOL FOR NULL"
-   string="NUL"
-   />
-  <xsl:output-character
-   char="&#x2401;"
-   unichar:name="SYMBOL FOR START OF HEADING"
-   string="SOH"
-   />
-  <xsl:output-character
-   char="&#x2402;"
-   unichar:name="SYMBOL FOR START OF TEXT"
-   string="STX"
-   />
-  <xsl:output-character
-   char="&#x2403;"
-   unichar:name="SYMBOL FOR END OF TEXT"
-   string="ETX"
-   />
-  <xsl:output-character
-   char="&#x2404;"
-   unichar:name="SYMBOL FOR END OF TRANSMISSION"
-   string="EOT"
-   />
-  <xsl:output-character
-   char="&#x2405;"
-   unichar:name="SYMBOL FOR ENQUIRY"
-   string="ENQ"
-   />
-  <xsl:output-character
-   char="&#x2406;"
-   unichar:name="SYMBOL FOR ACKNOWLEDGE"
-   string="ACK"
-   />
-  <xsl:output-character
-   char="&#x2407;"
-   unichar:name="SYMBOL FOR BELL"
-   string="BEL"
-   />
-  <xsl:output-character
-   char="&#x2408;"
-   unichar:name="SYMBOL FOR BACKSPACE"
-   string="BS"
-   />
-  <xsl:output-character
-   char="&#x2409;"
-   unichar:name="SYMBOL FOR HORIZONTAL TABULATION"
-   string="HT"
-   />
-  <xsl:output-character
-   char="&#x240a;"
-   unichar:name="SYMBOL FOR LINE FEED"
-   string="LF"
-   />
-  <xsl:output-character
-   char="&#x240b;"
-   unichar:name="SYMBOL FOR VERTICAL TABULATION"
-   string="VT"
-   />
-  <xsl:output-character
-   char="&#x240c;"
-   unichar:name="SYMBOL FOR FORM FEED"
-   string="FF"
-   />
-  <xsl:output-character
-   char="&#x240d;"
-   unichar:name="SYMBOL FOR CARRIAGE RETURN"
-   string="CR"
-   />
-  <xsl:output-character
-   char="&#x240e;"
-   unichar:name="SYMBOL FOR SHIFT OUT"
-   string="SO"
-   />
-  <xsl:output-character
-   char="&#x240f;"
-   unichar:name="SYMBOL FOR SHIFT IN"
-   string="SI"
-   />
-  <xsl:output-character
-   char="&#x2410;"
-   unichar:name="SYMBOL FOR DATA LINK ESCAPE"
-   string="DLE"
-   />
-  <xsl:output-character
-   char="&#x2411;"
-   unichar:name="SYMBOL FOR DEVICE CONTROL ONE"
-   string="DC1"
-   />
-  <xsl:output-character
-   char="&#x2412;"
-   unichar:name="SYMBOL FOR DEVICE CONTROL TWO"
-   string="DC2"
-   />
-  <xsl:output-character
-   char="&#x2413;"
-   unichar:name="SYMBOL FOR DEVICE CONTROL THREE"
-   string="DC3"
-   />
-  <xsl:output-character
-   char="&#x2414;"
-   unichar:name="SYMBOL FOR DEVICE CONTROL FOUR"
-   string="DC4"
-   />
-  <xsl:output-character
-   char="&#x2415;"
-   unichar:name="SYMBOL FOR NEGATIVE ACKNOWLEDGE"
-   string="NAK"
-   />
-  <xsl:output-character
-   char="&#x2416;"
-   unichar:name="SYMBOL FOR SYNCHRONOUS IDLE"
-   string="SYN"
-   />
-  <xsl:output-character
-   char="&#x2417;"
-   unichar:name="SYMBOL FOR END OF TRANSMISSION BLOCK"
-   string="ETB"
-   />
-  <xsl:output-character
-   char="&#x2418;"
-   unichar:name="SYMBOL FOR CANCEL"
-   string="CAN"
-   />
-  <xsl:output-character
-   char="&#x2419;"
-   unichar:name="SYMBOL FOR END OF MEDIUM"
-   string="EM"
-   />
-  <xsl:output-character
-   char="&#x241a;"
-   unichar:name="SYMBOL FOR SUBSTITUTE"
-   string="SUB"
-   />
-  <xsl:output-character
-   char="&#x241b;"
-   unichar:name="SYMBOL FOR ESCAPE"
-   string="ESC"
-   />
-  <xsl:output-character
-   char="&#x241c;"
-   unichar:name="SYMBOL FOR FILE SEPARATOR"
-   string="FS"
-   />
-  <xsl:output-character
-   char="&#x241d;"
-   unichar:name="SYMBOL FOR GROUP SEPARATOR"
-   string="GS"
-   />
-  <xsl:output-character
-   char="&#x241e;"
-   unichar:name="SYMBOL FOR RECORD SEPARATOR"
-   string="RS"
-   />
-  <xsl:output-character
-   char="&#x241f;"
-   unichar:name="SYMBOL FOR UNIT SEPARATOR"
-   string="US"
-   />
-  <xsl:output-character
-   char="&#x2420;"
-   unichar:name="SYMBOL FOR SPACE"
-   string="SP"
-   />
-  <xsl:output-character
-   char="&#x2421;"
-   unichar:name="SYMBOL FOR DELETE"
-   string="DEL"
-   />
-  <!-- * no roff equiv; just use real space -->
-  <xsl:output-character
-   char="&#x2422;"
-   unichar:name="BLANK SYMBOL"
-   string=" "
-   />
-  <!-- * no roff equiv; just use real space -->
-  <xsl:output-character
-   char="&#x2423;"
-   unichar:name="OPEN BOX"
-   unichar:entity="blank"
-   string=" "
-   />
-  <xsl:output-character
-   char="&#x2424;"
-   unichar:name="SYMBOL FOR NEWLINE"
-   string="NL"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Control Pictures -->
-  <!-- * ***************************************************************** -->
-
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-  <!-- *   Optical Character Recognition -->
-  <!-- *     x2440 to x24ff -->
-  <!-- *     - do nothing - -->
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Enclosed Alphanumerics -->
-  <!-- *     x2460 to x24ff -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x2460;"
-   unichar:name="CIRCLED DIGIT ONE"
-   string="1"
-   />
-  <xsl:output-character
-   char="&#x2461;"
-   unichar:name="CIRCLED DIGIT TWO"
-   string="2"
-   />
-  <xsl:output-character
-   char="&#x2462;"
-   unichar:name="CIRCLED DIGIT THREE"
-   string="3"
-   />
-  <xsl:output-character
-   char="&#x2463;"
-   unichar:name="CIRCLED DIGIT FOUR"
-   string="4"
-   />
-  <xsl:output-character
-   char="&#x2464;"
-   unichar:name="CIRCLED DIGIT FIVE"
-   string="5"
-   />
-  <xsl:output-character
-   char="&#x2465;"
-   unichar:name="CIRCLED DIGIT SIX"
-   string="6"
-   />
-  <xsl:output-character
-   char="&#x2466;"
-   unichar:name="CIRCLED DIGIT SEVEN"
-   string="7"
-   />
-  <xsl:output-character
-   char="&#x2467;"
-   unichar:name="CIRCLED DIGIT EIGHT"
-   string="8"
-   />
-  <xsl:output-character
-   char="&#x2468;"
-   unichar:name="CIRCLED DIGIT NINE"
-   string="9"
-   />
-  <xsl:output-character
-   char="&#x2469;"
-   unichar:name="CIRCLED NUMBER TEN"
-   string="10"
-   />
-  <xsl:output-character
-   char="&#x246a;"
-   unichar:name="CIRCLED NUMBER ELEVEN"
-   string="11"
-   />
-  <xsl:output-character
-   char="&#x246b;"
-   unichar:name="CIRCLED NUMBER TWELVE"
-   string="12"
-   />
-  <xsl:output-character
-   char="&#x246c;"
-   unichar:name="CIRCLED NUMBER THIRTEEN"
-   string="13"
-   />
-  <xsl:output-character
-   char="&#x246d;"
-   unichar:name="CIRCLED NUMBER FOURTEEN"
-   string="14"
-   />
-  <xsl:output-character
-   char="&#x246e;"
-   unichar:name="CIRCLED NUMBER FIFTEEN" 
-   string="15"
-  />
-  <xsl:output-character
-   char="&#x246f;"
-   unichar:name="CIRCLED NUMBER SIXTEEN"
-   string="16"
-   />
-  <xsl:output-character
-   char="&#x2470;"
-   unichar:name="CIRCLED NUMBER SEVENTEEN"
-   string="17"
-   />
-  <xsl:output-character
-   char="&#x2471;"
-   unichar:name="CIRCLED NUMBER EIGHTEEN"
-   string="18"
-   />
-  <xsl:output-character
-   char="&#x2472;"
-   unichar:name="CIRCLED NUMBER NINETEEN"
-   string="19"
-   />
-  <xsl:output-character
-   char="&#x2473;"
-   unichar:name="CIRCLED NUMBER TWENTY"
-   string="20"
-   />
-  <xsl:output-character
-   char="&#x2474;"
-   unichar:name="PARENTHESIZED DIGIT ONE"
-   string="(1)"
-   />
-  <xsl:output-character
-   char="&#x2475;"
-   unichar:name="PARENTHESIZED DIGIT TWO"
-   string="(2)"
-   />
-  <xsl:output-character
-   char="&#x2476;"
-   unichar:name="PARENTHESIZED DIGIT THREE"
-   string="(3)"
-   />
-  <xsl:output-character
-   char="&#x2477;"
-   unichar:name="PARENTHESIZED DIGIT FOUR"
-   string="(4)"
-   />
-  <xsl:output-character
-   char="&#x2478;"
-   unichar:name="PARENTHESIZED DIGIT FIVE"
-   string="(5)"
-   />
-  <xsl:output-character
-   char="&#x2479;"
-   unichar:name="PARENTHESIZED DIGIT SIX"
-   string="(6)"
-   />
-  <xsl:output-character
-   char="&#x247a;"
-   unichar:name="PARENTHESIZED DIGIT SEVEN"
-   string="(7)"
-   />
-  <xsl:output-character
-   char="&#x247b;"
-   unichar:name="PARENTHESIZED DIGIT EIGHT"
-   string="(8)"
-   />
-  <xsl:output-character
-   char="&#x247c;"
-   unichar:name="PARENTHESIZED DIGIT NINE"
-   string="(9)"
-   />
-  <xsl:output-character
-   char="&#x247d;"
-   unichar:name="PARENTHESIZED NUMBER TEN"
-   string="(10)"
-   />
-  <xsl:output-character
-   char="&#x247e;"
-   unichar:name="PARENTHESIZED NUMBER ELEVEN"
-   string="(11)"
-   />
-  <xsl:output-character
-   char="&#x247f;"
-   unichar:name="PARENTHESIZED NUMBER TWELVE"
-   string="(12)"
-   />
-  <xsl:output-character
-   char="&#x2480;"
-   unichar:name="PARENTHESIZED NUMBER THIRTEEN"
-   string="(13)"
-   />
-  <xsl:output-character
-   char="&#x2481;"
-   unichar:name="PARENTHESIZED NUMBER FOURTEEN"
-   string="(14)"
-   />
-  <xsl:output-character
-   char="&#x2482;"
-   unichar:name="PARENTHESIZED NUMBER FIFTEEN"
-   string="(15)"
-   />
-  <xsl:output-character
-   char="&#x2483;"
-   unichar:name="PARENTHESIZED NUMBER SIXTEEN"
-   string="(16)"
-   />
-  <xsl:output-character
-   char="&#x2484;"
-   unichar:name="PARENTHESIZED NUMBER SEVENTEEN"
-   string="(17)"
-   />
-  <xsl:output-character
-   char="&#x2485;"
-   unichar:name="PARENTHESIZED NUMBER EIGHTEEN"
-   string="(18)"
-   />
-  <xsl:output-character
-   char="&#x2486;"
-   unichar:name="PARENTHESIZED NUMBER NINETEEN"
-   string="(19)"
-   />
-  <xsl:output-character
-   char="&#x2487;"
-   unichar:name="PARENTHESIZED NUMBER TWENTY"
-   string="(20)"
-   />
-  <xsl:output-character
-   char="&#x2488;"
-   unichar:name="DIGIT ONE FULL STOP"
-   string="1."
-   />
-  <xsl:output-character
-   char="&#x2489;"
-   unichar:name="DIGIT TWO FULL STOP"
-   string="2."
-   />
-  <xsl:output-character
-   char="&#x248a;"
-   unichar:name="DIGIT THREE FULL STOP"
-   string="3."
-   />
-  <xsl:output-character
-   char="&#x248b;"
-   unichar:name="DIGIT FOUR FULL STOP"
-   string="4."
-   />
-  <xsl:output-character
-   char="&#x248c;"
-   unichar:name="DIGIT FIVE FULL STOP"
-   string="5."
-   />
-  <xsl:output-character
-   char="&#x248d;"
-   unichar:name="DIGIT SIX FULL STOP"
-   string="6."
-   />
-  <xsl:output-character
-   char="&#x248e;"
-   unichar:name="DIGIT SEVEN FULL STOP"
-   string="7."
-   />
-  <xsl:output-character
-   char="&#x248f;"
-   unichar:name="DIGIT EIGHT FULL STOP"
-   string="8."
-   />
-  <xsl:output-character
-   char="&#x2490;"
-   unichar:name="DIGIT NINE FULL STOP"
-   string="9."
-   />
-  <xsl:output-character
-   char="&#x2491;"
-   unichar:name="NUMBER TEN FULL STOP"
-   string="10."
-   />
-  <xsl:output-character
-   char="&#x2492;"
-   unichar:name="NUMBER ELEVEN FULL STOP"
-   string="11."
-   />
-  <xsl:output-character
-   char="&#x2493;"
-   unichar:name="NUMBER TWELVE FULL STOP"
-   string="12."
-   />
-  <xsl:output-character
-   char="&#x2494;"
-   unichar:name="NUMBER THIRTEEN FULL STOP"
-   string="13."
-   />
-  <xsl:output-character
-   char="&#x2495;"
-   unichar:name="NUMBER FOURTEEN FULL STOP"
-   string="14."
-   />
-  <xsl:output-character
-   char="&#x2496;"
-   unichar:name="NUMBER FIFTEEN FULL STOP"
-   string="15."
-   />
-  <xsl:output-character
-   char="&#x2497;"
-   unichar:name="NUMBER SIXTEEN FULL STOP"
-   string="16."
-   />
-  <xsl:output-character
-   char="&#x2498;"
-   unichar:name="NUMBER SEVENTEEN FULL STOP"
-   string="17."
-   />
-  <xsl:output-character
-   char="&#x2499;"
-   unichar:name="NUMBER EIGHTEEN FULL STOP"
-   string="18."
-   />
-  <xsl:output-character
-   char="&#x249a;"
-   unichar:name="NUMBER NINETEEN FULL STOP"
-   string="19."
-   />
-  <xsl:output-character
-   char="&#x249b;"
-   unichar:name="NUMBER TWENTY FULL STOP"
-   string="20."
-   />
-  <xsl:output-character
-   char="&#x249c;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER A"
-   string="(a)"
-   />
-  <xsl:output-character
-   char="&#x249d;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER B"
-   string="(b)"
-   />
-  <xsl:output-character
-   char="&#x249e;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER C"
-   string="(c)"
-   />
-  <xsl:output-character
-   char="&#x249f;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER D"
-   string="(d)"
-   />
-  <xsl:output-character
-   char="&#x24a0;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER E"
-   string="(e)"
-   />
-  <xsl:output-character
-   char="&#x24a1;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER F"
-   string="(f)"
-   />
-  <xsl:output-character
-   char="&#x24a2;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER G"
-   string="(g)"
-   />
-  <xsl:output-character
-   char="&#x24a3;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER H"
-   string="(h)"
-   />
-  <xsl:output-character
-   char="&#x24a4;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER I"
-   string="(i)"
-   />
-  <xsl:output-character
-   char="&#x24a5;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER J"
-   string="(j)"
-   />
-  <xsl:output-character
-   char="&#x24a6;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER K"
-   string="(k)"
-   />
-  <xsl:output-character
-   char="&#x24a7;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER L"
-   string="(l)"
-   />
-  <xsl:output-character
-   char="&#x24a8;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER M"
-   string="(m)"
-   />
-  <xsl:output-character
-   char="&#x24a9;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER N"
-   string="(n)"
-   />
-  <xsl:output-character
-   char="&#x24aa;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER O"
-   string="(o)"
-   />
-  <xsl:output-character
-   char="&#x24ab;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER P"
-   string="(p)"
-   />
-  <xsl:output-character
-   char="&#x24ac;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER Q"
-   string="(q)"
-   />
-  <xsl:output-character
-   char="&#x24ad;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER R"
-   string="(r)"
-   />
-  <xsl:output-character
-   char="&#x24ae;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER S"
-   string="(s)"
-   />
-  <xsl:output-character
-   char="&#x24af;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER T"
-   string="(t)"
-   />
-  <xsl:output-character
-   char="&#x24b0;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER U"
-   string="(u)"
-   />
-  <xsl:output-character
-   char="&#x24b1;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER V"
-   string="(v)"
-   />
-  <xsl:output-character
-   char="&#x24b2;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER W"
-   string="(w)"
-   />
-  <xsl:output-character
-   char="&#x24b3;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER X"
-   string="(x)"
-   />
-  <xsl:output-character
-   char="&#x24b4;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER Y"
-   string="(y)"
-   />
-  <xsl:output-character
-   char="&#x24b5;"
-   unichar:name="PARENTHESIZED LATIN SMALL LETTER Z"
-   string="(z)"
-   />
-  <xsl:output-character
-   char="&#x24b6;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER A"
-   string="A"
-   />
-  <xsl:output-character
-   char="&#x24b7;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER B"
-   string="B"
-   />
-  <xsl:output-character
-   char="&#x24b8;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER C"
-   string="C"
-   />
-  <xsl:output-character
-   char="&#x24b9;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER D"
-   string="D"
-   />
-  <xsl:output-character
-   char="&#x24ba;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER E"
-   string="E"
-   />
-  <xsl:output-character
-   char="&#x24bb;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER F"
-   string="F"
-   />
-  <xsl:output-character
-   char="&#x24bc;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER G"
-   string="G"
-   />
-  <xsl:output-character
-   char="&#x24bd;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER H"
-   string="H"
-   />
-  <xsl:output-character
-   char="&#x24be;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER I"
-   string="I"
-   />
-  <xsl:output-character
-   char="&#x24bf;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER J"
-   string="J"
-   />
-  <xsl:output-character
-   char="&#x24c0;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER K"
-   string="K"
-   />
-  <xsl:output-character
-   char="&#x24c1;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER L"
-   string="L"
-   />
-  <xsl:output-character
-   char="&#x24c2;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER M"
-   string="M"
-   />
-  <xsl:output-character
-   char="&#x24c3;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER N"
-   string="N"
-   />
-  <xsl:output-character
-   char="&#x24c4;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER O"
-   string="O"
-   />
-  <xsl:output-character
-   char="&#x24c5;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER P"
-   string="P"
-   />
-  <xsl:output-character
-   char="&#x24c6;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER Q"
-   string="Q"
-   />
-  <xsl:output-character
-   char="&#x24c7;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER R"
-   string="R"
-   />
-  <xsl:output-character
-   char="&#x24c8;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER S"
-   unichar:entity="oS"
-   string="S"
-   />
-  <xsl:output-character
-   char="&#x24c9;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER T"
-   string="T"
-   />
-  <xsl:output-character
-   char="&#x24ca;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER U"
-   string="U"
-   />
-  <xsl:output-character
-   char="&#x24cb;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER V"
-   string="V"
-   />
-  <xsl:output-character
-   char="&#x24cc;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER W"
-   string="W"
-   />
-  <xsl:output-character
-   char="&#x24cd;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER X"
-   string="X"
-   />
-  <xsl:output-character
-   char="&#x24ce;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER Y"
-   string="Y"
-   />
-  <xsl:output-character
-   char="&#x24cf;"
-   unichar:name="CIRCLED LATIN CAPITAL LETTER Z"
-   string="Z"
-   />
-  <xsl:output-character
-   char="&#x24d0;"
-   unichar:name="CIRCLED LATIN SMALL LETTER A"
-   string="a"
-   />
-  <xsl:output-character
-   char="&#x24d1;"
-   unichar:name="CIRCLED LATIN SMALL LETTER B"
-   string="b"
-   />
-  <xsl:output-character
-   char="&#x24d2;"
-   unichar:name="CIRCLED LATIN SMALL LETTER C"
-   string="c"
-   />
-  <xsl:output-character
-   char="&#x24d3;"
-   unichar:name="CIRCLED LATIN SMALL LETTER D"
-   string="d"
-   />
-  <xsl:output-character
-   char="&#x24d4;"
-   unichar:name="CIRCLED LATIN SMALL LETTER E"
-   string="e"
-   />
-  <xsl:output-character
-   char="&#x24d5;"
-   unichar:name="CIRCLED LATIN SMALL LETTER F"
-   string="f"
-   />
-  <xsl:output-character
-   char="&#x24d6;"
-   unichar:name="CIRCLED LATIN SMALL LETTER G"
-   string="g"
-   />
-  <xsl:output-character
-   char="&#x24d7;"
-   unichar:name="CIRCLED LATIN SMALL LETTER H"
-   string="h"
-   />
-  <xsl:output-character
-   char="&#x24d8;"
-   unichar:name="CIRCLED LATIN SMALL LETTER I"
-   string="i"
-   />
-  <xsl:output-character
-   char="&#x24d9;"
-   unichar:name="CIRCLED LATIN SMALL LETTER J"
-   string="j"
-   />
-  <xsl:output-character
-   char="&#x24da;"
-   unichar:name="CIRCLED LATIN SMALL LETTER K"
-   string="k"
-   />
-  <xsl:output-character
-   char="&#x24db;"
-   unichar:name="CIRCLED LATIN SMALL LETTER L"
-   string="l"
-   />
-  <xsl:output-character
-   char="&#x24dc;"
-   unichar:name="CIRCLED LATIN SMALL LETTER M"
-   string="m"
-   />
-  <xsl:output-character
-   char="&#x24dd;"
-   unichar:name="CIRCLED LATIN SMALL LETTER N"
-   string="n"
-   />
-  <xsl:output-character
-   char="&#x24de;"
-   unichar:name="CIRCLED LATIN SMALL LETTER O"
-   string="o"
-   />
-  <xsl:output-character
-   char="&#x24df;"
-   unichar:name="CIRCLED LATIN SMALL LETTER P"
-   string="p"
-   />
-  <xsl:output-character
-   char="&#x24e0;"
-   unichar:name="CIRCLED LATIN SMALL LETTER Q"
-   string="q"
-   />
-  <xsl:output-character
-   char="&#x24e1;"
-   unichar:name="CIRCLED LATIN SMALL LETTER R"
-   string="r"
-   />
-  <xsl:output-character
-   char="&#x24e2;"
-   unichar:name="CIRCLED LATIN SMALL LETTER S"
-   string="s"
-   />
-  <xsl:output-character
-   char="&#x24e3;"
-   unichar:name="CIRCLED LATIN SMALL LETTER T"
-   string="t"
-   />
-  <xsl:output-character
-   char="&#x24e4;"
-   unichar:name="CIRCLED LATIN SMALL LETTER U"
-   string="u"
-   />
-  <xsl:output-character
-   char="&#x24e5;"
-   unichar:name="CIRCLED LATIN SMALL LETTER V"
-   string="b"
-   />
-  <xsl:output-character
-   char="&#x24e6;"
-   unichar:name="CIRCLED LATIN SMALL LETTER W"
-   string="w"
-   />
-  <xsl:output-character
-   char="&#x24e7;"
-   unichar:name="CIRCLED LATIN SMALL LETTER X"
-   string="x"
-   />
-  <xsl:output-character
-   char="&#x24e8;"
-   unichar:name="CIRCLED LATIN SMALL LETTER Y"
-   string="y"
-   />
-  <xsl:output-character
-   char="&#x24e9;"
-   unichar:name="CIRCLED LATIN SMALL LETTER Z"
-   string="z"
-   />
-  <xsl:output-character
-   char="&#x24ea;"
-   unichar:name="CIRCLED DIGIT ZERO"
-   string="0"
-   />
-  <xsl:output-character
-   char="&#x24eb;"
-   unichar:name="NEGATIVE CIRCLED NUMBER ELEVEN"
-   string="11"
-   />
-  <xsl:output-character
-   char="&#x24ec;"
-   unichar:name="NEGATIVE CIRCLED NUMBER TWELVE"
-   string="12"
-   />
-  <xsl:output-character
-   char="&#x24ed;"
-   unichar:name="NEGATIVE CIRCLED NUMBER THIRTEEN"
-   string="13"
-   />
-  <xsl:output-character
-   char="&#x24ee;"
-   unichar:name="NEGATIVE CIRCLED NUMBER FOURTEEN"
-   string="14"
-   />
-  <xsl:output-character
-   char="&#x24ef;"
-   unichar:name="NEGATIVE CIRCLED NUMBER FIFTEEN"
-   string="15"
-   />
-  <xsl:output-character
-   char="&#x24f0;"
-   unichar:name="NEGATIVE CIRCLED NUMBER SIXTEEN"
-   string="16"
-   />
-  <xsl:output-character
-   char="&#x24f1;"
-   unichar:name="NEGATIVE CIRCLED NUMBER SEVENTEEN"
-   string="17"
-   />
-  <xsl:output-character
-   char="&#x24f2;"
-   unichar:name="NEGATIVE CIRCLED NUMBER EIGHTEEN"
-   string="18"
-   />
-  <xsl:output-character
-   char="&#x24f3;"
-   unichar:name="NEGATIVE CIRCLED NUMBER NINETEEN"
-   string="19"
-   />
-  <xsl:output-character
-   char="&#x24f4;"
-   unichar:name="NEGATIVE CIRCLED NUMBER TWENTY"
-   string="20"
-   />
-  <xsl:output-character
-   char="&#x24f5;"
-   unichar:name="DOUBLE CIRCLED DIGIT ONE"
-   string="1"
-   />
-  <xsl:output-character
-   char="&#x24f6;"
-   unichar:name="DOUBLE CIRCLED DIGIT TWO"
-   string="2"
-   />
-  <xsl:output-character
-   char="&#x24f7;"
-   unichar:name="DOUBLE CIRCLED DIGIT THREE"
-   string="3"
-   />
-  <xsl:output-character
-   char="&#x24f8;"
-   unichar:name="DOUBLE CIRCLED DIGIT FOUR"
-   string="4"
-   />
-  <xsl:output-character
-   char="&#x24f9;"
-   unichar:name="DOUBLE CIRCLED DIGIT FIVE"
-   string="5"
-   />
-  <xsl:output-character
-   char="&#x24fa;"
-   unichar:name="DOUBLE CIRCLED DIGIT SIX"
-   string="6"
-   />
-  <xsl:output-character
-   char="&#x24fb;"
-   unichar:name="DOUBLE CIRCLED DIGIT SEVEN"
-   string="7"
-   />
-  <xsl:output-character
-   char="&#x24fc;"
-   unichar:name="DOUBLE CIRCLED DIGIT EIGHT"
-   string="8"
-   />
-  <xsl:output-character
-   char="&#x24fd;"
-   unichar:name="DOUBLE CIRCLED DIGIT NINE"
-   string="9"
-   />
-  <xsl:output-character
-   char="&#x24fe;"
-   unichar:name="DOUBLE CIRCLED NUMBER TEN"
-   string="10"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Enclosed Alphanumerics -->
-  <!-- * ***************************************************************** -->
-
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-  <!-- *   Box Drawing -->
-  <!-- *     x2500 to x257f -->
-  <!-- *   Block Elements -->
-  <!-- *     x2580 to x259f -->
-  <!-- *   - do nothing - -->
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-  
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Geometric Shapes -->
-  <!-- *     x25a0 to x25f7 -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x25a1;"
-   unichar:name="WHITE SQUARE"
-   unichar:entity="squ"
-   string="@esc@(sq"
-   />
-  <xsl:output-character
-   char="&#x25a2;"
-   unichar:name="WHITE SQUARE WITH ROUNDED CORNERS"
-   string="@esc@(sq"
-   />
-  <xsl:output-character
-   char="&#x25ab;"
-   unichar:name="WHITE SMALL SQUARE"
-   string="@esc@(sq"
-   />
-  <xsl:output-character
-   char="&#x25ba;"
-   unichar:name="BLACK RIGHT-POINTING POINTER"
-   string="@esc@fB>@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x25bb;"
-   unichar:name="WHITE RIGHT-POINTING POINTER"
-   string=">"
-   />
-  <xsl:output-character
-   char="&#x25bc;"
-   unichar:name="BLACK DOWN-POINTING TRIANGLE"
-   string="@esc@fBv@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x25bd;"
-   unichar:name="WHITE DOWN-POINTING TRIANGLE"
-   unichar:entity="xdtri"
-   string="v"
-   />
-  <xsl:output-character
-   char="&#x25c4;"
-   unichar:name="BLACK LEFT-POINTING POINTER"
-   string="@esc@fB&lt;@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x25c5;"
-   unichar:name="WHITE LEFT-POINTING POINTER"
-   string="&lt;"
-   />
-  <xsl:output-character
-   char="&#x25c6;"
-   unichar:name="BLACK DIAMOND"
-   string="@esc@(DI"
-   />
-  <xsl:output-character
-   char="&#x25c7;"
-   unichar:name="WHITE DIAMOND"
-   string="@esc@(lz"
-   />
-  <xsl:output-character
-   char="&#x25ca;"
-   unichar:name="LOZENGE"
-   unichar:entity="loz"
-   string="@esc@(lz"
-   />
-  <xsl:output-character
-   char="&#x25cb;"
-   unichar:name="WHITE CIRCLE"
-   unichar:entity="cir"
-   string="@esc@(ci"
-   />
-  <xsl:output-character
-   char="&#x25cf;"
-   unichar:name="BLACK CIRCLE"
-   string="@esc@(bu"
-   />
-  <xsl:output-character
-   char="&#x25e6;"
-   unichar:name="WHITE BULLET"
-   string="@esc@(ci"
-   />
-  <xsl:output-character
-   char="&#x25ef;"
-   unichar:name="LARGE CIRCLE"
-   unichar:entity="xcirc"
-   string="@esc@(ci"
-   />
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Geometric Shapes -->
-  <!-- *   x25a0 to x25f7 -->
-  <!-- * ***************************************************************** -->
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Miscellaneous Symbols -->
-  <!-- *   x2600 to x26ff -->
-  <!-- * ***************************************************************** -->
-  
-  <xsl:output-character
-   char="&#x261a;"
-   unichar:name="BLACK LEFT POINTING INDEX"
-   string="@esc@(lh"
-   />
-  <xsl:output-character
-   char="&#x261b;"
-   unichar:name="BLACK RIGHT POINTING INDEX"
-   string="@esc@(rh)"
-   />
-  <xsl:output-character
-   char="&#x261c;"
-   unichar:name="WHITE LEFT POINTING INDEX"
-   string="@esc@(lh"
-   />
-  <xsl:output-character
-   char="&#x261e;"
-   unichar:name="WHITE RIGHT POINTING INDEX"
-   string="@esc@(rh)"
-   />
-  <xsl:output-character
-   char="&#x2660;"
-   unichar:name="BLACK SPADE SUIT"
-   unichar:entity="spades"
-   string="@esc@(SP"
-   />
-  <xsl:output-character
-   char="&#x2661;"
-   unichar:name="WHITE HEART SUIT"
-   string="@esc@(HE"
-   />
-  <xsl:output-character
-   char="&#x2662;"
-   unichar:name="WHITE DIAMOND SUIT"
-   string="@esc@(DI"
-   />
-  <xsl:output-character
-   char="&#x2663;"
-   unichar:name="BLACK CLUB SUIT"
-   unichar:entity="clubs"
-   string="@esc@(CL"
-   />
-  <xsl:output-character
-   char="&#x2664;"
-   unichar:name="WHITE SPADE SUIT"
-   string="@esc@(SP"
-   />
-  <xsl:output-character
-   char="&#x2665;"
-   unichar:name="BLACK HEART SUIT"
-   unichar:entity="hearts"
-   string="@esc@(HE"
-   />
-  <xsl:output-character
-   char="&#x2666;"
-   unichar:name="BLACK DIAMOND SUIT"
-   unichar:entity="diams"
-   string="@esc@(DI"
-   />
-  <xsl:output-character
-   char="&#x2667;"
-   unichar:name="WHITE CLUB SUIT"
-   string="@esc@(CL"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Miscellaneous Symbols -->
-  <!-- * ***************************************************************** -->
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Dingbats -->
-  <!-- *     x2700 to x27be -->
-  <!-- *     No roff equiv for most of these; just map to something close -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x2713;"
-   unichar:name="CHECK MARK"
-   unichar:entity="check"
-   string="@esc@(OK"
-   />
-  <xsl:output-character
-   char="&#x2714;"
-   unichar:name="HEAVY CHECK MARK"
-   string="@esc@fB@esc@(OK@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2715;"
-   unichar:name="MULTIPLICATION X"
-   string="@esc@(mu"
-   />
-  <xsl:output-character
-   char="&#x2716;"
-   unichar:name="HEAVY MULTIPLICATION X"
-   string="@esc@fB@esc@(mu@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2717;"
-   unichar:name="BALLOT X"
-   unichar:entity="cross"
-   string="@esc@(mu"
-   />
-  <xsl:output-character
-   char="&#x2718;"
-   unichar:name="HEAVY BALLOT X"
-   string="@esc@fB@esc@(mu@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2719;"
-   unichar:name="OUTLINED GREEK CROSS"
-   string="@esc@fB+@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x271a;"
-   unichar:name="HEAVY GREEK CROSS"
-   string="@esc@fB+@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x271b;"
-   unichar:name="OPEN CENTRE CROSS"
-   string="@esc@fB+@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x271c;"
-   unichar:name="HEAVY OPEN CENTRE CROSS"
-   string="@esc@fB+@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x271d;"
-   unichar:name="LATIN CROSS"
-   string="@esc@fB+@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x271e;"
-   unichar:name="SHADOWED WHITE LATIN CROSS"
-   string="@esc@fB+@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x271f;"
-   unichar:name="OUTLINED LATIN CROSS"
-   string="@esc@fB+@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2720;"
-   unichar:name="MALTESE CROSS"
-   unichar:entity="malt"
-   string="@esc@fB+@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2721;"
-   unichar:name="STAR OF DAVID"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2722;"
-   unichar:name="FOUR TEARDROP-SPOKED ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2723;"
-   unichar:name="FOUR BALLOON-SPOKED ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2724;"
-   unichar:name="HEAVY FOUR BALLOON-SPOKED ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2725;"
-   unichar:name="FOUR CLUB-SPOKED ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2726;"
-   unichar:name="BLACK FOUR POINTED STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2727;"
-   unichar:name="WHITE FOUR POINTED STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2729;"
-   unichar:name="STRESS OUTLINED WHITE STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x272a;"
-   unichar:name="CIRCLED WHITE STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x272b;"
-   unichar:name="OPEN CENTRE BLACK STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x272c;"
-   unichar:name="BLACK CENTRE WHITE STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x272d;"
-   unichar:name="OUTLINED BLACK STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x272e;"
-   unichar:name="HEAVY OUTLINED BLACK STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x272f;"
-   unichar:name="PINWHEEL STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2730;"
-   unichar:name="SHADOWED WHITE STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2731;"
-   unichar:name="HEAVY ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2732;"
-   unichar:name="OPEN CENTRE ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2733;"
-   unichar:name="EIGHT SPOKED ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2734;"
-   unichar:name="EIGHT POINTED BLACK STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2735;"
-   unichar:name="EIGHT POINTED PINWHEEL STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2736;"
-   unichar:name="SIX POINTED BLACK STAR"
-   unichar:entity="sext"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2737;"
-   unichar:name="EIGHT POINTED RECTILINEAR BLACK STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2738;"
-   unichar:name="HEAVY EIGHT POINTED RECTILINEAR BLACK STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2739;"
-   unichar:name="TWELVE POINTED BLACK STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x273a;"
-   unichar:name="SIXTEEN POINTED ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x273b;"
-   unichar:name="TEARDROP-SPOKED ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x273c;"
-   unichar:name="OPEN CENTRE TEARDROP-SPOKED ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x273d;"
-   unichar:name="HEAVY TEARDROP-SPOKED ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x273e;"
-   unichar:name="SIX PETALLED BLACK AND WHITE FLORETTE"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x273f;"
-   unichar:name="BLACK FLORETTE"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2740;"
-   unichar:name="WHITE FLORETTE"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2741;"
-   unichar:name="EIGHT PETALLED OUTLINED BLACK FLORETTE"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2742;"
-   unichar:name="CIRCLED OPEN CENTRE EIGHT POINTED STAR"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2743;"
-   unichar:name="HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2744;"
-   unichar:name="SNOWFLAKE"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2745;"
-   unichar:name="TIGHT TRIFOLIATE SNOWFLAKE"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2746;"
-   unichar:name="HEAVY CHEVRON SNOWFLAKE"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2747;"
-   unichar:name="SPARKLE"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2748;"
-   unichar:name="HEAVY SPARKLE"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2749;"
-   unichar:name="BALLOON-SPOKED ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x274a;"
-   unichar:name="EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x274b;"
-   unichar:name="HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x274d;"
-   unichar:name="SHADOWED WHITE CIRCLE"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x274f;"
-   unichar:name="LOWER RIGHT DROP-SHADOWED WHITE SQUARE"
-   string="@esc@(sq"
-   />
-  <xsl:output-character
-   char="&#x2750;"
-   unichar:name="UPPER RIGHT DROP-SHADOWED WHITE SQUARE"
-   string="@esc@(sq"
-   />
-  <xsl:output-character
-   char="&#x2751;"
-   unichar:name="LOWER RIGHT SHADOWED WHITE SQUARE"
-   string="@esc@(sq"
-   />
-  <xsl:output-character
-   char="&#x2752;"
-   unichar:name="UPPER RIGHT SHADOWED WHITE SQUARE"
-   string="@esc@(sq"
-   />
-  <xsl:output-character
-   char="&#x2756;"
-   unichar:name="BLACK DIAMOND MINUS WHITE X"
-   string="*"
-   />
-  <xsl:output-character
-   char="&#x2758;"
-   unichar:name="LIGHT VERTICAL BAR"
-   string="@esc@(bv"
-   />
-  <xsl:output-character
-   char="&#x2759;"
-   unichar:name="MEDIUM VERTICAL BAR"
-   string="@esc@fB@esc@(bv@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x275a;"
-   unichar:name="HEAVY VERTICAL BAR"
-   string="@esc@fB@esc@(bv@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x275b;"
-   unichar:name="HEAVY SINGLE TURNED COMMA QUOTATION MARK ORUNICHAR:NAMENT"
-   string="@esc@fB@esc@(oq@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x275c;"
-   unichar:name="HEAVY SINGLE COMMA QUOTATION MARK ORUNICHAR:NAMENT"
-   string="@esc@fB@esc@(cq@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x275d;"
-   unichar:name="HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORUNICHAR:NAMENT"
-   string="@esc@fB@esc@(lq@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x275e;"
-   unichar:name="HEAVY DOUBLE COMMA QUOTATION MARK ORUNICHAR:NAMENT"
-   string="@esc@fB@esc@(rq@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2761;"
-   unichar:name="CURVED STEM PARAGRAPH SIGN ORUNICHAR:NAMENT"
-   string="@esc@(ps"
-   />
-  <xsl:output-character
-   char="&#x2762;"
-   unichar:name="HEAVY EXCLAMATION MARK ORUNICHAR:NAMENT"
-   string="@esc@fB!@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2763;"
-   unichar:name="HEAVY HEART EXCLAMATION MARK ORUNICHAR:NAMENT"
-   string="@esc@fB!@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2764;"
-   unichar:name="HEAVY BLACK HEART"
-   string="@esc@fB@esc@(HE@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2765;"
-   unichar:name="ROTATED HEAVY BLACK HEART BULLET"
-   string="@esc@fB@esc@(HE@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2766;"
-   unichar:name="FLORAL HEART"
-   string="@esc@fB@esc@(HE@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2767;"
-   unichar:name="ROTATED FLORAL HEART BULLET"
-   string="@esc@fB@esc@(HE@esc@fR"
-   />
-  <xsl:output-character
-   char="&#x2776;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED DIGIT ONE"
-   string="1"
-   />
-  <xsl:output-character
-   char="&#x2777;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED DIGIT TWO"
-   string="2"
-   />
-  <xsl:output-character
-   char="&#x2778;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED DIGIT THREE"
-   string="3"
-   />
-  <xsl:output-character
-   char="&#x2779;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED DIGIT FOUR"
-   string="4"
-   />
-  <xsl:output-character
-   char="&#x277a;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED DIGIT FIVE"
-   string="5"
-   />
-  <xsl:output-character
-   char="&#x277b;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED DIGIT SIX"
-   string="6"
-   />
-  <xsl:output-character
-   char="&#x277c;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED DIGIT SEVEN"
-   string="7"
-   />
-  <xsl:output-character
-   char="&#x277d;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED DIGIT EIGHT"
-   string="8"
-   />
-  <xsl:output-character
-   char="&#x277e;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED DIGIT NINE"
-   string="9"
-   />
-  <xsl:output-character
-   char="&#x277f;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED NUMBER TEN"
-   string="10"
-   />
-  <xsl:output-character
-   char="&#x2780;"
-   unichar:name="DINGBAT CIRCLED SANS-SERIF DIGIT ONE"
-   string="1"
-   />
-  <xsl:output-character
-   char="&#x2781;"
-   unichar:name="DINGBAT CIRCLED SANS-SERIF DIGIT TWO"
-   string="2"
-   />
-  <xsl:output-character
-   char="&#x2782;"
-   unichar:name="DINGBAT CIRCLED SANS-SERIF DIGIT THREE"
-   string="3"
-   />
-  <xsl:output-character
-   char="&#x2783;"
-   unichar:name="DINGBAT CIRCLED SANS-SERIF DIGIT FOUR"
-   string="4"
-   />
-  <xsl:output-character
-   char="&#x2784;"
-   unichar:name="DINGBAT CIRCLED SANS-SERIF DIGIT FIVE"
-   string="5"
-   />
-  <xsl:output-character
-   char="&#x2785;"
-   unichar:name="DINGBAT CIRCLED SANS-SERIF DIGIT SIX"
-   string="6"
-   />
-  <xsl:output-character
-   char="&#x2786;"
-   unichar:name="DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN"
-   string="7"
-   />
-  <xsl:output-character
-   char="&#x2787;"
-   unichar:name="DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT"
-   string="8"
-   />
-  <xsl:output-character
-   char="&#x2788;"
-   unichar:name="DINGBAT CIRCLED SANS-SERIF DIGIT NINE"
-   string="9"
-   />
-  <xsl:output-character
-   char="&#x2789;"
-   unichar:name="DINGBAT CIRCLED SANS-SERIF NUMBER TEN"
-   string="10"
-   />
-  <xsl:output-character
-   char="&#x278a;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE"
-   string="1"
-   />
-  <xsl:output-character
-   char="&#x278b;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO"
-   string="2"
-   />
-  <xsl:output-character
-   char="&#x278c;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE"
-   string="3"
-   />
-  <xsl:output-character
-   char="&#x278d;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR"
-   string="4"
-   />
-  <xsl:output-character
-   char="&#x278e;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE"
-   string="5"
-   />
-  <xsl:output-character
-   char="&#x278f;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX"
-   string="6"
-   />
-  <xsl:output-character
-   char="&#x2790;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN"
-   string="7"
-   />
-  <xsl:output-character
-   char="&#x2791;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT"
-   string="8"
-   />
-  <xsl:output-character
-   char="&#x2792;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE"
-   string="9"
-   />
-  <xsl:output-character
-   char="&#x2793;"
-   unichar:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN"
-   string="10"
-   />
-  <xsl:output-character
-   char="&#x2794;"
-   unichar:name="HEAVY WIDE-HEADED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x2799;"
-   unichar:name="HEAVY RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x279b;"
-   unichar:name="DRAFTING POINT RIGHTWARDS ARROW"
-   string="@esc@(->"
-   />
-  <xsl:output-character
-   char="&#x279c;"
-   unichar:name="HEAVY ROUND-TIPPED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x279d;"
-   unichar:name="TRIANGLE-HEADED RIGHTWARDS ARROW"
-   string="@esc@(->"
-   />
-  <xsl:output-character
-   char="&#x279e;"
-   unichar:name="HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x279f;"
-   unichar:name="DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"
-   string="@esc@(->"
-   />
-  <xsl:output-character
-   char="&#x27a0;"
-   unichar:name="HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27a1;"
-   unichar:name="BLACK RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27a2;"
-   unichar:name="THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD"
-   string="@esc@(->"
-   />
-  <xsl:output-character
-   char="&#x27a3;"
-   unichar:name="THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD"
-   string="@esc@(->"
-   />
-  <xsl:output-character
-   char="&#x27a4;"
-   unichar:name="BLACK RIGHTWARDS ARROWHEAD"
-   string="@esc@(->"
-   />
-  <xsl:output-character
-   char="&#x27a7;"
-   unichar:name="SQUAT BLACK RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27a8;"
-   unichar:name="HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27a9;"
-   unichar:name="RIGHT-SHADED WHITE RIGHTWARDS ARROW"
-   string="@esc@(rA"
-   />
-  <xsl:output-character
-   char="&#x27aa;"
-   unichar:name="LEFT-SHADED WHITE RIGHTWARDS ARROW"
-   string="@esc@(rA"
-   />
-  <xsl:output-character
-   char="&#x27ab;"
-   unichar:name="BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW"
-   string="@esc@(rA"
-   />
-  <xsl:output-character
-   char="&#x27ac;"
-   unichar:name="FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW"
-   string="@esc@(rA"
-   />
-  <xsl:output-character
-   char="&#x27ad;"
-   unichar:name="HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
-   string="@esc@(rA"
-   />
-  <xsl:output-character
-   char="&#x27ae;"
-   unichar:name="HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
-   string="@esc@(rA"
-   />
-  <xsl:output-character
-   char="&#x27af;"
-   unichar:name="NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
-   string="@esc@(rA"
-   />
-  <xsl:output-character
-   char="&#x27b1;"
-   unichar:name="NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
-   string="@esc@(rA"
-   />
-  <xsl:output-character
-   char="&#x27b2;"
-   unichar:name="CIRCLED HEAVY WHITE RIGHTWARDS ARROW"
-   string="@esc@(rA"
-   />
-  <xsl:output-character
-   char="&#x27b3;"
-   unichar:name="WHITE-FEATHERED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27b4;"
-   unichar:name="BLACK-FEATHERED SOUTH EAST ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27b5;"
-   unichar:name="BLACK-FEATHERED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27b6;"
-   unichar:name="BLACK-FEATHERED NORTH EAST ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27b7;"
-   unichar:name="HEAVY BLACK-FEATHERED SOUTH EAST ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27b8;"
-   unichar:name="HEAVY BLACK-FEATHERED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27b9;"
-   unichar:name="HEAVY BLACK-FEATHERED NORTH EAST ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27ba;"
-   unichar:name="TEARDROP-BARBED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27bb;"
-   unichar:name="HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27bc;"
-   unichar:name="WEDGE-TAILED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27bd;"
-   unichar:name="HEAVY WEDGE-TAILED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(->@esc@fB"
-   />
-  <xsl:output-character
-   char="&#x27be;"
-   unichar:name="OPEN-OUTLINED RIGHTWARDS ARROW"
-   string="@esc@fR@esc@(rA@esc@fB"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Dingbats -->
-  <!-- * ***************************************************************** -->
-
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-  <!-- *   Miscellaneous Mathematical Symbols -->
-  <!-- *     x27c0 to x27ef -->
-  <!-- *   Supplemental Arrows -->
-  <!-- *     x27f0 to x297f -->
-  <!-- *   Miscellaneous Mathematical Symbols -->
-  <!-- *     x2980 to x29ff -->
-  <!-- *   Supplemental Mathematical Operators -->
-  <!-- *     x2a00 to x2aff -->
-  <!-- *   - no nothing - -->
-  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Alphabetic Presentation Forms -->
-  <!-- *     xfb00 to xfb04 -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#xfb00;"
-   unichar:name="LATIN SMALL LIGATURE FF"
-   unichar:entity="fflig"
-   string="@esc@(ff"
-   />
-  <xsl:output-character
-   char="&#xfb01;"
-   unichar:name="LATIN SMALL LIGATURE FI"
-   unichar:entity="filig"
-   string="@esc@(fi"
-   />
-  <xsl:output-character
-   char="&#xfb02;"
-   unichar:name="LATIN SMALL LIGATURE FL"
-   unichar:entity="fllig"
-   string="@esc@(fl"
-   />
-  <xsl:output-character
-   char="&#xfb03;"
-   unichar:name="LATIN SMALL LIGATURE FFI"
-   unichar:entity="ffilig"
-   string="@esc@(Fi"
-   />
-  <xsl:output-character
-   char="&#xfb04;"
-   unichar:name="LATIN SMALL LIGATURE FFL"
-   unichar:entity="ffllig"
-   string="@esc@(Fl"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   End: Alphabetic Presentation Forms -->
-  <!-- * ***************************************************************** -->
-
-  <!-- * ================================================================= -->
-
-  <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, -->
-  <!-- * Line Breaking Properties"[1] says: -->
-  <!-- * -->
-  <!-- *   The word joiner character [x2060 a.k.a "WJ"] is the preferred -->
-  <!-- *   choice for an invisible character to keep other characters -->
-  <!-- *   together that would otherwise be split across the line at a direct -->
-  <!-- *   break. The character FEFF has the same effect, but because it is -->
-  <!-- *   also used in an unrelated way as a byte order mark, the use of the -->
-  <!-- *   WJ as the preferred interword glue simplifies the handling of FEFF. -->
-  <!-- * -->
-  <!-- * [1] http://www.unicode.org/reports/tr14/ -->
-  <!-- * -->
-  <!-- * We include it here anyway & map to the roff zero-width no-break -->
-  <xsl:output-character
-   char="&#xfeff;"
-   unichar:name="ZERO WIDTH NO-BREAK SPACE"
-   string="@esc@&amp;"
-   />
-
-</xsl:character-map>
diff --git a/xsl/manpages/charmap.groff.xsl b/xsl/manpages/charmap.groff.xsl
new file mode 100644 (file)
index 0000000..f0fd0fe
--- /dev/null
@@ -0,0 +1,5084 @@
+<?xml version="1.0" encoding="US-ASCII"?>
+<xsl:stylesheet version="2.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:u="http://docbook.sf.net/xmlns/unichar/1.0"
+                exclude-result-prefixes="u">
+
+<!-- ********************************************************************
+     $Id$
+     ********************************************************************
+
+     This file is part of the XSL DocBook Stylesheet distribution.
+     See ../README or http://docbook.sf.net/release/xsl/current/ for
+     copyright and other information.
+
+     ******************************************************************** -->
+
+<xsl:character-map name="groff">
+
+<!-- * *************************************************************** -->
+<!-- *    Commentary -->
+<!-- * *************************************************************** -->
+<!-- * -->
+<!-- * This file maps a selection of Unicode symbols and special -->
+<!-- * characters (about 800) to corresponding groff escape sequences.-->
+<!-- * -->
+<!-- * Although the format of this file follows the "character map" -->
+<!-- * format described in the XSLT 2.0 specification[1], the file can -->
+<!-- * also be used with an appropriate XSLT 1.0 stylesheet and any -->
+<!-- * XSLT 1.0 processor. -->
+<!-- * -->
+<!-- *   [1] http://www.w3.org/TR/xslt20/#character-maps -->
+<!-- * -->
+<!-- * In order to make the character map more readable, it uses the -->
+<!-- * following "extension attributes" (in the "unichar" namespace): -->
+<!-- * -->
+<!-- *   - u:name   = ISO character name (e.g., "YEN SIGN") -->
+<!-- *   - u:entity = ISO entity name (e.g., "yen") -->
+<!-- * -->
+<!-- * Use of such extension attributes is permitted by the XSLT 2.0 -->
+<!-- * spec; see the "Extension Attributes" section[2]. -->
+<!-- * -->
+<!-- *   [2] http://www.w3.org/TR/xslt20/#extension-attributes -->
+<!-- * -->
+<!-- * It also uses a u:class="default" attribute and value to mark a -->
+<!-- * small "default" subset of the most commonly used Unicode symbols -->
+<!-- * and special characters (around 40), for use in cases where it's -->
+<!-- * judged not to be worthwhile to take the performance hit necessary -->
+<!-- * to process the "full" set of more than 800 characters. -->
+<!-- * -->
+<!-- * Note: In place of the literal backlash "\" character used in roff -->
+<!-- *       to indicate the start of an escape sequence, this file uses -->
+<!-- *       "@esc@". So an additional string-substition step needs to be -->
+<!-- *       done on any output generated using the data from this file, -->
+<!-- *       before final roff output, to replace the "@esc@" instances -->
+<!-- *       with the literal backslash characters that roff expects. -->
+<!-- * -->
+<!-- * *************************************************************** -->
+<!-- *    Acknowledgements -->
+<!-- * *************************************************************** -->
+<!-- * References used in selecting roff mappings: -->
+<!-- * -->
+<!-- *   - groff_char(7) man page[3] -->
+<!-- *   - groff info file[4]; in particular, the "Page Motions" node[5] -->
+<!-- *   - tables in "Character Sets" chapter of "XML In a Nutshell"[6] -->
+<!-- * -->
+<!-- *   [3] http://www.linux.se/showMan.php?TITLE=groff_char&SECTION=7 -->
+<!-- *   [4] http://www.fifi.org/cgi-bin/info2www?(groff) -->
+<!-- *   [5] http://www.fifi.org/cgi-bin/info2www?(groff)Page+Motions -->
+<!-- *   [6] http://www.ibiblio.org/xml/books/xian2/ -->
+<!-- * -->
+<!-- * The initial version of this file (before the "string" mappings -->
+<!-- * were added) was generated by taking the "unichars.el" file from -->
+<!-- * Norm Walsh's "xmlunicode.el"[7] elisp distro, and running a -->
+<!-- * script on it to convert it to XML. -->
+<!-- * -->
+<!-- *   [7] http://nwalsh.com/emacs/xmlchars/ -->
+<!-- * -->
+<!-- * The idea for doing this in XML/XSLT came from working with -->
+<!-- * Steve Cheng's docbook2x package[8] - in particular, the -->
+<!-- * "utf8trans" utility and character-map system in that package. -->
+<!-- * -->
+<!-- *   [8] http://docbook2x.sourceforge.net/ -->
+<!-- * -->
+<!-- * ################################################################# -->
+
+  <!-- * The dash/minus, period, and backslash characters all have special -->
+  <!-- * purposes in roff, so should be escaped. -->
+  <xsl:output-character
+   character="-"
+   string="@esc@-"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="."
+   string="@esc@&amp;."
+   u:class="default"
+   />
+  <xsl:output-character
+   character="\"
+   string="@esc@\"
+   u:class="default"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- * Begin: Latin-1/ISO-8859-1 -->
+  <!-- * x00a0 to x00ff -->
+  <!-- * ***************************************************************** -->
+
+  <!-- * A no-break space can be written two ways in roff; the difference, -->
+  <!-- * according to the "Page Motions" node in the groff info page, ixsl: -->
+  <!-- * -->
+  <!-- *   "\ " = -->
+  <!-- *   An unbreakable and unpaddable (i.e. not expanded during filling) -->
+  <!-- *   space. -->
+  <!-- * -->
+  <!-- *   "\~" = -->
+  <!-- *   An unbreakable space that stretches like a normal -->
+  <!-- *   inter-word space when a line is adjusted."  -->
+  <!-- * -->
+  <!-- * Unfortunately, roff seems to do some weird things with long -->
+  <!-- * lines that only have words separated by "\~" spaces, so it's -->
+  <!-- * safer just to stick with the "\ " space -->
+  <xsl:output-character
+   character="&#x00a0;"
+   u:name="NO-BREAK SPACE"
+   u:entity="nbsp"
+   string="@esc@ "
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x00a1;"
+   u:name="INVERTED EXCLAMATION MARK"
+   u:entity="iexcl"
+   string="@esc@(r!"
+   />
+  <xsl:output-character
+   character="&#x00a2;"
+   u:name="CENT SIGN"
+   u:entity="cent"
+   string="@esc@(ct"
+   />
+  <xsl:output-character
+   character="&#x00a3;"
+   u:name="POUND SIGN"
+   u:entity="pound"
+   string="@esc@(Po"
+   />
+  <xsl:output-character
+   character="&#x00a4;"
+   u:name="CURRENCY SIGN"
+   u:entity="curren"
+   string="@esc@(Cs"
+   />
+  <xsl:output-character
+   character="&#x00a5;"
+   u:name="YEN SIGN"
+   u:entity="yen"
+   string="@esc@(Ye"
+   />
+  <xsl:output-character
+   character="&#x00a6;"
+   u:name="BROKEN BAR"
+   u:entity="brvbar"
+   string="@esc@(bb"
+   />
+  <xsl:output-character
+   character="&#x00a7;"
+   u:name="SECTION SIGN"
+   u:entity="sect"
+   string="@esc@(sc"
+   />
+  <xsl:output-character
+   character="&#x00a8;"
+   u:name="DIAERESIS"
+   u:entity="Dot"
+   string="@esc@(ad"
+   />
+  <xsl:output-character
+   character="&#x00a9;"
+   u:name="COPYRIGHT SIGN"
+   u:entity="copy"
+   string="@esc@(co"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x00aa;"
+   u:name="FEMININE ORDINAL INDICATOR"
+   u:entity="ordf"
+   string="@esc@(Of"
+   />
+  <xsl:output-character
+   character="&#x00ab;"
+   u:name="LEFT-POINTING DOUBLE ANGLE QUOTATION MARK"
+   u:entity="laquo"
+   string="@esc@(Fo"
+   />
+  <xsl:output-character
+   character="&#x00ac;"
+   u:name="NOT SIGN"
+   u:entity="not"
+   string="@esc@(no"
+   />
+  <!-- * groff_char(7) man page sayxsl: "the soft hyphen control character -->
+  <!-- * (prints as itself).  groff never use this character for output -->
+  <!-- * (thus it is omitted in the table below); the input character 173 -->
+  <!-- * is onto \%." -->
+  <xsl:output-character
+   character="&#x00ad;"
+   u:name="SOFT HYPHEN"
+   u:entity="shy"
+   string="@esc@%"
+   />
+  <xsl:output-character
+   character="&#x00ae;"
+   u:name="REGISTERED SIGN"
+   u:entity="reg"
+   string="@esc@(rg"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x00af;"
+   u:name="MACRON"
+   u:entity="macr"
+   string="@esc@(a-"
+   />
+  <xsl:output-character
+   character="&#x00b0;"
+   u:name="DEGREE SIGN"
+   u:entity="deg"
+   string="@esc@(de"
+   />
+  <xsl:output-character
+   character="&#x00b1;"
+   u:name="PLUS-MINUS SIGN"
+   u:entity="plusmn"
+   string="@esc@(+-"
+   />
+  <xsl:output-character
+   character="&#x00b2;"
+   u:name="SUPERSCRIPT TWO"
+   u:entity="sup2"
+   string="@esc@(S2"
+   />
+  <xsl:output-character
+   character="&#x00b3;"
+   u:name="SUPERSCRIPT THREE"
+   u:entity="sup3"
+   string="@esc@(S3"
+   />
+  <xsl:output-character
+   character="&#x00b4;"
+   u:name="ACUTE ACCENT"
+   u:entity="acute"
+   string="@esc@(aa"
+   />
+  <xsl:output-character
+   character="&#x00b5;"
+   u:name="MICRO SIGN"
+   u:entity="micro"
+   string="@esc@(mc"
+   />
+  <xsl:output-character
+   character="&#x00b6;"
+   u:name="PILCROW SIGN"
+   u:entity="para"
+   string="@esc@(ps"
+   />
+  <!-- * according to groff_char(7), I think the escape string \(pc -->
+  <!-- * "periodcentered" could also be used for middot; not sure which -->
+  <!-- * is better, but "md" mnemonic is a better fit :-) -->
+  <xsl:output-character
+   character="&#x00b7;"
+   u:name="MIDDLE DOT"
+   u:entity="middot"
+   string="@esc@(md"
+   />
+  <xsl:output-character
+   character="&#x00b8;"
+   u:name="CEDILLA"
+   u:entity="cedil"
+   string="@esc@(ac"
+   />
+  <xsl:output-character
+   character="&#x00b9;"
+   u:name="SUPERSCRIPT ONE"
+   u:entity="sup1"
+   string="@esc@(S1"
+   />
+  <xsl:output-character
+   character="&#x00ba;"
+   u:name="MASCULINE ORDINAL INDICATOR"
+   u:entity="ordm"
+   string="@esc@(Om"
+   />
+  <xsl:output-character
+   character="&#x00bb;"
+   u:name="RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK"
+   u:entity="raquo"
+   string="@esc@(Fc"
+   />
+  <xsl:output-character
+   character="&#x00bc;"
+   u:name="VULGAR FRACTION ONE QUARTER"
+   u:entity="frac14"
+   string="@esc@(14"
+   />
+  <xsl:output-character
+   character="&#x00bd;"
+   u:name="VULGAR FRACTION ONE HALF"
+   u:entity="frac12"
+   string="@esc@(12"
+   />
+  <xsl:output-character
+   character="&#x00be;"
+   u:name="VULGAR FRACTION THREE QUARTERS"
+   u:entity="frac34"
+   string="@esc@(34"
+   />
+  <xsl:output-character
+   character="&#x00bf;"
+   u:name="INVERTED QUESTION MARK"
+   u:entity="iquest"
+   string="@esc@(r?"
+   />
+  <xsl:output-character
+   character="&#x00c0;"
+   u:name="LATIN CAPITAL LETTER A WITH GRAVE"
+   u:entity="Agrave"
+   string="@esc@(`A"
+   />
+  <xsl:output-character
+   character="&#x00c1;"
+   u:name="LATIN CAPITAL LETTER A WITH ACUTE"
+   u:entity="Aacute"
+   string="@esc@('A"
+   />
+  <xsl:output-character
+   character="&#x00c2;"
+   u:name="LATIN CAPITAL LETTER A WITH CIRCUMFLEX"
+   u:entity="Acirc"
+   string="@esc@(^A"
+   />
+  <xsl:output-character
+   character="&#x00c3;"
+   u:name="LATIN CAPITAL LETTER A WITH TILDE"
+   u:entity="Atilde"
+   string="@esc@(~A"
+   />
+  <xsl:output-character
+   character="&#x00c4;"
+   u:name="LATIN CAPITAL LETTER A WITH DIAERESIS"
+   u:entity="Auml"
+   string="@esc@(:A"
+   />
+  <xsl:output-character
+   character="&#x00c5;"
+   u:name="LATIN CAPITAL LETTER A WITH RING ABOVE"
+   u:entity="Aring"
+   string="@esc@(oA"
+   />
+  <xsl:output-character
+   character="&#x00c6;"
+   u:name="LATIN CAPITAL LETTER AE"
+   u:entity="AElig"
+   string="@esc@(AE"
+   />
+  <xsl:output-character
+   character="&#x00c7;"
+   u:name="LATIN CAPITAL LETTER C WITH CEDILLA"
+   u:entity="Ccedil"
+   string="@esc@(,C"
+   />
+  <xsl:output-character
+   character="&#x00c8;"
+   u:name="LATIN CAPITAL LETTER E WITH GRAVE"
+   u:entity="Egrave"
+   string="@esc@(`E"
+   />
+  <xsl:output-character
+   character="&#x00c9;"
+   u:name="LATIN CAPITAL LETTER E WITH ACUTE"
+   u:entity="Eacute"
+   string="@esc@('E"
+   />
+  <xsl:output-character
+   character="&#x00ca;"
+   u:name="LATIN CAPITAL LETTER E WITH CIRCUMFLEX"
+   u:entity="Ecirc"
+   string="@esc@(^E"
+   />
+  <xsl:output-character
+   character="&#x00cb;"
+   u:name="LATIN CAPITAL LETTER E WITH DIAERESIS"
+   u:entity="Euml"
+   string="@esc@(:E"
+   />
+  <xsl:output-character
+   character="&#x00cc;"
+   u:name="LATIN CAPITAL LETTER I WITH GRAVE"
+   u:entity="Igrave"
+   string="@esc@(`I"
+   />
+  <xsl:output-character
+   character="&#x00cd;"
+   u:name="LATIN CAPITAL LETTER I WITH ACUTE"
+   u:entity="Iacute"
+   string="@esc@('I"
+   />
+  <xsl:output-character
+   character="&#x00ce;"
+   u:name="LATIN CAPITAL LETTER I WITH CIRCUMFLEX"
+   u:entity="Icirc"
+   string="@esc@(^I"
+   />
+  <xsl:output-character
+   character="&#x00cf;"
+   u:name="LATIN CAPITAL LETTER I WITH DIAERESIS"
+   u:entity="Iuml"
+   string="@esc@(:I"
+   />
+  <xsl:output-character
+   character="&#x00d0;"
+   u:name="LATIN CAPITAL LETTER ETH"
+   u:entity="ETH"
+   string="@esc@(-D"
+   />
+  <xsl:output-character
+   character="&#x00d1;"
+   u:name="LATIN CAPITAL LETTER N WITH TILDE"
+   u:entity="Ntilde"
+   string="@esc@(~N"
+   />
+  <xsl:output-character
+   character="&#x00d2;"
+   u:name="LATIN CAPITAL LETTER O WITH GRAVE"
+   u:entity="Ograve"
+   string="@esc@(`O"
+   />
+  <xsl:output-character
+   character="&#x00d3;"
+   u:name="LATIN CAPITAL LETTER O WITH ACUTE"
+   u:entity="Oacute"
+   string="@esc@('O"
+   />
+  <xsl:output-character
+   character="&#x00d4;"
+   u:name="LATIN CAPITAL LETTER O WITH CIRCUMFLEX"
+   u:entity="Ocirc"
+   string="@esc@(^O"
+   />
+  <xsl:output-character
+   character="&#x00d5;"
+   u:name="LATIN CAPITAL LETTER O WITH TILDE"
+   u:entity="Otilde"
+   string="@esc@(~O"
+   />
+  <xsl:output-character
+   character="&#x00d6;"
+   u:name="LATIN CAPITAL LETTER O WITH DIAERESIS"
+   u:entity="Ouml"
+   string="@esc@(:O"
+   />
+  <xsl:output-character
+   character="&#x00d7;"
+   u:name="MULTIPLICATION SIGN"
+   u:entity="times"
+   string="@esc@(mu"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x00d8;"
+   u:name="LATIN CAPITAL LETTER O WITH STROKE"
+   u:entity="Oslash"
+   string="@esc@(/O"
+   />
+  <xsl:output-character
+   character="&#x00d9;"
+   u:name="LATIN CAPITAL LETTER U WITH GRAVE"
+   u:entity="Ugrave"
+   string="@esc@(`U"
+   />
+  <xsl:output-character
+   character="&#x00da;"
+   u:name="LATIN CAPITAL LETTER U WITH ACUTE"
+   u:entity="Uacute"
+   string="@esc@('U"
+   />
+  <xsl:output-character
+   character="&#x00db;"
+   u:name="LATIN CAPITAL LETTER U WITH CIRCUMFLEX"
+   u:entity="Ucirc"
+   string="@esc@(^U"
+   />
+  <xsl:output-character
+   character="&#x00dc;"
+   u:name="LATIN CAPITAL LETTER U WITH DIAERESIS"
+   u:entity="Uuml"
+   string="@esc@(:U"
+   />
+  <xsl:output-character
+   character="&#x00dd;"
+   u:name="LATIN CAPITAL LETTER Y WITH ACUTE"
+   u:entity="Yacute"
+   string="@esc@('Y"
+   />
+  <xsl:output-character
+   character="&#x00de;"
+   u:name="LATIN CAPITAL LETTER THORN"
+   u:entity="THORN"
+   string="@esc@(TP"
+   />
+  <xsl:output-character
+   character="&#x00df;"
+   u:name="LATIN SMALL LETTER SHARP S"
+   u:entity="szlig"
+   string="@esc@(ss"
+   />
+  <xsl:output-character
+   character="&#x00e0;"
+   u:name="LATIN SMALL LETTER A WITH GRAVE"
+   u:entity="agrave"
+   string="@esc@(`a"
+   />
+  <xsl:output-character
+   character="&#x00e1;"
+   u:name="LATIN SMALL LETTER A WITH ACUTE"
+   u:entity="aacute"
+   string="@esc@('a"
+   />
+  <xsl:output-character
+   character="&#x00e2;"
+   u:name="LATIN SMALL LETTER A WITH CIRCUMFLEX"
+   u:entity="acirc"
+   string="@esc@(^a"
+   />
+  <xsl:output-character
+   character="&#x00e3;"
+   u:name="LATIN SMALL LETTER A WITH TILDE"
+   u:entity="atilde"
+   string="@esc@(~a"
+   />
+  <xsl:output-character
+   character="&#x00e4;"
+   u:name="LATIN SMALL LETTER A WITH DIAERESIS"
+   u:entity="auml"
+   string="@esc@(:a"
+   />
+  <xsl:output-character
+   character="&#x00e5;"
+   u:name="LATIN SMALL LETTER A WITH RING ABOVE"
+   u:entity="aring"
+   string="@esc@(oa"
+   />
+  <xsl:output-character
+   character="&#x00e6;"
+   u:name="LATIN SMALL LETTER AE"
+   u:entity="aelig"
+   string="@esc@(ae"
+   />
+  <xsl:output-character
+   character="&#x00e7;"
+   u:name="LATIN SMALL LETTER C WITH CEDILLA"
+   u:entity="ccedil"
+   string="@esc@(,c"
+   />
+  <xsl:output-character
+   character="&#x00e8;"
+   u:name="LATIN SMALL LETTER E WITH GRAVE"
+   u:entity="egrave"
+   string="@esc@(`e"
+   />
+  <xsl:output-character
+   character="&#x00e9;"
+   u:name="LATIN SMALL LETTER E WITH ACUTE"
+   u:entity="eacute"
+   string="@esc@('e"
+   />
+  <xsl:output-character
+   character="&#x00ea;"
+   u:name="LATIN SMALL LETTER E WITH CIRCUMFLEX"
+   u:entity="ecirc"
+   string="@esc@(^e"
+   />
+  <xsl:output-character
+   character="&#x00eb;"
+   u:name="LATIN SMALL LETTER E WITH DIAERESIS"
+   u:entity="euml"
+   string="@esc@(:e"
+   />
+  <xsl:output-character
+   character="&#x00ec;"
+   u:name="LATIN SMALL LETTER I WITH GRAVE"
+   u:entity="igrave"
+   string="@esc@(`i"
+   />
+  <xsl:output-character
+   character="&#x00ed;"
+   u:name="LATIN SMALL LETTER I WITH ACUTE"
+   u:entity="iacute"
+   string="@esc@('i"
+   />
+  <xsl:output-character
+   character="&#x00ee;"
+   u:name="LATIN SMALL LETTER I WITH CIRCUMFLEX"
+   u:entity="icirc"
+   string="@esc@(^i"
+   />
+  <xsl:output-character
+   character="&#x00ef;"
+   u:name="LATIN SMALL LETTER I WITH DIAERESIS"
+   u:entity="iuml"
+   string="@esc@(:i"
+   />
+  <xsl:output-character
+   character="&#x00f0;"
+   u:name="LATIN SMALL LETTER ETH"
+   u:entity="eth"
+   string="@esc@(Sd"
+   />
+  <xsl:output-character
+   character="&#x00f1;"
+   u:name="LATIN SMALL LETTER N WITH TILDE"
+   u:entity="ntilde"
+   string="@esc@(~n"
+   />
+  <xsl:output-character
+   character="&#x00f2;"
+   u:name="LATIN SMALL LETTER O WITH GRAVE"
+   u:entity="ograve"
+   string="@esc@(`o"
+   />
+  <xsl:output-character
+   character="&#x00f3;"
+   u:name="LATIN SMALL LETTER O WITH ACUTE"
+   u:entity="oacute"
+   string="@esc@('o"
+   />
+  <xsl:output-character
+   character="&#x00f4;"
+   u:name="LATIN SMALL LETTER O WITH CIRCUMFLEX"
+   u:entity="ocirc"
+   string="@esc@(^o"
+   />
+  <xsl:output-character
+   character="&#x00f5;"
+   u:name="LATIN SMALL LETTER O WITH TILDE"
+   u:entity="otilde"
+   string="@esc@(~o"
+   />
+  <xsl:output-character
+   character="&#x00f6;"
+   u:name="LATIN SMALL LETTER O WITH DIAERESIS"
+   u:entity="ouml"
+   string="@esc@(:o"
+   />
+  <xsl:output-character
+   character="&#x00f7;"
+   u:name="DIVISION SIGN"
+   u:entity="divide"
+   string="@esc@(di"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x00f8;"
+   u:name="LATIN SMALL LETTER O WITH STROKE"
+   u:entity="oslash"
+   string="@esc@(/o"
+   />
+  <xsl:output-character
+   character="&#x00f9;"
+   u:name="LATIN SMALL LETTER U WITH GRAVE"
+   u:entity="ugrave"
+   string="@esc@(`u"
+   />
+  <xsl:output-character
+   character="&#x00fa;"
+   u:name="LATIN SMALL LETTER U WITH ACUTE"
+   u:entity="uacute"
+   string="@esc@('u"
+   />
+  <xsl:output-character
+   character="&#x00fb;"
+   u:name="LATIN SMALL LETTER U WITH CIRCUMFLEX"
+   u:entity="ucirc"
+   string="@esc@(^u"
+   />
+  <xsl:output-character
+   character="&#x00fc;"
+   u:name="LATIN SMALL LETTER U WITH DIAERESIS"
+   u:entity="uuml"
+   string="@esc@(:u"
+   />
+  <xsl:output-character
+   character="&#x00fd;"
+   u:name="LATIN SMALL LETTER Y WITH ACUTE"
+   u:entity="yacute"
+   string="@esc@('y"
+   />
+  <xsl:output-character
+   character="&#x00fe;"
+   u:name="LATIN SMALL LETTER THORN"
+   u:entity="thorn"
+   string="@esc@(Tp"
+   />
+  <xsl:output-character
+   character="&#x00ff;"
+   u:name="LATIN SMALL LETTER Y WITH DIAERESIS"
+   u:entity="yuml"
+   string="@esc@(:y"
+   />
+  <!-- * **************************************************************** -->
+  <!-- *   End: Latin-1/ISO-8859-1 -->
+  <!-- * **************************************************************** -->
+  
+  <!-- * **************************************************************** -->
+  <!-- *   Begin: -->
+  <!-- * -->
+  <!-- *     - x0100 to x017f (Latin Extended-A) -->
+  <!-- *     - x0180 to x023f (Latin Extended-B) -->
+  <!-- *     - x0250 to x02ad (IPA Extensions) -->
+  <!-- *     - x02b0 to x02ee (Spacing Modifier Letters) -->
+  <!-- *     - x0300 to x036f (Combining Diacritical Marks) -->
+  <!-- * -->
+  <!-- *   Other than the following exceptions, characters in these -->
+  <!-- *   blocks don't have any roff equivalents -->
+  <!-- * **************************************************************** -->
+
+  <xsl:output-character
+   character="&#x0131;"
+   u:name="LATIN SMALL LETTER DOTLESS I"
+   u:entity="inodot"
+   string="@esc@(.i"
+   />
+  <xsl:output-character
+   character="&#x0132;"
+   u:name="LATIN CAPITAL LIGATURE IJ"
+   u:entity="IJlig"
+   string="@esc@(IJ"
+   />
+  <xsl:output-character
+   character="&#x0133;"
+   u:name="LATIN SMALL LIGATURE IJ"
+   u:entity="ijlig"
+   string="@esc@(ij"
+   />
+  <xsl:output-character
+   character="&#x0141;"
+   u:name="LATIN CAPITAL LETTER L WITH STROKE"
+   u:entity="Lstrok"
+   string="@esc@(/L"
+   />
+  <xsl:output-character
+   character="&#x0142;"
+   u:name="LATIN SMALL LETTER L WITH STROKE"
+   u:entity="lstrok"
+   string="@esc@(/l"
+   />
+  <xsl:output-character
+   character="&#x0152;"
+   u:name="LATIN CAPITAL LIGATURE OE"
+   u:entity="OElig"
+   string="@esc@(OE"
+   />
+  <xsl:output-character
+   character="&#x0153;"
+   u:name="LATIN SMALL LIGATURE OE"
+   u:entity="oelig"
+   string="@esc@(oe"
+   />
+  <xsl:output-character
+   character="&#x0192;"
+   u:name="LATIN SMALL LETTER F WITH HOOK"
+   u:entity="fnof"
+   string="@esc@(Fn"
+   />
+  <xsl:output-character
+   character="&#x02c6;"
+   u:name="MODIFIER LETTER CIRCUMFLEX ACCENT"
+   u:entity="circ"
+   string="@esc@(a^"
+   />
+  <xsl:output-character
+   character="&#x02c7;"
+   u:name="CARON"
+   u:entity="caron"
+   string="@esc@(ac"
+   />
+  <xsl:output-character
+   character="&#x02c9;"
+   u:name="MODIFIER LETTER MACRON"
+   string="@esc@(a-"
+   />
+  <xsl:output-character
+   character="&#x02d8;"
+   u:name="BREVE"
+   u:entity="breve"
+   string="@esc@(ab"
+   />
+<!-- * there does not seem to by any roff equivalent for "dot above" -->
+<!-- * <xsl:output-character -->
+<!-- *  character="&#x02d9;" -->
+<!-- *  u:name="DOT ABOVE" -->
+<!-- *  u:entity="dot" -->
+<!-- *  /> -->
+  <xsl:output-character
+   character="&#x02da;"
+   u:name="RING ABOVE"
+   u:entity="ring"
+   string="@esc@(ao"
+   />
+  <xsl:output-character
+   character="&#x02db;"
+   u:name="OGONEK"
+   u:entity="ogon"
+   string="@esc@(ho"
+   />
+  <!-- groff_char(7) calls Unicode x02dd a "Hungarian umlaut"  -->
+  <xsl:output-character
+   character="&#x02dd;"
+   u:name="DOUBLE ACUTE ACCENT"
+   u:entity="dblac"
+   string='@esc@(a"'
+   />
+
+  <!-- * **************************************************************** -->
+  <!-- *   End: -->
+  <!-- *     - Latin Extended-A -->
+  <!-- *     - Latin Extended-B -->
+  <!-- *     - IPA Extensions -->
+  <!-- *     - Spacing Modifier Letters -->
+  <!-- *     - Combining Diacritical Marks -->
+  <!-- * **************************************************************** -->
+  
+  <!-- * **************************************************************** -->
+  <!-- *   Begin: Greek and Coptic -->
+  <!-- *     x0370 to x03ff -->
+  <!-- * **************************************************************** -->
+  
+  <xsl:output-character
+   character="&#x0391;"
+   u:name="GREEK CAPITAL LETTER ALPHA"
+   u:entity="Agr"
+   string="@esc@(*A)"
+   />
+  <xsl:output-character
+   character="&#x0392;"
+   u:name="GREEK CAPITAL LETTER BETA"
+   u:entity="Bgr"
+   string="@esc@(*B"
+   />
+  <xsl:output-character
+   character="&#x0393;"
+   u:name="GREEK CAPITAL LETTER GAMMA"
+   u:entity="Gamma"
+   string="@esc@(*G"
+   />
+  <xsl:output-character
+   character="&#x0394;"
+   u:name="GREEK CAPITAL LETTER DELTA"
+   u:entity="Delta"
+   string="@esc@(*D"
+   />
+  <xsl:output-character
+   character="&#x0395;"
+   u:name="GREEK CAPITAL LETTER EPSILON"
+   u:entity="Egr"
+   string="@esc@(*E"
+   />
+  <xsl:output-character
+   character="&#x0396;"
+   u:name="GREEK CAPITAL LETTER ZETA"
+   u:entity="Zgr"
+   string="@esc@(*Z"
+   />
+  <xsl:output-character
+   character="&#x0397;"
+   u:name="GREEK CAPITAL LETTER ETA"
+   u:entity="EEgr"
+   string="@esc@(*Y"
+   />
+  <xsl:output-character
+   character="&#x0398;"
+   u:name="GREEK CAPITAL LETTER THETA"
+   u:entity="THgr"
+   string="@esc@(*H"
+   />
+  <xsl:output-character
+   character="&#x0399;"
+   u:name="GREEK CAPITAL LETTER IOTA"
+   u:entity="Igr"
+   string="@esc@(*I"
+   />
+  <xsl:output-character
+   character="&#x039a;"
+   u:name="GREEK CAPITAL LETTER KAPPA"
+   u:entity="Kgr"
+   string="@esc@(*K"
+   />
+  <xsl:output-character
+   character="&#x039b;"
+   u:name="GREEK CAPITAL LETTER LAMDA"
+   u:entity="Lambda"
+   string="@esc@(*L"
+   />
+  <xsl:output-character
+   character="&#x039c;"
+   u:name="GREEK CAPITAL LETTER MU"
+   u:entity="Mgr"
+   string="@esc@(*M"
+   />
+  <xsl:output-character
+   character="&#x039d;"
+   u:name="GREEK CAPITAL LETTER NU"
+   u:entity="Ngr"
+   string="@esc@(*N"
+   />
+  <xsl:output-character
+   character="&#x039e;"
+   u:name="GREEK CAPITAL LETTER XI"
+   u:entity="Xgr"
+   string="@esc@(*C"
+   />
+  <xsl:output-character
+   character="&#x039f;"
+   u:name="GREEK CAPITAL LETTER OMICRON"
+   u:entity="Ogr"
+   string="@esc@(*O"
+   />
+  <xsl:output-character
+   character="&#x03a0;"
+   u:name="GREEK CAPITAL LETTER PI"
+   u:entity="Pgr"
+   string="@esc@(*P"
+   />
+  <xsl:output-character
+   character="&#x03a1;"
+   u:name="GREEK CAPITAL LETTER RHO"
+   u:entity="Rgr"
+   string="@esc@(*R"
+   />
+  <xsl:output-character
+   character="&#x03a3;"
+   u:name="GREEK CAPITAL LETTER SIGMA"
+   u:entity="Sgr"
+   string="@esc@(*S"
+   />
+  <xsl:output-character
+   character="&#x03a4;"
+   u:name="GREEK CAPITAL LETTER TAU"
+   u:entity="Tgr"
+   string="@esc@(*T"
+   />
+  <xsl:output-character
+   character="&#x03a5;"
+   u:name="GREEK CAPITAL LETTER UPSILON"
+   u:entity="Ugr"
+   string="@esc@(*U"
+   />
+  <xsl:output-character
+   character="&#x03a6;"
+   u:name="GREEK CAPITAL LETTER PHI"
+   u:entity="PHgr"
+   string="@esc@(*F"
+   />
+  <xsl:output-character
+   character="&#x03a7;"
+   u:name="GREEK CAPITAL LETTER CHI"
+   u:entity="KHgr"
+   string="@esc@(*X"
+   />
+  <xsl:output-character
+   character="&#x03a8;"
+   u:name="GREEK CAPITAL LETTER PSI"
+   u:entity="PSgr"
+   string="@esc@(*Q"
+   />
+  <xsl:output-character
+   character="&#x03a9;"
+   u:name="GREEK CAPITAL LETTER OMEGA"
+   u:entity="OHgr"
+   string="@esc@(*W"
+   />
+  <xsl:output-character
+   character="&#x03aa;"
+   u:name="GREEK CAPITAL LETTER IOTA WITH DIALYTIKA"
+   u:entity="Idigr"
+   string="@esc@(*I"
+   />
+  <xsl:output-character
+   character="&#x03ab;"
+   u:name="GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA"
+   u:entity="Udigr"
+   string="@esc@(*U"
+   />
+  <xsl:output-character
+   character="&#x03ac;"
+   u:name="GREEK SMALL LETTER ALPHA WITH TONOS"
+   u:entity="aacgr"
+   string="@esc@(*a"
+   />
+  <xsl:output-character
+   character="&#x03ad;"
+   u:name="GREEK SMALL LETTER EPSILON WITH TONOS"
+   u:entity="eacgr"
+   string="@esc@(*e"
+   />
+  <xsl:output-character
+   character="&#x03ae;"
+   u:name="GREEK SMALL LETTER ETA WITH TONOS"
+   u:entity="eeacgr"
+   string="@esc@(*y"
+   />
+  <xsl:output-character
+   character="&#x03af;"
+   u:name="GREEK SMALL LETTER IOTA WITH TONOS"
+   u:entity="iacgr"
+   string="@esc@(*i"
+   />
+  <xsl:output-character
+   character="&#x03b0;"
+   u:name="GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS"
+   u:entity="udiagr"
+   string="@esc@(*u"
+   />
+  <xsl:output-character
+   character="&#x03b1;"
+   u:name="GREEK SMALL LETTER ALPHA"
+   u:entity="agr"
+   string="@esc@(*a"
+   />
+  <xsl:output-character
+   character="&#x03b2;"
+   u:name="GREEK SMALL LETTER BETA"
+   u:entity="beta"
+   string="@esc@(*b"
+   />
+  <xsl:output-character
+   character="&#x03b3;"
+   u:name="GREEK SMALL LETTER GAMMA"
+   u:entity="gamma"
+   string="@esc@(*g"
+   />
+  <xsl:output-character
+   character="&#x03b4;"
+   u:name="GREEK SMALL LETTER DELTA"
+   u:entity="delta"
+   string="@esc@(*d"
+   />
+  <xsl:output-character
+   character="&#x03b5;"
+   u:name="GREEK SMALL LETTER EPSILON"
+   u:entity="epsi"
+   string="@esc@(*e"
+   />
+  <xsl:output-character
+   character="&#x03b6;"
+   u:name="GREEK SMALL LETTER ZETA"
+   u:entity="zeta"
+   string="@esc@(*z"
+   />
+  <xsl:output-character
+   character="&#x03b7;"
+   u:name="GREEK SMALL LETTER ETA"
+   u:entity="eegr"
+   string="@esc@(*y"
+   />
+  <xsl:output-character
+   character="&#x03b8;"
+   u:name="GREEK SMALL LETTER THETA"
+   u:entity="thetas"
+   string="@esc@(*h"
+   />
+  <xsl:output-character
+   character="&#x03b9;"
+   u:name="GREEK SMALL LETTER IOTA"
+   u:entity="igr"
+   string="@esc@(*i"
+   />
+  <xsl:output-character
+   character="&#x03ba;"
+   u:name="GREEK SMALL LETTER KAPPA"
+   u:entity="kappa"
+   string="@esc@(*k"
+   />
+  <xsl:output-character
+   character="&#x03bb;"
+   u:name="GREEK SMALL LETTER LAMDA"
+   u:entity="lambda"
+   string="@esc@(*l"
+   />
+  <xsl:output-character
+   character="&#x03bc;"
+   u:name="GREEK SMALL LETTER MU"
+   u:entity="mgr"
+   string="@esc@(*m"
+   />
+  <xsl:output-character
+   character="&#x03bd;"
+   u:name="GREEK SMALL LETTER NU"
+   u:entity="ngr"
+   string="@esc@(*n"
+   />
+  <xsl:output-character
+   character="&#x03be;"
+   u:name="GREEK SMALL LETTER XI"
+   u:entity="xgr"
+   string="@esc@(*c"
+   />
+  <xsl:output-character
+   character="&#x03bf;"
+   u:name="GREEK SMALL LETTER OMICRON"
+   u:entity="ogr"
+   string="@esc@(*o"
+   />
+  <xsl:output-character
+   character="&#x03c0;"
+   u:name="GREEK SMALL LETTER PI"
+   u:entity="pgr"
+   string="@esc@(*p"
+   />
+  <xsl:output-character
+   character="&#x03c1;"
+   u:name="GREEK SMALL LETTER RHO"
+   u:entity="rgr"
+   string="@esc@(*r"
+   />
+  <xsl:output-character
+   character="&#x03c2;"
+   u:name="GREEK SMALL LETTER FINAL SIGMA"
+   u:entity="sfgr"
+   string="@esc@(ts"
+   />
+  <xsl:output-character
+   character="&#x03c3;"
+   u:name="GREEK SMALL LETTER SIGMA"
+   u:entity="sgr"
+   string="@esc@(*s"
+   />
+  <xsl:output-character
+   character="&#x03c4;"
+   u:name="GREEK SMALL LETTER TAU"
+   u:entity="tau"
+   string="@esc@(*t"
+   />
+  <xsl:output-character
+   character="&#x03c5;"
+   u:name="GREEK SMALL LETTER UPSILON"
+   u:entity="ugr"
+   string="@esc@(*u"
+   />
+  <xsl:output-character
+   character="&#x03c6;"
+   u:name="GREEK SMALL LETTER PHI"
+   u:entity="phgr"
+   string="@esc@(*f"
+   />
+  <xsl:output-character
+   character="&#x03c7;"
+   u:name="GREEK SMALL LETTER CHI"
+   u:entity="chi"
+   string="@esc@(*x"
+   />
+  <xsl:output-character
+   character="&#x03c8;"
+   u:name="GREEK SMALL LETTER PSI"
+   u:entity="psgr"
+   string="@esc@(*q"
+   />
+  <xsl:output-character
+   character="&#x03c9;"
+   u:name="GREEK SMALL LETTER OMEGA"
+   u:entity="ohgr"
+   string="@esc@(*w"
+   />
+  <xsl:output-character
+   character="&#x03ca;"
+   u:name="GREEK SMALL LETTER IOTA WITH DIALYTIKA"
+   u:entity="idigr"
+   string="@esc@(*i"
+   />
+  <xsl:output-character
+   character="&#x03cb;"
+   u:name="GREEK SMALL LETTER UPSILON WITH DIALYTIKA"
+   u:entity="udigr"
+   string="@esc@(*u"
+   />
+  <xsl:output-character
+   character="&#x03cc;"
+   u:name="GREEK SMALL LETTER OMICRON WITH TONOS"
+   u:entity="oacgr"
+   string="@esc@(*o"
+   />
+  <xsl:output-character
+   character="&#x03cd;"
+   u:name="GREEK SMALL LETTER UPSILON WITH TONOS"
+   u:entity="uacgr"
+   string="@esc@(*u"
+   />
+  <xsl:output-character
+   character="&#x03ce;"
+   u:name="GREEK SMALL LETTER OMEGA WITH TONOS"
+   u:entity="ohacgr"
+   string="@esc@(*w"
+   />
+  <xsl:output-character
+   character="&#x03d0;"
+   u:name="GREEK BETA SYMBOL"
+   string="@esc@(*B"
+   />
+  <xsl:output-character
+   character="&#x03d1;"
+   u:name="GREEK THETA SYMBOL"
+   u:entity="thetav"
+   string="@esc@(+h"
+   />
+  <xsl:output-character
+   character="&#x03d2;"
+   u:name="GREEK UPSILON WITH HOOK SYMBOL"
+   u:entity="Upsi"
+   string="@esc@(*U"
+   />
+  <xsl:output-character
+   character="&#x03d3;"
+   u:name="GREEK UPSILON WITH ACUTE AND HOOK SYMBOL"
+   string="@esc@(*U"
+   />
+  <xsl:output-character
+   character="&#x03d4;"
+   u:name="GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL"
+   string="@esc@(*U"
+   />
+  <xsl:output-character
+   character="&#x03d5;"
+   u:name="GREEK PHI SYMBOL"
+   u:entity="phis"
+   string="@esc@(+f"
+   />
+  <xsl:output-character
+   character="&#x03d6;"
+   u:name="GREEK PI SYMBOL"
+   u:entity="piv"
+   string="@esc@(+p"
+   />
+  <!-- no mappings for remaining chars x03d7 to x03ef -->
+  <xsl:output-character
+   character="&#x03f0;"
+   u:name="GREEK KAPPA SYMBOL"
+   u:entity="kappav"
+   string="(*k"
+   />
+  <xsl:output-character
+   character="&#x03f1;"
+   u:name="GREEK RHO SYMBOL"
+   u:entity="rhov"
+   string="@esc@(*r"
+   />
+  <xsl:output-character
+   character="&#x03f2;"
+   u:name="GREEK LUNATE SIGMA SYMBOL"
+   string="@esc@(*s"
+   />
+  <xsl:output-character
+   character="&#x03f4;"
+   u:name="GREEK CAPITAL THETA SYMBOL"
+   string="@esc@(*H"
+   />
+  <xsl:output-character
+   character="&#x03f5;"
+   u:name="GREEK LUNATE EPSILON SYMBOL"
+   string="@esc@(*e"
+   />
+  <xsl:output-character
+   character="&#x03f6;"
+   u:name="GREEK REVERSED LUNATE EPSILON SYMBOL"
+   u:entity="bepsi"
+   string="@esc@(*e"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Greek and Coptic -->
+  <!-- * ***************************************************************** -->
+  
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+  <!-- *   Cyrillic -->
+  <!-- *   x0400 to x04ff -->
+  <!-- *   - do nothing - -->
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+  
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: General Punctuation -->
+  <!-- *   x2000 to x206f -->
+  <!-- * ***************************************************************** -->
+  
+  <!-- * first, spaces of various widths -->
+
+  <!-- * Note: There does not seem to be either a real em space or en space -->
+  <!-- * in roff; to approximate them, this character map assumes that in -->
+  <!-- * most fonts, an en space is about the same as the width of a digit -->
+  <!-- * (in roff, "\0"), so an em space (which by definition is -->
+  <!-- * equal to the width of two en spaces) is about the same as the width -->
+  <!-- * of two digits (thus, in roff, "\0\0") -->
+
+  <xsl:output-character
+   character="&#x2000;"
+   u:name="EN QUAD"
+   string="@esc@0"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2001;"
+   u:name="EM QUAD"
+   string="@esc@0@esc@0"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2002;"
+   u:name="EN SPACE"
+   u:entity="ensp"
+   string="@esc@0"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2003;"
+   u:name="EM SPACE"
+   u:entity="emsp"
+   string="@esc@0@esc@0"
+   u:class="default"
+   />
+  <!-- * roughly same width as a normal space -->
+  <xsl:output-character
+   character="&#x2004;"
+   u:name="THREE-PER-EM SPACE"
+   u:entity="emsp13"
+   string=" "
+   />
+  <!-- * roughly same width as a normal space -->
+  <xsl:output-character
+   character="&#x2005;"
+   u:name="FOUR-PER-EM SPACE"
+   u:entity="emsp14"
+   string=" "
+   />
+  <!-- * roughly same width as a normal space -->
+  <xsl:output-character
+   character="&#x2006;"
+   u:name="SIX-PER-EM SPACE"
+   string=" "
+   />
+  <!-- * same as roff "digit" space -->
+  <xsl:output-character
+   character="&#x2007;"
+   u:name="FIGURE SPACE"
+   u:entity="numsp"
+   string="@esc@0"
+   u:class="default"
+   />
+  <!-- * punctuation space in most fonts is actually closer to a normal -->
+  <!-- * space than it is to a thin space -->
+  <xsl:output-character
+   character="&#x2008;"
+   u:name="PUNCTUATION SPACE"
+   u:entity="puncsp"
+   string=" "
+   u:class="default"
+   />
+  <!-- * Note: Not sure how best to deal with thin space, because the roff -->
+  <!-- * thin space, "\^", prints as a zero-width space in TTY -->
+  <!-- * output. However, it seems that, unlike a hair space, a thin space, -->
+  <!-- * at 1/12 of an em, is still recognizable to most people as a space, -->
+  <!-- * so treating it as zero-width seems wrong. So, for the sake of making -->
+  <!-- * TTY output look OK, just substitute with a normal space; but real -->
+  <!-- * roff escape is "\(\^" -->
+  <xsl:output-character
+   character="&#x2009;"
+   u:name="THIN SPACE"
+   u:entity="thinsp"
+   string=" "
+   />
+  <!-- * I don't think there's a standard definition of what a hair -->
+  <!-- * space is; some guides just say it's "less than 1/5 of an em" or -->
+  <!-- * that it's "narrower than a thin space"; seems like in practice, -->
+  <!-- * it's *a lot* narrower than a thin space, to the point where -->
+  <!-- * it's close to being a non-space, so here it's substituted with -->
+  <!-- * roff equivalent of a zero-width no-break space -->
+  <xsl:output-character
+   character="&#x200a;"
+   u:name="HAIR SPACE"
+   u:entity="hairsp"
+   string="@esc@&amp;"
+   u:class="default"
+   />
+  <!-- * map to roff "zero-width break point"  -->
+  <xsl:output-character
+   character="&#x200b;"
+   u:name="ZERO WIDTH SPACE"
+   string="@esc@:"
+   u:class="default"
+   />
+
+  <!-- *   x200c and x200d have special purposes in some Indic languages (I -->
+  <!-- *   think); for the "correct" zero-width space, according to Unicode docs, -->
+  <!-- *   use x2060, not x200c or x200d -->
+  <!-- *     <xsl:output-character -->
+  <!-- *      character="&#x200c;" -->
+  <!-- *      u:name="ZERO WIDTH NON-JOINER" -->
+  <!-- *      string="@esc@:" -->
+  <!-- *      /> -->
+  <!-- *     <xsl:output-character -->
+  <!-- *      character="&#x200d;" -->
+  <!-- *      u:name="ZERO WIDTH JOINER" -->
+  <!-- *      string="@esc@&amp;" -->
+  <!-- *      /> -->
+  <!-- * non-visible  -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x200e;" -->
+  <!-- *      u:name="LEFT-TO-RIGHT MARK" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x200f;" -->
+  <!-- *      u:name="RIGHT-TO-LEFT MARK" -->
+  <!-- *      /> -->
+
+  <!-- * .................................................... -->
+  <!-- * next, hyphens and various dashes, bars, underscores  -->
+  <xsl:output-character
+   character="&#x2010;"
+   u:name="HYPHEN"
+   u:entity="hyphen"
+   string="@esc@(hy"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2011;"
+   u:name="NON-BREAKING HYPHEN"
+   string="@esc@&amp;-@esc@&amp;"
+   u:class="default"
+   />
+  <!-- * roughly same width as en dash -->
+  <xsl:output-character
+   character="&#x2012;"
+   u:name="FIGURE DASH"
+   string="@esc@(en"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2013;"
+   u:name="EN DASH"
+   u:entity="ndash"
+   string="@esc@(en"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2014;"
+   u:name="EM DASH"
+   u:entity="mdash"
+   string="@esc@(em"
+   u:class="default"
+   />
+  <!-- * seems roughly same width as em dash -->
+  <xsl:output-character
+   character="&#x2015;"
+   u:name="HORIZONTAL BAR"
+   u:entity="horbar"
+   string="@esc@(em"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2016;"
+   u:name="DOUBLE VERTICAL LINE"
+   u:entity="Verbar"
+   string="@esc@(bv@esc@(bv"
+   />
+  <!-- * no double-underscore in roff; so just make it a single -->
+  <!-- * underscore -->
+  <xsl:output-character
+   character="&#x2017;"
+   u:name="DOUBLE LOW LINE"
+   string="_"
+   />
+
+  <!-- * .................................................... -->
+  <!-- * various quotation marks -->
+  <xsl:output-character
+   character="&#x2018;"
+   u:name="LEFT SINGLE QUOTATION MARK"
+   u:entity="lsquo"
+   string="@esc@(oq"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2019;"
+   u:name="RIGHT SINGLE QUOTATION MARK"
+   u:entity="rsquo"
+   string="@esc@(cq"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x201a;"
+   u:name="SINGLE LOW-9 QUOTATION MARK"
+   u:entity="lsquor"
+   string="@esc@(bq"
+   />
+  <!-- * no roff equiv; treat same as lsquo -->
+  <xsl:output-character
+   character="&#x201b;"
+   u:name="SINGLE HIGH-REVERSED-9 QUOTATION MARK"
+   string="@esc@(oq"
+   />
+  <xsl:output-character
+   character="&#x201c;"
+   u:name="LEFT DOUBLE QUOTATION MARK"
+   u:entity="ldquo"
+   string="@esc@(lq"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x201d;"
+   u:name="RIGHT DOUBLE QUOTATION MARK"
+   u:entity="rdquo"
+   string="@esc@(rq"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x201e;"
+   u:name="DOUBLE LOW-9 QUOTATION MARK"
+   u:entity="ldquor"
+   string="@esc@(Bq"
+   />
+  <!-- * no roff equiv; treat same as rdquo -->
+  <xsl:output-character
+   character="&#x201f;"
+   u:name="DOUBLE HIGH-REVERSED-9 QUOTATION MARK"
+   string="@esc@(rq"
+   />
+
+  <!-- * .................................................... -->
+  <!-- * various symbols -->
+  <xsl:output-character
+   character="&#x2020;"
+   u:name="DAGGER"
+   u:entity="dagger"
+   string="@esc@(dg"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2021;"
+   u:name="DOUBLE DAGGER"
+   u:entity="Dagger"
+   string="@esc@(dd"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2022;"
+   u:name="BULLET"
+   u:entity="bull"
+   string="@esc@(bu"
+   u:class="default"
+   />
+  <!-- * no roff equiv -->
+  <xsl:output-character
+   character="&#x2023;"
+   u:name="TRIANGULAR BULLET"
+   string=">@esc@&amp;"
+   />
+  <!-- * no roff equiv -->
+  <xsl:output-character
+   character="&#x2024;"
+   u:name="ONE DOT LEADER"
+   string="@esc@&amp;."
+   />
+  <!-- * no roff equiv -->
+  <xsl:output-character
+   character="&#x2025;"
+   u:name="TWO DOT LEADER"
+   u:entity="nldr"
+   string="@esc@&amp;.."
+   />
+  <!-- * no roff equiv -->
+  <xsl:output-character
+   character="&#x2026;"
+   u:name="HORIZONTAL ELLIPSIS"
+   u:entity="hellip"
+   string="@esc@&amp;..."
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2027;"
+   u:name="HYPHENATION POINT"
+   string="@esc@%"
+   u:class="default"
+   />
+  <!-- * Begin x2028 to x202e - no idea what to do with these -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2028;" -->
+  <!-- *      u:name="LINE SEPARATOR" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2029;" -->
+  <!-- *      u:name="PARAGRAPH SEPARATOR" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x202a;" -->
+  <!-- *      u:name="LEFT-TO-RIGHT EMBEDDING" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x202b;" -->
+  <!-- *      u:name="RIGHT-TO-LEFT EMBEDDING" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x202c;" -->
+  <!-- *      u:name="POP DIRECTIONAL FORMATTING" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x202d;" -->
+  <!-- *      u:name="LEFT-TO-RIGHT OVERRIDE" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x202e;" -->
+  <!-- *      u:name="RIGHT-TO-LEFT OVERRIDE" -->
+  <!-- *      /> -->
+  <!-- *      End x2028 to x202e - no idea what to do with these -->
+
+  <!-- * seems like "narrow" nbsp is basically the same as a no-break -->
+  <!-- * space -->
+  <xsl:output-character
+   character="&#x202f;"
+   u:name="NARROW NO-BREAK SPACE"
+   string="@esc@ "
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2030;"
+   u:name="PER MILLE SIGN"
+   u:entity="permil"
+   string="@esc@(%0"
+   />
+  <!-- * no roff equiv; no idea what to do with it -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2031;" -->
+  <!-- *      u:name="PER TEN THOUSAND SIGN" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x2032;"
+   u:name="PRIME"
+   u:entity="prime"
+   string="@esc@(fm"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2033;"
+   u:name="DOUBLE PRIME"
+   u:entity="Prime"
+   string="@esc@(sd"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2034;"
+   u:name="TRIPLE PRIME"
+   u:entity="tprime"
+   string="@esc@(sd@esc@(fm"
+   />
+  <!-- * no idea for these  -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2035;" -->
+  <!-- *      u:name="REVERSED PRIME" -->
+  <!-- *      u:entity="bprime" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2036;" -->
+  <!-- *      u:name="REVERSED DOUBLE PRIME" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2037;" -->
+  <!-- *      u:name="REVERSED TRIPLE PRIME" -->
+  <!-- *      /> -->
+
+  <!-- * there is no low caret in roff -->
+  <xsl:output-character
+   character="&#x2038;"
+   u:name="CARET"
+   string="^"
+   />
+  <xsl:output-character
+   character="&#x2039;"
+   u:name="SINGLE LEFT-POINTING ANGLE QUOTATION MARK"
+   string="@esc@(fo"
+   />
+  <xsl:output-character
+   character="&#x203a;"
+   u:name="SINGLE RIGHT-POINTING ANGLE QUOTATION MARK"
+   string="@esc@(fc"
+   />
+  <!-- * not in roff -->
+  <xsl:output-character
+   character="&#x203b;"
+   u:name="REFERENCE MARK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x203c;"
+   u:name="DOUBLE EXCLAMATION MARK"
+   string="!!"
+   />
+  <xsl:output-character
+   character="&#x203d;"
+   u:name="INTERROBANG"
+   string="?!"
+   />
+  <xsl:output-character
+   character="&#x203e;"
+   u:name="OVERLINE"
+   string="@esc@(rn"
+   />
+  <xsl:output-character
+   character="&#x203f;"
+   u:name="UNDERTIE"
+   string="@esc@(ul"
+   />
+  <!-- * not in roff -->
+  <xsl:output-character
+   character="&#x2040;"
+   u:name="CHARACTER TIE"
+   string="@esc@(rn"
+   />
+  <!-- * not in roff -->
+  <xsl:output-character
+   character="&#x2041;"
+   u:name="CARET INSERTION POINT"
+   u:entity="caret"
+   string="^"
+   />
+  <!-- * not in roff -->
+  <xsl:output-character
+   character="&#x2042;"
+   u:name="ASTERISM"
+   string="*"
+   />
+  <!-- * not in roff; just make bold hyphen -->
+  <xsl:output-character
+   character="&#x2043;"
+   u:name="HYPHEN BULLET"
+   u:entity="hybull"
+   string="@esc@fB-@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2044;"
+   u:name="FRACTION SLASH"
+   string="@esc@(sl"
+   />
+  <!-- * not in roff -->
+  <xsl:output-character
+   character="&#x2045;"
+   u:name="LEFT SQUARE BRACKET WITH QUILL"
+   string="["
+   />
+  <!-- * not in roff -->
+  <xsl:output-character
+   character="&#x2046;"
+   u:name="RIGHT SQUARE BRACKET WITH QUILL"
+   string="]"
+   />
+  <xsl:output-character
+   character="&#x2047;"
+   u:name="DOUBLE QUESTION MARK"
+   string="??"
+   />
+  <xsl:output-character
+   character="&#x2048;"
+   u:name="QUESTION EXCLAMATION MARK"
+   string="?!"
+   />
+  <xsl:output-character
+   character="&#x2049;"
+   u:name="EXCLAMATION QUESTION MARK"
+   string="!?"
+   />
+  <!-- * not in roff -->
+  <xsl:output-character
+   character="&#x204a;"
+   u:name="TIRONIAN SIGN ET"
+   string="7"
+   />
+  <!-- * not in roff; just replace with un-reversed pilcrow -->
+  <xsl:output-character
+   character="&#x204b;"
+   u:name="REVERSED PILCROW SIGN"
+   string="@esc@(ps"
+   />
+  <!-- * not in roff; just make regular bullet -->
+  <xsl:output-character
+   character="&#x204c;"
+   u:name="BLACK LEFTWARDS BULLET"
+   string="@esc@(bu"
+   />
+  <!-- * not in roff; just make regular bullet -->
+  <xsl:output-character
+   character="&#x204d;"
+   u:name="BLACK RIGHTWARDS BULLET"
+   string="@esc@(bu"
+   />
+  <xsl:output-character
+   character="&#x204e;"
+   u:name="LOW ASTERISK"
+   string="*"
+   />
+
+  <!-- * ............................................................... -->
+  <!-- *   Remaining General Punctuation -->
+  <!-- *   from x2050 to x206f -->
+  <!-- *   only map a couple of these -->
+  <!-- * ............................................................... -->
+
+  <!-- * basically same as a normal space -->
+  <xsl:output-character
+   character="&#x205f;"
+   u:name="MEDIUM MATHEMATICAL SPACE"
+   string=" "
+   />
+  <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, -->
+  <!-- * Line Breaking Properties"[1] sayxsl: -->
+  <!-- * -->
+  <!-- *   The word joiner character [x2060 a.k.a "WJ"] is the preferred -->
+  <!-- *   choice for an invisible character to keep other characters -->
+  <!-- *   together that would otherwise be split across the line at a direct -->
+  <!-- *   break. The character FEFF has the same effect, but because it is -->
+  <!-- *   also used in an unrelated way as a byte order mark, the use of the -->
+  <!-- *   WJ as the preferred interword glue simplifies the handling of FEFF. -->
+  <!-- * -->
+  <!-- * [1] http://www.unicode.org/reports/tr14/ -->
+  <!-- * -->
+  <!-- * The groff docs seem ambiguous about whether \& is a joiner and -->
+  <!-- * prevents breaks, but, based on testing, seems like it does -->
+  <xsl:output-character
+   character="&#x2060;"
+   u:name="WORD JOINER"
+   string="@esc@&amp;"
+   u:class="default"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: General Punctuation -->
+  <!-- * ***************************************************************** -->
+  
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Superscripts and Subscripts -->
+  <!-- *    x2070 to x209f -->
+  <!-- *    For superscripts, just do a^n thing -->
+  <!-- *    For subscripts, just do a_n -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#x2070;"
+   u:name="SUPERSCRIPT ZERO"
+   string="^0"
+   />
+  <xsl:output-character
+   character="&#x2071;"
+   u:name="SUPERSCRIPT LATIN SMALL LETTER I"
+   string="^i"
+   />
+  <xsl:output-character
+   character="&#x2074;"
+   u:name="SUPERSCRIPT FOUR"
+   string="^4"
+   />
+  <xsl:output-character
+   character="&#x2075;"
+   u:name="SUPERSCRIPT FIVE"
+   string="^5"
+   />
+  <xsl:output-character
+   character="&#x2076;"
+   u:name="SUPERSCRIPT SIX"
+   string="^6"
+   />
+  <xsl:output-character
+   character="&#x2077;"
+   u:name="SUPERSCRIPT SEVEN"
+   string="^7"
+   />
+  <xsl:output-character
+   character="&#x2078;"
+   u:name="SUPERSCRIPT EIGHT"
+   string="^8"
+   />
+  <xsl:output-character
+   character="&#x2079;"
+   u:name="SUPERSCRIPT NINE"
+   string="^9"
+   />
+  <xsl:output-character
+   character="&#x207a;"
+   u:name="SUPERSCRIPT PLUS SIGN"
+   string="^+"
+   />
+  <xsl:output-character
+   character="&#x207b;"
+   u:name="SUPERSCRIPT MINUS"
+   string="^-"
+   />
+  <xsl:output-character
+   character="&#x207c;"
+   u:name="SUPERSCRIPT EQUALS SIGN"
+   string="^="
+   />
+  <xsl:output-character
+   character="&#x207d;"
+   u:name="SUPERSCRIPT LEFT PARENTHESIS"
+   string="^("
+   />
+  <xsl:output-character
+   character="&#x207e;"
+   u:name="SUPERSCRIPT RIGHT PARENTHESIS"
+   string="^)"
+   />
+  <xsl:output-character
+   character="&#x207f;"
+   u:name="SUPERSCRIPT LATIN SMALL LETTER N"
+   string="^n"
+   />
+  <xsl:output-character
+   character="&#x2080;"
+   u:name="SUBSCRIPT ZERO"
+   string="_0"
+   />
+  <xsl:output-character
+   character="&#x2081;"
+   u:name="SUBSCRIPT ONE"
+   string="_1"
+   />
+  <xsl:output-character
+   character="&#x2082;"
+   u:name="SUBSCRIPT TWO"
+   string="_2"
+   />
+  <xsl:output-character
+   character="&#x2083;"
+   u:name="SUBSCRIPT THREE"
+   string="_3"
+   />
+  <xsl:output-character
+   character="&#x2084;"
+   u:name="SUBSCRIPT FOUR"
+   string="_4"
+   />
+  <xsl:output-character
+   character="&#x2085;"
+   u:name="SUBSCRIPT FIVE"
+   string="_5"
+   />
+  <xsl:output-character
+   character="&#x2086;"
+   u:name="SUBSCRIPT SIX"
+   string="_6"
+   />
+  <xsl:output-character
+   character="&#x2087;"
+   u:name="SUBSCRIPT SEVEN"
+   string="_7"
+   />
+  <xsl:output-character
+   character="&#x2088;"
+   u:name="SUBSCRIPT EIGHT"
+   string="_8"
+   />
+  <xsl:output-character
+   character="&#x2089;"
+   u:name="SUBSCRIPT NINE"
+   string="_9"
+   />
+  <xsl:output-character
+   character="&#x208a;"
+   u:name="SUBSCRIPT PLUS SIGN"
+   string="_+"
+   />
+  <xsl:output-character
+   character="&#x208b;"
+   u:name="SUBSCRIPT MINUS"
+   string="_-"
+   />
+  <xsl:output-character
+   character="&#x208c;"
+   u:name="SUBSCRIPT EQUALS SIGN"
+   string="_="
+   />
+  <xsl:output-character
+   character="&#x208d;"
+   u:name="SUBSCRIPT LEFT PARENTHESIS"
+   string="_("
+   />
+  <xsl:output-character
+   character="&#x208e;"
+   u:name="SUBSCRIPT RIGHT PARENTHESIS"
+   string="_)"
+   />
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Superscripts and Subscripts -->
+  <!-- *     x2070 to x209f -->
+  <!-- * ***************************************************************** -->
+
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Currency Symbols -->
+  <!-- *     x20a0 to x20b1 -->
+  <!-- *     No mappings for any of these; just spell out -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#x20a0;"
+   u:name="EURO-CURRENCY SIGN"
+   string="EUR"
+   />
+  <xsl:output-character
+   character="&#x20a1;"
+   u:name="COLON SIGN"
+   string="COLON"
+   />
+  <xsl:output-character
+   character="&#x20a2;"
+   u:name="CRUZEIRO SIGN"
+   string="CRUZEIRO"
+   />
+  <xsl:output-character
+   character="&#x20a3;"
+   u:name="FRENCH FRANC SIGN"
+   string="FRANC"
+   />
+  <xsl:output-character
+   character="&#x20a4;"
+   u:name="LIRA SIGN"
+   string="LIRA"
+   />
+  <xsl:output-character
+   character="&#x20a5;"
+   u:name="MILL SIGN"
+   string="MILL"
+   />
+  <xsl:output-character
+   character="&#x20a6;"
+   u:name="NAIRA SIGN"
+   string="NAIRA"
+   />
+  <xsl:output-character
+   character="&#x20a7;"
+   u:name="PESETA SIGN"
+   string="PESETA"
+   />
+  <xsl:output-character
+   character="&#x20a8;"
+   u:name="RUPEE SIGN"
+   string="RUPEE"
+   />
+  <xsl:output-character
+   character="&#x20a9;"
+   u:name="WON SIGN"
+   string="WON"
+   />
+  <xsl:output-character
+   character="&#x20aa;"
+   u:name="NEW SHEQEL SIGN"
+   string="SHEQEL"
+   />
+  <xsl:output-character
+   character="&#x20ab;"
+   u:name="DONG SIGN"
+   string="DONG"
+   />
+  <xsl:output-character
+   character="&#x20ac;"
+   u:name="EURO SIGN"
+   string="EUR"
+   />
+  <xsl:output-character
+   character="&#x20ad;"
+   u:name="KIP SIGN"
+   string="KIP"
+   />
+  <xsl:output-character
+   character="&#x20ae;"
+   u:name="TUGRIK SIGN"
+   string="TUGRIK"
+   />
+  <xsl:output-character
+   character="&#x20af;"
+   u:name="DRACHMA SIGN"
+   string="DRACHMA"
+   />
+  <xsl:output-character
+   character="&#x20b0;"
+   u:name="GERMAN PENNY SIGN"
+   string="?"
+   />
+  <xsl:output-character
+   character="&#x20b1;"
+   u:name="PESO SIGN"
+   string="PESO"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Currency Symbols -->
+  <!-- *   x20a0 to x20b1 -->
+  <!-- * ***************************************************************** -->
+
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+  <!-- *   Combining Diacritical Marks for Symbols -->
+  <!-- *     x20do to x20ff -->
+  <!-- *     - do nothing - -->
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Letterlike Symbols -->
+  <!-- *     x2100 to x214b -->
+  <!-- * -->
+  <!-- *     No mappings for any of these, and nothing appropriate for -->
+  <!-- *     most of them; so, just spell out the ones that we can -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#x2103;"
+   u:name="DEGREE CELSIUS"
+   string="@esc@(deC"
+   />
+  <xsl:output-character
+   character="&#x2105;"
+   u:name="CARE OF"
+   u:entity="incare"
+   string="c/o"
+   />
+  <xsl:output-character
+   character="&#x2109;"
+   u:name="DEGREE FAHRENHEIT"
+   string="@esc@(deF"
+   />
+  <!-- roff Ifraktur -->
+  <xsl:output-character
+   character="&#x2111;"
+   u:name="BLACK-LETTER CAPITAL I"
+   string="@esc@(Im"
+   />
+  <xsl:output-character
+   character="&#x2113;"
+   u:name="SCRIPT SMALL L"
+   u:entity="ell"
+   string="l"
+   />
+  <xsl:output-character
+   character="&#x2116;"
+   u:name="NUMERO SIGN"
+   u:entity="numero"
+   string="No."
+   />
+  <xsl:output-character
+   character="&#x2118;"
+   u:name="SCRIPT CAPITAL P"
+   u:entity="weierp"
+   string="@esc@(wp"
+   />
+  <xsl:output-character
+   character="&#x211c;"
+   u:name="BLACK-LETTER CAPITAL R"
+   u:entity="real"
+   string="@esc@(Re"
+   />
+  <xsl:output-character
+   character="&#x211e;"
+   u:name="PRESCRIPTION TAKE"
+   u:entity="rx"
+   string="Rx"
+   />
+  <xsl:output-character
+   character="&#x2120;"
+   u:name="SERVICE MARK"
+   string="sm"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2122;"
+   u:name="TRADE MARK SIGN"
+   u:entity="trade"
+   string="@esc@(tm"
+   u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2126;"
+   u:name="OHM SIGN"
+   u:entity="ohm"
+   string="@esc@(*W"
+   />
+  <xsl:output-character
+   character="&#x212a;"
+   u:name="KELVIN SIGN"
+   string="K"
+   />
+  <xsl:output-character
+   character="&#x212b;"
+   u:name="ANGSTROM SIGN"
+   u:entity="angst"
+   string="@esc@(oA"
+   />
+  <xsl:output-character
+   character="&#x2135;"
+   u:name="ALEF SYMBOL"
+   u:entity="aleph"
+   string="@esc@(Ah"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Letterlike Symbols -->
+  <!-- *     x2100 to x214b -->
+  <!-- * ***************************************************************** -->
+  
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Number Forms -->
+  <!-- *     x2150 to x218f -->
+  <!-- * -->
+  <!-- *   No mappings for any of these, and nothing appropriate for most -->
+  <!-- *   of them; so, just spell out the ones that we can -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#x2153;"
+   u:name="VULGAR FRACTION ONE THIRD"
+   u:entity="frac13"
+   string="1/3"
+   />
+  <xsl:output-character
+   character="&#x2154;"
+   u:name="VULGAR FRACTION TWO THIRDS"
+   u:entity="frac23"
+   string="2/3"
+   />
+  <xsl:output-character
+   character="&#x2155;"
+   u:name="VULGAR FRACTION ONE FIFTH"
+   u:entity="frac15"
+   string="1/5"
+   />
+  <xsl:output-character
+   character="&#x2156;"
+   u:name="VULGAR FRACTION TWO FIFTHS"
+   u:entity="frac25"
+   string="2/5"
+   />
+  <xsl:output-character
+   character="&#x2157;"
+   u:name="VULGAR FRACTION THREE FIFTHS"
+   u:entity="frac35"
+   string="3/5"
+   />
+  <xsl:output-character
+   character="&#x2158;"
+   u:name="VULGAR FRACTION FOUR FIFTHS"
+   u:entity="frac45"
+   string="4/5"
+   />
+  <xsl:output-character
+   character="&#x2159;"
+   u:name="VULGAR FRACTION ONE SIXTH"
+   u:entity="frac16"
+   string="1/6"
+   />
+  <xsl:output-character
+   character="&#x215a;"
+   u:name="VULGAR FRACTION FIVE SIXTHS"
+   u:entity="frac56"
+   string="5/6"
+   />
+  <xsl:output-character
+   character="&#x215b;"
+   u:name="VULGAR FRACTION ONE EIGHTH"
+   u:entity="frac18"
+   string="1/8"
+   />
+  <xsl:output-character
+   character="&#x215c;"
+   u:name="VULGAR FRACTION THREE EIGHTHS"
+   u:entity="frac38"
+   string="3/8"
+   />
+  <xsl:output-character
+   character="&#x215d;"
+   u:name="VULGAR FRACTION FIVE EIGHTHS"
+   u:entity="frac58"
+   string="5/8"
+   />
+  <xsl:output-character
+   character="&#x215e;"
+   u:name="VULGAR FRACTION SEVEN EIGHTHS"
+   u:entity="frac78"
+   string="7/8"
+   />
+  <xsl:output-character
+   character="&#x215f;"
+   u:name="FRACTION NUMERATOR ONE"
+   string="1/"
+   />
+  <xsl:output-character
+   character="&#x2160;"
+   u:name="ROMAN NUMERAL ONE"
+   string="I"
+   />
+  <xsl:output-character
+   character="&#x2161;"
+   u:name="ROMAN NUMERAL TWO"
+   string="II"
+   />
+  <xsl:output-character
+   character="&#x2162;"
+   u:name="ROMAN NUMERAL THREE"
+   string="III"
+   />
+  <xsl:output-character
+   character="&#x2163;"
+   u:name="ROMAN NUMERAL FOUR"
+   string="IV"
+   />
+  <xsl:output-character
+   character="&#x2164;"
+   u:name="ROMAN NUMERAL FIVE"
+   string="V"
+   />
+  <xsl:output-character
+   character="&#x2165;"
+   u:name="ROMAN NUMERAL SIX"
+   string="VI"
+   />
+  <xsl:output-character
+   character="&#x2166;"
+   u:name="ROMAN NUMERAL SEVEN"
+   string="VII"
+   />
+  <xsl:output-character
+   character="&#x2167;"
+   u:name="ROMAN NUMERAL EIGHT"
+   string="VIII"
+   />
+  <xsl:output-character
+   character="&#x2168;"
+   u:name="ROMAN NUMERAL NINE"
+   string="IX"
+   />
+  <xsl:output-character
+   character="&#x2169;"
+   u:name="ROMAN NUMERAL TEN"
+   string="X"
+   />
+  <xsl:output-character
+   character="&#x216a;"
+   u:name="ROMAN NUMERAL ELEVEN"
+   string="XI"
+   />
+  <xsl:output-character
+   character="&#x216b;"
+   u:name="ROMAN NUMERAL TWELVE"
+   string="XII"
+   />
+  <xsl:output-character
+   character="&#x216c;"
+   u:name="ROMAN NUMERAL FIFTY"
+   string="L"
+   />
+  <xsl:output-character
+   character="&#x216d;"
+   u:name="ROMAN NUMERAL ONE HUNDRED"
+   string="C"
+   />
+  <xsl:output-character
+   character="&#x216e;"
+   u:name="ROMAN NUMERAL FIVE HUNDRED"
+   string="D"
+   />
+  <xsl:output-character
+   character="&#x216f;"
+   u:name="ROMAN NUMERAL ONE THOUSAND"
+   string="M"
+   />
+  <xsl:output-character
+   character="&#x2170;"
+   u:name="SMALL ROMAN NUMERAL ONE"
+   string="i"
+   />
+  <xsl:output-character
+   character="&#x2171;"
+   u:name="SMALL ROMAN NUMERAL TWO"
+   string="ii"
+   />
+  <xsl:output-character
+   character="&#x2172;"
+   u:name="SMALL ROMAN NUMERAL THREE"
+   string="iii"
+   />
+  <xsl:output-character
+   character="&#x2173;"
+   u:name="SMALL ROMAN NUMERAL FOUR"
+   string="iv"
+   />
+  <xsl:output-character
+   character="&#x2174;"
+   u:name="SMALL ROMAN NUMERAL FIVE"
+   string="v"
+   />
+  <xsl:output-character
+   character="&#x2175;"
+   u:name="SMALL ROMAN NUMERAL SIX"
+   string="vi"
+   />
+  <xsl:output-character
+   character="&#x2176;"
+   u:name="SMALL ROMAN NUMERAL SEVEN"
+   string="vii"
+   />
+  <xsl:output-character
+   character="&#x2177;"
+   u:name="SMALL ROMAN NUMERAL EIGHT"
+   string="viii"
+   />
+  <xsl:output-character
+   character="&#x2178;"
+   u:name="SMALL ROMAN NUMERAL NINE"
+   string="ix"
+   />
+  <xsl:output-character
+   character="&#x2179;"
+   u:name="SMALL ROMAN NUMERAL TEN"
+   string="x"
+   />
+  <xsl:output-character
+   character="&#x217a;"
+   u:name="SMALL ROMAN NUMERAL ELEVEN"
+   string="xi"
+   />
+  <xsl:output-character
+   character="&#x217b;"
+   u:name="SMALL ROMAN NUMERAL TWELVE"
+   string="xii"
+   />
+  <xsl:output-character
+   character="&#x217c;"
+   u:name="SMALL ROMAN NUMERAL FIFTY"
+   string="l"
+   />
+  <xsl:output-character
+   character="&#x217d;"
+   u:name="SMALL ROMAN NUMERAL ONE HUNDRED"
+   string="c"
+   />
+  <xsl:output-character
+   character="&#x217e;"
+   u:name="SMALL ROMAN NUMERAL FIVE HUNDRED"
+   string="d"
+   />
+  <xsl:output-character
+   character="&#x217f;"
+   u:name="SMALL ROMAN NUMERAL ONE THOUSAND"
+   string="m"
+   />
+  <xsl:output-character
+   character="&#x2180;"
+   u:name="ROMAN NUMERAL ONE THOUSAND C D"
+   string="CD"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Number Forms -->
+  <!-- *     x2150 to x218f -->
+  <!-- * ***************************************************************** -->
+
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Arrows -->
+  <!-- *   x2190 to x21ff -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#x2190;"
+   u:name="LEFTWARDS ARROW"
+   u:entity="larr"
+   string="@esc@(&lt;-"
+   />
+  <xsl:output-character
+   character="&#x2191;"
+   u:name="UPWARDS ARROW"
+   u:entity="uarr"
+   string="@esc@(ua"
+   />
+  <xsl:output-character
+   character="&#x2192;"
+   u:name="RIGHTWARDS ARROW"
+   u:entity="rarr"
+   string="@esc@(->"
+   />
+  <xsl:output-character
+   character="&#x2193;"
+   u:name="DOWNWARDS ARROW"
+   u:entity="darr"
+   string="@esc@(da"
+   />
+  <xsl:output-character
+   character="&#x2194;"
+   u:name="LEFT RIGHT ARROW"
+   u:entity="harr"
+   string="@esc@(&lt;>"
+   />
+  <xsl:output-character
+   character="&#x2195;"
+   u:name="UP DOWN ARROW"
+   u:entity="varr"
+   string="@esc@(va"
+   />
+  <xsl:output-character
+   character="&#x21b5;"
+   u:name="DOWNWARDS ARROW WITH CORNER LEFTWARDS"
+   u:entity="crarr"
+   string="@esc@(CR"
+   />
+  <xsl:output-character
+   character="&#x21d0;"
+   u:name="LEFTWARDS DOUBLE ARROW"
+   u:entity="lArr"
+   string="@esc@(la"
+   />
+  <xsl:output-character
+   character="&#x21d1;"
+   u:name="UPWARDS DOUBLE ARROW"
+   u:entity="uArr"
+   string="@esc@(uA"
+   />
+  <xsl:output-character
+   character="&#x21d2;"
+   u:name="RIGHTWARDS DOUBLE ARROW"
+   u:entity="rArr"
+   string="@esc@(rA"
+   />
+  <xsl:output-character
+   character="&#x21d3;"
+   u:name="DOWNWARDS DOUBLE ARROW"
+   u:entity="dArr"
+   string="@esc@(dA"
+   />
+  <xsl:output-character
+   character="&#x21d4;"
+   u:name="LEFT RIGHT DOUBLE ARROW"
+   u:entity="hArr"
+   string="@esc@(hA"
+   />
+  <!-- no roff equiv; render same as single arrow -->
+  <xsl:output-character
+   character="&#x21d5;"
+   u:name="UP DOWN DOUBLE ARROW"
+   u:entity="vArr"
+   string="@esc@(va"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Mathematical Operators -->
+  <!-- *     x2200 to x22ff -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#x2200;"
+   u:name="FOR ALL"
+   u:entity="forall"
+   string="@esc@(fa"
+   />
+  <xsl:output-character
+   character="&#x2201;"
+   u:name="COMPLEMENT"
+   u:entity="comp"
+   string="C"
+   />
+  <xsl:output-character
+   character="&#x2202;"
+   u:name="PARTIAL DIFFERENTIAL"
+   u:entity="part"
+   string="@esc@(pd"
+   />
+  <xsl:output-character
+   character="&#x2203;"
+   u:name="THERE EXISTS"
+   u:entity="exist"
+   string="@esc@(te"
+   />
+  <!-- * no roff equiv  -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2204;" -->
+  <!-- *      u:name="THERE DOES NOT EXIST" -->
+  <!-- *      u:entity="nexist" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x2205;"
+   u:name="EMPTY SET"
+   u:entity="empty"
+   string="@esc@(es"
+   />
+  <xsl:output-character
+   character="&#x2206;"
+   u:name="INCREMENT"
+   string="@esc@(*D"
+   />
+  <xsl:output-character
+   character="&#x2207;"
+   u:name="NABLA"
+   u:entity="nabla"
+   string="@esc@(gr"
+   />
+  <xsl:output-character
+   character="&#x2208;"
+   u:name="ELEMENT OF"
+   u:entity="isin"
+   string="@esc@(mo"
+   />
+  <xsl:output-character
+   character="&#x2209;"
+   u:name="NOT AN ELEMENT OF"
+   u:entity="notin"
+   string="@esc@(nm"
+   />
+  <xsl:output-character
+   character="&#x220a;"
+   u:name="SMALL ELEMENT OF"
+   string="@esc@(mo"
+   />
+
+  <xsl:output-character
+   character="&#x220b;"
+   u:name="CONTAINS AS MEMBER"
+   u:entity="ni"
+   string="@esc@(st"
+   />
+  <!-- * not in roff  -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x220c;" -->
+  <!-- *      u:name="DOES NOT CONTAIN AS MEMBER" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x220d;"
+   u:name="SMALL CONTAINS AS MEMBER"
+   string="@esc@(st"
+   />
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x220e;" -->
+  <!-- *      u:name="END OF PROOF" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x220f;"
+   u:name="N-ARY PRODUCT"
+   u:entity="prod"
+   string="@esc@(product"
+   />
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2210;" -->
+  <!-- *      u:name="N-ARY COPRODUCT" -->
+  <!-- *      u:entity="coprod" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x2211;"
+   u:name="N-ARY SUMMATION"
+   u:entity="sum"
+   string="@esc@(sum"
+   />
+  <xsl:output-character
+   character="&#x2212;"
+   u:name="MINUS SIGN"
+   u:entity="minus"
+   string="@esc@-"
+   />
+  <xsl:output-character
+   character="&#x2213;"
+   u:name="MINUS-OR-PLUS SIGN"
+   u:entity="mnplus"
+   string="@esc@(+-"
+   />
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2214;" -->
+  <!-- *      u:name="DOT PLUS" -->
+  <!-- *      u:entity="plusdo" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x2215;"
+   u:name="DIVISION SLASH"
+   string="@esc@(f/"
+   />
+  <xsl:output-character
+    character="&#x2216;"
+    u:name="SET MINUS"
+    u:entity="setmn"
+    string="@esc@@esc@"
+    u:class="default"
+   />
+  <xsl:output-character
+   character="&#x2217;"
+   u:name="ASTERISK OPERATOR"
+   u:entity="lowast"
+   string="@esc@(**"
+   />
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2218;" -->
+  <!-- *      u:name="RING OPERATOR" -->
+  <!-- *      u:entity="compfn" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x2219;"
+   u:name="BULLET OPERATOR"
+   string="@esc@(bu"
+   />
+  <xsl:output-character
+   character="&#x221a;"
+   u:name="SQUARE ROOT"
+   u:entity="radic"
+   string="@esc@(sr"
+   />
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x221b;" -->
+  <!-- *      u:name="CUBE ROOT" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x221c;" -->
+  <!-- *      u:name="FOURTH ROOT" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x221d;"
+   u:name="PROPORTIONAL TO"
+   u:entity="prop"
+   string="@esc@(pt"
+   />
+  <xsl:output-character
+   character="&#x221e;"
+   u:name="INFINITY"
+   u:entity="infin"
+   string="@esc@(if"
+   />
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x221f;" -->
+  <!-- *      u:name="RIGHT ANGLE" -->
+  <!-- *      u:entity="ang90" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x2220;"
+   u:name="ANGLE"
+   u:entity="ang"
+   string="@esc@(/_"
+   />
+
+  <!-- * 0x2221 to 0x2226 not in roff; -->
+  <!-- * but fake a parallel sign with vert bars -->
+
+  <xsl:output-character
+   character="&#x2225;"
+   u:name="PARALLEL TO"
+   u:entity="par"
+   string="@esc@(bv@esc@(bv"
+   />
+
+  <xsl:output-character
+   character="&#x2227;"
+   u:name="LOGICAL AND"
+   u:entity="and"
+   string="@esc@(AN"
+   />
+  <xsl:output-character
+   character="&#x2228;"
+   u:name="LOGICAL OR"
+   u:entity="or"
+   string="@esc@(OR"
+   />
+  <xsl:output-character
+   character="&#x2229;"
+   u:name="INTERSECTION"
+   u:entity="cap"
+   string="@esc@(ca"
+   />
+  <xsl:output-character
+   character="&#x222a;"
+   u:name="UNION"
+   u:entity="cup"
+   string="@esc@(cu"
+   />
+  <xsl:output-character
+   character="&#x222b;"
+   u:name="INTEGRAL"
+   u:entity="int"
+   string="@esc@(is"
+   />
+  <xsl:output-character
+   character="&#x222c;"
+   u:name="DOUBLE INTEGRAL"
+   string="@esc@(is@esc@(is"
+   />
+  <xsl:output-character
+   character="&#x222d;"
+   u:name="TRIPLE INTEGRAL"
+   string="@esc@(is@esc@(is@esc@(is"
+   />
+
+  <!-- * 0x222e to 0x2233 not in roff -->
+
+  <xsl:output-character
+   character="&#x2234;"
+   u:name="THEREFORE"
+   u:entity="there4"
+   string="@esc@(tf"
+   />
+
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2235;" -->
+  <!-- *      u:name="BECAUSE" -->
+  <!-- *      u:entity="becaus" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x2236;"
+   u:name="RATIO"
+   string=":"
+   />
+  <xsl:output-character
+   character="&#x2237;"
+   u:name="PROPORTION"
+   string="::"
+   />
+
+  <!-- * 0x2238 to 0x223b not in roff -->
+
+  <xsl:output-character
+   character="&#x223c;"
+   u:name="TILDE OPERATOR"
+   u:entity="sim"
+   string="@esc@(ti"
+   />
+
+  <!-- * 0x223d to 0x224b not in roff -->
+
+  <xsl:output-character
+   character="&#x2245;"
+   u:name="APPROXIMATELY EQUAL TO"
+   u:entity="cong"
+   string="@esc@(=~"
+   />
+
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2246;" -->
+  <!-- *      u:name="APPROXIMATELY BUT NOT ACTUALLY EQUAL TO" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2247;" -->
+  <!-- *      u:name="NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO" -->
+  <!-- *      u:entity="ncong" -->
+  <!-- *      /> -->
+
+  <xsl:output-character
+   character="&#x2248;"
+   u:name="ALMOST EQUAL TO"
+   u:entity="asymp"
+   string="@esc@(~~"
+   />
+
+  <!-- * x2249 to x2253 not in roff -->
+
+  <xsl:output-character
+   character="&#x2254;"
+   u:name="COLON EQUALS"
+   u:entity="colone"
+   string=":="
+   />
+  <xsl:output-character
+   character="&#x2255;"
+   u:name="EQUALS COLON"
+   u:entity="ecolon"
+   string="=:"
+   />
+
+  <!-- * x2256 to x2255 not in roff -->
+
+  <xsl:output-character
+   character="&#x225f;"
+   u:name="QUESTIONED EQUAL TO"
+   string="?="
+   />
+  <xsl:output-character
+   character="&#x2260;"
+   u:name="NOT EQUAL TO"
+   u:entity="ne"
+   string="@esc@(!="
+   />
+  <xsl:output-character
+   character="&#x2261;"
+   u:name="IDENTICAL TO"
+   u:entity="equiv"
+   string="@esc@(=="
+   />
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2262;" -->
+  <!-- *      u:name="NOT IDENTICAL TO" -->
+  <!-- *      u:entity="nequiv" -->
+  <!-- *      /> -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2263;" -->
+  <!-- *      u:name="STRICTLY EQUIVALENT TO" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x2264;"
+   u:name="LESS-THAN OR EQUAL TO"
+   u:entity="le"
+   string="@esc@(&lt;="
+   />
+  <xsl:output-character
+   character="&#x2265;"
+   u:name="GREATER-THAN OR EQUAL TO"
+   u:entity="ge"
+   string="@esc@(>="
+   />
+  <!-- * x2266 to x2269 not in roff -->
+
+  <xsl:output-character
+   character="&#x226a;"
+   u:name="MUCH LESS-THAN"
+   u:entity="Lt"
+   string="&lt;&lt;"
+   />
+  <xsl:output-character
+   character="&#x226b;"
+   u:name="MUCH GREATER-THAN"
+   u:entity="Gt"
+   string=">>"
+   />
+  <!-- * x226c to x2281 not in roff -->
+
+  <xsl:output-character
+   character="&#x2282;"
+   u:name="SUBSET OF"
+   u:entity="sub"
+   string="@esc@(sb"
+   />
+  <xsl:output-character
+   character="&#x2283;"
+   u:name="SUPERSET OF"
+   u:entity="sup"
+   string="@esc@(sp"
+   />
+  <xsl:output-character
+   character="&#x2284;"
+   u:name="NOT A SUBSET OF"
+   u:entity="nsub"
+   string="@esc@(nb"
+   />
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x2285;" -->
+  <!-- *      u:name="NOT A SUPERSET OF" -->
+  <!-- *      u:entity="nsup" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x2286;"
+   u:name="SUBSET OF OR EQUAL TO"
+   u:entity="sube"
+   string="@esc@(ib"
+   />
+  <xsl:output-character
+   character="&#x2287;"
+   u:name="SUPERSET OF OR EQUAL TO"
+   u:entity="supe"
+   string="@esc@(ip"
+   />
+  <!-- * x2288 to x2294 not in roff -->
+
+  <xsl:output-character
+   character="&#x2295;"
+   u:name="CIRCLED PLUS"
+   u:entity="oplus"
+   string="@esc@(c+"
+   />
+  <xsl:output-character
+   character="&#x2296;"
+   u:name="CIRCLED MINUS"
+   u:entity="ominus"
+   string="@esc@(c*"
+   />
+  <xsl:output-character
+   character="&#x2297;"
+   u:name="CIRCLED TIMES"
+   u:entity="otimes"
+   string="@esc@(c*"
+   />
+
+  <!-- * x2298 to x22a4 not in roff -->
+
+  <xsl:output-character
+   character="&#x22a5;"
+   u:name="UP TACK"
+   u:entity="bottom"
+   string="@esc@(pp"
+   />
+
+  <!-- * x22a6 to x22bf not in roff -->
+
+  <xsl:output-character
+   character="&#x22c0;"
+   u:name="N-ARY LOGICAL AND"
+   string="@esc@(AN"
+   />
+  <xsl:output-character
+   character="&#x22c1;"
+   u:name="N-ARY LOGICAL OR"
+   string="@esc@(OR"
+   />
+  <xsl:output-character
+   character="&#x22c2;"
+   u:name="N-ARY INTERSECTION"
+   string="@esc@(ca"
+   />
+  <xsl:output-character
+   character="&#x22c3;"
+   u:name="N-ARY UNION"
+   string="@esc@(cu"
+   />
+
+  <!-- * not in roff -->
+  <!-- *      <xsl:output-character -->
+  <!-- *      character="&#x22c4;" -->
+  <!-- *      u:name="DIAMOND OPERATOR" -->
+  <!-- *      u:entity="diam" -->
+  <!-- *      /> -->
+  <xsl:output-character
+   character="&#x22c5;"
+   u:name="DOT OPERATOR"
+   u:entity="sdot"
+   string="@esc@(md"
+   />
+  <xsl:output-character
+   character="&#x22c6;"
+   u:name="STAR OPERATOR"
+   u:entity="sstarf"
+   string="@esc@(**"
+   />
+  <!-- * x22c7 to x22cd not in roff -->
+
+  <xsl:output-character
+   character="&#x22ce;"
+   u:name="CURLY LOGICAL OR"
+   u:entity="cuvee"
+   string="@esc@(OR"
+   />
+  <xsl:output-character
+   character="&#x22cf;"
+   u:name="CURLY LOGICAL AND"
+   u:entity="cuwed"
+   string="@esc@(AN"
+   />
+
+  <!-- * x22d0 to x22d7 not in roff -->
+
+  <xsl:output-character
+   character="&#x22d8;"
+   u:name="VERY MUCH LESS-THAN"
+   u:entity="Ll"
+   string="&lt;&lt;&lt;"
+   />
+  <xsl:output-character
+   character="&#x22d9;"
+   u:name="VERY MUCH GREATER-THAN"
+   u:entity="Gg"
+   string=">>>"
+   />
+
+  <!-- * x22da to x22ee not in roff -->
+
+  <xsl:output-character
+   character="&#x22ef;"
+   u:name="MIDLINE HORIZONTAL ELLIPSIS"
+   string="@esc@&amp;..."
+   />
+
+  <!-- * x22fo to x22ff not in roff -->
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Mathematical Operators -->
+  <!-- * ***************************************************************** -->
+  
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+  <!-- *   Miscellaneous Technical -->
+  <!-- *     x2300 to x23ff -->
+  <!-- *     - do nothing except for angle brackets - -->
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+  <xsl:output-character
+   character="&#x2329;"
+   u:name="LEFT-POINTING ANGLE BRACKET"
+   u:entity="lang"
+   string="@esc@(la"
+   />
+  <xsl:output-character
+   character="&#x232a;"
+   u:name="RIGHT-POINTING ANGLE BRACKET"
+   u:entity="rang"
+   string="@esc@(ra"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Control Pictures -->
+  <!-- *     x2400 to x243f -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#x2400;"
+   u:name="SYMBOL FOR NULL"
+   string="NUL"
+   />
+  <xsl:output-character
+   character="&#x2401;"
+   u:name="SYMBOL FOR START OF HEADING"
+   string="SOH"
+   />
+  <xsl:output-character
+   character="&#x2402;"
+   u:name="SYMBOL FOR START OF TEXT"
+   string="STX"
+   />
+  <xsl:output-character
+   character="&#x2403;"
+   u:name="SYMBOL FOR END OF TEXT"
+   string="ETX"
+   />
+  <xsl:output-character
+   character="&#x2404;"
+   u:name="SYMBOL FOR END OF TRANSMISSION"
+   string="EOT"
+   />
+  <xsl:output-character
+   character="&#x2405;"
+   u:name="SYMBOL FOR ENQUIRY"
+   string="ENQ"
+   />
+  <xsl:output-character
+   character="&#x2406;"
+   u:name="SYMBOL FOR ACKNOWLEDGE"
+   string="ACK"
+   />
+  <xsl:output-character
+   character="&#x2407;"
+   u:name="SYMBOL FOR BELL"
+   string="BEL"
+   />
+  <xsl:output-character
+   character="&#x2408;"
+   u:name="SYMBOL FOR BACKSPACE"
+   string="BS"
+   />
+  <xsl:output-character
+   character="&#x2409;"
+   u:name="SYMBOL FOR HORIZONTAL TABULATION"
+   string="HT"
+   />
+  <xsl:output-character
+   character="&#x240a;"
+   u:name="SYMBOL FOR LINE FEED"
+   string="LF"
+   />
+  <xsl:output-character
+   character="&#x240b;"
+   u:name="SYMBOL FOR VERTICAL TABULATION"
+   string="VT"
+   />
+  <xsl:output-character
+   character="&#x240c;"
+   u:name="SYMBOL FOR FORM FEED"
+   string="FF"
+   />
+  <xsl:output-character
+   character="&#x240d;"
+   u:name="SYMBOL FOR CARRIAGE RETURN"
+   string="CR"
+   />
+  <xsl:output-character
+   character="&#x240e;"
+   u:name="SYMBOL FOR SHIFT OUT"
+   string="SO"
+   />
+  <xsl:output-character
+   character="&#x240f;"
+   u:name="SYMBOL FOR SHIFT IN"
+   string="SI"
+   />
+  <xsl:output-character
+   character="&#x2410;"
+   u:name="SYMBOL FOR DATA LINK ESCAPE"
+   string="DLE"
+   />
+  <xsl:output-character
+   character="&#x2411;"
+   u:name="SYMBOL FOR DEVICE CONTROL ONE"
+   string="DC1"
+   />
+  <xsl:output-character
+   character="&#x2412;"
+   u:name="SYMBOL FOR DEVICE CONTROL TWO"
+   string="DC2"
+   />
+  <xsl:output-character
+   character="&#x2413;"
+   u:name="SYMBOL FOR DEVICE CONTROL THREE"
+   string="DC3"
+   />
+  <xsl:output-character
+   character="&#x2414;"
+   u:name="SYMBOL FOR DEVICE CONTROL FOUR"
+   string="DC4"
+   />
+  <xsl:output-character
+   character="&#x2415;"
+   u:name="SYMBOL FOR NEGATIVE ACKNOWLEDGE"
+   string="NAK"
+   />
+  <xsl:output-character
+   character="&#x2416;"
+   u:name="SYMBOL FOR SYNCHRONOUS IDLE"
+   string="SYN"
+   />
+  <xsl:output-character
+   character="&#x2417;"
+   u:name="SYMBOL FOR END OF TRANSMISSION BLOCK"
+   string="ETB"
+   />
+  <xsl:output-character
+   character="&#x2418;"
+   u:name="SYMBOL FOR CANCEL"
+   string="CAN"
+   />
+  <xsl:output-character
+   character="&#x2419;"
+   u:name="SYMBOL FOR END OF MEDIUM"
+   string="EM"
+   />
+  <xsl:output-character
+   character="&#x241a;"
+   u:name="SYMBOL FOR SUBSTITUTE"
+   string="SUB"
+   />
+  <xsl:output-character
+   character="&#x241b;"
+   u:name="SYMBOL FOR ESCAPE"
+   string="ESC"
+   />
+  <xsl:output-character
+   character="&#x241c;"
+   u:name="SYMBOL FOR FILE SEPARATOR"
+   string="FS"
+   />
+  <xsl:output-character
+   character="&#x241d;"
+   u:name="SYMBOL FOR GROUP SEPARATOR"
+   string="GS"
+   />
+  <xsl:output-character
+   character="&#x241e;"
+   u:name="SYMBOL FOR RECORD SEPARATOR"
+   string="RS"
+   />
+  <xsl:output-character
+   character="&#x241f;"
+   u:name="SYMBOL FOR UNIT SEPARATOR"
+   string="US"
+   />
+  <xsl:output-character
+   character="&#x2420;"
+   u:name="SYMBOL FOR SPACE"
+   string="SP"
+   />
+  <xsl:output-character
+   character="&#x2421;"
+   u:name="SYMBOL FOR DELETE"
+   string="DEL"
+   />
+  <!-- * no roff equiv; just use real space -->
+  <xsl:output-character
+   character="&#x2422;"
+   u:name="BLANK SYMBOL"
+   string=" "
+   />
+  <!-- * no roff equiv; just use real space -->
+  <xsl:output-character
+   character="&#x2423;"
+   u:name="OPEN BOX"
+   u:entity="blank"
+   string=" "
+   />
+  <xsl:output-character
+   character="&#x2424;"
+   u:name="SYMBOL FOR NEWLINE"
+   string="NL"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Control Pictures -->
+  <!-- * ***************************************************************** -->
+
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+  <!-- *   Optical Character Recognition -->
+  <!-- *     x2440 to x24ff -->
+  <!-- *     - do nothing - -->
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Enclosed Alphanumerics -->
+  <!-- *     x2460 to x24ff -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#x2460;"
+   u:name="CIRCLED DIGIT ONE"
+   string="1"
+   />
+  <xsl:output-character
+   character="&#x2461;"
+   u:name="CIRCLED DIGIT TWO"
+   string="2"
+   />
+  <xsl:output-character
+   character="&#x2462;"
+   u:name="CIRCLED DIGIT THREE"
+   string="3"
+   />
+  <xsl:output-character
+   character="&#x2463;"
+   u:name="CIRCLED DIGIT FOUR"
+   string="4"
+   />
+  <xsl:output-character
+   character="&#x2464;"
+   u:name="CIRCLED DIGIT FIVE"
+   string="5"
+   />
+  <xsl:output-character
+   character="&#x2465;"
+   u:name="CIRCLED DIGIT SIX"
+   string="6"
+   />
+  <xsl:output-character
+   character="&#x2466;"
+   u:name="CIRCLED DIGIT SEVEN"
+   string="7"
+   />
+  <xsl:output-character
+   character="&#x2467;"
+   u:name="CIRCLED DIGIT EIGHT"
+   string="8"
+   />
+  <xsl:output-character
+   character="&#x2468;"
+   u:name="CIRCLED DIGIT NINE"
+   string="9"
+   />
+  <xsl:output-character
+   character="&#x2469;"
+   u:name="CIRCLED NUMBER TEN"
+   string="10"
+   />
+  <xsl:output-character
+   character="&#x246a;"
+   u:name="CIRCLED NUMBER ELEVEN"
+   string="11"
+   />
+  <xsl:output-character
+   character="&#x246b;"
+   u:name="CIRCLED NUMBER TWELVE"
+   string="12"
+   />
+  <xsl:output-character
+   character="&#x246c;"
+   u:name="CIRCLED NUMBER THIRTEEN"
+   string="13"
+   />
+  <xsl:output-character
+   character="&#x246d;"
+   u:name="CIRCLED NUMBER FOURTEEN"
+   string="14"
+   />
+  <xsl:output-character
+   character="&#x246e;"
+   u:name="CIRCLED NUMBER FIFTEEN" 
+   string="15"
+  />
+  <xsl:output-character
+   character="&#x246f;"
+   u:name="CIRCLED NUMBER SIXTEEN"
+   string="16"
+   />
+  <xsl:output-character
+   character="&#x2470;"
+   u:name="CIRCLED NUMBER SEVENTEEN"
+   string="17"
+   />
+  <xsl:output-character
+   character="&#x2471;"
+   u:name="CIRCLED NUMBER EIGHTEEN"
+   string="18"
+   />
+  <xsl:output-character
+   character="&#x2472;"
+   u:name="CIRCLED NUMBER NINETEEN"
+   string="19"
+   />
+  <xsl:output-character
+   character="&#x2473;"
+   u:name="CIRCLED NUMBER TWENTY"
+   string="20"
+   />
+  <xsl:output-character
+   character="&#x2474;"
+   u:name="PARENTHESIZED DIGIT ONE"
+   string="(1)"
+   />
+  <xsl:output-character
+   character="&#x2475;"
+   u:name="PARENTHESIZED DIGIT TWO"
+   string="(2)"
+   />
+  <xsl:output-character
+   character="&#x2476;"
+   u:name="PARENTHESIZED DIGIT THREE"
+   string="(3)"
+   />
+  <xsl:output-character
+   character="&#x2477;"
+   u:name="PARENTHESIZED DIGIT FOUR"
+   string="(4)"
+   />
+  <xsl:output-character
+   character="&#x2478;"
+   u:name="PARENTHESIZED DIGIT FIVE"
+   string="(5)"
+   />
+  <xsl:output-character
+   character="&#x2479;"
+   u:name="PARENTHESIZED DIGIT SIX"
+   string="(6)"
+   />
+  <xsl:output-character
+   character="&#x247a;"
+   u:name="PARENTHESIZED DIGIT SEVEN"
+   string="(7)"
+   />
+  <xsl:output-character
+   character="&#x247b;"
+   u:name="PARENTHESIZED DIGIT EIGHT"
+   string="(8)"
+   />
+  <xsl:output-character
+   character="&#x247c;"
+   u:name="PARENTHESIZED DIGIT NINE"
+   string="(9)"
+   />
+  <xsl:output-character
+   character="&#x247d;"
+   u:name="PARENTHESIZED NUMBER TEN"
+   string="(10)"
+   />
+  <xsl:output-character
+   character="&#x247e;"
+   u:name="PARENTHESIZED NUMBER ELEVEN"
+   string="(11)"
+   />
+  <xsl:output-character
+   character="&#x247f;"
+   u:name="PARENTHESIZED NUMBER TWELVE"
+   string="(12)"
+   />
+  <xsl:output-character
+   character="&#x2480;"
+   u:name="PARENTHESIZED NUMBER THIRTEEN"
+   string="(13)"
+   />
+  <xsl:output-character
+   character="&#x2481;"
+   u:name="PARENTHESIZED NUMBER FOURTEEN"
+   string="(14)"
+   />
+  <xsl:output-character
+   character="&#x2482;"
+   u:name="PARENTHESIZED NUMBER FIFTEEN"
+   string="(15)"
+   />
+  <xsl:output-character
+   character="&#x2483;"
+   u:name="PARENTHESIZED NUMBER SIXTEEN"
+   string="(16)"
+   />
+  <xsl:output-character
+   character="&#x2484;"
+   u:name="PARENTHESIZED NUMBER SEVENTEEN"
+   string="(17)"
+   />
+  <xsl:output-character
+   character="&#x2485;"
+   u:name="PARENTHESIZED NUMBER EIGHTEEN"
+   string="(18)"
+   />
+  <xsl:output-character
+   character="&#x2486;"
+   u:name="PARENTHESIZED NUMBER NINETEEN"
+   string="(19)"
+   />
+  <xsl:output-character
+   character="&#x2487;"
+   u:name="PARENTHESIZED NUMBER TWENTY"
+   string="(20)"
+   />
+  <xsl:output-character
+   character="&#x2488;"
+   u:name="DIGIT ONE FULL STOP"
+   string="1."
+   />
+  <xsl:output-character
+   character="&#x2489;"
+   u:name="DIGIT TWO FULL STOP"
+   string="2."
+   />
+  <xsl:output-character
+   character="&#x248a;"
+   u:name="DIGIT THREE FULL STOP"
+   string="3."
+   />
+  <xsl:output-character
+   character="&#x248b;"
+   u:name="DIGIT FOUR FULL STOP"
+   string="4."
+   />
+  <xsl:output-character
+   character="&#x248c;"
+   u:name="DIGIT FIVE FULL STOP"
+   string="5."
+   />
+  <xsl:output-character
+   character="&#x248d;"
+   u:name="DIGIT SIX FULL STOP"
+   string="6."
+   />
+  <xsl:output-character
+   character="&#x248e;"
+   u:name="DIGIT SEVEN FULL STOP"
+   string="7."
+   />
+  <xsl:output-character
+   character="&#x248f;"
+   u:name="DIGIT EIGHT FULL STOP"
+   string="8."
+   />
+  <xsl:output-character
+   character="&#x2490;"
+   u:name="DIGIT NINE FULL STOP"
+   string="9."
+   />
+  <xsl:output-character
+   character="&#x2491;"
+   u:name="NUMBER TEN FULL STOP"
+   string="10."
+   />
+  <xsl:output-character
+   character="&#x2492;"
+   u:name="NUMBER ELEVEN FULL STOP"
+   string="11."
+   />
+  <xsl:output-character
+   character="&#x2493;"
+   u:name="NUMBER TWELVE FULL STOP"
+   string="12."
+   />
+  <xsl:output-character
+   character="&#x2494;"
+   u:name="NUMBER THIRTEEN FULL STOP"
+   string="13."
+   />
+  <xsl:output-character
+   character="&#x2495;"
+   u:name="NUMBER FOURTEEN FULL STOP"
+   string="14."
+   />
+  <xsl:output-character
+   character="&#x2496;"
+   u:name="NUMBER FIFTEEN FULL STOP"
+   string="15."
+   />
+  <xsl:output-character
+   character="&#x2497;"
+   u:name="NUMBER SIXTEEN FULL STOP"
+   string="16."
+   />
+  <xsl:output-character
+   character="&#x2498;"
+   u:name="NUMBER SEVENTEEN FULL STOP"
+   string="17."
+   />
+  <xsl:output-character
+   character="&#x2499;"
+   u:name="NUMBER EIGHTEEN FULL STOP"
+   string="18."
+   />
+  <xsl:output-character
+   character="&#x249a;"
+   u:name="NUMBER NINETEEN FULL STOP"
+   string="19."
+   />
+  <xsl:output-character
+   character="&#x249b;"
+   u:name="NUMBER TWENTY FULL STOP"
+   string="20."
+   />
+  <xsl:output-character
+   character="&#x249c;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER A"
+   string="(a)"
+   />
+  <xsl:output-character
+   character="&#x249d;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER B"
+   string="(b)"
+   />
+  <xsl:output-character
+   character="&#x249e;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER C"
+   string="(c)"
+   />
+  <xsl:output-character
+   character="&#x249f;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER D"
+   string="(d)"
+   />
+  <xsl:output-character
+   character="&#x24a0;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER E"
+   string="(e)"
+   />
+  <xsl:output-character
+   character="&#x24a1;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER F"
+   string="(f)"
+   />
+  <xsl:output-character
+   character="&#x24a2;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER G"
+   string="(g)"
+   />
+  <xsl:output-character
+   character="&#x24a3;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER H"
+   string="(h)"
+   />
+  <xsl:output-character
+   character="&#x24a4;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER I"
+   string="(i)"
+   />
+  <xsl:output-character
+   character="&#x24a5;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER J"
+   string="(j)"
+   />
+  <xsl:output-character
+   character="&#x24a6;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER K"
+   string="(k)"
+   />
+  <xsl:output-character
+   character="&#x24a7;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER L"
+   string="(l)"
+   />
+  <xsl:output-character
+   character="&#x24a8;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER M"
+   string="(m)"
+   />
+  <xsl:output-character
+   character="&#x24a9;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER N"
+   string="(n)"
+   />
+  <xsl:output-character
+   character="&#x24aa;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER O"
+   string="(o)"
+   />
+  <xsl:output-character
+   character="&#x24ab;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER P"
+   string="(p)"
+   />
+  <xsl:output-character
+   character="&#x24ac;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER Q"
+   string="(q)"
+   />
+  <xsl:output-character
+   character="&#x24ad;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER R"
+   string="(r)"
+   />
+  <xsl:output-character
+   character="&#x24ae;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER S"
+   string="(s)"
+   />
+  <xsl:output-character
+   character="&#x24af;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER T"
+   string="(t)"
+   />
+  <xsl:output-character
+   character="&#x24b0;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER U"
+   string="(u)"
+   />
+  <xsl:output-character
+   character="&#x24b1;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER V"
+   string="(v)"
+   />
+  <xsl:output-character
+   character="&#x24b2;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER W"
+   string="(w)"
+   />
+  <xsl:output-character
+   character="&#x24b3;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER X"
+   string="(x)"
+   />
+  <xsl:output-character
+   character="&#x24b4;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER Y"
+   string="(y)"
+   />
+  <xsl:output-character
+   character="&#x24b5;"
+   u:name="PARENTHESIZED LATIN SMALL LETTER Z"
+   string="(z)"
+   />
+  <xsl:output-character
+   character="&#x24b6;"
+   u:name="CIRCLED LATIN CAPITAL LETTER A"
+   string="A"
+   />
+  <xsl:output-character
+   character="&#x24b7;"
+   u:name="CIRCLED LATIN CAPITAL LETTER B"
+   string="B"
+   />
+  <xsl:output-character
+   character="&#x24b8;"
+   u:name="CIRCLED LATIN CAPITAL LETTER C"
+   string="C"
+   />
+  <xsl:output-character
+   character="&#x24b9;"
+   u:name="CIRCLED LATIN CAPITAL LETTER D"
+   string="D"
+   />
+  <xsl:output-character
+   character="&#x24ba;"
+   u:name="CIRCLED LATIN CAPITAL LETTER E"
+   string="E"
+   />
+  <xsl:output-character
+   character="&#x24bb;"
+   u:name="CIRCLED LATIN CAPITAL LETTER F"
+   string="F"
+   />
+  <xsl:output-character
+   character="&#x24bc;"
+   u:name="CIRCLED LATIN CAPITAL LETTER G"
+   string="G"
+   />
+  <xsl:output-character
+   character="&#x24bd;"
+   u:name="CIRCLED LATIN CAPITAL LETTER H"
+   string="H"
+   />
+  <xsl:output-character
+   character="&#x24be;"
+   u:name="CIRCLED LATIN CAPITAL LETTER I"
+   string="I"
+   />
+  <xsl:output-character
+   character="&#x24bf;"
+   u:name="CIRCLED LATIN CAPITAL LETTER J"
+   string="J"
+   />
+  <xsl:output-character
+   character="&#x24c0;"
+   u:name="CIRCLED LATIN CAPITAL LETTER K"
+   string="K"
+   />
+  <xsl:output-character
+   character="&#x24c1;"
+   u:name="CIRCLED LATIN CAPITAL LETTER L"
+   string="L"
+   />
+  <xsl:output-character
+   character="&#x24c2;"
+   u:name="CIRCLED LATIN CAPITAL LETTER M"
+   string="M"
+   />
+  <xsl:output-character
+   character="&#x24c3;"
+   u:name="CIRCLED LATIN CAPITAL LETTER N"
+   string="N"
+   />
+  <xsl:output-character
+   character="&#x24c4;"
+   u:name="CIRCLED LATIN CAPITAL LETTER O"
+   string="O"
+   />
+  <xsl:output-character
+   character="&#x24c5;"
+   u:name="CIRCLED LATIN CAPITAL LETTER P"
+   string="P"
+   />
+  <xsl:output-character
+   character="&#x24c6;"
+   u:name="CIRCLED LATIN CAPITAL LETTER Q"
+   string="Q"
+   />
+  <xsl:output-character
+   character="&#x24c7;"
+   u:name="CIRCLED LATIN CAPITAL LETTER R"
+   string="R"
+   />
+  <xsl:output-character
+   character="&#x24c8;"
+   u:name="CIRCLED LATIN CAPITAL LETTER S"
+   u:entity="oS"
+   string="S"
+   />
+  <xsl:output-character
+   character="&#x24c9;"
+   u:name="CIRCLED LATIN CAPITAL LETTER T"
+   string="T"
+   />
+  <xsl:output-character
+   character="&#x24ca;"
+   u:name="CIRCLED LATIN CAPITAL LETTER U"
+   string="U"
+   />
+  <xsl:output-character
+   character="&#x24cb;"
+   u:name="CIRCLED LATIN CAPITAL LETTER V"
+   string="V"
+   />
+  <xsl:output-character
+   character="&#x24cc;"
+   u:name="CIRCLED LATIN CAPITAL LETTER W"
+   string="W"
+   />
+  <xsl:output-character
+   character="&#x24cd;"
+   u:name="CIRCLED LATIN CAPITAL LETTER X"
+   string="X"
+   />
+  <xsl:output-character
+   character="&#x24ce;"
+   u:name="CIRCLED LATIN CAPITAL LETTER Y"
+   string="Y"
+   />
+  <xsl:output-character
+   character="&#x24cf;"
+   u:name="CIRCLED LATIN CAPITAL LETTER Z"
+   string="Z"
+   />
+  <xsl:output-character
+   character="&#x24d0;"
+   u:name="CIRCLED LATIN SMALL LETTER A"
+   string="a"
+   />
+  <xsl:output-character
+   character="&#x24d1;"
+   u:name="CIRCLED LATIN SMALL LETTER B"
+   string="b"
+   />
+  <xsl:output-character
+   character="&#x24d2;"
+   u:name="CIRCLED LATIN SMALL LETTER C"
+   string="c"
+   />
+  <xsl:output-character
+   character="&#x24d3;"
+   u:name="CIRCLED LATIN SMALL LETTER D"
+   string="d"
+   />
+  <xsl:output-character
+   character="&#x24d4;"
+   u:name="CIRCLED LATIN SMALL LETTER E"
+   string="e"
+   />
+  <xsl:output-character
+   character="&#x24d5;"
+   u:name="CIRCLED LATIN SMALL LETTER F"
+   string="f"
+   />
+  <xsl:output-character
+   character="&#x24d6;"
+   u:name="CIRCLED LATIN SMALL LETTER G"
+   string="g"
+   />
+  <xsl:output-character
+   character="&#x24d7;"
+   u:name="CIRCLED LATIN SMALL LETTER H"
+   string="h"
+   />
+  <xsl:output-character
+   character="&#x24d8;"
+   u:name="CIRCLED LATIN SMALL LETTER I"
+   string="i"
+   />
+  <xsl:output-character
+   character="&#x24d9;"
+   u:name="CIRCLED LATIN SMALL LETTER J"
+   string="j"
+   />
+  <xsl:output-character
+   character="&#x24da;"
+   u:name="CIRCLED LATIN SMALL LETTER K"
+   string="k"
+   />
+  <xsl:output-character
+   character="&#x24db;"
+   u:name="CIRCLED LATIN SMALL LETTER L"
+   string="l"
+   />
+  <xsl:output-character
+   character="&#x24dc;"
+   u:name="CIRCLED LATIN SMALL LETTER M"
+   string="m"
+   />
+  <xsl:output-character
+   character="&#x24dd;"
+   u:name="CIRCLED LATIN SMALL LETTER N"
+   string="n"
+   />
+  <xsl:output-character
+   character="&#x24de;"
+   u:name="CIRCLED LATIN SMALL LETTER O"
+   string="o"
+   />
+  <xsl:output-character
+   character="&#x24df;"
+   u:name="CIRCLED LATIN SMALL LETTER P"
+   string="p"
+   />
+  <xsl:output-character
+   character="&#x24e0;"
+   u:name="CIRCLED LATIN SMALL LETTER Q"
+   string="q"
+   />
+  <xsl:output-character
+   character="&#x24e1;"
+   u:name="CIRCLED LATIN SMALL LETTER R"
+   string="r"
+   />
+  <xsl:output-character
+   character="&#x24e2;"
+   u:name="CIRCLED LATIN SMALL LETTER S"
+   string="s"
+   />
+  <xsl:output-character
+   character="&#x24e3;"
+   u:name="CIRCLED LATIN SMALL LETTER T"
+   string="t"
+   />
+  <xsl:output-character
+   character="&#x24e4;"
+   u:name="CIRCLED LATIN SMALL LETTER U"
+   string="u"
+   />
+  <xsl:output-character
+   character="&#x24e5;"
+   u:name="CIRCLED LATIN SMALL LETTER V"
+   string="b"
+   />
+  <xsl:output-character
+   character="&#x24e6;"
+   u:name="CIRCLED LATIN SMALL LETTER W"
+   string="w"
+   />
+  <xsl:output-character
+   character="&#x24e7;"
+   u:name="CIRCLED LATIN SMALL LETTER X"
+   string="x"
+   />
+  <xsl:output-character
+   character="&#x24e8;"
+   u:name="CIRCLED LATIN SMALL LETTER Y"
+   string="y"
+   />
+  <xsl:output-character
+   character="&#x24e9;"
+   u:name="CIRCLED LATIN SMALL LETTER Z"
+   string="z"
+   />
+  <xsl:output-character
+   character="&#x24ea;"
+   u:name="CIRCLED DIGIT ZERO"
+   string="0"
+   />
+  <xsl:output-character
+   character="&#x24eb;"
+   u:name="NEGATIVE CIRCLED NUMBER ELEVEN"
+   string="11"
+   />
+  <xsl:output-character
+   character="&#x24ec;"
+   u:name="NEGATIVE CIRCLED NUMBER TWELVE"
+   string="12"
+   />
+  <xsl:output-character
+   character="&#x24ed;"
+   u:name="NEGATIVE CIRCLED NUMBER THIRTEEN"
+   string="13"
+   />
+  <xsl:output-character
+   character="&#x24ee;"
+   u:name="NEGATIVE CIRCLED NUMBER FOURTEEN"
+   string="14"
+   />
+  <xsl:output-character
+   character="&#x24ef;"
+   u:name="NEGATIVE CIRCLED NUMBER FIFTEEN"
+   string="15"
+   />
+  <xsl:output-character
+   character="&#x24f0;"
+   u:name="NEGATIVE CIRCLED NUMBER SIXTEEN"
+   string="16"
+   />
+  <xsl:output-character
+   character="&#x24f1;"
+   u:name="NEGATIVE CIRCLED NUMBER SEVENTEEN"
+   string="17"
+   />
+  <xsl:output-character
+   character="&#x24f2;"
+   u:name="NEGATIVE CIRCLED NUMBER EIGHTEEN"
+   string="18"
+   />
+  <xsl:output-character
+   character="&#x24f3;"
+   u:name="NEGATIVE CIRCLED NUMBER NINETEEN"
+   string="19"
+   />
+  <xsl:output-character
+   character="&#x24f4;"
+   u:name="NEGATIVE CIRCLED NUMBER TWENTY"
+   string="20"
+   />
+  <xsl:output-character
+   character="&#x24f5;"
+   u:name="DOUBLE CIRCLED DIGIT ONE"
+   string="1"
+   />
+  <xsl:output-character
+   character="&#x24f6;"
+   u:name="DOUBLE CIRCLED DIGIT TWO"
+   string="2"
+   />
+  <xsl:output-character
+   character="&#x24f7;"
+   u:name="DOUBLE CIRCLED DIGIT THREE"
+   string="3"
+   />
+  <xsl:output-character
+   character="&#x24f8;"
+   u:name="DOUBLE CIRCLED DIGIT FOUR"
+   string="4"
+   />
+  <xsl:output-character
+   character="&#x24f9;"
+   u:name="DOUBLE CIRCLED DIGIT FIVE"
+   string="5"
+   />
+  <xsl:output-character
+   character="&#x24fa;"
+   u:name="DOUBLE CIRCLED DIGIT SIX"
+   string="6"
+   />
+  <xsl:output-character
+   character="&#x24fb;"
+   u:name="DOUBLE CIRCLED DIGIT SEVEN"
+   string="7"
+   />
+  <xsl:output-character
+   character="&#x24fc;"
+   u:name="DOUBLE CIRCLED DIGIT EIGHT"
+   string="8"
+   />
+  <xsl:output-character
+   character="&#x24fd;"
+   u:name="DOUBLE CIRCLED DIGIT NINE"
+   string="9"
+   />
+  <xsl:output-character
+   character="&#x24fe;"
+   u:name="DOUBLE CIRCLED NUMBER TEN"
+   string="10"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Enclosed Alphanumerics -->
+  <!-- * ***************************************************************** -->
+
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+  <!-- *   Box Drawing -->
+  <!-- *     x2500 to x257f -->
+  <!-- *   Block Elements -->
+  <!-- *     x2580 to x259f -->
+  <!-- *   - do nothing - -->
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+  
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Geometric Shapes -->
+  <!-- *     x25a0 to x25f7 -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#x25a1;"
+   u:name="WHITE SQUARE"
+   u:entity="squ"
+   string="@esc@(sq"
+   />
+  <xsl:output-character
+   character="&#x25a2;"
+   u:name="WHITE SQUARE WITH ROUNDED CORNERS"
+   string="@esc@(sq"
+   />
+  <xsl:output-character
+   character="&#x25ab;"
+   u:name="WHITE SMALL SQUARE"
+   string="@esc@(sq"
+   />
+  <xsl:output-character
+   character="&#x25ba;"
+   u:name="BLACK RIGHT-POINTING POINTER"
+   string="@esc@fB>@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x25bb;"
+   u:name="WHITE RIGHT-POINTING POINTER"
+   string=">"
+   />
+  <xsl:output-character
+   character="&#x25bc;"
+   u:name="BLACK DOWN-POINTING TRIANGLE"
+   string="@esc@fBv@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x25bd;"
+   u:name="WHITE DOWN-POINTING TRIANGLE"
+   u:entity="xdtri"
+   string="v"
+   />
+  <xsl:output-character
+   character="&#x25c4;"
+   u:name="BLACK LEFT-POINTING POINTER"
+   string="@esc@fB&lt;@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x25c5;"
+   u:name="WHITE LEFT-POINTING POINTER"
+   string="&lt;"
+   />
+  <xsl:output-character
+   character="&#x25c6;"
+   u:name="BLACK DIAMOND"
+   string="@esc@(DI"
+   />
+  <xsl:output-character
+   character="&#x25c7;"
+   u:name="WHITE DIAMOND"
+   string="@esc@(lz"
+   />
+  <xsl:output-character
+   character="&#x25ca;"
+   u:name="LOZENGE"
+   u:entity="loz"
+   string="@esc@(lz"
+   />
+  <xsl:output-character
+   character="&#x25cb;"
+   u:name="WHITE CIRCLE"
+   u:entity="cir"
+   string="@esc@(ci"
+   />
+  <xsl:output-character
+   character="&#x25cf;"
+   u:name="BLACK CIRCLE"
+   string="@esc@(bu"
+   />
+  <xsl:output-character
+   character="&#x25e6;"
+   u:name="WHITE BULLET"
+   string="@esc@(ci"
+   />
+  <xsl:output-character
+   character="&#x25ef;"
+   u:name="LARGE CIRCLE"
+   u:entity="xcirc"
+   string="@esc@(ci"
+   />
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Geometric Shapes -->
+  <!-- *   x25a0 to x25f7 -->
+  <!-- * ***************************************************************** -->
+
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Miscellaneous Symbols -->
+  <!-- *   x2600 to x26ff -->
+  <!-- * ***************************************************************** -->
+  
+  <xsl:output-character
+   character="&#x261a;"
+   u:name="BLACK LEFT POINTING INDEX"
+   string="@esc@(lh"
+   />
+  <xsl:output-character
+   character="&#x261b;"
+   u:name="BLACK RIGHT POINTING INDEX"
+   string="@esc@(rh)"
+   />
+  <xsl:output-character
+   character="&#x261c;"
+   u:name="WHITE LEFT POINTING INDEX"
+   string="@esc@(lh"
+   />
+  <xsl:output-character
+   character="&#x261e;"
+   u:name="WHITE RIGHT POINTING INDEX"
+   string="@esc@(rh)"
+   />
+  <xsl:output-character
+   character="&#x2660;"
+   u:name="BLACK SPADE SUIT"
+   u:entity="spades"
+   string="@esc@(SP"
+   />
+  <xsl:output-character
+   character="&#x2661;"
+   u:name="WHITE HEART SUIT"
+   string="@esc@(HE"
+   />
+  <xsl:output-character
+   character="&#x2662;"
+   u:name="WHITE DIAMOND SUIT"
+   string="@esc@(DI"
+   />
+  <xsl:output-character
+   character="&#x2663;"
+   u:name="BLACK CLUB SUIT"
+   u:entity="clubs"
+   string="@esc@(CL"
+   />
+  <xsl:output-character
+   character="&#x2664;"
+   u:name="WHITE SPADE SUIT"
+   string="@esc@(SP"
+   />
+  <xsl:output-character
+   character="&#x2665;"
+   u:name="BLACK HEART SUIT"
+   u:entity="hearts"
+   string="@esc@(HE"
+   />
+  <xsl:output-character
+   character="&#x2666;"
+   u:name="BLACK DIAMOND SUIT"
+   u:entity="diams"
+   string="@esc@(DI"
+   />
+  <xsl:output-character
+   character="&#x2667;"
+   u:name="WHITE CLUB SUIT"
+   string="@esc@(CL"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Miscellaneous Symbols -->
+  <!-- * ***************************************************************** -->
+
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Dingbats -->
+  <!-- *     x2700 to x27be -->
+  <!-- *     No roff equiv for most of these; just map to something close -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#x2713;"
+   u:name="CHECK MARK"
+   u:entity="check"
+   string="@esc@(OK"
+   />
+  <xsl:output-character
+   character="&#x2714;"
+   u:name="HEAVY CHECK MARK"
+   string="@esc@fB@esc@(OK@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2715;"
+   u:name="MULTIPLICATION X"
+   string="@esc@(mu"
+   />
+  <xsl:output-character
+   character="&#x2716;"
+   u:name="HEAVY MULTIPLICATION X"
+   string="@esc@fB@esc@(mu@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2717;"
+   u:name="BALLOT X"
+   u:entity="cross"
+   string="@esc@(mu"
+   />
+  <xsl:output-character
+   character="&#x2718;"
+   u:name="HEAVY BALLOT X"
+   string="@esc@fB@esc@(mu@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2719;"
+   u:name="OUTLINED GREEK CROSS"
+   string="@esc@fB+@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x271a;"
+   u:name="HEAVY GREEK CROSS"
+   string="@esc@fB+@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x271b;"
+   u:name="OPEN CENTRE CROSS"
+   string="@esc@fB+@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x271c;"
+   u:name="HEAVY OPEN CENTRE CROSS"
+   string="@esc@fB+@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x271d;"
+   u:name="LATIN CROSS"
+   string="@esc@fB+@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x271e;"
+   u:name="SHADOWED WHITE LATIN CROSS"
+   string="@esc@fB+@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x271f;"
+   u:name="OUTLINED LATIN CROSS"
+   string="@esc@fB+@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2720;"
+   u:name="MALTESE CROSS"
+   u:entity="malt"
+   string="@esc@fB+@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2721;"
+   u:name="STAR OF DAVID"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2722;"
+   u:name="FOUR TEARDROP-SPOKED ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2723;"
+   u:name="FOUR BALLOON-SPOKED ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2724;"
+   u:name="HEAVY FOUR BALLOON-SPOKED ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2725;"
+   u:name="FOUR CLUB-SPOKED ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2726;"
+   u:name="BLACK FOUR POINTED STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2727;"
+   u:name="WHITE FOUR POINTED STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2729;"
+   u:name="STRESS OUTLINED WHITE STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x272a;"
+   u:name="CIRCLED WHITE STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x272b;"
+   u:name="OPEN CENTRE BLACK STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x272c;"
+   u:name="BLACK CENTRE WHITE STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x272d;"
+   u:name="OUTLINED BLACK STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x272e;"
+   u:name="HEAVY OUTLINED BLACK STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x272f;"
+   u:name="PINWHEEL STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2730;"
+   u:name="SHADOWED WHITE STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2731;"
+   u:name="HEAVY ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2732;"
+   u:name="OPEN CENTRE ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2733;"
+   u:name="EIGHT SPOKED ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2734;"
+   u:name="EIGHT POINTED BLACK STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2735;"
+   u:name="EIGHT POINTED PINWHEEL STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2736;"
+   u:name="SIX POINTED BLACK STAR"
+   u:entity="sext"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2737;"
+   u:name="EIGHT POINTED RECTILINEAR BLACK STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2738;"
+   u:name="HEAVY EIGHT POINTED RECTILINEAR BLACK STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2739;"
+   u:name="TWELVE POINTED BLACK STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x273a;"
+   u:name="SIXTEEN POINTED ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x273b;"
+   u:name="TEARDROP-SPOKED ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x273c;"
+   u:name="OPEN CENTRE TEARDROP-SPOKED ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x273d;"
+   u:name="HEAVY TEARDROP-SPOKED ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x273e;"
+   u:name="SIX PETALLED BLACK AND WHITE FLORETTE"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x273f;"
+   u:name="BLACK FLORETTE"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2740;"
+   u:name="WHITE FLORETTE"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2741;"
+   u:name="EIGHT PETALLED OUTLINED BLACK FLORETTE"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2742;"
+   u:name="CIRCLED OPEN CENTRE EIGHT POINTED STAR"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2743;"
+   u:name="HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2744;"
+   u:name="SNOWFLAKE"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2745;"
+   u:name="TIGHT TRIFOLIATE SNOWFLAKE"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2746;"
+   u:name="HEAVY CHEVRON SNOWFLAKE"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2747;"
+   u:name="SPARKLE"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2748;"
+   u:name="HEAVY SPARKLE"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2749;"
+   u:name="BALLOON-SPOKED ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x274a;"
+   u:name="EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x274b;"
+   u:name="HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x274d;"
+   u:name="SHADOWED WHITE CIRCLE"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x274f;"
+   u:name="LOWER RIGHT DROP-SHADOWED WHITE SQUARE"
+   string="@esc@(sq"
+   />
+  <xsl:output-character
+   character="&#x2750;"
+   u:name="UPPER RIGHT DROP-SHADOWED WHITE SQUARE"
+   string="@esc@(sq"
+   />
+  <xsl:output-character
+   character="&#x2751;"
+   u:name="LOWER RIGHT SHADOWED WHITE SQUARE"
+   string="@esc@(sq"
+   />
+  <xsl:output-character
+   character="&#x2752;"
+   u:name="UPPER RIGHT SHADOWED WHITE SQUARE"
+   string="@esc@(sq"
+   />
+  <xsl:output-character
+   character="&#x2756;"
+   u:name="BLACK DIAMOND MINUS WHITE X"
+   string="*"
+   />
+  <xsl:output-character
+   character="&#x2758;"
+   u:name="LIGHT VERTICAL BAR"
+   string="@esc@(bv"
+   />
+  <xsl:output-character
+   character="&#x2759;"
+   u:name="MEDIUM VERTICAL BAR"
+   string="@esc@fB@esc@(bv@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x275a;"
+   u:name="HEAVY VERTICAL BAR"
+   string="@esc@fB@esc@(bv@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x275b;"
+   u:name="HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT"
+   string="@esc@fB@esc@(oq@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x275c;"
+   u:name="HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT"
+   string="@esc@fB@esc@(cq@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x275d;"
+   u:name="HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT"
+   string="@esc@fB@esc@(lq@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x275e;"
+   u:name="HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT"
+   string="@esc@fB@esc@(rq@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2761;"
+   u:name="CURVED STEM PARAGRAPH SIGN ORNAMENT"
+   string="@esc@(ps"
+   />
+  <xsl:output-character
+   character="&#x2762;"
+   u:name="HEAVY EXCLAMATION MARK ORNAMENT"
+   string="@esc@fB!@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2763;"
+   u:name="HEAVY HEART EXCLAMATION MARK ORNAMENT"
+   string="@esc@fB!@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2764;"
+   u:name="HEAVY BLACK HEART"
+   string="@esc@fB@esc@(HE@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2765;"
+   u:name="ROTATED HEAVY BLACK HEART BULLET"
+   string="@esc@fB@esc@(HE@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2766;"
+   u:name="FLORAL HEART"
+   string="@esc@fB@esc@(HE@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2767;"
+   u:name="ROTATED FLORAL HEART BULLET"
+   string="@esc@fB@esc@(HE@esc@fR"
+   />
+  <xsl:output-character
+   character="&#x2776;"
+   u:name="DINGBAT NEGATIVE CIRCLED DIGIT ONE"
+   string="1"
+   />
+  <xsl:output-character
+   character="&#x2777;"
+   u:name="DINGBAT NEGATIVE CIRCLED DIGIT TWO"
+   string="2"
+   />
+  <xsl:output-character
+   character="&#x2778;"
+   u:name="DINGBAT NEGATIVE CIRCLED DIGIT THREE"
+   string="3"
+   />
+  <xsl:output-character
+   character="&#x2779;"
+   u:name="DINGBAT NEGATIVE CIRCLED DIGIT FOUR"
+   string="4"
+   />
+  <xsl:output-character
+   character="&#x277a;"
+   u:name="DINGBAT NEGATIVE CIRCLED DIGIT FIVE"
+   string="5"
+   />
+  <xsl:output-character
+   character="&#x277b;"
+   u:name="DINGBAT NEGATIVE CIRCLED DIGIT SIX"
+   string="6"
+   />
+  <xsl:output-character
+   character="&#x277c;"
+   u:name="DINGBAT NEGATIVE CIRCLED DIGIT SEVEN"
+   string="7"
+   />
+  <xsl:output-character
+   character="&#x277d;"
+   u:name="DINGBAT NEGATIVE CIRCLED DIGIT EIGHT"
+   string="8"
+   />
+  <xsl:output-character
+   character="&#x277e;"
+   u:name="DINGBAT NEGATIVE CIRCLED DIGIT NINE"
+   string="9"
+   />
+  <xsl:output-character
+   character="&#x277f;"
+   u:name="DINGBAT NEGATIVE CIRCLED NUMBER TEN"
+   string="10"
+   />
+  <xsl:output-character
+   character="&#x2780;"
+   u:name="DINGBAT CIRCLED SANS-SERIF DIGIT ONE"
+   string="1"
+   />
+  <xsl:output-character
+   character="&#x2781;"
+   u:name="DINGBAT CIRCLED SANS-SERIF DIGIT TWO"
+   string="2"
+   />
+  <xsl:output-character
+   character="&#x2782;"
+   u:name="DINGBAT CIRCLED SANS-SERIF DIGIT THREE"
+   string="3"
+   />
+  <xsl:output-character
+   character="&#x2783;"
+   u:name="DINGBAT CIRCLED SANS-SERIF DIGIT FOUR"
+   string="4"
+   />
+  <xsl:output-character
+   character="&#x2784;"
+   u:name="DINGBAT CIRCLED SANS-SERIF DIGIT FIVE"
+   string="5"
+   />
+  <xsl:output-character
+   character="&#x2785;"
+   u:name="DINGBAT CIRCLED SANS-SERIF DIGIT SIX"
+   string="6"
+   />
+  <xsl:output-character
+   character="&#x2786;"
+   u:name="DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN"
+   string="7"
+   />
+  <xsl:output-character
+   character="&#x2787;"
+   u:name="DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT"
+   string="8"
+   />
+  <xsl:output-character
+   character="&#x2788;"
+   u:name="DINGBAT CIRCLED SANS-SERIF DIGIT NINE"
+   string="9"
+   />
+  <xsl:output-character
+   character="&#x2789;"
+   u:name="DINGBAT CIRCLED SANS-SERIF NUMBER TEN"
+   string="10"
+   />
+  <xsl:output-character
+   character="&#x278a;"
+   u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE"
+   string="1"
+   />
+  <xsl:output-character
+   character="&#x278b;"
+   u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO"
+   string="2"
+   />
+  <xsl:output-character
+   character="&#x278c;"
+   u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE"
+   string="3"
+   />
+  <xsl:output-character
+   character="&#x278d;"
+   u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR"
+   string="4"
+   />
+  <xsl:output-character
+   character="&#x278e;"
+   u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE"
+   string="5"
+   />
+  <xsl:output-character
+   character="&#x278f;"
+   u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX"
+   string="6"
+   />
+  <xsl:output-character
+   character="&#x2790;"
+   u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN"
+   string="7"
+   />
+  <xsl:output-character
+   character="&#x2791;"
+   u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT"
+   string="8"
+   />
+  <xsl:output-character
+   character="&#x2792;"
+   u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE"
+   string="9"
+   />
+  <xsl:output-character
+   character="&#x2793;"
+   u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN"
+   string="10"
+   />
+  <xsl:output-character
+   character="&#x2794;"
+   u:name="HEAVY WIDE-HEADED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x2799;"
+   u:name="HEAVY RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x279b;"
+   u:name="DRAFTING POINT RIGHTWARDS ARROW"
+   string="@esc@(->"
+   />
+  <xsl:output-character
+   character="&#x279c;"
+   u:name="HEAVY ROUND-TIPPED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x279d;"
+   u:name="TRIANGLE-HEADED RIGHTWARDS ARROW"
+   string="@esc@(->"
+   />
+  <xsl:output-character
+   character="&#x279e;"
+   u:name="HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x279f;"
+   u:name="DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"
+   string="@esc@(->"
+   />
+  <xsl:output-character
+   character="&#x27a0;"
+   u:name="HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27a1;"
+   u:name="BLACK RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27a2;"
+   u:name="THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD"
+   string="@esc@(->"
+   />
+  <xsl:output-character
+   character="&#x27a3;"
+   u:name="THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD"
+   string="@esc@(->"
+   />
+  <xsl:output-character
+   character="&#x27a4;"
+   u:name="BLACK RIGHTWARDS ARROWHEAD"
+   string="@esc@(->"
+   />
+  <xsl:output-character
+   character="&#x27a7;"
+   u:name="SQUAT BLACK RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27a8;"
+   u:name="HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27a9;"
+   u:name="RIGHT-SHADED WHITE RIGHTWARDS ARROW"
+   string="@esc@(rA"
+   />
+  <xsl:output-character
+   character="&#x27aa;"
+   u:name="LEFT-SHADED WHITE RIGHTWARDS ARROW"
+   string="@esc@(rA"
+   />
+  <xsl:output-character
+   character="&#x27ab;"
+   u:name="BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW"
+   string="@esc@(rA"
+   />
+  <xsl:output-character
+   character="&#x27ac;"
+   u:name="FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW"
+   string="@esc@(rA"
+   />
+  <xsl:output-character
+   character="&#x27ad;"
+   u:name="HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+   string="@esc@(rA"
+   />
+  <xsl:output-character
+   character="&#x27ae;"
+   u:name="HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+   string="@esc@(rA"
+   />
+  <xsl:output-character
+   character="&#x27af;"
+   u:name="NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+   string="@esc@(rA"
+   />
+  <xsl:output-character
+   character="&#x27b1;"
+   u:name="NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW"
+   string="@esc@(rA"
+   />
+  <xsl:output-character
+   character="&#x27b2;"
+   u:name="CIRCLED HEAVY WHITE RIGHTWARDS ARROW"
+   string="@esc@(rA"
+   />
+  <xsl:output-character
+   character="&#x27b3;"
+   u:name="WHITE-FEATHERED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27b4;"
+   u:name="BLACK-FEATHERED SOUTH EAST ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27b5;"
+   u:name="BLACK-FEATHERED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27b6;"
+   u:name="BLACK-FEATHERED NORTH EAST ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27b7;"
+   u:name="HEAVY BLACK-FEATHERED SOUTH EAST ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27b8;"
+   u:name="HEAVY BLACK-FEATHERED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27b9;"
+   u:name="HEAVY BLACK-FEATHERED NORTH EAST ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27ba;"
+   u:name="TEARDROP-BARBED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27bb;"
+   u:name="HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27bc;"
+   u:name="WEDGE-TAILED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27bd;"
+   u:name="HEAVY WEDGE-TAILED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(->@esc@fB"
+   />
+  <xsl:output-character
+   character="&#x27be;"
+   u:name="OPEN-OUTLINED RIGHTWARDS ARROW"
+   string="@esc@fR@esc@(rA@esc@fB"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Dingbats -->
+  <!-- * ***************************************************************** -->
+
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+  <!-- *   Miscellaneous Mathematical Symbols -->
+  <!-- *     x27c0 to x27ef -->
+  <!-- *   Supplemental Arrows -->
+  <!-- *     x27f0 to x297f -->
+  <!-- *   Miscellaneous Mathematical Symbols -->
+  <!-- *     x2980 to x29ff -->
+  <!-- *   Supplemental Mathematical Operators -->
+  <!-- *     x2a00 to x2aff -->
+  <!-- *   - no nothing - -->
+  <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
+
+  <!-- * ***************************************************************** -->
+  <!-- *   Begin: Alphabetic Presentation Forms -->
+  <!-- *     xfb00 to xfb04 -->
+  <!-- * ***************************************************************** -->
+
+  <xsl:output-character
+   character="&#xfb00;"
+   u:name="LATIN SMALL LIGATURE FF"
+   u:entity="fflig"
+   string="@esc@(ff"
+   />
+  <xsl:output-character
+   character="&#xfb01;"
+   u:name="LATIN SMALL LIGATURE FI"
+   u:entity="filig"
+   string="@esc@(fi"
+   />
+  <xsl:output-character
+   character="&#xfb02;"
+   u:name="LATIN SMALL LIGATURE FL"
+   u:entity="fllig"
+   string="@esc@(fl"
+   />
+  <xsl:output-character
+   character="&#xfb03;"
+   u:name="LATIN SMALL LIGATURE FFI"
+   u:entity="ffilig"
+   string="@esc@(Fi"
+   />
+  <xsl:output-character
+   character="&#xfb04;"
+   u:name="LATIN SMALL LIGATURE FFL"
+   u:entity="ffllig"
+   string="@esc@(Fl"
+   />
+
+  <!-- * ***************************************************************** -->
+  <!-- *   End: Alphabetic Presentation Forms -->
+  <!-- * ***************************************************************** -->
+
+  <!-- * ================================================================= -->
+
+  <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, -->
+  <!-- * Line Breaking Properties"[1] sayxsl: -->
+  <!-- * -->
+  <!-- *   The word joiner character [x2060 a.k.a "WJ"] is the preferred -->
+  <!-- *   choice for an invisible character to keep other characters -->
+  <!-- *   together that would otherwise be split across the line at a direct -->
+  <!-- *   break. The character FEFF has the same effect, but because it is -->
+  <!-- *   also used in an unrelated way as a byte order mark, the use of the -->
+  <!-- *   WJ as the preferred interword glue simplifies the handling of FEFF. -->
+  <!-- * -->
+  <!-- * [1] http://www.unicode.org/reports/tr14/ -->
+  <!-- * -->
+  <!-- * We include it here anyway & map to the roff zero-width no-break -->
+  <xsl:output-character
+   character="&#xfeff;"
+   u:name="ZERO WIDTH NO-BREAK SPACE"
+   string="@esc@&amp;"
+   u:class="default"
+   />
+</xsl:character-map>
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/xsl/manpages/charmap.roff.min.xml b/xsl/manpages/charmap.roff.min.xml
deleted file mode 100755 (executable)
index 1a96ddc..0000000
+++ /dev/null
@@ -1,333 +0,0 @@
-<?xml version="1.0" encoding="US-ASCII"?>
-<xsl:character-map xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-                  xmlns:unichar="http://docbook.sourceforge.net/xmlns/unichar/1.0">
-
-<!-- ********************************************************************
-     $Id$
-     ********************************************************************
-
-     This file is part of the XSL DocBook Stylesheet distribution.
-     See ../README or http://docbook.sf.net/release/xsl/current/ for
-     copyright and other information.
-
-     ******************************************************************** -->
-
-<!-- * *************************************************************** -->
-<!-- *   Commentary -->
-<!-- * *************************************************************** -->
-<!-- * This file maps a minimal subset of Unicode characters to -->
-<!-- * corresponding roff escape sequences. The subset is limited to -->
-<!-- * less than 40 characters - basically, just a few common symbols, -->
-<!-- * special spaces and dashes, and "curly" quotation marks. -->
-<!-- * -->
-<!-- * The mappings are basically intended just for generating man -->
-<!-- * pages that will look acceptable on a TTY, without any concern -->
-<!-- * for how the same man pages will look if output to a different -->
-<!-- * device (to a postscript printer, for example). -->
-<!-- * -->
-<!-- * Use this file when you aren't sure what OSes or environments -->
-<!-- * your man-page output might end up being viewed on, and not sure -->
-<!-- * what version of nroff/groff those environments might have. -->
-<!-- * -->
-<!-- * If you're instead generating output for an environment that -->
-<!-- * uses a good, modern groff instead of nroff (for example, a -->
-<!-- * GNU/Linux system, FreeBSD system, or Cygwin environment), see -->
-<!-- * the accompanying charmap.groff.xml file; it has a much richer -->
-<!-- * set of mappings (it maps more than 800 characters). -->
-<!-- * -->
-<!-- * Although the format of this file follows the "character map" -->
-<!-- * format specified in the XSLT 2.0 working draft[1], the file can -->
-<!-- * also be used with an appropriate XSLT 1.0 stylesheet and any -->
-<!-- * XSLT 1.0 processor. -->
-<!-- * -->
-<!-- *   [1] http://www.w3.org/TR/xslt20/#character-maps -->
-<!-- * -->
-<!-- * For more details, see the accompanying charmap.groff.xml file. -->
-<!-- * -->
-<!-- * Note: In place of the literal backlash "\" character used in roff -->
-<!-- * to indicate the start of an escape sequence, this file uses -->
-<!-- * "@esc@". So an additional string-substition step needs to be done -->
-<!-- * on any output generated using the data from this file, before -->
-<!-- * final roff output, to replace the "@esc@" instances with the -->
-<!-- * literal backslash characters that roff expects. -->
-
-<!-- * ################################################################# -->
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: Latin-1/ISO-8859-1 -->
-  <!-- *     x00a0 to x00ff -->
-  <!-- * ***************************************************************** -->
-
-  <xsl:output-character
-   char="&#x00a0;"
-   unichar:name="NO-BREAK SPACE"
-   unichar:entity="nbsp"
-   string="@esc@ "
-   />
-  <xsl:output-character
-   char="&#x00a9;"
-   unichar:name="COPYRIGHT SIGN"
-   unichar:entity="copy"
-   string="@esc@(co"
-   />
-  <xsl:output-character
-   char="&#x00ae;"
-   unichar:name="REGISTERED SIGN"
-   unichar:entity="reg"
-   string="@esc@(rg"
-   />
-  <xsl:output-character
-   char="&#x00d7;"
-   unichar:name="MULTIPLICATION SIGN"
-   unichar:entity="times"
-   string="@esc@(mu"
-   />
-  <xsl:output-character
-   char="&#x00f7;"
-   unichar:name="DIVISION SIGN"
-   unichar:entity="divide"
-   string="@esc@(di"
-   />
-
-  <!-- * ***************************************************************** -->
-  <!-- *   Begin: General Punctuation -->
-  <!-- *     x2000 to x206f -->
-  <!-- * **************************************************************** -->
-
-  <!-- * first, spaces of various widths -->
-
-  <!-- * Note: There does not seem to be either a real em space or en space -->
-  <!-- * in roff; to approximate them, this character map assumes that in -->
-  <!-- * most fonts, an en space is about the same as the width of a digit -->
-  <!-- * (in roff, "\0"), so an em space (which by definition is -->
-  <!-- * equal to the width of two en spaces) is about the same as the width -->
-  <!-- * of two digits (thus, in roff, "\0\0") -->
-  <!-- * first, Spaces of various widths -->
-
-  <xsl:output-character
-   char="&#x2000;"
-   unichar:name="EN QUAD"
-   string="@esc@0"
-   />
-  <xsl:output-character
-   char="&#x2001;"
-   unichar:name="EM QUAD"
-   string="@esc@0@esc@0"
-   />
-  <xsl:output-character
-   char="&#x2002;"
-   unichar:name="EN SPACE"
-   unichar:entity="ensp"
-   string="@esc@0"
-   />
-  <xsl:output-character
-   char="&#x2003;"
-   unichar:name="EM SPACE"
-   unichar:entity="emsp"
-   string="@esc@0@esc@0"
-   />
-  <!-- * same as roff "digit" space -->
-  <xsl:output-character
-   char="&#x2007;"
-   unichar:name="FIGURE SPACE"
-   unichar:entity="numsp"
-   string="@esc@0"
-   />
-  <!-- * punctuation space in most fonts is actually closer to a normal -->
-  <!-- * space than it is to a thin space -->
-  <xsl:output-character
-   char="&#x2008;"
-   unichar:name="PUNCTUATION SPACE"
-   unichar:entity="puncsp"
-   string=" "
-   />
-  <!-- * Note: Not sure how best to deal with thin space, because the roff -->
-  <!-- * thin space, "\^", prints as a zero-width space in TTY -->
-  <!-- * output. However, it seems that, unlike a hair space, a thin space, -->
-  <!-- * at 1/12 of an em, is still recognizable to most people as a space, -->
-  <!-- * so treating it as zero-width seems wrong. So, for the sake of making -->
-  <!-- * TTY output look OK, just substitute with a normal space; but real -->
-  <!-- * roff escape is "\(\^" -->
-  <xsl:output-character
-   char="&#x2009;"
-   unichar:name="THIN SPACE"
-   unichar:entity="thinsp"
-   string=" "
-   />
-  <!-- * I don't think there's a standard definition of what a hair -->
-  <!-- * space is; some guides just say it's "less than 1/5 of an em" or -->
-  <!-- * that it's "narrower than a thin space"; seems like in practice, -->
-  <!-- * it's *a lot* narrower than a thin space, to the point where -->
-  <!-- * it's close to being a non-space, so here it's substituted with -->
-  <!-- * roff equivalent of a zero-width no-break space -->
-  <xsl:output-character
-   char="&#x200a;"
-   unichar:name="HAIR SPACE"
-   unichar:entity="hairsp"
-   string="@esc@&amp;"
-   />
-  <!-- * map to roff "zero-width break point"  -->
-  <xsl:output-character
-   char="&#x200b;"
-   unichar:name="ZERO WIDTH SPACE"
-   string="@esc@:"
-   />
-  <!-- * .................................................... -->
-  <!-- * next, hyphens and various dashes, bars, underscores  -->
-  <xsl:output-character
-   char="&#x2010;"
-   unichar:name="HYPHEN"
-   unichar:entity="hyphen"
-   string="@esc@(hy"
-   />
-  <xsl:output-character
-   char="&#x2011;"
-   unichar:name="NON-BREAKING HYPHEN"
-   string="@esc@&amp;-@esc@&amp;"
-   />
-  <!-- * roughly same width as en dash -->
-  <xsl:output-character
-   char="&#x2012;"
-   unichar:name="FIGURE DASH"
-   string="@esc@(en"
-   />
-  <xsl:output-character
-   char="&#x2013;"
-   unichar:name="EN DASH"
-   unichar:entity="ndash"
-   string="@esc@(en"
-   />
-  <xsl:output-character
-   char="&#x2014;"
-   unichar:name="EM DASH"
-   unichar:entity="mdash"
-   string="@esc@(em"
-   />
-  <!-- * seems roughly same width as em dash -->
-  <xsl:output-character
-   char="&#x2015;"
-   unichar:name="HORIZONTAL BAR"
-   unichar:entity="horbar"
-   string="@esc@(em"
-   />
-
-  <!-- * .................................................... -->
-  <!-- * various quotation marks -->
-  <xsl:output-character
-   char="&#x2018;"
-   unichar:name="LEFT SINGLE QUOTATION MARK"
-   unichar:entity="lsquo"
-   string="@esc@(oq"
-   />
-  <xsl:output-character
-   char="&#x2019;"
-   unichar:name="RIGHT SINGLE QUOTATION MARK"
-   unichar:entity="rsquo"
-   string="@esc@(cq"
-   />
-
-  <xsl:output-character
-   char="&#x201c;"
-   unichar:name="LEFT DOUBLE QUOTATION MARK"
-   unichar:entity="ldquo"
-   string="@esc@(lq"
-   />
-  <xsl:output-character
-   char="&#x201d;"
-   unichar:name="RIGHT DOUBLE QUOTATION MARK"
-   unichar:entity="rdquo"
-   string="@esc@(rq"
-   />
-
-  <!-- * .................................................... -->
-  <!-- * various symbols -->
-  <xsl:output-character
-   char="&#x2020;"
-   unichar:name="DAGGER"
-   unichar:entity="dagger"
-   string="@esc@(dg"
-   />
-  <xsl:output-character
-   char="&#x2021;"
-   unichar:name="DOUBLE DAGGER"
-   unichar:entity="Dagger"
-   string="@esc@(dd"
-   />
-  <xsl:output-character
-   char="&#x2022;"
-   unichar:name="BULLET"
-   unichar:entity="bull"
-   string="@esc@(bu"
-   />
-  <xsl:output-character
-   char="&#x2026;"
-   unichar:name="HORIZONTAL ELLIPSIS"
-   unichar:entity="hellip"
-   string="@esc@&amp;..."
-   />
-  <xsl:output-character
-   char="&#x2027;"
-   unichar:name="HYPHENATION POINT"
-   string="@esc@%"
-   />
-  <!-- * seems like "narrow" nbsp is basically the same as a no-break -->
-  <!-- * space -->
-  <xsl:output-character
-   char="&#x202f;"
-   unichar:name="NARROW NO-BREAK SPACE"
-   string="@esc@ "
-   />
-  <xsl:output-character
-   char="&#x2032;"
-   unichar:name="PRIME"
-   unichar:entity="prime"
-   string="@esc@(fm"
-   />
-  <xsl:output-character
-   char="&#x2033;"
-   unichar:name="DOUBLE PRIME"
-   unichar:entity="Prime"
-   string="@esc@(sd"
-   />
-  <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, -->
-  <!-- * Line Breaking Properties"[1] says: -->
-  <!-- * -->
-  <!-- *   The word joiner character [x2060 a.k.a "WJ"] is the preferred -->
-  <!-- *   choice for an invisible character to keep other characters -->
-  <!-- *   together that would otherwise be split across the line at a direct -->
-  <!-- *   break. The character FEFF has the same effect, but because it is -->
-  <!-- *   also used in an unrelated way as a byte order mark, the use of the -->
-  <!-- *   WJ as the preferred interword glue simplifies the handling of FEFF. -->
-  <!-- * -->
-  <!-- * [1] http://www.unicode.org/reports/tr14/ -->
-  <!-- * -->
-  <!-- * The groff docs seem ambiguous about whether \& is a joiner and -->
-  <!-- * prevents breaks, but, based on testing, seems like it does -->
-  <xsl:output-character
-   char="&#x2060;"
-   unichar:name="WORD JOINER"
-   string="@esc@&amp;"
-   />
-  <xsl:output-character
-   char="&#x2120;"
-   unichar:name="SERVICE MARK"
-   string="sm"
-   />
-  <xsl:output-character
-   char="&#x2122;"
-   unichar:name="TRADE MARK SIGN"
-   unichar:entity="trade"
-   string="@esc@(tm"
-   />
-  <xsl:output-character
-   char="&#x2216;"
-   unichar:name="SET MINUS"
-   unichar:entity="setmn"
-   string="@esc@@esc@"
-   />
-  <xsl:output-character
-   char="&#xfeff;"
-   unichar:name="ZERO WIDTH NO-BREAK SPACE"
-   string="@esc@&amp;"
-   />
-</xsl:character-map>
diff --git a/xsl/manpages/unicodetrans.xsl b/xsl/manpages/unicodetrans.xsl
deleted file mode 100755 (executable)
index 971ba91..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<xsl:stylesheet version="1.0"
-                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
-<!-- ********************************************************************
-     $Id$
-     ********************************************************************
-
-     This file is part of the XSL DocBook Stylesheet distribution.
-     See ../README or http://docbook.sf.net/release/xsl/current/ for
-     copyright and other information.
-
-     ******************************************************************** -->
-
-<!-- ==================================================================== -->
-
-  <!-- * The following function is a modified version of Jeni -->
-  <!-- * Tennison's 'replace_strings' in the 'multiple string -->
-  <!-- * replacements' section of Dave Pawson's XSLT FAQ: -->
-  <!-- *  -->
-  <!-- *   http://www.dpawson.co.uk/xsl/sect2/StringReplace.html -->
-  <!-- *  -->
-  <!-- * This stylesheet is meant to be used as part of the DocBook -->
-  <!-- * stylesheets, where the value of the $charmap.filename param -->
-  <!-- * is specified in a separate params.xsl file which gets -->
-  <!-- * included, along with this file, by the docbook.xsl driver. -->
-  <!-- *  -->
-  <!-- * If you instead want to use it as a standalone stylesheet, you -->
-  <!-- * need to add an xsl:param for $charmap.filename; for example: -->
-  <!-- *  -->
-  <!-- *   <xsl:param name="charmap.filename">charmap.groff.xml</xsl:param> -->
-
-  <xsl:template name="replace.unicode.chars">
-    <xsl:param name="content" />
-    <xsl:param name="search"
-               select="document($charmap.filename)//*[local-name()='output-character']" />
-    <xsl:variable name="replaced_text">
-      <xsl:call-template name="string.subst">
-        <xsl:with-param name="string" select="$content" />
-        <xsl:with-param name="target" 
-                        select="$search[1]/@char" />
-        <xsl:with-param name="replacement" 
-                        select="$search[1]/@string" />
-      </xsl:call-template>
-    </xsl:variable>
-    <xsl:choose>
-      <xsl:when test="$search[2]">
-        <xsl:call-template name="replace.unicode.chars">
-          <xsl:with-param name="content" select="$replaced_text" />
-          <xsl:with-param name="search" select="$search[position() > 1]" />
-        </xsl:call-template>
-      </xsl:when>
-      <xsl:otherwise>
-        <xsl:value-of select="$replaced_text" />
-      </xsl:otherwise>
-    </xsl:choose>
-  </xsl:template>
-</xsl:stylesheet>