-#\r
-# Name: US-ASCII\ to Unicode\r
-# Unicode version: 1.1\r
-0x20 0x0020 # SPACE\r
-0x21 0x0021 # EXCLAMATION MARK\r
-0x22 0x0022 # QUOTATION MARK\r
-0x23 0x0023 # NUMBER SIGN\r
-0x24 0x0024 # DOLLAR SIGN\r
-0x25 0x0025 # PERCENT SIGN\r
-0x26 0x0026 # AMPERSAND\r
-0x27 0x0027 # APOSTROPHE\r
-0x28 0x0028 # LEFT PARENTHESIS\r
-0x29 0x0029 # RIGHT PARENTHESIS\r
-0x2A 0x002A # ASTERISK\r
-0x2B 0x002B # PLUS SIGN\r
-0x2C 0x002C # COMMA\r
-0x2D 0x002D # HYPHEN-MINUS\r
-0x2E 0x002E # FULL STOP\r
-0x2F 0x002F # SOLIDUS\r
-0x30 0x0030 # DIGIT ZERO\r
-0x31 0x0031 # DIGIT ONE\r
-0x32 0x0032 # DIGIT TWO\r
-0x33 0x0033 # DIGIT THREE\r
-0x34 0x0034 # DIGIT FOUR\r
-0x35 0x0035 # DIGIT FIVE\r
-0x36 0x0036 # DIGIT SIX\r
-0x37 0x0037 # DIGIT SEVEN\r
-0x38 0x0038 # DIGIT EIGHT\r
-0x39 0x0039 # DIGIT NINE\r
-0x3A 0x003A # COLON\r
-0x3B 0x003B # SEMICOLON\r
-0x3C 0x003C # LESS-THAN SIGN\r
-0x3D 0x003D # EQUALS SIGN\r
-0x3E 0x003E # GREATER-THAN SIGN\r
-0x3F 0x003F # QUESTION MARK\r
-0x40 0x0040 # COMMERCIAL AT\r
-0x41 0x0041 # LATIN CAPITAL LETTER A\r
-0x42 0x0042 # LATIN CAPITAL LETTER B\r
-0x43 0x0043 # LATIN CAPITAL LETTER C\r
-0x44 0x0044 # LATIN CAPITAL LETTER D\r
-0x45 0x0045 # LATIN CAPITAL LETTER E\r
-0x46 0x0046 # LATIN CAPITAL LETTER F\r
-0x47 0x0047 # LATIN CAPITAL LETTER G\r
-0x48 0x0048 # LATIN CAPITAL LETTER H\r
-0x49 0x0049 # LATIN CAPITAL LETTER I\r
-0x4A 0x004A # LATIN CAPITAL LETTER J\r
-0x4B 0x004B # LATIN CAPITAL LETTER K\r
-0x4C 0x004C # LATIN CAPITAL LETTER L\r
-0x4D 0x004D # LATIN CAPITAL LETTER M\r
-0x4E 0x004E # LATIN CAPITAL LETTER N\r
-0x4F 0x004F # LATIN CAPITAL LETTER O\r
-0x50 0x0050 # LATIN CAPITAL LETTER P\r
-0x51 0x0051 # LATIN CAPITAL LETTER Q\r
-0x52 0x0052 # LATIN CAPITAL LETTER R\r
-0x53 0x0053 # LATIN CAPITAL LETTER S\r
-0x54 0x0054 # LATIN CAPITAL LETTER T\r
-0x55 0x0055 # LATIN CAPITAL LETTER U\r
-0x56 0x0056 # LATIN CAPITAL LETTER V\r
-0x57 0x0057 # LATIN CAPITAL LETTER W\r
-0x58 0x0058 # LATIN CAPITAL LETTER X\r
-0x59 0x0059 # LATIN CAPITAL LETTER Y\r
-0x5A 0x005A # LATIN CAPITAL LETTER Z\r
-0x5B 0x005B # LEFT SQUARE BRACKET\r
-0x5C 0x005C # REVERSE SOLIDUS\r
-0x5D 0x005D # RIGHT SQUARE BRACKET\r
-0x5E 0x005E # CIRCUMFLEX ACCENT\r
-0x5F 0x005F # LOW LINE\r
-0x60 0x0060 # GRAVE ACCENT\r
-0x61 0x0061 # LATIN SMALL LETTER A\r
-0x62 0x0062 # LATIN SMALL LETTER B\r
-0x63 0x0063 # LATIN SMALL LETTER C\r
-0x64 0x0064 # LATIN SMALL LETTER D\r
-0x65 0x0065 # LATIN SMALL LETTER E\r
-0x66 0x0066 # LATIN SMALL LETTER F\r
-0x67 0x0067 # LATIN SMALL LETTER G\r
-0x68 0x0068 # LATIN SMALL LETTER H\r
-0x69 0x0069 # LATIN SMALL LETTER I\r
-0x6A 0x006A # LATIN SMALL LETTER J\r
-0x6B 0x006B # LATIN SMALL LETTER K\r
-0x6C 0x006C # LATIN SMALL LETTER L\r
-0x6D 0x006D # LATIN SMALL LETTER M\r
-0x6E 0x006E # LATIN SMALL LETTER N\r
-0x6F 0x006F # LATIN SMALL LETTER O\r
-0x70 0x0070 # LATIN SMALL LETTER P\r
-0x71 0x0071 # LATIN SMALL LETTER Q\r
-0x72 0x0072 # LATIN SMALL LETTER R\r
-0x73 0x0073 # LATIN SMALL LETTER S\r
-0x74 0x0074 # LATIN SMALL LETTER T\r
-0x75 0x0075 # LATIN SMALL LETTER U\r
-0x76 0x0076 # LATIN SMALL LETTER V\r
-0x77 0x0077 # LATIN SMALL LETTER W\r
-0x78 0x0078 # LATIN SMALL LETTER X\r
-0x79 0x0079 # LATIN SMALL LETTER Y\r
-0x7A 0x007A # LATIN SMALL LETTER Z\r
-0x7B 0x007B # LEFT CURLY BRACKET\r
-0x7C 0x007C # VERTICAL LINE\r
-0x7D 0x007D # RIGHT CURLY BRACKET\r
-0x7E 0x007E # TILDE\r
+#
+# Name: ANSI X3.4-1968 (US-ASCII) with 0x60/0x27 as
+# left/right single quotation mark to Unicode
+# Unicode version: 3.2
+# Table version: 1.0
+# Table format: Format A
+# Date: 2003 April 8
+# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
+#
+# General notes:
+#
+# The coded character set commonly known as "American Standard
+# Code for Information Interchange (ASCII)" originated in the
+# early 1960s international standardization project that led to
+# ECMA-6 (1965) and ISO 646 (1972). When the American National
+# Standards Institute adopted this specification as national
+# standard X3.4 in 1968, it added a national provision for
+# overloading the code positions 0x60 and 0x27 with the
+# typographic characters left and right single quotation mark.
+# This usage was not reflected in the international standard and
+# other national adoptions of it, but become widely used in some
+# communities in the United States and is now found in numerous
+# historic and still even some contemporary English-language
+# 7-bit ASCII text files. The Unicode Standard followed
+# explicitly the international standard, in which 0x27 encodes
+# the directionally neutral (vertical) character that is used as
+# both an opening and closing quotation mark as well as an
+# apostrophe on traditional typewriters, and where 0x60 is a
+# spacing grave accent that matches the spacing acute accent
+# found in ISO 8859-1 on position 0xb4.
+#
+# To facilitate the correct display and conversion of such ASCII
+# documents with directional quotation marks to Unicode, this
+# encoding table defines a 7-bit coded character set mapping
+# that differs from ISO 646-IRV in that the characters 0x60 and
+# 0x27 are mapped to Unicode's typographic directional quotation
+# marks on U+2018 and U+2019, respectively.
+#
+# Notes:
+#
+# - This historic ASCII interpretation is also used in the left
+# half of the PostScript StandardEncoding and (erroneously)
+# ISOLatin1Encoding encoding vectors.
+#
+# - Unicode features a SINGLE HIGH-REVERSED-9 QUOTATION MARK
+# (U+201B), whose provided example glyph has a slightly
+# closer ressemblance to the compromise glyphs found in many
+# historic US-ASCII fonts that try to represent both a left
+# quotation mark and a grave accent. However, since U+201B
+# is not actually intended to encode correct English
+# typographic quotation conventions, this table maps 0x60 to
+# the the correct English opening quotation mark U+2018
+# instead (as did PostScript).
+#
+# References:
+#
+# - Markus Kuhn: ASCII and Unicode quotation marks.
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# - Jukka Korpela: Character histories: notes on some Ascii
+# code positions.
+# http://www.cs.tut.fi/~jkorpela/latin1/ascii-hist.html
+#
+# Format: Three tab-separated columns
+# Column #1 is the ANSI X3.4 code (in hex as 0xXX)
+# Column #2 is the Unicode (in hex as 0xXXXX)
+# Column #3 the Unicode name (follows a comment sign, '#')
+#
+# The entries are in ANSI X3.4 order.
+#
+0x00 0x0000 # NULL
+0x01 0x0001 # START OF HEADING
+0x02 0x0002 # START OF TEXT
+0x03 0x0003 # END OF TEXT
+0x04 0x0004 # END OF TRANSMISSION
+0x05 0x0005 # ENQUIRY
+0x06 0x0006 # ACKNOWLEDGE
+0x07 0x0007 # BELL
+0x08 0x0008 # BACKSPACE
+0x09 0x0009 # HORIZONTAL TABULATION
+0x0A 0x000A # LINE FEED
+0x0B 0x000B # VERTICAL TABULATION
+0x0C 0x000C # FORM FEED
+0x0D 0x000D # CARRIAGE RETURN
+0x0E 0x000E # SHIFT OUT
+0x0F 0x000F # SHIFT IN
+0x10 0x0010 # DATA LINK ESCAPE
+0x11 0x0011 # DEVICE CONTROL ONE
+0x12 0x0012 # DEVICE CONTROL TWO
+0x13 0x0013 # DEVICE CONTROL THREE
+0x14 0x0014 # DEVICE CONTROL FOUR
+0x15 0x0015 # NEGATIVE ACKNOWLEDGE
+0x16 0x0016 # SYNCHRONOUS IDLE
+0x17 0x0017 # END OF TRANSMISSION BLOCK
+0x18 0x0018 # CANCEL
+0x19 0x0019 # END OF MEDIUM
+0x1A 0x001A # SUBSTITUTE
+0x1B 0x001B # ESCAPE
+0x1C 0x001C # FILE SEPARATOR
+0x1D 0x001D # GROUP SEPARATOR
+0x1E 0x001E # RECORD SEPARATOR
+0x1F 0x001F # UNIT SEPARATOR
+0x20 0x0020 # SPACE
+0x21 0x0021 # EXCLAMATION MARK
+0x22 0x0022 # QUOTATION MARK
+0x23 0x0023 # NUMBER SIGN
+0x24 0x0024 # DOLLAR SIGN
+0x25 0x0025 # PERCENT SIGN
+0x26 0x0026 # AMPERSAND
+0x27 0x2019 # RIGHT SINGLE QUOTATION MARK
+0x28 0x0028 # LEFT PARENTHESIS
+0x29 0x0029 # RIGHT PARENTHESIS
+0x2A 0x002A # ASTERISK
+0x2B 0x002B # PLUS SIGN
+0x2C 0x002C # COMMA
+0x2D 0x002D # HYPHEN-MINUS
+0x2E 0x002E # FULL STOP
+0x2F 0x002F # SOLIDUS
+0x30 0x0030 # DIGIT ZERO
+0x31 0x0031 # DIGIT ONE
+0x32 0x0032 # DIGIT TWO
+0x33 0x0033 # DIGIT THREE
+0x34 0x0034 # DIGIT FOUR
+0x35 0x0035 # DIGIT FIVE
+0x36 0x0036 # DIGIT SIX
+0x37 0x0037 # DIGIT SEVEN
+0x38 0x0038 # DIGIT EIGHT
+0x39 0x0039 # DIGIT NINE
+0x3A 0x003A # COLON
+0x3B 0x003B # SEMICOLON
+0x3C 0x003C # LESS-THAN SIGN
+0x3D 0x003D # EQUALS SIGN
+0x3E 0x003E # GREATER-THAN SIGN
+0x3F 0x003F # QUESTION MARK
+0x40 0x0040 # COMMERCIAL AT
+0x41 0x0041 # LATIN CAPITAL LETTER A
+0x42 0x0042 # LATIN CAPITAL LETTER B
+0x43 0x0043 # LATIN CAPITAL LETTER C
+0x44 0x0044 # LATIN CAPITAL LETTER D
+0x45 0x0045 # LATIN CAPITAL LETTER E
+0x46 0x0046 # LATIN CAPITAL LETTER F
+0x47 0x0047 # LATIN CAPITAL LETTER G
+0x48 0x0048 # LATIN CAPITAL LETTER H
+0x49 0x0049 # LATIN CAPITAL LETTER I
+0x4A 0x004A # LATIN CAPITAL LETTER J
+0x4B 0x004B # LATIN CAPITAL LETTER K
+0x4C 0x004C # LATIN CAPITAL LETTER L
+0x4D 0x004D # LATIN CAPITAL LETTER M
+0x4E 0x004E # LATIN CAPITAL LETTER N
+0x4F 0x004F # LATIN CAPITAL LETTER O
+0x50 0x0050 # LATIN CAPITAL LETTER P
+0x51 0x0051 # LATIN CAPITAL LETTER Q
+0x52 0x0052 # LATIN CAPITAL LETTER R
+0x53 0x0053 # LATIN CAPITAL LETTER S
+0x54 0x0054 # LATIN CAPITAL LETTER T
+0x55 0x0055 # LATIN CAPITAL LETTER U
+0x56 0x0056 # LATIN CAPITAL LETTER V
+0x57 0x0057 # LATIN CAPITAL LETTER W
+0x58 0x0058 # LATIN CAPITAL LETTER X
+0x59 0x0059 # LATIN CAPITAL LETTER Y
+0x5A 0x005A # LATIN CAPITAL LETTER Z
+0x5B 0x005B # LEFT SQUARE BRACKET
+0x5C 0x005C # REVERSE SOLIDUS
+0x5D 0x005D # RIGHT SQUARE BRACKET
+0x5E 0x005E # CIRCUMFLEX ACCENT
+0x5F 0x005F # LOW LINE
+0x60 0x2018 # LEFT SINGLE QUOTATION MARK
+0x61 0x0061 # LATIN SMALL LETTER A
+0x62 0x0062 # LATIN SMALL LETTER B
+0x63 0x0063 # LATIN SMALL LETTER C
+0x64 0x0064 # LATIN SMALL LETTER D
+0x65 0x0065 # LATIN SMALL LETTER E
+0x66 0x0066 # LATIN SMALL LETTER F
+0x67 0x0067 # LATIN SMALL LETTER G
+0x68 0x0068 # LATIN SMALL LETTER H
+0x69 0x0069 # LATIN SMALL LETTER I
+0x6A 0x006A # LATIN SMALL LETTER J
+0x6B 0x006B # LATIN SMALL LETTER K
+0x6C 0x006C # LATIN SMALL LETTER L
+0x6D 0x006D # LATIN SMALL LETTER M
+0x6E 0x006E # LATIN SMALL LETTER N
+0x6F 0x006F # LATIN SMALL LETTER O
+0x70 0x0070 # LATIN SMALL LETTER P
+0x71 0x0071 # LATIN SMALL LETTER Q
+0x72 0x0072 # LATIN SMALL LETTER R
+0x73 0x0073 # LATIN SMALL LETTER S
+0x74 0x0074 # LATIN SMALL LETTER T
+0x75 0x0075 # LATIN SMALL LETTER U
+0x76 0x0076 # LATIN SMALL LETTER V
+0x77 0x0077 # LATIN SMALL LETTER W
+0x78 0x0078 # LATIN SMALL LETTER X
+0x79 0x0079 # LATIN SMALL LETTER Y
+0x7A 0x007A # LATIN SMALL LETTER Z
+0x7B 0x007B # LEFT CURLY BRACKET
+0x7C 0x007C # VERTICAL LINE
+0x7D 0x007D # RIGHT CURLY BRACKET
+0x7E 0x007E # TILDE
+0x7F 0x007F # DELETE