Patchwork Charset request for iconv (patch included)

login
register
mail settings
Submitter dcoffin@shell.cybercom.net
Date Oct. 1, 2016, 3:44 a.m.
Message ID <20161001034427.GA26656@shell.cybercom.net>
Download mbox | patch
Permalink /patch/16167/
State New
Headers show

Comments

dcoffin@shell.cybercom.net - Oct. 1, 2016, 3:44 a.m.
Hi guys,

     Could you add the eight-bit HP-48 charset to iconv?
It's Latin-1 plus various Greek letters and mathematical
symbols, and it's useful for copying files to and from
the HP-48 series of calculators.  I've written a patch
and tested it.  (see attached)

     I copied the table from
http://www.drehersoft.com/mapping-hp48-text-to-unicode/

     The "Latin small a with macron" really should be a
small "x", but Unicode only provides vowels with macrons.
The website explains why they don't recommend a combining
macron over a plain "x".

				Dave Coffin  9/30/2016
Florian Weimer - Oct. 1, 2016, 8:39 p.m.
>      Could you add the eight-bit HP-48 charset to iconv?
> It's Latin-1 plus various Greek letters and mathematical
> symbols, and it's useful for copying files to and from
> the HP-48 series of calculators.  I've written a patch
> and tested it.  (see attached)

Is this an official mapping provided by HP?

>      The "Latin small a with macron" really should be a
> small "x", but Unicode only provides vowels with macrons.
> The website explains why they don't recommend a combining
> macron over a plain "x".

This doesn't look like a good idea at all.  The character should be
added to Unicode instead (if the charset is still in use).

The mapping for ∑ seems incorrect, it uses Σ instead.  The other Greek
letters should perhaps map to mathematic symbols, too, not the Greek
alphabet.

But I'm still not convinced that this character set is relevant enough
for inclusion into glibc.
dcoffin@shell.cybercom.net - Oct. 2, 2016, 5:28 a.m.
Hi Florian,

> Is this an official mapping provided by HP?

     I don't believe there is an official mapping.  The author
mentions two other mappings and how they differ from his.  He
also explains why he chose Greek letters over mathematical
symbols.  (Your Greek sigma looks correct in my editor while
the math sigma looks like "???", so I can guess which is more
widely supported.)

     As for relevance, these calculators were in continuous
production from 1990 to 2015, so there must be several million
of them still in service.

     HP's latest graphing calculator, the HP Prime, uses Unicode.
It cannot run any HP-48 programs, so the older calculators will
enjoy high demand on the second-hand market for many years to come.

				Dave Coffin  10/2/2016

On Sat, Oct 01, 2016 at 10:39:10PM +0200, Florian Weimer wrote:
> >      Could you add the eight-bit HP-48 charset to iconv?
> > It's Latin-1 plus various Greek letters and mathematical
> > symbols, and it's useful for copying files to and from
> > the HP-48 series of calculators.  I've written a patch
> > and tested it.  (see attached)
> 
> Is this an official mapping provided by HP?
> 
> >      The "Latin small a with macron" really should be a
> > small "x", but Unicode only provides vowels with macrons.
> > The website explains why they don't recommend a combining
> > macron over a plain "x".
> 
> This doesn't look like a good idea at all.  The character should be
> added to Unicode instead (if the charset is still in use).
> 
> The mapping for ∑ seems incorrect, it uses Σ instead.  The other Greek
> letters should perhaps map to mathematic symbols, too, not the Greek
> alphabet.
> 
> But I'm still not convinced that this character set is relevant enough
> for inclusion into glibc.
Andreas Schwab - Oct. 2, 2016, 7:55 a.m.
On Okt 02 2016, dcoffin@shell.cybercom.net wrote:

>      I don't believe there is an official mapping.  The author
> mentions two other mappings and how they differ from his.  He
> also explains why he chose Greek letters over mathematical
> symbols.  (Your Greek sigma looks correct in my editor while
> the math sigma looks like "???", so I can guess which is more
> widely supported.)

