CharacterEncoderImplementations__AdobeStandard.st
changeset 21703 f6724e51bed7
child 21713 1d421bda91e4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CharacterEncoderImplementations__AdobeStandard.st	Wed Apr 26 16:00:01 2017 +0200
@@ -0,0 +1,925 @@
+"
+ COPYRIGHT (c) 2017 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libbasic' }"
+
+"{ NameSpace: CharacterEncoderImplementations }"
+
+SingleByteEncoder subclass:#AdobeStandard
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Collections-Text-Encodings'
+!
+
+!AdobeStandard class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2017 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
+documentation
+"
+    Adobe Standard Encoding.
+    see https://www.compart.com/en/unicode/charsets/Adobe-Standard-Encoding
+
+    [see with:]
+        CharacterEncoderImplementations::AdobeStandard showCharacterSet
+
+    [author:]
+        Claus Gittinger
+"
+! !
+
+!AdobeStandard class methodsFor:'mapping'!
+
+mapFileURL1_relativePathName
+    ^ 'VENDORS/ADOBE/stdenc.txt'
+!
+
+mapping
+"
+# From: http://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/stdenc.txt
+
+#
+#  Name:             Adobe Standard Encoding to Unicode
+#  Unicode version:  2.0
+#  Table version:    1.0
+#  Date:             2011 July 12
+#  
+#  Copyright (c) 1991-2011 Unicode, Inc. All Rights reserved.
+#  
+#  This file is provided as-is by Unicode, Inc. (The Unicode Consortium). No
+#  claims are made as to fitness for any particular purpose. No warranties of
+#  any kind are expressed or implied. The recipient agrees to determine
+#  applicability of information provided. If this file has been provided on
+#  magnetic media by Unicode, Inc., the sole remedy for any claim will be
+#  exchange of defective media within 90 days of receipt.
+#  
+#  Unicode, Inc. hereby grants the right to freely use the information
+#  supplied in this file in the creation of products supporting the
+#  Unicode Standard, and to make copies of this file in any form for
+#  internal or external distribution as long as this notice remains
+#  attached.
+#
+#  Format: 4 tab-delimited fields:
+#
+#    (1) The Unicode value (in hexadecimal)
+#    (2) The Adobe Standard Encoding code point (in hexadecimal)
+#    (3) # Unicode name
+#    (4) # PostScript character name
+#  
+#  General Notes:
+# 
+#    The Unicode values in this table were produced as the result of applying
+#    the algorithm described in the section 'Populating a Unicode space' in the
+#    document 'Unicode and Glyph Names,' at
+#    http://partners.adobe.com/asn/developer/typeforum/unicodegn.html
+#    to the characters encoded in Adobe Standard Encoding. Note that some
+#    Standard Encoding characters, such as 'space', are mapped to 2 Unicode
+#    values. Refer to the above document for more details.
+#
+#    2011 July 12: The above link is no longer valid. For comparable,
+#    more current information, see the document, 'Glyph', at:
+#    <http://www.adobe.com/devnet/opentype/archives/glyph.html>
+#
+#  Revision History:
+#
+#    [v1.0, 2011 July 12]
+#    Updated terms of use to current wording.
+#    Updated contact information and document link.
+#    No changes to the mapping data.
+#
+#    [v0.2, 30 March 1999]
+#    Different algorithm to produce Unicode values (see notes above) results in
+#    some character codes being mapped to 2 Unicode values. Updated Unicode
+#    names to Unicode 2.0 names.
+#    
+#    [v0.1, 5 May 1995] First release.
+#
+#  Use the Unicode reporting form <http://www.unicode.org/reporting.html>
+#    for any questions or comments or to report errors in the data.
+#
+0020    20      # SPACE # space
+00A0    20      # NO-BREAK SPACE        # space
+0021    21      # EXCLAMATION MARK      # exclam
+0022    22      # QUOTATION MARK        # quotedbl
+0023    23      # NUMBER SIGN   # numbersign
+0024    24      # DOLLAR SIGN   # dollar
+0025    25      # PERCENT SIGN  # percent
+0026    26      # AMPERSAND     # ampersand
+2019    27      # RIGHT SINGLE QUOTATION MARK   # quoteright
+0028    28      # LEFT PARENTHESIS      # parenleft
+0029    29      # RIGHT PARENTHESIS     # parenright
+002A    2A      # ASTERISK      # asterisk
+002B    2B      # PLUS SIGN     # plus
+002C    2C      # COMMA # comma
+002D    2D      # HYPHEN-MINUS  # hyphen
+00AD    2D      # SOFT HYPHEN   # hyphen
+002E    2E      # FULL STOP     # period
+002F    2F      # SOLIDUS       # slash
+0030    30      # DIGIT ZERO    # zero
+0031    31      # DIGIT ONE     # one
+0032    32      # DIGIT TWO     # two
+0033    33      # DIGIT THREE   # three
+0034    34      # DIGIT FOUR    # four
+0035    35      # DIGIT FIVE    # five
+0036    36      # DIGIT SIX     # six
+0037    37      # DIGIT SEVEN   # seven
+0038    38      # DIGIT EIGHT   # eight
+0039    39      # DIGIT NINE    # nine
+003A    3A      # COLON # colon
+003B    3B      # SEMICOLON     # semicolon
+003C    3C      # LESS-THAN SIGN        # less
+003D    3D      # EQUALS SIGN   # equal
+003E    3E      # GREATER-THAN SIGN     # greater
+003F    3F      # QUESTION MARK # question
+0040    40      # COMMERCIAL AT # at
+0041    41      # LATIN CAPITAL LETTER A        # A
+0042    42      # LATIN CAPITAL LETTER B        # B
+0043    43      # LATIN CAPITAL LETTER C        # C
+0044    44      # LATIN CAPITAL LETTER D        # D
+0045    45      # LATIN CAPITAL LETTER E        # E
+0046    46      # LATIN CAPITAL LETTER F        # F
+0047    47      # LATIN CAPITAL LETTER G        # G
+0048    48      # LATIN CAPITAL LETTER H        # H
+0049    49      # LATIN CAPITAL LETTER I        # I
+004A    4A      # LATIN CAPITAL LETTER J        # J
+004B    4B      # LATIN CAPITAL LETTER K        # K
+004C    4C      # LATIN CAPITAL LETTER L        # L
+004D    4D      # LATIN CAPITAL LETTER M        # M
+004E    4E      # LATIN CAPITAL LETTER N        # N
+004F    4F      # LATIN CAPITAL LETTER O        # O
+0050    50      # LATIN CAPITAL LETTER P        # P
+0051    51      # LATIN CAPITAL LETTER Q        # Q
+0052    52      # LATIN CAPITAL LETTER R        # R
+0053    53      # LATIN CAPITAL LETTER S        # S
+0054    54      # LATIN CAPITAL LETTER T        # T
+0055    55      # LATIN CAPITAL LETTER U        # U
+0056    56      # LATIN CAPITAL LETTER V        # V
+0057    57      # LATIN CAPITAL LETTER W        # W
+0058    58      # LATIN CAPITAL LETTER X        # X
+0059    59      # LATIN CAPITAL LETTER Y        # Y
+005A    5A      # LATIN CAPITAL LETTER Z        # Z
+005B    5B      # LEFT SQUARE BRACKET   # bracketleft
+005C    5C      # REVERSE SOLIDUS       # backslash
+005D    5D      # RIGHT SQUARE BRACKET  # bracketright
+005E    5E      # CIRCUMFLEX ACCENT     # asciicircum
+005F    5F      # LOW LINE      # underscore
+2018    60      # LEFT SINGLE QUOTATION MARK    # quoteleft
+0061    61      # LATIN SMALL LETTER A  # a
+0062    62      # LATIN SMALL LETTER B  # b
+0063    63      # LATIN SMALL LETTER C  # c
+0064    64      # LATIN SMALL LETTER D  # d
+0065    65      # LATIN SMALL LETTER E  # e
+0066    66      # LATIN SMALL LETTER F  # f
+0067    67      # LATIN SMALL LETTER G  # g
+0068    68      # LATIN SMALL LETTER H  # h
+0069    69      # LATIN SMALL LETTER I  # i
+006A    6A      # LATIN SMALL LETTER J  # j
+006B    6B      # LATIN SMALL LETTER K  # k
+006C    6C      # LATIN SMALL LETTER L  # l
+006D    6D      # LATIN SMALL LETTER M  # m
+006E    6E      # LATIN SMALL LETTER N  # n
+006F    6F      # LATIN SMALL LETTER O  # o
+0070    70      # LATIN SMALL LETTER P  # p
+0071    71      # LATIN SMALL LETTER Q  # q
+0072    72      # LATIN SMALL LETTER R  # r
+0073    73      # LATIN SMALL LETTER S  # s
+0074    74      # LATIN SMALL LETTER T  # t
+0075    75      # LATIN SMALL LETTER U  # u
+0076    76      # LATIN SMALL LETTER V  # v
+0077    77      # LATIN SMALL LETTER W  # w
+0078    78      # LATIN SMALL LETTER X  # x
+0079    79      # LATIN SMALL LETTER Y  # y
+007A    7A      # LATIN SMALL LETTER Z  # z
+007B    7B      # LEFT CURLY BRACKET    # braceleft
+007C    7C      # VERTICAL LINE # bar
+007D    7D      # RIGHT CURLY BRACKET   # braceright
+007E    7E      # TILDE # asciitilde
+00A1    A1      # INVERTED EXCLAMATION MARK     # exclamdown
+00A2    A2      # CENT SIGN     # cent
+00A3    A3      # POUND SIGN    # sterling
+2044    A4      # FRACTION SLASH        # fraction
+2215    A4      # DIVISION SLASH        # fraction
+00A5    A5      # YEN SIGN      # yen
+0192    A6      # LATIN SMALL LETTER F WITH HOOK        # florin
+00A7    A7      # SECTION SIGN  # section
+00A4    A8      # CURRENCY SIGN # currency
+0027    A9      # APOSTROPHE    # quotesingle
+201C    AA      # LEFT DOUBLE QUOTATION MARK    # quotedblleft
+00AB    AB      # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK     # guillemotleft
+2039    AC      # SINGLE LEFT-POINTING ANGLE QUOTATION MARK     # guilsinglleft
+203A    AD      # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK    # guilsinglright
+FB01    AE      # LATIN SMALL LIGATURE FI       # fi
+FB02    AF      # LATIN SMALL LIGATURE FL       # fl
+2013    B1      # EN DASH       # endash
+2020    B2      # DAGGER        # dagger
+2021    B3      # DOUBLE DAGGER # daggerdbl
+00B7    B4      # MIDDLE DOT    # periodcentered
+2219    B4      # BULLET OPERATOR       # periodcentered
+00B6    B6      # PILCROW SIGN  # paragraph
+2022    B7      # BULLET        # bullet
+201A    B8      # SINGLE LOW-9 QUOTATION MARK   # quotesinglbase
+201E    B9      # DOUBLE LOW-9 QUOTATION MARK   # quotedblbase
+201D    BA      # RIGHT DOUBLE QUOTATION MARK   # quotedblright
+00BB    BB      # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK    # guillemotright
+2026    BC      # HORIZONTAL ELLIPSIS   # ellipsis
+2030    BD      # PER MILLE SIGN        # perthousand
+00BF    BF      # INVERTED QUESTION MARK        # questiondown
+0060    C1      # GRAVE ACCENT  # grave
+00B4    C2      # ACUTE ACCENT  # acute
+02C6    C3      # MODIFIER LETTER CIRCUMFLEX ACCENT     # circumflex
+02DC    C4      # SMALL TILDE   # tilde
+00AF    C5      # MACRON        # macron
+02C9    C5      # MODIFIER LETTER MACRON        # macron
+02D8    C6      # BREVE # breve
+02D9    C7      # DOT ABOVE     # dotaccent
+00A8    C8      # DIAERESIS     # dieresis
+02DA    CA      # RING ABOVE    # ring
+00B8    CB      # CEDILLA       # cedilla
+02DD    CD      # DOUBLE ACUTE ACCENT   # hungarumlaut
+02DB    CE      # OGONEK        # ogonek
+02C7    CF      # CARON # caron
+2014    D0      # EM DASH       # emdash
+00C6    E1      # LATIN CAPITAL LETTER AE       # AE
+00AA    E3      # FEMININE ORDINAL INDICATOR    # ordfeminine
+0141    E8      # LATIN CAPITAL LETTER L WITH STROKE    # Lslash
+00D8    E9      # LATIN CAPITAL LETTER O WITH STROKE    # Oslash
+0152    EA      # LATIN CAPITAL LIGATURE OE     # OE
+00BA    EB      # MASCULINE ORDINAL INDICATOR   # ordmasculine
+00E6    F1      # LATIN SMALL LETTER AE # ae
+0131    F5      # LATIN SMALL LETTER DOTLESS I  # dotlessi
+0142    F8      # LATIN SMALL LETTER L WITH STROKE      # lslash
+00F8    F9      # LATIN SMALL LETTER O WITH STROKE      # oslash
+0153    FA      # LATIN SMALL LIGATURE OE       # oe
+00DF    FB      # LATIN SMALL LETTER SHARP S    # germandbls
+
+"
+! !
+
+!AdobeStandard methodsFor:'encoding & decoding'!
+
+decode:codeArg
+    "Automagically generated by generateCode - do not modify.
+     Decode from my encoding into unicode."
+
+    |code "{ Class: SmallInteger }"|
+
+    code := codeArg.
+    code <= 16r1F ifTrue:[
+        ^ self decodingError.
+    ].
+    code > 16rFB ifTrue:[
+        ^ self decodingError.
+    ].
+    [
+        |t|
+        t := #(
+           "16r0020"    16r00A0 " NO-BREAK SPACE        # space " 
+           "16r0021"    16r0021 " EXCLAMATION MARK      # exclam " 
+           "16r0022"    16r0022 " QUOTATION MARK        # quotedbl " 
+           "16r0023"    16r0023 " NUMBER SIGN   # numbersign " 
+           "16r0024"    16r0024 " DOLLAR SIGN   # dollar " 
+           "16r0025"    16r0025 " PERCENT SIGN  # percent " 
+           "16r0026"    16r0026 " AMPERSAND     # ampersand " 
+           "16r0027"    16r2019 " RIGHT SINGLE QUOTATION MARK   # quoteright " 
+           "16r0028"    16r0028 " LEFT PARENTHESIS      # parenleft " 
+           "16r0029"    16r0029 " RIGHT PARENTHESIS     # parenright " 
+           "16r002A"    16r002A " ASTERISK      # asterisk " 
+           "16r002B"    16r002B " PLUS SIGN     # plus " 
+           "16r002C"    16r002C " COMMA # comma " 
+           "16r002D"    16r00AD " SOFT HYPHEN   # hyphen " 
+           "16r002E"    16r002E " FULL STOP     # period " 
+           "16r002F"    16r002F " SOLIDUS       # slash " 
+           "16r0030"    16r0030 " DIGIT ZERO    # zero " 
+           "16r0031"    16r0031 " DIGIT ONE     # one " 
+           "16r0032"    16r0032 " DIGIT TWO     # two " 
+           "16r0033"    16r0033 " DIGIT THREE   # three " 
+           "16r0034"    16r0034 " DIGIT FOUR    # four " 
+           "16r0035"    16r0035 " DIGIT FIVE    # five " 
+           "16r0036"    16r0036 " DIGIT SIX     # six " 
+           "16r0037"    16r0037 " DIGIT SEVEN   # seven " 
+           "16r0038"    16r0038 " DIGIT EIGHT   # eight " 
+           "16r0039"    16r0039 " DIGIT NINE    # nine " 
+           "16r003A"    16r003A " COLON # colon " 
+           "16r003B"    16r003B " SEMICOLON     # semicolon " 
+           "16r003C"    16r003C " LESS-THAN SIGN        # less " 
+           "16r003D"    16r003D " EQUALS SIGN   # equal " 
+           "16r003E"    16r003E " GREATER-THAN SIGN     # greater " 
+           "16r003F"    16r003F " QUESTION MARK # question " 
+           "16r0040"    16r0040 " COMMERCIAL AT # at " 
+           "16r0041"    16r0041 " LATIN CAPITAL LETTER A        # A " 
+           "16r0042"    16r0042 " LATIN CAPITAL LETTER B        # B " 
+           "16r0043"    16r0043 " LATIN CAPITAL LETTER C        # C " 
+           "16r0044"    16r0044 " LATIN CAPITAL LETTER D        # D " 
+           "16r0045"    16r0045 " LATIN CAPITAL LETTER E        # E " 
+           "16r0046"    16r0046 " LATIN CAPITAL LETTER F        # F " 
+           "16r0047"    16r0047 " LATIN CAPITAL LETTER G        # G " 
+           "16r0048"    16r0048 " LATIN CAPITAL LETTER H        # H " 
+           "16r0049"    16r0049 " LATIN CAPITAL LETTER I        # I " 
+           "16r004A"    16r004A " LATIN CAPITAL LETTER J        # J " 
+           "16r004B"    16r004B " LATIN CAPITAL LETTER K        # K " 
+           "16r004C"    16r004C " LATIN CAPITAL LETTER L        # L " 
+           "16r004D"    16r004D " LATIN CAPITAL LETTER M        # M " 
+           "16r004E"    16r004E " LATIN CAPITAL LETTER N        # N " 
+           "16r004F"    16r004F " LATIN CAPITAL LETTER O        # O " 
+           "16r0050"    16r0050 " LATIN CAPITAL LETTER P        # P " 
+           "16r0051"    16r0051 " LATIN CAPITAL LETTER Q        # Q " 
+           "16r0052"    16r0052 " LATIN CAPITAL LETTER R        # R " 
+           "16r0053"    16r0053 " LATIN CAPITAL LETTER S        # S " 
+           "16r0054"    16r0054 " LATIN CAPITAL LETTER T        # T " 
+           "16r0055"    16r0055 " LATIN CAPITAL LETTER U        # U " 
+           "16r0056"    16r0056 " LATIN CAPITAL LETTER V        # V " 
+           "16r0057"    16r0057 " LATIN CAPITAL LETTER W        # W " 
+           "16r0058"    16r0058 " LATIN CAPITAL LETTER X        # X " 
+           "16r0059"    16r0059 " LATIN CAPITAL LETTER Y        # Y " 
+           "16r005A"    16r005A " LATIN CAPITAL LETTER Z        # Z " 
+           "16r005B"    16r005B " LEFT SQUARE BRACKET   # bracketleft " 
+           "16r005C"    16r005C " REVERSE SOLIDUS       # backslash " 
+           "16r005D"    16r005D " RIGHT SQUARE BRACKET  # bracketright " 
+           "16r005E"    16r005E " CIRCUMFLEX ACCENT     # asciicircum " 
+           "16r005F"    16r005F " LOW LINE      # underscore " 
+           "16r0060"    16r2018 " LEFT SINGLE QUOTATION MARK    # quoteleft " 
+           "16r0061"    16r0061 " LATIN SMALL LETTER A  # a " 
+           "16r0062"    16r0062 " LATIN SMALL LETTER B  # b " 
+           "16r0063"    16r0063 " LATIN SMALL LETTER C  # c " 
+           "16r0064"    16r0064 " LATIN SMALL LETTER D  # d " 
+           "16r0065"    16r0065 " LATIN SMALL LETTER E  # e " 
+           "16r0066"    16r0066 " LATIN SMALL LETTER F  # f " 
+           "16r0067"    16r0067 " LATIN SMALL LETTER G  # g " 
+           "16r0068"    16r0068 " LATIN SMALL LETTER H  # h " 
+           "16r0069"    16r0069 " LATIN SMALL LETTER I  # i " 
+           "16r006A"    16r006A " LATIN SMALL LETTER J  # j " 
+           "16r006B"    16r006B " LATIN SMALL LETTER K  # k " 
+           "16r006C"    16r006C " LATIN SMALL LETTER L  # l " 
+           "16r006D"    16r006D " LATIN SMALL LETTER M  # m " 
+           "16r006E"    16r006E " LATIN SMALL LETTER N  # n " 
+           "16r006F"    16r006F " LATIN SMALL LETTER O  # o " 
+           "16r0070"    16r0070 " LATIN SMALL LETTER P  # p " 
+           "16r0071"    16r0071 " LATIN SMALL LETTER Q  # q " 
+           "16r0072"    16r0072 " LATIN SMALL LETTER R  # r " 
+           "16r0073"    16r0073 " LATIN SMALL LETTER S  # s " 
+           "16r0074"    16r0074 " LATIN SMALL LETTER T  # t " 
+           "16r0075"    16r0075 " LATIN SMALL LETTER U  # u " 
+           "16r0076"    16r0076 " LATIN SMALL LETTER V  # v " 
+           "16r0077"    16r0077 " LATIN SMALL LETTER W  # w " 
+           "16r0078"    16r0078 " LATIN SMALL LETTER X  # x " 
+           "16r0079"    16r0079 " LATIN SMALL LETTER Y  # y " 
+           "16r007A"    16r007A " LATIN SMALL LETTER Z  # z " 
+           "16r007B"    16r007B " LEFT CURLY BRACKET    # braceleft " 
+           "16r007C"    16r007C " VERTICAL LINE # bar " 
+           "16r007D"    16r007D " RIGHT CURLY BRACKET   # braceright " 
+           "16r007E"    16r007E " TILDE # asciitilde " 
+           "16r007F"    16r0000 " invalid " 
+           "16r0080"    16r0000 " invalid " 
+           "16r0081"    16r0000 " invalid " 
+           "16r0082"    16r0000 " invalid " 
+           "16r0083"    16r0000 " invalid " 
+           "16r0084"    16r0000 " invalid " 
+           "16r0085"    16r0000 " invalid " 
+           "16r0086"    16r0000 " invalid " 
+           "16r0087"    16r0000 " invalid " 
+           "16r0088"    16r0000 " invalid " 
+           "16r0089"    16r0000 " invalid " 
+           "16r008A"    16r0000 " invalid " 
+           "16r008B"    16r0000 " invalid " 
+           "16r008C"    16r0000 " invalid " 
+           "16r008D"    16r0000 " invalid " 
+           "16r008E"    16r0000 " invalid " 
+           "16r008F"    16r0000 " invalid " 
+           "16r0090"    16r0000 " invalid " 
+           "16r0091"    16r0000 " invalid " 
+           "16r0092"    16r0000 " invalid " 
+           "16r0093"    16r0000 " invalid " 
+           "16r0094"    16r0000 " invalid " 
+           "16r0095"    16r0000 " invalid " 
+           "16r0096"    16r0000 " invalid " 
+           "16r0097"    16r0000 " invalid " 
+           "16r0098"    16r0000 " invalid " 
+           "16r0099"    16r0000 " invalid " 
+           "16r009A"    16r0000 " invalid " 
+           "16r009B"    16r0000 " invalid " 
+           "16r009C"    16r0000 " invalid " 
+           "16r009D"    16r0000 " invalid " 
+           "16r009E"    16r0000 " invalid " 
+           "16r009F"    16r0000 " invalid " 
+           "16r00A0"    16r0000 " invalid " 
+           "16r00A1"    16r00A1 " INVERTED EXCLAMATION MARK     # exclamdown " 
+           "16r00A2"    16r00A2 " CENT SIGN     # cent " 
+           "16r00A3"    16r00A3 " POUND SIGN    # sterling " 
+           "16r00A4"    16r2215 " DIVISION SLASH        # fraction " 
+           "16r00A5"    16r00A5 " YEN SIGN      # yen " 
+           "16r00A6"    16r0192 " LATIN SMALL LETTER F WITH HOOK        # florin " 
+           "16r00A7"    16r00A7 " SECTION SIGN  # section " 
+           "16r00A8"    16r00A4 " CURRENCY SIGN # currency " 
+           "16r00A9"    16r0027 " APOSTROPHE    # quotesingle " 
+           "16r00AA"    16r201C " LEFT DOUBLE QUOTATION MARK    # quotedblleft " 
+           "16r00AB"    16r00AB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK     # guillemotleft " 
+           "16r00AC"    16r2039 " SINGLE LEFT-POINTING ANGLE QUOTATION MARK     # guilsinglleft " 
+           "16r00AD"    16r203A " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK    # guilsinglright " 
+           "16r00AE"    16rFB01 " LATIN SMALL LIGATURE FI       # fi " 
+           "16r00AF"    16rFB02 " LATIN SMALL LIGATURE FL       # fl " 
+           "16r00B0"    16r0000 " invalid " 
+           "16r00B1"    16r2013 " EN DASH       # endash " 
+           "16r00B2"    16r2020 " DAGGER        # dagger " 
+           "16r00B3"    16r2021 " DOUBLE DAGGER # daggerdbl " 
+           "16r00B4"    16r2219 " BULLET OPERATOR       # periodcentered " 
+           "16r00B5"    16r0000 " invalid " 
+           "16r00B6"    16r00B6 " PILCROW SIGN  # paragraph " 
+           "16r00B7"    16r2022 " BULLET        # bullet " 
+           "16r00B8"    16r201A " SINGLE LOW-9 QUOTATION MARK   # quotesinglbase " 
+           "16r00B9"    16r201E " DOUBLE LOW-9 QUOTATION MARK   # quotedblbase " 
+           "16r00BA"    16r201D " RIGHT DOUBLE QUOTATION MARK   # quotedblright " 
+           "16r00BB"    16r00BB " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK    # guillemotright " 
+           "16r00BC"    16r2026 " HORIZONTAL ELLIPSIS   # ellipsis " 
+           "16r00BD"    16r2030 " PER MILLE SIGN        # perthousand " 
+           "16r00BE"    16r0000 " invalid " 
+           "16r00BF"    16r00BF " INVERTED QUESTION MARK        # questiondown " 
+           "16r00C0"    16r0000 " invalid " 
+           "16r00C1"    16r0060 " GRAVE ACCENT  # grave " 
+           "16r00C2"    16r00B4 " ACUTE ACCENT  # acute " 
+           "16r00C3"    16r02C6 " MODIFIER LETTER CIRCUMFLEX ACCENT     # circumflex " 
+           "16r00C4"    16r02DC " SMALL TILDE   # tilde " 
+           "16r00C5"    16r02C9 " MODIFIER LETTER MACRON        # macron " 
+           "16r00C6"    16r02D8 " BREVE # breve " 
+           "16r00C7"    16r02D9 " DOT ABOVE     # dotaccent " 
+           "16r00C8"    16r00A8 " DIAERESIS     # dieresis " 
+           "16r00C9"    16r0000 " invalid " 
+           "16r00CA"    16r02DA " RING ABOVE    # ring " 
+           "16r00CB"    16r00B8 " CEDILLA       # cedilla " 
+           "16r00CC"    16r0000 " invalid " 
+           "16r00CD"    16r02DD " DOUBLE ACUTE ACCENT   # hungarumlaut " 
+           "16r00CE"    16r02DB " OGONEK        # ogonek " 
+           "16r00CF"    16r02C7 " CARON # caron " 
+           "16r00D0"    16r2014 " EM DASH       # emdash " 
+           "16r00D1"    16r0000 " invalid " 
+           "16r00D2"    16r0000 " invalid " 
+           "16r00D3"    16r0000 " invalid " 
+           "16r00D4"    16r0000 " invalid " 
+           "16r00D5"    16r0000 " invalid " 
+           "16r00D6"    16r0000 " invalid " 
+           "16r00D7"    16r0000 " invalid " 
+           "16r00D8"    16r0000 " invalid " 
+           "16r00D9"    16r0000 " invalid " 
+           "16r00DA"    16r0000 " invalid " 
+           "16r00DB"    16r0000 " invalid " 
+           "16r00DC"    16r0000 " invalid " 
+           "16r00DD"    16r0000 " invalid " 
+           "16r00DE"    16r0000 " invalid " 
+           "16r00DF"    16r0000 " invalid " 
+           "16r00E0"    16r0000 " invalid " 
+           "16r00E1"    16r00C6 " LATIN CAPITAL LETTER AE       # AE " 
+           "16r00E2"    16r0000 " invalid " 
+           "16r00E3"    16r00AA " FEMININE ORDINAL INDICATOR    # ordfeminine " 
+           "16r00E4"    16r0000 " invalid " 
+           "16r00E5"    16r0000 " invalid " 
+           "16r00E6"    16r0000 " invalid " 
+           "16r00E7"    16r0000 " invalid " 
+           "16r00E8"    16r0141 " LATIN CAPITAL LETTER L WITH STROKE    # Lslash " 
+           "16r00E9"    16r00D8 " LATIN CAPITAL LETTER O WITH STROKE    # Oslash " 
+           "16r00EA"    16r0152 " LATIN CAPITAL LIGATURE OE     # OE " 
+           "16r00EB"    16r00BA " MASCULINE ORDINAL INDICATOR   # ordmasculine " 
+           "16r00EC"    16r0000 " invalid " 
+           "16r00ED"    16r0000 " invalid " 
+           "16r00EE"    16r0000 " invalid " 
+           "16r00EF"    16r0000 " invalid " 
+           "16r00F0"    16r0000 " invalid " 
+           "16r00F1"    16r00E6 " LATIN SMALL LETTER AE # ae " 
+           "16r00F2"    16r0000 " invalid " 
+           "16r00F3"    16r0000 " invalid " 
+           "16r00F4"    16r0000 " invalid " 
+           "16r00F5"    16r0131 " LATIN SMALL LETTER DOTLESS I  # dotlessi " 
+           "16r00F6"    16r0000 " invalid " 
+           "16r00F7"    16r0000 " invalid " 
+           "16r00F8"    16r0142 " LATIN SMALL LETTER L WITH STROKE      # lslash " 
+           "16r00F9"    16r00F8 " LATIN SMALL LETTER O WITH STROKE      # oslash " 
+           "16r00FA"    16r0153 " LATIN SMALL LIGATURE OE       # oe " 
+           "16r00FB"    16r00DF " LATIN SMALL LETTER SHARP S    # germandbls " 
+           ) at:(code - 16r1F).
+        t == 0 ifFalse:[^ t].
+        ^ self decodingError.
+    ] value.
+!
+
+encode:unicodeArg
+    "Automagically generated by generateCode - do not modify.
+     Encode from unicode into my encoding."
+
+    |unicode "{ Class: SmallInteger }"|
+
+    unicode := unicodeArg.
+    unicode <= 16r20 ifTrue:[
+        ^ self decodingError.
+    ].
+    unicode <= 16r26 ifTrue:[ ^ unicode ].
+    unicode > 16rFB02 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode <= 16r2219 ifTrue:[
+        unicode <= 16r2DD ifTrue:[
+            unicode <= 16r192 ifTrue:[
+                unicode <= 16r153 ifTrue:[
+                    unicode <= 16rF8 ifTrue:[
+                        [
+                            |t|
+                            t := #[
+                               "16r0027"    16rA9 " APOSTROPHE    # quotesingle " 
+                               "16r0028"    16r28 " LEFT PARENTHESIS      # parenleft " 
+                               "16r0029"    16r29 " RIGHT PARENTHESIS     # parenright " 
+                               "16r002A"    16r2A " ASTERISK      # asterisk " 
+                               "16r002B"    16r2B " PLUS SIGN     # plus " 
+                               "16r002C"    16r2C " COMMA # comma " 
+                               "16r002D"    16r00 " invalid " 
+                               "16r002E"    16r2E " FULL STOP     # period " 
+                               "16r002F"    16r2F " SOLIDUS       # slash " 
+                               "16r0030"    16r30 " DIGIT ZERO    # zero " 
+                               "16r0031"    16r31 " DIGIT ONE     # one " 
+                               "16r0032"    16r32 " DIGIT TWO     # two " 
+                               "16r0033"    16r33 " DIGIT THREE   # three " 
+                               "16r0034"    16r34 " DIGIT FOUR    # four " 
+                               "16r0035"    16r35 " DIGIT FIVE    # five " 
+                               "16r0036"    16r36 " DIGIT SIX     # six " 
+                               "16r0037"    16r37 " DIGIT SEVEN   # seven " 
+                               "16r0038"    16r38 " DIGIT EIGHT   # eight " 
+                               "16r0039"    16r39 " DIGIT NINE    # nine " 
+                               "16r003A"    16r3A " COLON # colon " 
+                               "16r003B"    16r3B " SEMICOLON     # semicolon " 
+                               "16r003C"    16r3C " LESS-THAN SIGN        # less " 
+                               "16r003D"    16r3D " EQUALS SIGN   # equal " 
+                               "16r003E"    16r3E " GREATER-THAN SIGN     # greater " 
+                               "16r003F"    16r3F " QUESTION MARK # question " 
+                               "16r0040"    16r40 " COMMERCIAL AT # at " 
+                               "16r0041"    16r41 " LATIN CAPITAL LETTER A        # A " 
+                               "16r0042"    16r42 " LATIN CAPITAL LETTER B        # B " 
+                               "16r0043"    16r43 " LATIN CAPITAL LETTER C        # C " 
+                               "16r0044"    16r44 " LATIN CAPITAL LETTER D        # D " 
+                               "16r0045"    16r45 " LATIN CAPITAL LETTER E        # E " 
+                               "16r0046"    16r46 " LATIN CAPITAL LETTER F        # F " 
+                               "16r0047"    16r47 " LATIN CAPITAL LETTER G        # G " 
+                               "16r0048"    16r48 " LATIN CAPITAL LETTER H        # H " 
+                               "16r0049"    16r49 " LATIN CAPITAL LETTER I        # I " 
+                               "16r004A"    16r4A " LATIN CAPITAL LETTER J        # J " 
+                               "16r004B"    16r4B " LATIN CAPITAL LETTER K        # K " 
+                               "16r004C"    16r4C " LATIN CAPITAL LETTER L        # L " 
+                               "16r004D"    16r4D " LATIN CAPITAL LETTER M        # M " 
+                               "16r004E"    16r4E " LATIN CAPITAL LETTER N        # N " 
+                               "16r004F"    16r4F " LATIN CAPITAL LETTER O        # O " 
+                               "16r0050"    16r50 " LATIN CAPITAL LETTER P        # P " 
+                               "16r0051"    16r51 " LATIN CAPITAL LETTER Q        # Q " 
+                               "16r0052"    16r52 " LATIN CAPITAL LETTER R        # R " 
+                               "16r0053"    16r53 " LATIN CAPITAL LETTER S        # S " 
+                               "16r0054"    16r54 " LATIN CAPITAL LETTER T        # T " 
+                               "16r0055"    16r55 " LATIN CAPITAL LETTER U        # U " 
+                               "16r0056"    16r56 " LATIN CAPITAL LETTER V        # V " 
+                               "16r0057"    16r57 " LATIN CAPITAL LETTER W        # W " 
+                               "16r0058"    16r58 " LATIN CAPITAL LETTER X        # X " 
+                               "16r0059"    16r59 " LATIN CAPITAL LETTER Y        # Y " 
+                               "16r005A"    16r5A " LATIN CAPITAL LETTER Z        # Z " 
+                               "16r005B"    16r5B " LEFT SQUARE BRACKET   # bracketleft " 
+                               "16r005C"    16r5C " REVERSE SOLIDUS       # backslash " 
+                               "16r005D"    16r5D " RIGHT SQUARE BRACKET  # bracketright " 
+                               "16r005E"    16r5E " CIRCUMFLEX ACCENT     # asciicircum " 
+                               "16r005F"    16r5F " LOW LINE      # underscore " 
+                               "16r0060"    16rC1 " GRAVE ACCENT  # grave " 
+                               "16r0061"    16r61 " LATIN SMALL LETTER A  # a " 
+                               "16r0062"    16r62 " LATIN SMALL LETTER B  # b " 
+                               "16r0063"    16r63 " LATIN SMALL LETTER C  # c " 
+                               "16r0064"    16r64 " LATIN SMALL LETTER D  # d " 
+                               "16r0065"    16r65 " LATIN SMALL LETTER E  # e " 
+                               "16r0066"    16r66 " LATIN SMALL LETTER F  # f " 
+                               "16r0067"    16r67 " LATIN SMALL LETTER G  # g " 
+                               "16r0068"    16r68 " LATIN SMALL LETTER H  # h " 
+                               "16r0069"    16r69 " LATIN SMALL LETTER I  # i " 
+                               "16r006A"    16r6A " LATIN SMALL LETTER J  # j " 
+                               "16r006B"    16r6B " LATIN SMALL LETTER K  # k " 
+                               "16r006C"    16r6C " LATIN SMALL LETTER L  # l " 
+                               "16r006D"    16r6D " LATIN SMALL LETTER M  # m " 
+                               "16r006E"    16r6E " LATIN SMALL LETTER N  # n " 
+                               "16r006F"    16r6F " LATIN SMALL LETTER O  # o " 
+                               "16r0070"    16r70 " LATIN SMALL LETTER P  # p " 
+                               "16r0071"    16r71 " LATIN SMALL LETTER Q  # q " 
+                               "16r0072"    16r72 " LATIN SMALL LETTER R  # r " 
+                               "16r0073"    16r73 " LATIN SMALL LETTER S  # s " 
+                               "16r0074"    16r74 " LATIN SMALL LETTER T  # t " 
+                               "16r0075"    16r75 " LATIN SMALL LETTER U  # u " 
+                               "16r0076"    16r76 " LATIN SMALL LETTER V  # v " 
+                               "16r0077"    16r77 " LATIN SMALL LETTER W  # w " 
+                               "16r0078"    16r78 " LATIN SMALL LETTER X  # x " 
+                               "16r0079"    16r79 " LATIN SMALL LETTER Y  # y " 
+                               "16r007A"    16r7A " LATIN SMALL LETTER Z  # z " 
+                               "16r007B"    16r7B " LEFT CURLY BRACKET    # braceleft " 
+                               "16r007C"    16r7C " VERTICAL LINE # bar " 
+                               "16r007D"    16r7D " RIGHT CURLY BRACKET   # braceright " 
+                               "16r007E"    16r7E " TILDE # asciitilde " 
+                               "16r007F"    16r00 " invalid " 
+                               "16r0080"    16r00 " invalid " 
+                               "16r0081"    16r00 " invalid " 
+                               "16r0082"    16r00 " invalid " 
+                               "16r0083"    16r00 " invalid " 
+                               "16r0084"    16r00 " invalid " 
+                               "16r0085"    16r00 " invalid " 
+                               "16r0086"    16r00 " invalid " 
+                               "16r0087"    16r00 " invalid " 
+                               "16r0088"    16r00 " invalid " 
+                               "16r0089"    16r00 " invalid " 
+                               "16r008A"    16r00 " invalid " 
+                               "16r008B"    16r00 " invalid " 
+                               "16r008C"    16r00 " invalid " 
+                               "16r008D"    16r00 " invalid " 
+                               "16r008E"    16r00 " invalid " 
+                               "16r008F"    16r00 " invalid " 
+                               "16r0090"    16r00 " invalid " 
+                               "16r0091"    16r00 " invalid " 
+                               "16r0092"    16r00 " invalid " 
+                               "16r0093"    16r00 " invalid " 
+                               "16r0094"    16r00 " invalid " 
+                               "16r0095"    16r00 " invalid " 
+                               "16r0096"    16r00 " invalid " 
+                               "16r0097"    16r00 " invalid " 
+                               "16r0098"    16r00 " invalid " 
+                               "16r0099"    16r00 " invalid " 
+                               "16r009A"    16r00 " invalid " 
+                               "16r009B"    16r00 " invalid " 
+                               "16r009C"    16r00 " invalid " 
+                               "16r009D"    16r00 " invalid " 
+                               "16r009E"    16r00 " invalid " 
+                               "16r009F"    16r00 " invalid " 
+                               "16r00A0"    16r20 " NO-BREAK SPACE        # space " 
+                               "16r00A1"    16rA1 " INVERTED EXCLAMATION MARK     # exclamdown " 
+                               "16r00A2"    16rA2 " CENT SIGN     # cent " 
+                               "16r00A3"    16rA3 " POUND SIGN    # sterling " 
+                               "16r00A4"    16rA8 " CURRENCY SIGN # currency " 
+                               "16r00A5"    16rA5 " YEN SIGN      # yen " 
+                               "16r00A6"    16r00 " invalid " 
+                               "16r00A7"    16rA7 " SECTION SIGN  # section " 
+                               "16r00A8"    16rC8 " DIAERESIS     # dieresis " 
+                               "16r00A9"    16r00 " invalid " 
+                               "16r00AA"    16rE3 " FEMININE ORDINAL INDICATOR    # ordfeminine " 
+                               "16r00AB"    16rAB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK     # guillemotleft " 
+                               "16r00AC"    16r00 " invalid " 
+                               "16r00AD"    16r2D " SOFT HYPHEN   # hyphen " 
+                               "16r00AE"    16r00 " invalid " 
+                               "16r00AF"    16r00 " invalid " 
+                               "16r00B0"    16r00 " invalid " 
+                               "16r00B1"    16r00 " invalid " 
+                               "16r00B2"    16r00 " invalid " 
+                               "16r00B3"    16r00 " invalid " 
+                               "16r00B4"    16rC2 " ACUTE ACCENT  # acute " 
+                               "16r00B5"    16r00 " invalid " 
+                               "16r00B6"    16rB6 " PILCROW SIGN  # paragraph " 
+                               "16r00B7"    16r00 " invalid " 
+                               "16r00B8"    16rCB " CEDILLA       # cedilla " 
+                               "16r00B9"    16r00 " invalid " 
+                               "16r00BA"    16rEB " MASCULINE ORDINAL INDICATOR   # ordmasculine " 
+                               "16r00BB"    16rBB " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK    # guillemotright " 
+                               "16r00BC"    16r00 " invalid " 
+                               "16r00BD"    16r00 " invalid " 
+                               "16r00BE"    16r00 " invalid " 
+                               "16r00BF"    16rBF " INVERTED QUESTION MARK        # questiondown " 
+                               "16r00C0"    16r00 " invalid " 
+                               "16r00C1"    16r00 " invalid " 
+                               "16r00C2"    16r00 " invalid " 
+                               "16r00C3"    16r00 " invalid " 
+                               "16r00C4"    16r00 " invalid " 
+                               "16r00C5"    16r00 " invalid " 
+                               "16r00C6"    16rE1 " LATIN CAPITAL LETTER AE       # AE " 
+                               "16r00C7"    16r00 " invalid " 
+                               "16r00C8"    16r00 " invalid " 
+                               "16r00C9"    16r00 " invalid " 
+                               "16r00CA"    16r00 " invalid " 
+                               "16r00CB"    16r00 " invalid " 
+                               "16r00CC"    16r00 " invalid " 
+                               "16r00CD"    16r00 " invalid " 
+                               "16r00CE"    16r00 " invalid " 
+                               "16r00CF"    16r00 " invalid " 
+                               "16r00D0"    16r00 " invalid " 
+                               "16r00D1"    16r00 " invalid " 
+                               "16r00D2"    16r00 " invalid " 
+                               "16r00D3"    16r00 " invalid " 
+                               "16r00D4"    16r00 " invalid " 
+                               "16r00D5"    16r00 " invalid " 
+                               "16r00D6"    16r00 " invalid " 
+                               "16r00D7"    16r00 " invalid " 
+                               "16r00D8"    16rE9 " LATIN CAPITAL LETTER O WITH STROKE    # Oslash " 
+                               "16r00D9"    16r00 " invalid " 
+                               "16r00DA"    16r00 " invalid " 
+                               "16r00DB"    16r00 " invalid " 
+                               "16r00DC"    16r00 " invalid " 
+                               "16r00DD"    16r00 " invalid " 
+                               "16r00DE"    16r00 " invalid " 
+                               "16r00DF"    16rFB " LATIN SMALL LETTER SHARP S    # germandbls " 
+                               "16r00E0"    16r00 " invalid " 
+                               "16r00E1"    16r00 " invalid " 
+                               "16r00E2"    16r00 " invalid " 
+                               "16r00E3"    16r00 " invalid " 
+                               "16r00E4"    16r00 " invalid " 
+                               "16r00E5"    16r00 " invalid " 
+                               "16r00E6"    16rF1 " LATIN SMALL LETTER AE # ae " 
+                               "16r00E7"    16r00 " invalid " 
+                               "16r00E8"    16r00 " invalid " 
+                               "16r00E9"    16r00 " invalid " 
+                               "16r00EA"    16r00 " invalid " 
+                               "16r00EB"    16r00 " invalid " 
+                               "16r00EC"    16r00 " invalid " 
+                               "16r00ED"    16r00 " invalid " 
+                               "16r00EE"    16r00 " invalid " 
+                               "16r00EF"    16r00 " invalid " 
+                               "16r00F0"    16r00 " invalid " 
+                               "16r00F1"    16r00 " invalid " 
+                               "16r00F2"    16r00 " invalid " 
+                               "16r00F3"    16r00 " invalid " 
+                               "16r00F4"    16r00 " invalid " 
+                               "16r00F5"    16r00 " invalid " 
+                               "16r00F6"    16r00 " invalid " 
+                               "16r00F7"    16r00 " invalid " 
+                               "16r00F8"    16rF9 " LATIN SMALL LETTER O WITH STROKE      # oslash " 
+                               ] at:(unicode - 16r26).
+                            t == 0 ifFalse:[^ t].
+                            ^ self encodingError
+                        ] value.
+                    ].
+                    unicode <= 16r130 ifTrue:[
+                        ^ self encodingError
+                    ].
+                    unicode == 16r131 ifTrue:[
+                        (#[
+                           "16r0131"    1 " LATIN SMALL LETTER DOTLESS I  # dotlessi " 
+                        ] at:(unicode - 304)) ~~ 0 ifTrue:[^ unicode].
+                        ^ self encodingError
+                    ].
+                    unicode <= 16r140 ifTrue:[
+                        ^ self encodingError
+                    ].
+                    [
+                        |t|
+                        t := #[
+                           "16r0141"    16rE8 " LATIN CAPITAL LETTER L WITH STROKE    # Lslash " 
+                           "16r0142"    16rF8 " LATIN SMALL LETTER L WITH STROKE      # lslash " 
+                           "16r0143"    16r00 " invalid " 
+                           "16r0144"    16r00 " invalid " 
+                           "16r0145"    16r00 " invalid " 
+                           "16r0146"    16r00 " invalid " 
+                           "16r0147"    16r00 " invalid " 
+                           "16r0148"    16r00 " invalid " 
+                           "16r0149"    16r00 " invalid " 
+                           "16r014A"    16r00 " invalid " 
+                           "16r014B"    16r00 " invalid " 
+                           "16r014C"    16r00 " invalid " 
+                           "16r014D"    16r00 " invalid " 
+                           "16r014E"    16r00 " invalid " 
+                           "16r014F"    16r00 " invalid " 
+                           "16r0150"    16r00 " invalid " 
+                           "16r0151"    16r00 " invalid " 
+                           "16r0152"    16rEA " LATIN CAPITAL LIGATURE OE     # OE " 
+                           "16r0153"    16rFA " LATIN SMALL LIGATURE OE       # oe " 
+                           ] at:(unicode - 16r140).
+                        t == 0 ifFalse:[^ t].
+                        ^ self encodingError
+                    ] value.
+                ].
+                unicode <= 16r191 ifTrue:[
+                    ^ self encodingError
+                ].
+                ^  "16r0192" 16r00A6 " LATIN SMALL LETTER F WITH HOOK        # florin " 
+            ].
+            unicode <= 16r2C5 ifTrue:[
+                ^ self encodingError
+            ].
+            [
+                |t|
+                t := #[
+                   "16r02C6"    16rC3 " MODIFIER LETTER CIRCUMFLEX ACCENT     # circumflex " 
+                   "16r02C7"    16rCF " CARON # caron " 
+                   "16r02C8"    16r00 " invalid " 
+                   "16r02C9"    16rC5 " MODIFIER LETTER MACRON        # macron " 
+                   "16r02CA"    16r00 " invalid " 
+                   "16r02CB"    16r00 " invalid " 
+                   "16r02CC"    16r00 " invalid " 
+                   "16r02CD"    16r00 " invalid " 
+                   "16r02CE"    16r00 " invalid " 
+                   "16r02CF"    16r00 " invalid " 
+                   "16r02D0"    16r00 " invalid " 
+                   "16r02D1"    16r00 " invalid " 
+                   "16r02D2"    16r00 " invalid " 
+                   "16r02D3"    16r00 " invalid " 
+                   "16r02D4"    16r00 " invalid " 
+                   "16r02D5"    16r00 " invalid " 
+                   "16r02D6"    16r00 " invalid " 
+                   "16r02D7"    16r00 " invalid " 
+                   "16r02D8"    16rC6 " BREVE # breve " 
+                   "16r02D9"    16rC7 " DOT ABOVE     # dotaccent " 
+                   "16r02DA"    16rCA " RING ABOVE    # ring " 
+                   "16r02DB"    16rCE " OGONEK        # ogonek " 
+                   "16r02DC"    16rC4 " SMALL TILDE   # tilde " 
+                   "16r02DD"    16rCD " DOUBLE ACUTE ACCENT   # hungarumlaut " 
+                   ] at:(unicode - 16r2C5).
+                t == 0 ifFalse:[^ t].
+                ^ self encodingError
+            ] value.
+        ].
+        unicode <= 16r2012 ifTrue:[
+            ^ self encodingError
+        ].
+        unicode <= 16r203A ifTrue:[
+            [
+                |t|
+                t := #[
+                   "16r2013"    16rB1 " EN DASH       # endash " 
+                   "16r2014"    16rD0 " EM DASH       # emdash " 
+                   "16r2015"    16r00 " invalid " 
+                   "16r2016"    16r00 " invalid " 
+                   "16r2017"    16r00 " invalid " 
+                   "16r2018"    16r60 " LEFT SINGLE QUOTATION MARK    # quoteleft " 
+                   "16r2019"    16r27 " RIGHT SINGLE QUOTATION MARK   # quoteright " 
+                   "16r201A"    16rB8 " SINGLE LOW-9 QUOTATION MARK   # quotesinglbase " 
+                   "16r201B"    16r00 " invalid " 
+                   "16r201C"    16rAA " LEFT DOUBLE QUOTATION MARK    # quotedblleft " 
+                   "16r201D"    16rBA " RIGHT DOUBLE QUOTATION MARK   # quotedblright " 
+                   "16r201E"    16rB9 " DOUBLE LOW-9 QUOTATION MARK   # quotedblbase " 
+                   "16r201F"    16r00 " invalid " 
+                   "16r2020"    16rB2 " DAGGER        # dagger " 
+                   "16r2021"    16rB3 " DOUBLE DAGGER # daggerdbl " 
+                   "16r2022"    16rB7 " BULLET        # bullet " 
+                   "16r2023"    16r00 " invalid " 
+                   "16r2024"    16r00 " invalid " 
+                   "16r2025"    16r00 " invalid " 
+                   "16r2026"    16rBC " HORIZONTAL ELLIPSIS   # ellipsis " 
+                   "16r2027"    16r00 " invalid " 
+                   "16r2028"    16r00 " invalid " 
+                   "16r2029"    16r00 " invalid " 
+                   "16r202A"    16r00 " invalid " 
+                   "16r202B"    16r00 " invalid " 
+                   "16r202C"    16r00 " invalid " 
+                   "16r202D"    16r00 " invalid " 
+                   "16r202E"    16r00 " invalid " 
+                   "16r202F"    16r00 " invalid " 
+                   "16r2030"    16rBD " PER MILLE SIGN        # perthousand " 
+                   "16r2031"    16r00 " invalid " 
+                   "16r2032"    16r00 " invalid " 
+                   "16r2033"    16r00 " invalid " 
+                   "16r2034"    16r00 " invalid " 
+                   "16r2035"    16r00 " invalid " 
+                   "16r2036"    16r00 " invalid " 
+                   "16r2037"    16r00 " invalid " 
+                   "16r2038"    16r00 " invalid " 
+                   "16r2039"    16rAC " SINGLE LEFT-POINTING ANGLE QUOTATION MARK     # guilsinglleft " 
+                   "16r203A"    16rAD " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK    # guilsinglright " 
+                   ] at:(unicode - 16r2012).
+                t == 0 ifFalse:[^ t].
+                ^ self encodingError
+            ] value.
+        ].
+        unicode <= 16r2214 ifTrue:[
+            ^ self encodingError
+        ].
+        [
+            |t|
+            t := #[
+               "16r2215"    16rA4 " DIVISION SLASH        # fraction " 
+               "16r2216"    16r00 " invalid " 
+               "16r2217"    16r00 " invalid " 
+               "16r2218"    16r00 " invalid " 
+               "16r2219"    16rB4 " BULLET OPERATOR       # periodcentered " 
+               ] at:(unicode - 16r2214).
+            t == 0 ifFalse:[^ t].
+            ^ self encodingError
+        ] value.
+    ].
+    unicode <= 16rFB00 ifTrue:[
+        ^ self encodingError
+    ].
+    ^ #[
+       "16rFB01"    16rAE " LATIN SMALL LIGATURE FI       # fi " 
+       "16rFB02"    16rAF " LATIN SMALL LIGATURE FL       # fl " 
+       ] at:(unicode - 16rFB00).
+! !
+
+!AdobeStandard class methodsFor:'documentation'!
+
+version
+    ^ '$Header$'
+!
+
+version_CVS
+    ^ '$Header$'
+! !
+