Just because some broken programs cannot display the characters should
not be a reason to use a wrong mapping.

Andreas.
Florian Weimer - Oct. 2, 2016, 8 a.m.
* Andreas Schwab:

> On Okt 02 2016, dcoffin@shell.cybercom.net wrote:
>
>>      I don't believe there is an official mapping.  The author
>> mentions two other mappings and how they differ from his.  He
>> also explains why he chose Greek letters over mathematical
>> symbols.  (Your Greek sigma looks correct in my editor while
>> the math sigma looks like "???", so I can guess which is more
>> widely supported.)

Considering that the uppercase Greek sigma is next to an integral
sign, I'm prety sure that its intended meaning is the mathematic
operator.  It's also how it is used in the HP-48 user interface.  (I
once had one myself.)

> Just because some broken programs cannot display the characters should
> not be a reason to use a wrong mapping.

Right.  And I would say the same applies to intentionally using a
wrong mapping.  “x̄” would have to be added to the Unicode to standard
to enable compatibility with the HP-48 character set.

Would we accept the mapping in case these issues were addressed?  I
still don't think so.
dcoffin@shell.cybercom.net - Oct. 3, 2016, 3:24 a.m.
OK then, let's use the math-sigma.  Can the
Unicode-->HP-48 conversion be set to accept either?

     I still don't fully understand why Unicode has
accented letters when zero-width combining marks are
available.  Best I can figure is that it allows C code
to treat each letter as an integer instead of a string
of indeterminate length.

     Having an "x with macron" character would also
mean that when "x" appears in Unicode text, iconv can
write "x" to the HP-48 text without first checking to
see if the next character is a macron.  But there's
obviously a reason why you implemented charsets with
DLLs instead of simple tables -- was it not to handle
special cases like this?

     How much power do you guys have to add new
characters to the Unicode standard?

				Dave Coffin  10/2/2016

On Sun, Oct 02, 2016 at 10:00:08AM +0200, Florian Weimer wrote:
> * Andreas Schwab:
> 
> > On Okt 02 2016, dcoffin@shell.cybercom.net wrote:
> >
> >>      I don't believe there is an official mapping.  The author
> >> mentions two other mappings and how they differ from his.  He
> >> also explains why he chose Greek letters over mathematical
> >> symbols.  (Your Greek sigma looks correct in my editor while
> >> the math sigma looks like "???", so I can guess which is more
> >> widely supported.)
> 
> Considering that the uppercase Greek sigma is next to an integral
> sign, I'm prety sure that its intended meaning is the mathematic
> operator.  It's also how it is used in the HP-48 user interface.  (I
> once had one myself.)
> 
> > Just because some broken programs cannot display the characters should
> > not be a reason to use a wrong mapping.
> 
> Right.  And I would say the same applies to intentionally using a
> wrong mapping.  “x̄” would have to be added to the Unicode to standard
> to enable compatibility with the HP-48 character set.
> 
> Would we accept the mapping in case these issues were addressed?  I
> still don't think so.
Florian Weimer - Oct. 6, 2016, noon
On 10/03/2016 05:24 AM, dcoffin@shell.cybercom.net wrote:
>      OK then, let's use the math-sigma.  Can the
> Unicode-->HP-48 conversion be set to accept either?
>
>      I still don't fully understand why Unicode has
> accented letters when zero-width combining marks are
> available.

I believe such code points exist if there is a legacy character set that 
have a matching code point.

Anyway, I'm not convinced that this charset is in active use to a degree 
that it would merit inclusion in glibc.

Florian

Patch

--- glibc-2.24/iconvdata/Makefile
+++ glibc-2.24/iconvdata/Makefile
@@ -61,7 +61,7 @@ 
 	   IBM5347 IBM9030 IBM9066 IBM9448 IBM12712 IBM16804             \
 	   IBM1364 IBM1371 IBM1388 IBM1390 IBM1399 ISO_11548-1 MIK BRF	 \
 	   MAC-CENTRALEUROPE KOI8-RU ISO8859-9E				 \
-	   CP770 CP771 CP772 CP773 CP774
+	   CP770 CP771 CP772 CP773 CP774 HP-48
 
 modules.so := $(addsuffix .so, $(modules))
 
@@ -163,7 +163,7 @@ 
 			iso8859-11 ibm866nav pt154 rk1048 mik brf	   \
 			mac-centraleurope koi8-ru hp-roman8 hp-roman9	   \
 			ebcdic-es ebcdic-es-a ebcdic-is-friss ebcdic-uk    \
-			iso8859-16 viscii iso8859-9e hp-turkish8	   \
+			iso8859-16 viscii iso8859-9e hp-turkish8 hp-48   \
 			hp-thai8 hp-greek8 cp770 cp771 cp772 cp773 cp774
 
 
--- glibc-2.24/iconvdata/gconv-modules
+++ glibc-2.24/iconvdata/gconv-modules
@@ -1961,3 +1961,8 @@ 
 alias	OSF10010004//		HP-GREEK8//
 module	HP-GREEK8//		INTERNAL		HP-GREEK8	1
 module	INTERNAL		HP-GREEK8//		HP-GREEK8	1
+
+#	from			to			module		cost
+alias	HP48//			HP-48//
+module	HP-48//			INTERNAL		HP-48		1
+module	INTERNAL		HP-48//			HP-48		1
--- glibc-2.24/iconvdata/hp-48.c
+++ glibc-2.24/iconvdata/hp-48.c
@@ -0,0 +1,28 @@ 
+/* Conversion from and to HP-48.
+   Copyright (C) 1997-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdint.h>
+
+/* Specify the conversion table. */
+#define TABLES <hp-48.h>
+
+#define CHARSET_NAME	"HP-48//"
+#define HAS_HOLES	0	/* All 256 character are defined.  */
+
+#include <8bit-gap.c>
--- glibc-2.24/localedata/charmaps/HP-48
+++ glibc-2.24/localedata/charmaps/HP-48
@@ -0,0 +1,271 @@ 
+<code_set_name> HP-48
+<comment_char> %
+<escape_char> /
+% version: 1.0
+%  character set used by HP 48 series calculators
+%  same as Latin-1 but some control characters are replaced
+%  with various Greek letters and math symbols.
+%  source: http://www.drehersoft.com/mapping-hp48-text-to-unicode/
+
+CHARMAP
+<U0000>     /x00         NULL (NUL)
+<U0001>     /x01         START OF HEADING (SOH)
+<U0002>     /x02         START OF TEXT (STX)
+<U0003>     /x03         END OF TEXT (ETX)
+<U0004>     /x04         END OF TRANSMISSION (EOT)
+<U0005>     /x05         ENQUIRY (ENQ)
+<U0006>     /x06         ACKNOWLEDGE (ACK)
+<U0007>     /x07         BELL (BEL)
+<U0008>     /x08         BACKSPACE (BS)
+<U0009>     /x09         CHARACTER TABULATION (HT)
+<U000A>     /x0a         LINE FEED (LF)
+<U000B>     /x0b         LINE TABULATION (VT)
+<U000C>     /x0c         FORM FEED (FF)
+<U000D>     /x0d         CARRIAGE RETURN (CR)
+<U000E>     /x0e         SHIFT OUT (SO)
+<U000F>     /x0f         SHIFT IN (SI)
+<U0010>     /x10         DATALINK ESCAPE (DLE)
+<U0011>     /x11         DEVICE CONTROL ONE (DC1)
+<U0012>     /x12         DEVICE CONTROL TWO (DC2)
+<U0013>     /x13         DEVICE CONTROL THREE (DC3)
+<U0014>     /x14         DEVICE CONTROL FOUR (DC4)
+<U0015>     /x15         NEGATIVE ACKNOWLEDGE (NAK)
+<U0016>     /x16         SYNCHRONOUS IDLE (SYN)
+<U0017>     /x17         END OF TRANSMISSION BLOCK (ETB)
+<U0018>     /x18         CANCEL (CAN)
+<U0019>     /x19         END OF MEDIUM (EM)
+<U001A>     /x1a         SUBSTITUTE (SUB)
+<U001B>     /x1b         ESCAPE (ESC)
+<U001C>     /x1c         FILE SEPARATOR (IS4)
+<U001D>     /x1d         GROUP SEPARATOR (IS3)
+<U001E>     /x1e         RECORD SEPARATOR (IS2)
+<U2026>     /x1f         ELLIPSIS
+<U0020>     /x20         SPACE
+<U0021>     /x21         EXCLAMATION MARK
+<U0022>     /x22         QUOTATION MARK
+<U0023>     /x23         NUMBER SIGN
+<U0024>     /x24         DOLLAR SIGN
+<U0025>     /x25         PERCENT SIGN
+<U0026>     /x26         AMPERSAND
+<U0027>     /x27         APOSTROPHE
+<U0028>     /x28         LEFT PARENTHESIS
+<U0029>     /x29         RIGHT PARENTHESIS
+<U002A>     /x2a         ASTERISK
+<U002B>     /x2b         PLUS SIGN
+<U002C>     /x2c         COMMA
+<U002D>     /x2d         HYPHEN-MINUS
+<U002E>     /x2e         FULL STOP
+<U002F>     /x2f         SOLIDUS
+<U0030>     /x30         DIGIT ZERO
+<U0031>     /x31         DIGIT ONE
+<U0032>     /x32         DIGIT TWO
+<U0033>     /x33         DIGIT THREE
+<U0034>     /x34         DIGIT FOUR
+<U0035>     /x35         DIGIT FIVE
+<U0036>     /x36         DIGIT SIX
+<U0037>     /x37         DIGIT SEVEN
+<U0038>     /x38         DIGIT EIGHT
+<U0039>     /x39         DIGIT NINE
+<U003A>     /x3a         COLON
+<U003B>     /x3b         SEMICOLON
+<U003C>     /x3c         LESS-THAN SIGN
+<U003D>     /x3d         EQUALS SIGN
+<U003E>     /x3e         GREATER-THAN SIGN
+<U003F>     /x3f         QUESTION MARK
+<U0040>     /x40         COMMERCIAL AT
+<U0041>     /x41         LATIN CAPITAL LETTER A
+<U0042>     /x42         LATIN CAPITAL LETTER B
+<U0043>     /x43         LATIN CAPITAL LETTER C
+<U0044>     /x44         LATIN CAPITAL LETTER D
+<U0045>     /x45         LATIN CAPITAL LETTER E
+<U0046>     /x46         LATIN CAPITAL LETTER F
+<U0047>     /x47         LATIN CAPITAL LETTER G
+<U0048>     /x48         LATIN CAPITAL LETTER H
+<U0049>     /x49         LATIN CAPITAL LETTER I
+<U004A>     /x4a         LATIN CAPITAL LETTER J
+<U004B>     /x4b         LATIN CAPITAL LETTER K
+<U004C>     /x4c         LATIN CAPITAL LETTER L
+<U004D>     /x4d         LATIN CAPITAL LETTER M
+<U004E>     /x4e         LATIN CAPITAL LETTER N
+<U004F>     /x4f         LATIN CAPITAL LETTER O
+<U0050>     /x50         LATIN CAPITAL LETTER P
+<U0051>     /x51         LATIN CAPITAL LETTER Q
+<U0052>     /x52         LATIN CAPITAL LETTER R
+<U0053>     /x53         LATIN CAPITAL LETTER S
+<U0054>     /x54         LATIN CAPITAL LETTER T
+<U0055>     /x55         LATIN CAPITAL LETTER U
+<U0056>     /x56         LATIN CAPITAL LETTER V
+<U0057>     /x57         LATIN CAPITAL LETTER W
+<U0058>     /x58         LATIN CAPITAL LETTER X
+<U0059>     /x59         LATIN CAPITAL LETTER Y
+<U005A>     /x5a         LATIN CAPITAL LETTER Z
+<U005B>     /x5b         LEFT SQUARE BRACKET
+<U005C>     /x5c         REVERSE SOLIDUS
+<U005D>     /x5d         RIGHT SQUARE BRACKET
+<U005E>     /x5e         CIRCUMFLEX ACCENT
+<U005F>     /x5f         LOW LINE
+<U0060>     /x60         GRAVE ACCENT
+<U0061>     /x61         LATIN SMALL LETTER A
+<U0062>     /x62         LATIN SMALL LETTER B
+<U0063>     /x63         LATIN SMALL LETTER C
+<U0064>     /x64         LATIN SMALL LETTER D
+<U0065>     /x65         LATIN SMALL LETTER E
+<U0066>     /x66         LATIN SMALL LETTER F
+<U0067>     /x67         LATIN SMALL LETTER G
+<U0068>     /x68         LATIN SMALL LETTER H
+<U0069>     /x69         LATIN SMALL LETTER I
+<U006A>     /x6a         LATIN SMALL LETTER J
+<U006B>     /x6b         LATIN SMALL LETTER K
+<U006C>     /x6c         LATIN SMALL LETTER L
+<U006D>     /x6d         LATIN SMALL LETTER M
+<U006E>     /x6e         LATIN SMALL LETTER N
+<U006F>     /x6f         LATIN SMALL LETTER O
+<U0070>     /x70         LATIN SMALL LETTER P
+<U0071>     /x71         LATIN SMALL LETTER Q
+<U0072>     /x72         LATIN SMALL LETTER R
+<U0073>     /x73         LATIN SMALL LETTER S
+<U0074>     /x74         LATIN SMALL LETTER T
+<U0075>     /x75         LATIN SMALL LETTER U
+<U0076>     /x76         LATIN SMALL LETTER V
+<U0077>     /x77         LATIN SMALL LETTER W
+<U0078>     /x78         LATIN SMALL LETTER X
+<U0079>     /x79         LATIN SMALL LETTER Y
+<U007A>     /x7a         LATIN SMALL LETTER Z
+<U007B>     /x7b         LEFT CURLY BRACKET
+<U007C>     /x7c         VERTICAL LINE
+<U007D>     /x7d         RIGHT CURLY BRACKET
+<U007E>     /x7e         TILDE
+<U2592>     /x7f         MEDIUM SHADE
+<U2220>     /x80         ANGLE
+<U0101>     /x81         LATIN SMALL LETTER A WITH MACRON
+<U2207>     /x82         NABLA
+<U221A>     /x83         SQUARE ROOT
+<U222B>     /x84         INTEGRAL
+<U03A3>     /x85         GREEK CAPITAL LETTER SIGMA
+<U25B6>     /x86         BLACK RIGHT-POINTING TRIANGLE
+<U03C0>     /x87         GREEK SMALL LETTER PI
+<U2202>     /x88         PARTIAL DIFFERENTIAL
+<U2264>     /x89         LESS-THAN OR EQUAL TO
+<U2265>     /x8a         GREATER-THAN OR EQUAL TO
+<U2260>     /x8b         NOT EQUAL TO
+<U03B1>     /x8c         GREEK SMALL LETTER ALPHA
+<U2192>     /x8d         RIGHTWARDS ARROW
+<U2190>     /x8e         LEFTWARDS ARROW
+<U2193>     /x8f         DOWNWARDS ARROW
+<U2191>     /x90         UPWARDS ARROW
+<U03B3>     /x91         GREEK SMALL LETTER GAMMA
+<U03B4>     /x92         GREEK SMALL LETTER DELTA
+<U03B5>     /x93         GREEK SMALL LETTER EPSILON
+<U03B7>     /x94         GREEK SMALL LETTER ETA
+<U03B8>     /x95         GREEK SMALL LETTER THETA
+<U03BB>     /x96         GREEK SMALL LETTER LAMDA
+<U03C1>     /x97         GREEK SMALL LETTER RHO
+<U03C3>     /x98         GREEK SMALL LETTER SIGMA
+<U03C4>     /x99         GREEK SMALL LETTER TAU
+<U03C9>     /x9a         GREEK SMALL LETTER OMEGA
+<U0394>     /x9b         GREEK CAPITAL LETTER DELTA
+<U03A0>     /x9c         GREEK CAPITAL LETTER PI
+<U03A9>     /x9d         GREEK CAPTIAL LETTER OMEGA
+<U25A0>     /x9e         BLACK SQUARE
+<U221E>     /x9f         INFINITY
+<U00A0>     /xa0         NO-BREAK SPACE
+<U00A1>     /xa1         INVERTED EXCLAMATION MARK
+<U00A2>     /xa2         CENT SIGN
+<U00A3>     /xa3         POUND SIGN
+<U00A4>     /xa4         CURRENCY SIGN
+<U00A5>     /xa5         YEN SIGN
+<U00A6>     /xa6         BROKEN BAR
+<U00A7>     /xa7         SECTION SIGN
+<U00A8>     /xa8         DIAERESIS
+<U00A9>     /xa9         COPYRIGHT SIGN
+<U00AA>     /xaa         FEMININE ORDINAL INDICATOR
+<U00AB>     /xab         LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<U00AC>     /xac         NOT SIGN
+<U00AD>     /xad         SOFT HYPHEN
+<U00AE>     /xae         REGISTERED SIGN
+<U00AF>     /xaf         MACRON
+<U00B0>     /xb0         DEGREE SIGN
+<U00B1>     /xb1         PLUS-MINUS SIGN
+<U00B2>     /xb2         SUPERSCRIPT TWO
+<U00B3>     /xb3         SUPERSCRIPT THREE
+<U00B4>     /xb4         ACUTE ACCENT
+<U00B5>     /xb5         MICRO SIGN
+<U00B6>     /xb6         PILCROW SIGN
+<U00B7>     /xb7         MIDDLE DOT
+<U00B8>     /xb8         CEDILLA
+<U00B9>     /xb9         SUPERSCRIPT ONE
+<U00BA>     /xba         MASCULINE ORDINAL INDICATOR
+<U00BB>     /xbb         RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<U00BC>     /xbc         VULGAR FRACTION ONE QUARTER
+<U00BD>     /xbd         VULGAR FRACTION ONE HALF
+<U00BE>     /xbe         VULGAR FRACTION THREE QUARTERS
+<U00BF>     /xbf         INVERTED QUESTION MARK
+<U00C0>     /xc0         LATIN CAPITAL LETTER A WITH GRAVE
+<U00C1>     /xc1         LATIN CAPITAL LETTER A WITH ACUTE
+<U00C2>     /xc2         LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<U00C3>     /xc3         LATIN CAPITAL LETTER A WITH TILDE
+<U00C4>     /xc4         LATIN CAPITAL LETTER A WITH DIAERESIS
+<U00C5>     /xc5         LATIN CAPITAL LETTER A WITH RING ABOVE
+<U00C6>     /xc6         LATIN CAPITAL LETTER AE
+<U00C7>     /xc7         LATIN CAPITAL LETTER C WITH CEDILLA
+<U00C8>     /xc8         LATIN CAPITAL LETTER E WITH GRAVE
+<U00C9>     /xc9         LATIN CAPITAL LETTER E WITH ACUTE
+<U00CA>     /xca         LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<U00CB>     /xcb         LATIN CAPITAL LETTER E WITH DIAERESIS
+<U00CC>     /xcc         LATIN CAPITAL LETTER I WITH GRAVE
+<U00CD>     /xcd         LATIN CAPITAL LETTER I WITH ACUTE
+<U00CE>     /xce         LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<U00CF>     /xcf         LATIN CAPITAL LETTER I WITH DIAERESIS
+<U00D0>     /xd0         LATIN CAPITAL LETTER ETH (Icelandic)
+<U00D1>     /xd1         LATIN CAPITAL LETTER N WITH TILDE
+<U00D2>     /xd2         LATIN CAPITAL LETTER O WITH GRAVE
+<U00D3>     /xd3         LATIN CAPITAL LETTER O WITH ACUTE
+<U00D4>     /xd4         LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<U00D5>     /xd5         LATIN CAPITAL LETTER O WITH TILDE
+<U00D6>     /xd6         LATIN CAPITAL LETTER O WITH DIAERESIS
+<U00D7>     /xd7         MULTIPLICATION SIGN
+<U00D8>     /xd8         LATIN CAPITAL LETTER O WITH STROKE
+<U00D9>     /xd9         LATIN CAPITAL LETTER U WITH GRAVE
+<U00DA>     /xda         LATIN CAPITAL LETTER U WITH ACUTE
+<U00DB>     /xdb         LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<U00DC>     /xdc         LATIN CAPITAL LETTER U WITH DIAERESIS
+<U00DD>     /xdd         LATIN CAPITAL LETTER Y WITH ACUTE
+<U00DE>     /xde         LATIN CAPITAL LETTER THORN (Icelandic)
+<U00DF>     /xdf         LATIN SMALL LETTER SHARP S (German)
+<U00E0>     /xe0         LATIN SMALL LETTER A WITH GRAVE
+<U00E1>     /xe1         LATIN SMALL LETTER A WITH ACUTE
+<U00E2>     /xe2         LATIN SMALL LETTER A WITH CIRCUMFLEX
+<U00E3>     /xe3         LATIN SMALL LETTER A WITH TILDE
+<U00E4>     /xe4         LATIN SMALL LETTER A WITH DIAERESIS
+<U00E5>     /xe5         LATIN SMALL LETTER A WITH RING ABOVE
+<U00E6>     /xe6         LATIN SMALL LETTER AE
+<U00E7>     /xe7         LATIN SMALL LETTER C WITH CEDILLA
+<U00E8>     /xe8         LATIN SMALL LETTER E WITH GRAVE
+<U00E9>     /xe9         LATIN SMALL LETTER E WITH ACUTE
+<U00EA>     /xea         LATIN SMALL LETTER E WITH CIRCUMFLEX
+<U00EB>     /xeb         LATIN SMALL LETTER E WITH DIAERESIS
+<U00EC>     /xec         LATIN SMALL LETTER I WITH GRAVE
+<U00ED>     /xed         LATIN SMALL LETTER I WITH ACUTE
+<U00EE>     /xee         LATIN SMALL LETTER I WITH CIRCUMFLEX
+<U00EF>     /xef         LATIN SMALL LETTER I WITH DIAERESIS
+<U00F0>     /xf0         LATIN SMALL LETTER ETH (Icelandic)
+<U00F1>     /xf1         LATIN SMALL LETTER N WITH TILDE
+<U00F2>     /xf2         LATIN SMALL LETTER O WITH GRAVE
+<U00F3>     /xf3         LATIN SMALL LETTER O WITH ACUTE
+<U00F4>     /xf4         LATIN SMALL LETTER O WITH CIRCUMFLEX
+<U00F5>     /xf5         LATIN SMALL LETTER O WITH TILDE
+<U00F6>     /xf6         LATIN SMALL LETTER O WITH DIAERESIS
+<U00F7>     /xf7         DIVISION SIGN
+<U00F8>     /xf8         LATIN SMALL LETTER O WITH STROKE
+<U00F9>     /xf9         LATIN SMALL LETTER U WITH GRAVE
+<U00FA>     /xfa         LATIN SMALL LETTER U WITH ACUTE
+<U00FB>     /xfb         LATIN SMALL LETTER U WITH CIRCUMFLEX
+<U00FC>     /xfc         LATIN SMALL LETTER U WITH DIAERESIS
+<U00FD>     /xfd         LATIN SMALL LETTER Y WITH ACUTE
+<U00FE>     /xfe         LATIN SMALL LETTER THORN (Icelandic)
+<U00FF>     /xff         LATIN SMALL LETTER Y WITH DIAERESIS
+END CHARMAP
+
+WIDTH
+<U001F>...<U00FF>	1
+END WIDTH