CharacterEncoderImplementations__AdobeSymbol.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 20:55:17 +0200
changeset 24417 03b083548da2
parent 21712 bbdbb633670b
permissions -rw-r--r--
#REFACTORING by exept class: Smalltalk class changed: #recursiveInstallAutoloadedClassesFrom:rememberIn:maxLevels:noAutoload:packageTop:showSplashInLevels: Transcript showCR:(... bindWith:...) -> Transcript showCR:... with:...

"
 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:#AdobeSymbol
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'Collections-Text-Encodings'
!

!AdobeSymbol 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 Symbol Encoding.
    see http://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/symbol.txt

    [see with:]
        CharacterEncoderImplementations::AdobeSymbol showCharacterSet

    [author:]
        Claus Gittinger
"
! !

!AdobeSymbol class methodsFor:'mapping'!

mapFileURL1_relativePathName
    "self generateCode"

    ^ 'VENDORS/ADOBE/symbol.txt'
!

mapping
"
# From: http://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/stdenc.txt

#
#  Name:             Adobe Symbol 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 Symbol 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 in Symbol. Note that some characters, such as 'space',
#    are mapped to 2 Unicode values. 29 characters have assignments in the
#    Corporate Use Subarea; these are indicated by '(CUS)' in field 4. 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; use of Corporate
#    Use subarea values; addition of the euro character; changed assignments of
#    some characters such as the COPYRIGHT SIGNs and RADICAL EXTENDER. 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
2200    22      # FOR ALL       # universal
0023    23      # NUMBER SIGN   # numbersign
2203    24      # THERE EXISTS  # existential
0025    25      # PERCENT SIGN  # percent
0026    26      # AMPERSAND     # ampersand
220B    27      # CONTAINS AS MEMBER    # suchthat
0028    28      # LEFT PARENTHESIS      # parenleft
0029    29      # RIGHT PARENTHESIS     # parenright
2217    2A      # ASTERISK OPERATOR     # asteriskmath
002B    2B      # PLUS SIGN     # plus
002C    2C      # COMMA # comma
2212    2D      # MINUS SIGN    # minus
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
2245    40      # APPROXIMATELY EQUAL TO        # congruent
0391    41      # GREEK CAPITAL LETTER ALPHA    # Alpha
0392    42      # GREEK CAPITAL LETTER BETA     # Beta
03A7    43      # GREEK CAPITAL LETTER CHI      # Chi
0394    44      # GREEK CAPITAL LETTER DELTA    # Delta
2206    44      # INCREMENT     # Delta
0395    45      # GREEK CAPITAL LETTER EPSILON  # Epsilon
03A6    46      # GREEK CAPITAL LETTER PHI      # Phi
0393    47      # GREEK CAPITAL LETTER GAMMA    # Gamma
0397    48      # GREEK CAPITAL LETTER ETA      # Eta
0399    49      # GREEK CAPITAL LETTER IOTA     # Iota
03D1    4A      # GREEK THETA SYMBOL    # theta1
039A    4B      # GREEK CAPITAL LETTER KAPPA    # Kappa
039B    4C      # GREEK CAPITAL LETTER LAMDA    # Lambda
039C    4D      # GREEK CAPITAL LETTER MU       # Mu
039D    4E      # GREEK CAPITAL LETTER NU       # Nu
039F    4F      # GREEK CAPITAL LETTER OMICRON  # Omicron
03A0    50      # GREEK CAPITAL LETTER PI       # Pi
0398    51      # GREEK CAPITAL LETTER THETA    # Theta
03A1    52      # GREEK CAPITAL LETTER RHO      # Rho
03A3    53      # GREEK CAPITAL LETTER SIGMA    # Sigma
03A4    54      # GREEK CAPITAL LETTER TAU      # Tau
03A5    55      # GREEK CAPITAL LETTER UPSILON  # Upsilon
03C2    56      # GREEK SMALL LETTER FINAL SIGMA        # sigma1
03A9    57      # GREEK CAPITAL LETTER OMEGA    # Omega
2126    57      # OHM SIGN      # Omega
039E    58      # GREEK CAPITAL LETTER XI       # Xi
03A8    59      # GREEK CAPITAL LETTER PSI      # Psi
0396    5A      # GREEK CAPITAL LETTER ZETA     # Zeta
005B    5B      # LEFT SQUARE BRACKET   # bracketleft
2234    5C      # THEREFORE     # therefore
005D    5D      # RIGHT SQUARE BRACKET  # bracketright
22A5    5E      # UP TACK       # perpendicular
005F    5F      # LOW LINE      # underscore
F8E5    60      # RADICAL EXTENDER      # radicalex (CUS)
03B1    61      # GREEK SMALL LETTER ALPHA      # alpha
03B2    62      # GREEK SMALL LETTER BETA       # beta
03C7    63      # GREEK SMALL LETTER CHI        # chi
03B4    64      # GREEK SMALL LETTER DELTA      # delta
03B5    65      # GREEK SMALL LETTER EPSILON    # epsilon
03C6    66      # GREEK SMALL LETTER PHI        # phi
03B3    67      # GREEK SMALL LETTER GAMMA      # gamma
03B7    68      # GREEK SMALL LETTER ETA        # eta
03B9    69      # GREEK SMALL LETTER IOTA       # iota
03D5    6A      # GREEK PHI SYMBOL      # phi1
03BA    6B      # GREEK SMALL LETTER KAPPA      # kappa
03BB    6C      # GREEK SMALL LETTER LAMDA      # lambda
00B5    6D      # MICRO SIGN    # mu
03BC    6D      # GREEK SMALL LETTER MU # mu
03BD    6E      # GREEK SMALL LETTER NU # nu
03BF    6F      # GREEK SMALL LETTER OMICRON    # omicron
03C0    70      # GREEK SMALL LETTER PI # pi
03B8    71      # GREEK SMALL LETTER THETA      # theta
03C1    72      # GREEK SMALL LETTER RHO        # rho
03C3    73      # GREEK SMALL LETTER SIGMA      # sigma
03C4    74      # GREEK SMALL LETTER TAU        # tau
03C5    75      # GREEK SMALL LETTER UPSILON    # upsilon
03D6    76      # GREEK PI SYMBOL       # omega1
03C9    77      # GREEK SMALL LETTER OMEGA      # omega
03BE    78      # GREEK SMALL LETTER XI # xi
03C8    79      # GREEK SMALL LETTER PSI        # psi
03B6    7A      # GREEK SMALL LETTER ZETA       # zeta
007B    7B      # LEFT CURLY BRACKET    # braceleft
007C    7C      # VERTICAL LINE # bar
007D    7D      # RIGHT CURLY BRACKET   # braceright
223C    7E      # TILDE OPERATOR        # similar
20AC    A0      # EURO SIGN     # Euro
03D2    A1      # GREEK UPSILON WITH HOOK SYMBOL        # Upsilon1
2032    A2      # PRIME # minute
2264    A3      # LESS-THAN OR EQUAL TO # lessequal
2044    A4      # FRACTION SLASH        # fraction
2215    A4      # DIVISION SLASH        # fraction
221E    A5      # INFINITY      # infinity
0192    A6      # LATIN SMALL LETTER F WITH HOOK        # florin
2663    A7      # BLACK CLUB SUIT       # club
2666    A8      # BLACK DIAMOND SUIT    # diamond
2665    A9      # BLACK HEART SUIT      # heart
2660    AA      # BLACK SPADE SUIT      # spade
2194    AB      # LEFT RIGHT ARROW      # arrowboth
2190    AC      # LEFTWARDS ARROW       # arrowleft
2191    AD      # UPWARDS ARROW # arrowup
2192    AE      # RIGHTWARDS ARROW      # arrowright
2193    AF      # DOWNWARDS ARROW       # arrowdown
00B0    B0      # DEGREE SIGN   # degree
00B1    B1      # PLUS-MINUS SIGN       # plusminus
2033    B2      # DOUBLE PRIME  # second
2265    B3      # GREATER-THAN OR EQUAL TO      # greaterequal
00D7    B4      # MULTIPLICATION SIGN   # multiply
221D    B5      # PROPORTIONAL TO       # proportional
2202    B6      # PARTIAL DIFFERENTIAL  # partialdiff
2022    B7      # BULLET        # bullet
00F7    B8      # DIVISION SIGN # divide
2260    B9      # NOT EQUAL TO  # notequal
2261    BA      # IDENTICAL TO  # equivalence
2248    BB      # ALMOST EQUAL TO       # approxequal
2026    BC      # HORIZONTAL ELLIPSIS   # ellipsis
F8E6    BD      # VERTICAL ARROW EXTENDER       # arrowvertex (CUS)
F8E7    BE      # HORIZONTAL ARROW EXTENDER     # arrowhorizex (CUS)
21B5    BF      # DOWNWARDS ARROW WITH CORNER LEFTWARDS # carriagereturn
2135    C0      # ALEF SYMBOL   # aleph
2111    C1      # BLACK-LETTER CAPITAL I        # Ifraktur
211C    C2      # BLACK-LETTER CAPITAL R        # Rfraktur
2118    C3      # SCRIPT CAPITAL P      # weierstrass
2297    C4      # CIRCLED TIMES # circlemultiply
2295    C5      # CIRCLED PLUS  # circleplus
2205    C6      # EMPTY SET     # emptyset
2229    C7      # INTERSECTION  # intersection
222A    C8      # UNION # union
2283    C9      # SUPERSET OF   # propersuperset
2287    CA      # SUPERSET OF OR EQUAL TO       # reflexsuperset
2284    CB      # NOT A SUBSET OF       # notsubset
2282    CC      # SUBSET OF     # propersubset
2286    CD      # SUBSET OF OR EQUAL TO # reflexsubset
2208    CE      # ELEMENT OF    # element
2209    CF      # NOT AN ELEMENT OF     # notelement
2220    D0      # ANGLE # angle
2207    D1      # NABLA # gradient
F6DA    D2      # REGISTERED SIGN SERIF # registerserif (CUS)
F6D9    D3      # COPYRIGHT SIGN SERIF  # copyrightserif (CUS)
F6DB    D4      # TRADE MARK SIGN SERIF # trademarkserif (CUS)
220F    D5      # N-ARY PRODUCT # product
221A    D6      # SQUARE ROOT   # radical
22C5    D7      # DOT OPERATOR  # dotmath
00AC    D8      # NOT SIGN      # logicalnot
2227    D9      # LOGICAL AND   # logicaland
2228    DA      # LOGICAL OR    # logicalor
21D4    DB      # LEFT RIGHT DOUBLE ARROW       # arrowdblboth
21D0    DC      # LEFTWARDS DOUBLE ARROW        # arrowdblleft
21D1    DD      # UPWARDS DOUBLE ARROW  # arrowdblup
21D2    DE      # RIGHTWARDS DOUBLE ARROW       # arrowdblright
21D3    DF      # DOWNWARDS DOUBLE ARROW        # arrowdbldown
25CA    E0      # LOZENGE       # lozenge
2329    E1      # LEFT-POINTING ANGLE BRACKET   # angleleft
F8E8    E2      # REGISTERED SIGN SANS SERIF    # registersans (CUS)
F8E9    E3      # COPYRIGHT SIGN SANS SERIF     # copyrightsans (CUS)
F8EA    E4      # TRADE MARK SIGN SANS SERIF    # trademarksans (CUS)
2211    E5      # N-ARY SUMMATION       # summation
F8EB    E6      # LEFT PAREN TOP        # parenlefttp (CUS)
F8EC    E7      # LEFT PAREN EXTENDER   # parenleftex (CUS)
F8ED    E8      # LEFT PAREN BOTTOM     # parenleftbt (CUS)
F8EE    E9      # LEFT SQUARE BRACKET TOP       # bracketlefttp (CUS)
F8EF    EA      # LEFT SQUARE BRACKET EXTENDER  # bracketleftex (CUS)
F8F0    EB      # LEFT SQUARE BRACKET BOTTOM    # bracketleftbt (CUS)
F8F1    EC      # LEFT CURLY BRACKET TOP        # bracelefttp (CUS)
F8F2    ED      # LEFT CURLY BRACKET MID        # braceleftmid (CUS)
F8F3    EE      # LEFT CURLY BRACKET BOTTOM     # braceleftbt (CUS)
F8F4    EF      # CURLY BRACKET EXTENDER        # braceex (CUS)
232A    F1      # RIGHT-POINTING ANGLE BRACKET  # angleright
222B    F2      # INTEGRAL      # integral
2320    F3      # TOP HALF INTEGRAL     # integraltp
F8F5    F4      # INTEGRAL EXTENDER     # integralex (CUS)
2321    F5      # BOTTOM HALF INTEGRAL  # integralbt
F8F6    F6      # RIGHT PAREN TOP       # parenrighttp (CUS)
F8F7    F7      # RIGHT PAREN EXTENDER  # parenrightex (CUS)
F8F8    F8      # RIGHT PAREN BOTTOM    # parenrightbt (CUS)
F8F9    F9      # RIGHT SQUARE BRACKET TOP      # bracketrighttp (CUS)
F8FA    FA      # RIGHT SQUARE BRACKET EXTENDER # bracketrightex (CUS)
F8FB    FB      # RIGHT SQUARE BRACKET BOTTOM   # bracketrightbt (CUS)
F8FC    FC      # RIGHT CURLY BRACKET TOP       # bracerighttp (CUS)
F8FD    FD      # RIGHT CURLY BRACKET MID       # bracerightmid (CUS)
F8FE    FE      # RIGHT CURLY BRACKET BOTTOM    # bracerightbt (CUS)
"
! !

!AdobeSymbol 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 > 16rFE ifTrue:[
        ^ self decodingError.
    ].
    [
        |t|
        t := #(
           "16r0020"    16r00A0 " NO-BREAK SPACE        # space " 
           "16r0021"    16r0021 " EXCLAMATION MARK      # exclam " 
           "16r0022"    16r2200 " FOR ALL       # universal " 
           "16r0023"    16r0023 " NUMBER SIGN   # numbersign " 
           "16r0024"    16r2203 " THERE EXISTS  # existential " 
           "16r0025"    16r0025 " PERCENT SIGN  # percent " 
           "16r0026"    16r0026 " AMPERSAND     # ampersand " 
           "16r0027"    16r220B " CONTAINS AS MEMBER    # suchthat " 
           "16r0028"    16r0028 " LEFT PARENTHESIS      # parenleft " 
           "16r0029"    16r0029 " RIGHT PARENTHESIS     # parenright " 
           "16r002A"    16r2217 " ASTERISK OPERATOR     # asteriskmath " 
           "16r002B"    16r002B " PLUS SIGN     # plus " 
           "16r002C"    16r002C " COMMA # comma " 
           "16r002D"    16r2212 " MINUS SIGN    # minus " 
           "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"    16r2245 " APPROXIMATELY EQUAL TO        # congruent " 
           "16r0041"    16r0391 " GREEK CAPITAL LETTER ALPHA    # Alpha " 
           "16r0042"    16r0392 " GREEK CAPITAL LETTER BETA     # Beta " 
           "16r0043"    16r03A7 " GREEK CAPITAL LETTER CHI      # Chi " 
           "16r0044"    16r2206 " INCREMENT     # Delta " 
           "16r0045"    16r0395 " GREEK CAPITAL LETTER EPSILON  # Epsilon " 
           "16r0046"    16r03A6 " GREEK CAPITAL LETTER PHI      # Phi " 
           "16r0047"    16r0393 " GREEK CAPITAL LETTER GAMMA    # Gamma " 
           "16r0048"    16r0397 " GREEK CAPITAL LETTER ETA      # Eta " 
           "16r0049"    16r0399 " GREEK CAPITAL LETTER IOTA     # Iota " 
           "16r004A"    16r03D1 " GREEK THETA SYMBOL    # theta1 " 
           "16r004B"    16r039A " GREEK CAPITAL LETTER KAPPA    # Kappa " 
           "16r004C"    16r039B " GREEK CAPITAL LETTER LAMDA    # Lambda " 
           "16r004D"    16r039C " GREEK CAPITAL LETTER MU       # Mu " 
           "16r004E"    16r039D " GREEK CAPITAL LETTER NU       # Nu " 
           "16r004F"    16r039F " GREEK CAPITAL LETTER OMICRON  # Omicron " 
           "16r0050"    16r03A0 " GREEK CAPITAL LETTER PI       # Pi " 
           "16r0051"    16r0398 " GREEK CAPITAL LETTER THETA    # Theta " 
           "16r0052"    16r03A1 " GREEK CAPITAL LETTER RHO      # Rho " 
           "16r0053"    16r03A3 " GREEK CAPITAL LETTER SIGMA    # Sigma " 
           "16r0054"    16r03A4 " GREEK CAPITAL LETTER TAU      # Tau " 
           "16r0055"    16r03A5 " GREEK CAPITAL LETTER UPSILON  # Upsilon " 
           "16r0056"    16r03C2 " GREEK SMALL LETTER FINAL SIGMA        # sigma1 " 
           "16r0057"    16r2126 " OHM SIGN      # Omega " 
           "16r0058"    16r039E " GREEK CAPITAL LETTER XI       # Xi " 
           "16r0059"    16r03A8 " GREEK CAPITAL LETTER PSI      # Psi " 
           "16r005A"    16r0396 " GREEK CAPITAL LETTER ZETA     # Zeta " 
           "16r005B"    16r005B " LEFT SQUARE BRACKET   # bracketleft " 
           "16r005C"    16r2234 " THEREFORE     # therefore " 
           "16r005D"    16r005D " RIGHT SQUARE BRACKET  # bracketright " 
           "16r005E"    16r22A5 " UP TACK       # perpendicular " 
           "16r005F"    16r005F " LOW LINE      # underscore " 
           "16r0060"    16rF8E5 " RADICAL EXTENDER      # radicalex (CUS) " 
           "16r0061"    16r03B1 " GREEK SMALL LETTER ALPHA      # alpha " 
           "16r0062"    16r03B2 " GREEK SMALL LETTER BETA       # beta " 
           "16r0063"    16r03C7 " GREEK SMALL LETTER CHI        # chi " 
           "16r0064"    16r03B4 " GREEK SMALL LETTER DELTA      # delta " 
           "16r0065"    16r03B5 " GREEK SMALL LETTER EPSILON    # epsilon " 
           "16r0066"    16r03C6 " GREEK SMALL LETTER PHI        # phi " 
           "16r0067"    16r03B3 " GREEK SMALL LETTER GAMMA      # gamma " 
           "16r0068"    16r03B7 " GREEK SMALL LETTER ETA        # eta " 
           "16r0069"    16r03B9 " GREEK SMALL LETTER IOTA       # iota " 
           "16r006A"    16r03D5 " GREEK PHI SYMBOL      # phi1 " 
           "16r006B"    16r03BA " GREEK SMALL LETTER KAPPA      # kappa " 
           "16r006C"    16r03BB " GREEK SMALL LETTER LAMDA      # lambda " 
           "16r006D"    16r03BC " GREEK SMALL LETTER MU # mu " 
           "16r006E"    16r03BD " GREEK SMALL LETTER NU # nu " 
           "16r006F"    16r03BF " GREEK SMALL LETTER OMICRON    # omicron " 
           "16r0070"    16r03C0 " GREEK SMALL LETTER PI # pi " 
           "16r0071"    16r03B8 " GREEK SMALL LETTER THETA      # theta " 
           "16r0072"    16r03C1 " GREEK SMALL LETTER RHO        # rho " 
           "16r0073"    16r03C3 " GREEK SMALL LETTER SIGMA      # sigma " 
           "16r0074"    16r03C4 " GREEK SMALL LETTER TAU        # tau " 
           "16r0075"    16r03C5 " GREEK SMALL LETTER UPSILON    # upsilon " 
           "16r0076"    16r03D6 " GREEK PI SYMBOL       # omega1 " 
           "16r0077"    16r03C9 " GREEK SMALL LETTER OMEGA      # omega " 
           "16r0078"    16r03BE " GREEK SMALL LETTER XI # xi " 
           "16r0079"    16r03C8 " GREEK SMALL LETTER PSI        # psi " 
           "16r007A"    16r03B6 " GREEK SMALL LETTER ZETA       # zeta " 
           "16r007B"    16r007B " LEFT CURLY BRACKET    # braceleft " 
           "16r007C"    16r007C " VERTICAL LINE # bar " 
           "16r007D"    16r007D " RIGHT CURLY BRACKET   # braceright " 
           "16r007E"    16r223C " TILDE OPERATOR        # similar " 
           "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"    16r20AC " EURO SIGN     # Euro " 
           "16r00A1"    16r03D2 " GREEK UPSILON WITH HOOK SYMBOL        # Upsilon1 " 
           "16r00A2"    16r2032 " PRIME # minute " 
           "16r00A3"    16r2264 " LESS-THAN OR EQUAL TO # lessequal " 
           "16r00A4"    16r2215 " DIVISION SLASH        # fraction " 
           "16r00A5"    16r221E " INFINITY      # infinity " 
           "16r00A6"    16r0192 " LATIN SMALL LETTER F WITH HOOK        # florin " 
           "16r00A7"    16r2663 " BLACK CLUB SUIT       # club " 
           "16r00A8"    16r2666 " BLACK DIAMOND SUIT    # diamond " 
           "16r00A9"    16r2665 " BLACK HEART SUIT      # heart " 
           "16r00AA"    16r2660 " BLACK SPADE SUIT      # spade " 
           "16r00AB"    16r2194 " LEFT RIGHT ARROW      # arrowboth " 
           "16r00AC"    16r2190 " LEFTWARDS ARROW       # arrowleft " 
           "16r00AD"    16r2191 " UPWARDS ARROW # arrowup " 
           "16r00AE"    16r2192 " RIGHTWARDS ARROW      # arrowright " 
           "16r00AF"    16r2193 " DOWNWARDS ARROW       # arrowdown " 
           "16r00B0"    16r00B0 " DEGREE SIGN   # degree " 
           "16r00B1"    16r00B1 " PLUS-MINUS SIGN       # plusminus " 
           "16r00B2"    16r2033 " DOUBLE PRIME  # second " 
           "16r00B3"    16r2265 " GREATER-THAN OR EQUAL TO      # greaterequal " 
           "16r00B4"    16r00D7 " MULTIPLICATION SIGN   # multiply " 
           "16r00B5"    16r221D " PROPORTIONAL TO       # proportional " 
           "16r00B6"    16r2202 " PARTIAL DIFFERENTIAL  # partialdiff " 
           "16r00B7"    16r2022 " BULLET        # bullet " 
           "16r00B8"    16r00F7 " DIVISION SIGN # divide " 
           "16r00B9"    16r2260 " NOT EQUAL TO  # notequal " 
           "16r00BA"    16r2261 " IDENTICAL TO  # equivalence " 
           "16r00BB"    16r2248 " ALMOST EQUAL TO       # approxequal " 
           "16r00BC"    16r2026 " HORIZONTAL ELLIPSIS   # ellipsis " 
           "16r00BD"    16rF8E6 " VERTICAL ARROW EXTENDER       # arrowvertex (CUS) " 
           "16r00BE"    16rF8E7 " HORIZONTAL ARROW EXTENDER     # arrowhorizex (CUS) " 
           "16r00BF"    16r21B5 " DOWNWARDS ARROW WITH CORNER LEFTWARDS # carriagereturn " 
           "16r00C0"    16r2135 " ALEF SYMBOL   # aleph " 
           "16r00C1"    16r2111 " BLACK-LETTER CAPITAL I        # Ifraktur " 
           "16r00C2"    16r211C " BLACK-LETTER CAPITAL R        # Rfraktur " 
           "16r00C3"    16r2118 " SCRIPT CAPITAL P      # weierstrass " 
           "16r00C4"    16r2297 " CIRCLED TIMES # circlemultiply " 
           "16r00C5"    16r2295 " CIRCLED PLUS  # circleplus " 
           "16r00C6"    16r2205 " EMPTY SET     # emptyset " 
           "16r00C7"    16r2229 " INTERSECTION  # intersection " 
           "16r00C8"    16r222A " UNION # union " 
           "16r00C9"    16r2283 " SUPERSET OF   # propersuperset " 
           "16r00CA"    16r2287 " SUPERSET OF OR EQUAL TO       # reflexsuperset " 
           "16r00CB"    16r2284 " NOT A SUBSET OF       # notsubset " 
           "16r00CC"    16r2282 " SUBSET OF     # propersubset " 
           "16r00CD"    16r2286 " SUBSET OF OR EQUAL TO # reflexsubset " 
           "16r00CE"    16r2208 " ELEMENT OF    # element " 
           "16r00CF"    16r2209 " NOT AN ELEMENT OF     # notelement " 
           "16r00D0"    16r2220 " ANGLE # angle " 
           "16r00D1"    16r2207 " NABLA # gradient " 
           "16r00D2"    16rF6DA " REGISTERED SIGN SERIF # registerserif (CUS) " 
           "16r00D3"    16rF6D9 " COPYRIGHT SIGN SERIF  # copyrightserif (CUS) " 
           "16r00D4"    16rF6DB " TRADE MARK SIGN SERIF # trademarkserif (CUS) " 
           "16r00D5"    16r220F " N-ARY PRODUCT # product " 
           "16r00D6"    16r221A " SQUARE ROOT   # radical " 
           "16r00D7"    16r22C5 " DOT OPERATOR  # dotmath " 
           "16r00D8"    16r00AC " NOT SIGN      # logicalnot " 
           "16r00D9"    16r2227 " LOGICAL AND   # logicaland " 
           "16r00DA"    16r2228 " LOGICAL OR    # logicalor " 
           "16r00DB"    16r21D4 " LEFT RIGHT DOUBLE ARROW       # arrowdblboth " 
           "16r00DC"    16r21D0 " LEFTWARDS DOUBLE ARROW        # arrowdblleft " 
           "16r00DD"    16r21D1 " UPWARDS DOUBLE ARROW  # arrowdblup " 
           "16r00DE"    16r21D2 " RIGHTWARDS DOUBLE ARROW       # arrowdblright " 
           "16r00DF"    16r21D3 " DOWNWARDS DOUBLE ARROW        # arrowdbldown " 
           "16r00E0"    16r25CA " LOZENGE       # lozenge " 
           "16r00E1"    16r2329 " LEFT-POINTING ANGLE BRACKET   # angleleft " 
           "16r00E2"    16rF8E8 " REGISTERED SIGN SANS SERIF    # registersans (CUS) " 
           "16r00E3"    16rF8E9 " COPYRIGHT SIGN SANS SERIF     # copyrightsans (CUS) " 
           "16r00E4"    16rF8EA " TRADE MARK SIGN SANS SERIF    # trademarksans (CUS) " 
           "16r00E5"    16r2211 " N-ARY SUMMATION       # summation " 
           "16r00E6"    16rF8EB " LEFT PAREN TOP        # parenlefttp (CUS) " 
           "16r00E7"    16rF8EC " LEFT PAREN EXTENDER   # parenleftex (CUS) " 
           "16r00E8"    16rF8ED " LEFT PAREN BOTTOM     # parenleftbt (CUS) " 
           "16r00E9"    16rF8EE " LEFT SQUARE BRACKET TOP       # bracketlefttp (CUS) " 
           "16r00EA"    16rF8EF " LEFT SQUARE BRACKET EXTENDER  # bracketleftex (CUS) " 
           "16r00EB"    16rF8F0 " LEFT SQUARE BRACKET BOTTOM    # bracketleftbt (CUS) " 
           "16r00EC"    16rF8F1 " LEFT CURLY BRACKET TOP        # bracelefttp (CUS) " 
           "16r00ED"    16rF8F2 " LEFT CURLY BRACKET MID        # braceleftmid (CUS) " 
           "16r00EE"    16rF8F3 " LEFT CURLY BRACKET BOTTOM     # braceleftbt (CUS) " 
           "16r00EF"    16rF8F4 " CURLY BRACKET EXTENDER        # braceex (CUS) " 
           "16r00F0"    16r0000 " invalid " 
           "16r00F1"    16r232A " RIGHT-POINTING ANGLE BRACKET  # angleright " 
           "16r00F2"    16r222B " INTEGRAL      # integral " 
           "16r00F3"    16r2320 " TOP HALF INTEGRAL     # integraltp " 
           "16r00F4"    16rF8F5 " INTEGRAL EXTENDER     # integralex (CUS) " 
           "16r00F5"    16r2321 " BOTTOM HALF INTEGRAL  # integralbt " 
           "16r00F6"    16rF8F6 " RIGHT PAREN TOP       # parenrighttp (CUS) " 
           "16r00F7"    16rF8F7 " RIGHT PAREN EXTENDER  # parenrightex (CUS) " 
           "16r00F8"    16rF8F8 " RIGHT PAREN BOTTOM    # parenrightbt (CUS) " 
           "16r00F9"    16rF8F9 " RIGHT SQUARE BRACKET TOP      # bracketrighttp (CUS) " 
           "16r00FA"    16rF8FA " RIGHT SQUARE BRACKET EXTENDER # bracketrightex (CUS) " 
           "16r00FB"    16rF8FB " RIGHT SQUARE BRACKET BOTTOM   # bracketrightbt (CUS) " 
           "16r00FC"    16rF8FC " RIGHT CURLY BRACKET TOP       # bracerighttp (CUS) " 
           "16r00FD"    16rF8FD " RIGHT CURLY BRACKET MID       # bracerightmid (CUS) " 
           "16r00FE"    16rF8FE " RIGHT CURLY BRACKET BOTTOM    # bracerightbt (CUS) " 
           ) 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 <= 16r21 ifTrue:[ ^ unicode ].
    unicode > 16rF8FE ifTrue:[
        ^ self encodingError.
    ].
    unicode <= 16r2666 ifTrue:[
        unicode <= 16r3D6 ifTrue:[
            unicode <= 16r192 ifTrue:[
                unicode <= 16rF7 ifTrue:[
                    unicode <= 16r9F ifTrue:[
                        (#[
                           "16r0022"    0 " invalid " 
                           "16r0023"    1 " NUMBER SIGN   # numbersign " 
                           "16r0024"    0 " invalid " 
                           "16r0025"    1 " PERCENT SIGN  # percent " 
                           "16r0026"    1 " AMPERSAND     # ampersand " 
                           "16r0027"    0 " invalid " 
                           "16r0028"    1 " LEFT PARENTHESIS      # parenleft " 
                           "16r0029"    1 " RIGHT PARENTHESIS     # parenright " 
                           "16r002A"    0 " invalid " 
                           "16r002B"    1 " PLUS SIGN     # plus " 
                           "16r002C"    1 " COMMA # comma " 
                           "16r002D"    0 " invalid " 
                           "16r002E"    1 " FULL STOP     # period " 
                           "16r002F"    1 " SOLIDUS       # slash " 
                           "16r0030"    1 " DIGIT ZERO    # zero " 
                           "16r0031"    1 " DIGIT ONE     # one " 
                           "16r0032"    1 " DIGIT TWO     # two " 
                           "16r0033"    1 " DIGIT THREE   # three " 
                           "16r0034"    1 " DIGIT FOUR    # four " 
                           "16r0035"    1 " DIGIT FIVE    # five " 
                           "16r0036"    1 " DIGIT SIX     # six " 
                           "16r0037"    1 " DIGIT SEVEN   # seven " 
                           "16r0038"    1 " DIGIT EIGHT   # eight " 
                           "16r0039"    1 " DIGIT NINE    # nine " 
                           "16r003A"    1 " COLON # colon " 
                           "16r003B"    1 " SEMICOLON     # semicolon " 
                           "16r003C"    1 " LESS-THAN SIGN        # less " 
                           "16r003D"    1 " EQUALS SIGN   # equal " 
                           "16r003E"    1 " GREATER-THAN SIGN     # greater " 
                           "16r003F"    1 " QUESTION MARK # question " 
                           "16r0040"    0 " invalid " 
                           "16r0041"    0 " invalid " 
                           "16r0042"    0 " invalid " 
                           "16r0043"    0 " invalid " 
                           "16r0044"    0 " invalid " 
                           "16r0045"    0 " invalid " 
                           "16r0046"    0 " invalid " 
                           "16r0047"    0 " invalid " 
                           "16r0048"    0 " invalid " 
                           "16r0049"    0 " invalid " 
                           "16r004A"    0 " invalid " 
                           "16r004B"    0 " invalid " 
                           "16r004C"    0 " invalid " 
                           "16r004D"    0 " invalid " 
                           "16r004E"    0 " invalid " 
                           "16r004F"    0 " invalid " 
                           "16r0050"    0 " invalid " 
                           "16r0051"    0 " invalid " 
                           "16r0052"    0 " invalid " 
                           "16r0053"    0 " invalid " 
                           "16r0054"    0 " invalid " 
                           "16r0055"    0 " invalid " 
                           "16r0056"    0 " invalid " 
                           "16r0057"    0 " invalid " 
                           "16r0058"    0 " invalid " 
                           "16r0059"    0 " invalid " 
                           "16r005A"    0 " invalid " 
                           "16r005B"    1 " LEFT SQUARE BRACKET   # bracketleft " 
                           "16r005C"    0 " invalid " 
                           "16r005D"    1 " RIGHT SQUARE BRACKET  # bracketright " 
                           "16r005E"    0 " invalid " 
                           "16r005F"    1 " LOW LINE      # underscore " 
                           "16r0060"    0 " invalid " 
                           "16r0061"    0 " invalid " 
                           "16r0062"    0 " invalid " 
                           "16r0063"    0 " invalid " 
                           "16r0064"    0 " invalid " 
                           "16r0065"    0 " invalid " 
                           "16r0066"    0 " invalid " 
                           "16r0067"    0 " invalid " 
                           "16r0068"    0 " invalid " 
                           "16r0069"    0 " invalid " 
                           "16r006A"    0 " invalid " 
                           "16r006B"    0 " invalid " 
                           "16r006C"    0 " invalid " 
                           "16r006D"    0 " invalid " 
                           "16r006E"    0 " invalid " 
                           "16r006F"    0 " invalid " 
                           "16r0070"    0 " invalid " 
                           "16r0071"    0 " invalid " 
                           "16r0072"    0 " invalid " 
                           "16r0073"    0 " invalid " 
                           "16r0074"    0 " invalid " 
                           "16r0075"    0 " invalid " 
                           "16r0076"    0 " invalid " 
                           "16r0077"    0 " invalid " 
                           "16r0078"    0 " invalid " 
                           "16r0079"    0 " invalid " 
                           "16r007A"    0 " invalid " 
                           "16r007B"    1 " LEFT CURLY BRACKET    # braceleft " 
                           "16r007C"    1 " VERTICAL LINE # bar " 
                           "16r007D"    1 " RIGHT CURLY BRACKET   # braceright " 
                           "16r007E"    0 " invalid " 
                           "16r007F"    0 " invalid " 
                           "16r0080"    0 " invalid " 
                           "16r0081"    0 " invalid " 
                           "16r0082"    0 " invalid " 
                           "16r0083"    0 " invalid " 
                           "16r0084"    0 " invalid " 
                           "16r0085"    0 " invalid " 
                           "16r0086"    0 " invalid " 
                           "16r0087"    0 " invalid " 
                           "16r0088"    0 " invalid " 
                           "16r0089"    0 " invalid " 
                           "16r008A"    0 " invalid " 
                           "16r008B"    0 " invalid " 
                           "16r008C"    0 " invalid " 
                           "16r008D"    0 " invalid " 
                           "16r008E"    0 " invalid " 
                           "16r008F"    0 " invalid " 
                           "16r0090"    0 " invalid " 
                           "16r0091"    0 " invalid " 
                           "16r0092"    0 " invalid " 
                           "16r0093"    0 " invalid " 
                           "16r0094"    0 " invalid " 
                           "16r0095"    0 " invalid " 
                           "16r0096"    0 " invalid " 
                           "16r0097"    0 " invalid " 
                           "16r0098"    0 " invalid " 
                           "16r0099"    0 " invalid " 
                           "16r009A"    0 " invalid " 
                           "16r009B"    0 " invalid " 
                           "16r009C"    0 " invalid " 
                           "16r009D"    0 " invalid " 
                           "16r009E"    0 " invalid " 
                           "16r009F"    0 " invalid " 
                        ] at:(unicode - 33)) ~~ 0 ifTrue:[^ unicode].
                        ^ self encodingError
                    ].
                    unicode <= 16rB1 ifTrue:[
                        unicode == 16rA0 ifTrue:[
                            (#[
                               "16r00A0"    1 " NO-BREAK SPACE        # space " 
                            ] at:(unicode - 159)) ~~ 0 ifTrue:[^ unicode].
                            ^ self encodingError
                        ].
                        unicode <= 16rAB ifTrue:[
                            ^ self encodingError
                        ].
                        [
                            |t|
                            t := #[
                               "16r00AC"    16rD8 " NOT SIGN      # logicalnot " 
                               "16r00AD"    16r00 " invalid " 
                               "16r00AE"    16r00 " invalid " 
                               "16r00AF"    16r00 " invalid " 
                               "16r00B0"    16rB0 " DEGREE SIGN   # degree " 
                               "16r00B1"    16rB1 " PLUS-MINUS SIGN       # plusminus " 
                               ] at:(unicode - 16rAB).
                            t == 0 ifFalse:[^ t].
                            ^ self encodingError
                        ] value.
                    ].
                    unicode <= 16rD6 ifTrue:[
                        ^ self encodingError
                    ].
                    unicode == 16rD7 ifTrue:[
                        ^  "16r00D7" 16r00B4 " MULTIPLICATION SIGN   # multiply " 
                    ].
                    unicode <= 16rF6 ifTrue:[
                        ^ self encodingError
                    ].
                    ^  "16r00F7" 16r00B8 " DIVISION SIGN # divide " 
                ].
                unicode <= 16r191 ifTrue:[
                    ^ self encodingError
                ].
                ^  "16r0192" 16r00A6 " LATIN SMALL LETTER F WITH HOOK        # florin " 
            ].
            unicode <= 16r390 ifTrue:[
                ^ self encodingError
            ].
            [
                |t|
                t := #[
                   "16r0391"    16r41 " GREEK CAPITAL LETTER ALPHA    # Alpha " 
                   "16r0392"    16r42 " GREEK CAPITAL LETTER BETA     # Beta " 
                   "16r0393"    16r47 " GREEK CAPITAL LETTER GAMMA    # Gamma " 
                   "16r0394"    16r00 " invalid " 
                   "16r0395"    16r45 " GREEK CAPITAL LETTER EPSILON  # Epsilon " 
                   "16r0396"    16r5A " GREEK CAPITAL LETTER ZETA     # Zeta " 
                   "16r0397"    16r48 " GREEK CAPITAL LETTER ETA      # Eta " 
                   "16r0398"    16r51 " GREEK CAPITAL LETTER THETA    # Theta " 
                   "16r0399"    16r49 " GREEK CAPITAL LETTER IOTA     # Iota " 
                   "16r039A"    16r4B " GREEK CAPITAL LETTER KAPPA    # Kappa " 
                   "16r039B"    16r4C " GREEK CAPITAL LETTER LAMDA    # Lambda " 
                   "16r039C"    16r4D " GREEK CAPITAL LETTER MU       # Mu " 
                   "16r039D"    16r4E " GREEK CAPITAL LETTER NU       # Nu " 
                   "16r039E"    16r58 " GREEK CAPITAL LETTER XI       # Xi " 
                   "16r039F"    16r4F " GREEK CAPITAL LETTER OMICRON  # Omicron " 
                   "16r03A0"    16r50 " GREEK CAPITAL LETTER PI       # Pi " 
                   "16r03A1"    16r52 " GREEK CAPITAL LETTER RHO      # Rho " 
                   "16r03A2"    16r00 " invalid " 
                   "16r03A3"    16r53 " GREEK CAPITAL LETTER SIGMA    # Sigma " 
                   "16r03A4"    16r54 " GREEK CAPITAL LETTER TAU      # Tau " 
                   "16r03A5"    16r55 " GREEK CAPITAL LETTER UPSILON  # Upsilon " 
                   "16r03A6"    16r46 " GREEK CAPITAL LETTER PHI      # Phi " 
                   "16r03A7"    16r43 " GREEK CAPITAL LETTER CHI      # Chi " 
                   "16r03A8"    16r59 " GREEK CAPITAL LETTER PSI      # Psi " 
                   "16r03A9"    16r00 " invalid " 
                   "16r03AA"    16r00 " invalid " 
                   "16r03AB"    16r00 " invalid " 
                   "16r03AC"    16r00 " invalid " 
                   "16r03AD"    16r00 " invalid " 
                   "16r03AE"    16r00 " invalid " 
                   "16r03AF"    16r00 " invalid " 
                   "16r03B0"    16r00 " invalid " 
                   "16r03B1"    16r61 " GREEK SMALL LETTER ALPHA      # alpha " 
                   "16r03B2"    16r62 " GREEK SMALL LETTER BETA       # beta " 
                   "16r03B3"    16r67 " GREEK SMALL LETTER GAMMA      # gamma " 
                   "16r03B4"    16r64 " GREEK SMALL LETTER DELTA      # delta " 
                   "16r03B5"    16r65 " GREEK SMALL LETTER EPSILON    # epsilon " 
                   "16r03B6"    16r7A " GREEK SMALL LETTER ZETA       # zeta " 
                   "16r03B7"    16r68 " GREEK SMALL LETTER ETA        # eta " 
                   "16r03B8"    16r71 " GREEK SMALL LETTER THETA      # theta " 
                   "16r03B9"    16r69 " GREEK SMALL LETTER IOTA       # iota " 
                   "16r03BA"    16r6B " GREEK SMALL LETTER KAPPA      # kappa " 
                   "16r03BB"    16r6C " GREEK SMALL LETTER LAMDA      # lambda " 
                   "16r03BC"    16r6D " GREEK SMALL LETTER MU # mu " 
                   "16r03BD"    16r6E " GREEK SMALL LETTER NU # nu " 
                   "16r03BE"    16r78 " GREEK SMALL LETTER XI # xi " 
                   "16r03BF"    16r6F " GREEK SMALL LETTER OMICRON    # omicron " 
                   "16r03C0"    16r70 " GREEK SMALL LETTER PI # pi " 
                   "16r03C1"    16r72 " GREEK SMALL LETTER RHO        # rho " 
                   "16r03C2"    16r56 " GREEK SMALL LETTER FINAL SIGMA        # sigma1 " 
                   "16r03C3"    16r73 " GREEK SMALL LETTER SIGMA      # sigma " 
                   "16r03C4"    16r74 " GREEK SMALL LETTER TAU        # tau " 
                   "16r03C5"    16r75 " GREEK SMALL LETTER UPSILON    # upsilon " 
                   "16r03C6"    16r66 " GREEK SMALL LETTER PHI        # phi " 
                   "16r03C7"    16r63 " GREEK SMALL LETTER CHI        # chi " 
                   "16r03C8"    16r79 " GREEK SMALL LETTER PSI        # psi " 
                   "16r03C9"    16r77 " GREEK SMALL LETTER OMEGA      # omega " 
                   "16r03CA"    16r00 " invalid " 
                   "16r03CB"    16r00 " invalid " 
                   "16r03CC"    16r00 " invalid " 
                   "16r03CD"    16r00 " invalid " 
                   "16r03CE"    16r00 " invalid " 
                   "16r03CF"    16r00 " invalid " 
                   "16r03D0"    16r00 " invalid " 
                   "16r03D1"    16r4A " GREEK THETA SYMBOL    # theta1 " 
                   "16r03D2"    16rA1 " GREEK UPSILON WITH HOOK SYMBOL        # Upsilon1 " 
                   "16r03D3"    16r00 " invalid " 
                   "16r03D4"    16r00 " invalid " 
                   "16r03D5"    16r6A " GREEK PHI SYMBOL      # phi1 " 
                   "16r03D6"    16r76 " GREEK PI SYMBOL       # omega1 " 
                   ] at:(unicode - 16r390).
                t == 0 ifFalse:[^ t].
                ^ self encodingError
            ] value.
        ].
        unicode <= 16r2021 ifTrue:[
            ^ self encodingError
        ].
        unicode <= 16r232A ifTrue:[
            unicode <= 16r2033 ifTrue:[
                [
                    |t|
                    t := #[
                       "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"    16r00 " invalid " 
                       "16r2031"    16r00 " invalid " 
                       "16r2032"    16rA2 " PRIME # minute " 
                       "16r2033"    16rB2 " DOUBLE PRIME  # second " 
                       ] at:(unicode - 16r2021).
                    t == 0 ifFalse:[^ t].
                    ^ self encodingError
                ] value.
            ].
            unicode <= 16r20AB ifTrue:[
                ^ self encodingError
            ].
            unicode <= 16r20AC ifTrue:[
                ^  "16r20AC" 16r00A0 " EURO SIGN     # Euro " 
            ].
            unicode <= 16r2110 ifTrue:[
                ^ self encodingError
            ].
            unicode <= 16r2135 ifTrue:[
                [
                    |t|
                    t := #[
                       "16r2111"    16rC1 " BLACK-LETTER CAPITAL I        # Ifraktur " 
                       "16r2112"    16r00 " invalid " 
                       "16r2113"    16r00 " invalid " 
                       "16r2114"    16r00 " invalid " 
                       "16r2115"    16r00 " invalid " 
                       "16r2116"    16r00 " invalid " 
                       "16r2117"    16r00 " invalid " 
                       "16r2118"    16rC3 " SCRIPT CAPITAL P      # weierstrass " 
                       "16r2119"    16r00 " invalid " 
                       "16r211A"    16r00 " invalid " 
                       "16r211B"    16r00 " invalid " 
                       "16r211C"    16rC2 " BLACK-LETTER CAPITAL R        # Rfraktur " 
                       "16r211D"    16r00 " invalid " 
                       "16r211E"    16r00 " invalid " 
                       "16r211F"    16r00 " invalid " 
                       "16r2120"    16r00 " invalid " 
                       "16r2121"    16r00 " invalid " 
                       "16r2122"    16r00 " invalid " 
                       "16r2123"    16r00 " invalid " 
                       "16r2124"    16r00 " invalid " 
                       "16r2125"    16r00 " invalid " 
                       "16r2126"    16r57 " OHM SIGN      # Omega " 
                       "16r2127"    16r00 " invalid " 
                       "16r2128"    16r00 " invalid " 
                       "16r2129"    16r00 " invalid " 
                       "16r212A"    16r00 " invalid " 
                       "16r212B"    16r00 " invalid " 
                       "16r212C"    16r00 " invalid " 
                       "16r212D"    16r00 " invalid " 
                       "16r212E"    16r00 " invalid " 
                       "16r212F"    16r00 " invalid " 
                       "16r2130"    16r00 " invalid " 
                       "16r2131"    16r00 " invalid " 
                       "16r2132"    16r00 " invalid " 
                       "16r2133"    16r00 " invalid " 
                       "16r2134"    16r00 " invalid " 
                       "16r2135"    16rC0 " ALEF SYMBOL   # aleph " 
                       ] at:(unicode - 16r2110).
                    t == 0 ifFalse:[^ t].
                    ^ self encodingError
                ] value.
            ].
            unicode <= 16r218F ifTrue:[
                ^ self encodingError
            ].
            unicode <= 16r22C5 ifTrue:[
                unicode <= 16r21D4 ifTrue:[
                    unicode <= 16r2194 ifTrue:[
                        ^ #[
                           "16r2190"    16rAC " LEFTWARDS ARROW       # arrowleft " 
                           "16r2191"    16rAD " UPWARDS ARROW # arrowup " 
                           "16r2192"    16rAE " RIGHTWARDS ARROW      # arrowright " 
                           "16r2193"    16rAF " DOWNWARDS ARROW       # arrowdown " 
                           "16r2194"    16rAB " LEFT RIGHT ARROW      # arrowboth " 
                           ] at:(unicode - 16r218F).
                    ].
                    unicode <= 16r21B4 ifTrue:[
                        ^ self encodingError
                    ].
                    unicode == 16r21B5 ifTrue:[
                        ^  "16r21B5" 16r00BF " DOWNWARDS ARROW WITH CORNER LEFTWARDS # carriagereturn " 
                    ].
                    unicode <= 16r21CF ifTrue:[
                        ^ self encodingError
                    ].
                    ^ #[
                       "16r21D0"    16rDC " LEFTWARDS DOUBLE ARROW        # arrowdblleft " 
                       "16r21D1"    16rDD " UPWARDS DOUBLE ARROW  # arrowdblup " 
                       "16r21D2"    16rDE " RIGHTWARDS DOUBLE ARROW       # arrowdblright " 
                       "16r21D3"    16rDF " DOWNWARDS DOUBLE ARROW        # arrowdbldown " 
                       "16r21D4"    16rDB " LEFT RIGHT DOUBLE ARROW       # arrowdblboth " 
                       ] at:(unicode - 16r21CF).
                ].
                unicode <= 16r21FF ifTrue:[
                    ^ self encodingError
                ].
                [
                    |t|
                    t := #[
                       "16r2200"    16r22 " FOR ALL       # universal " 
                       "16r2201"    16r00 " invalid " 
                       "16r2202"    16rB6 " PARTIAL DIFFERENTIAL  # partialdiff " 
                       "16r2203"    16r24 " THERE EXISTS  # existential " 
                       "16r2204"    16r00 " invalid " 
                       "16r2205"    16rC6 " EMPTY SET     # emptyset " 
                       "16r2206"    16r44 " INCREMENT     # Delta " 
                       "16r2207"    16rD1 " NABLA # gradient " 
                       "16r2208"    16rCE " ELEMENT OF    # element " 
                       "16r2209"    16rCF " NOT AN ELEMENT OF     # notelement " 
                       "16r220A"    16r00 " invalid " 
                       "16r220B"    16r27 " CONTAINS AS MEMBER    # suchthat " 
                       "16r220C"    16r00 " invalid " 
                       "16r220D"    16r00 " invalid " 
                       "16r220E"    16r00 " invalid " 
                       "16r220F"    16rD5 " N-ARY PRODUCT # product " 
                       "16r2210"    16r00 " invalid " 
                       "16r2211"    16rE5 " N-ARY SUMMATION       # summation " 
                       "16r2212"    16r2D " MINUS SIGN    # minus " 
                       "16r2213"    16r00 " invalid " 
                       "16r2214"    16r00 " invalid " 
                       "16r2215"    16rA4 " DIVISION SLASH        # fraction " 
                       "16r2216"    16r00 " invalid " 
                       "16r2217"    16r2A " ASTERISK OPERATOR     # asteriskmath " 
                       "16r2218"    16r00 " invalid " 
                       "16r2219"    16r00 " invalid " 
                       "16r221A"    16rD6 " SQUARE ROOT   # radical " 
                       "16r221B"    16r00 " invalid " 
                       "16r221C"    16r00 " invalid " 
                       "16r221D"    16rB5 " PROPORTIONAL TO       # proportional " 
                       "16r221E"    16rA5 " INFINITY      # infinity " 
                       "16r221F"    16r00 " invalid " 
                       "16r2220"    16rD0 " ANGLE # angle " 
                       "16r2221"    16r00 " invalid " 
                       "16r2222"    16r00 " invalid " 
                       "16r2223"    16r00 " invalid " 
                       "16r2224"    16r00 " invalid " 
                       "16r2225"    16r00 " invalid " 
                       "16r2226"    16r00 " invalid " 
                       "16r2227"    16rD9 " LOGICAL AND   # logicaland " 
                       "16r2228"    16rDA " LOGICAL OR    # logicalor " 
                       "16r2229"    16rC7 " INTERSECTION  # intersection " 
                       "16r222A"    16rC8 " UNION # union " 
                       "16r222B"    16rF2 " INTEGRAL      # integral " 
                       "16r222C"    16r00 " invalid " 
                       "16r222D"    16r00 " invalid " 
                       "16r222E"    16r00 " invalid " 
                       "16r222F"    16r00 " invalid " 
                       "16r2230"    16r00 " invalid " 
                       "16r2231"    16r00 " invalid " 
                       "16r2232"    16r00 " invalid " 
                       "16r2233"    16r00 " invalid " 
                       "16r2234"    16r5C " THEREFORE     # therefore " 
                       "16r2235"    16r00 " invalid " 
                       "16r2236"    16r00 " invalid " 
                       "16r2237"    16r00 " invalid " 
                       "16r2238"    16r00 " invalid " 
                       "16r2239"    16r00 " invalid " 
                       "16r223A"    16r00 " invalid " 
                       "16r223B"    16r00 " invalid " 
                       "16r223C"    16r7E " TILDE OPERATOR        # similar " 
                       "16r223D"    16r00 " invalid " 
                       "16r223E"    16r00 " invalid " 
                       "16r223F"    16r00 " invalid " 
                       "16r2240"    16r00 " invalid " 
                       "16r2241"    16r00 " invalid " 
                       "16r2242"    16r00 " invalid " 
                       "16r2243"    16r00 " invalid " 
                       "16r2244"    16r00 " invalid " 
                       "16r2245"    16r40 " APPROXIMATELY EQUAL TO        # congruent " 
                       "16r2246"    16r00 " invalid " 
                       "16r2247"    16r00 " invalid " 
                       "16r2248"    16rBB " ALMOST EQUAL TO       # approxequal " 
                       "16r2249"    16r00 " invalid " 
                       "16r224A"    16r00 " invalid " 
                       "16r224B"    16r00 " invalid " 
                       "16r224C"    16r00 " invalid " 
                       "16r224D"    16r00 " invalid " 
                       "16r224E"    16r00 " invalid " 
                       "16r224F"    16r00 " invalid " 
                       "16r2250"    16r00 " invalid " 
                       "16r2251"    16r00 " invalid " 
                       "16r2252"    16r00 " invalid " 
                       "16r2253"    16r00 " invalid " 
                       "16r2254"    16r00 " invalid " 
                       "16r2255"    16r00 " invalid " 
                       "16r2256"    16r00 " invalid " 
                       "16r2257"    16r00 " invalid " 
                       "16r2258"    16r00 " invalid " 
                       "16r2259"    16r00 " invalid " 
                       "16r225A"    16r00 " invalid " 
                       "16r225B"    16r00 " invalid " 
                       "16r225C"    16r00 " invalid " 
                       "16r225D"    16r00 " invalid " 
                       "16r225E"    16r00 " invalid " 
                       "16r225F"    16r00 " invalid " 
                       "16r2260"    16rB9 " NOT EQUAL TO  # notequal " 
                       "16r2261"    16rBA " IDENTICAL TO  # equivalence " 
                       "16r2262"    16r00 " invalid " 
                       "16r2263"    16r00 " invalid " 
                       "16r2264"    16rA3 " LESS-THAN OR EQUAL TO # lessequal " 
                       "16r2265"    16rB3 " GREATER-THAN OR EQUAL TO      # greaterequal " 
                       "16r2266"    16r00 " invalid " 
                       "16r2267"    16r00 " invalid " 
                       "16r2268"    16r00 " invalid " 
                       "16r2269"    16r00 " invalid " 
                       "16r226A"    16r00 " invalid " 
                       "16r226B"    16r00 " invalid " 
                       "16r226C"    16r00 " invalid " 
                       "16r226D"    16r00 " invalid " 
                       "16r226E"    16r00 " invalid " 
                       "16r226F"    16r00 " invalid " 
                       "16r2270"    16r00 " invalid " 
                       "16r2271"    16r00 " invalid " 
                       "16r2272"    16r00 " invalid " 
                       "16r2273"    16r00 " invalid " 
                       "16r2274"    16r00 " invalid " 
                       "16r2275"    16r00 " invalid " 
                       "16r2276"    16r00 " invalid " 
                       "16r2277"    16r00 " invalid " 
                       "16r2278"    16r00 " invalid " 
                       "16r2279"    16r00 " invalid " 
                       "16r227A"    16r00 " invalid " 
                       "16r227B"    16r00 " invalid " 
                       "16r227C"    16r00 " invalid " 
                       "16r227D"    16r00 " invalid " 
                       "16r227E"    16r00 " invalid " 
                       "16r227F"    16r00 " invalid " 
                       "16r2280"    16r00 " invalid " 
                       "16r2281"    16r00 " invalid " 
                       "16r2282"    16rCC " SUBSET OF     # propersubset " 
                       "16r2283"    16rC9 " SUPERSET OF   # propersuperset " 
                       "16r2284"    16rCB " NOT A SUBSET OF       # notsubset " 
                       "16r2285"    16r00 " invalid " 
                       "16r2286"    16rCD " SUBSET OF OR EQUAL TO # reflexsubset " 
                       "16r2287"    16rCA " SUPERSET OF OR EQUAL TO       # reflexsuperset " 
                       "16r2288"    16r00 " invalid " 
                       "16r2289"    16r00 " invalid " 
                       "16r228A"    16r00 " invalid " 
                       "16r228B"    16r00 " invalid " 
                       "16r228C"    16r00 " invalid " 
                       "16r228D"    16r00 " invalid " 
                       "16r228E"    16r00 " invalid " 
                       "16r228F"    16r00 " invalid " 
                       "16r2290"    16r00 " invalid " 
                       "16r2291"    16r00 " invalid " 
                       "16r2292"    16r00 " invalid " 
                       "16r2293"    16r00 " invalid " 
                       "16r2294"    16r00 " invalid " 
                       "16r2295"    16rC5 " CIRCLED PLUS  # circleplus " 
                       "16r2296"    16r00 " invalid " 
                       "16r2297"    16rC4 " CIRCLED TIMES # circlemultiply " 
                       "16r2298"    16r00 " invalid " 
                       "16r2299"    16r00 " invalid " 
                       "16r229A"    16r00 " invalid " 
                       "16r229B"    16r00 " invalid " 
                       "16r229C"    16r00 " invalid " 
                       "16r229D"    16r00 " invalid " 
                       "16r229E"    16r00 " invalid " 
                       "16r229F"    16r00 " invalid " 
                       "16r22A0"    16r00 " invalid " 
                       "16r22A1"    16r00 " invalid " 
                       "16r22A2"    16r00 " invalid " 
                       "16r22A3"    16r00 " invalid " 
                       "16r22A4"    16r00 " invalid " 
                       "16r22A5"    16r5E " UP TACK       # perpendicular " 
                       "16r22A6"    16r00 " invalid " 
                       "16r22A7"    16r00 " invalid " 
                       "16r22A8"    16r00 " invalid " 
                       "16r22A9"    16r00 " invalid " 
                       "16r22AA"    16r00 " invalid " 
                       "16r22AB"    16r00 " invalid " 
                       "16r22AC"    16r00 " invalid " 
                       "16r22AD"    16r00 " invalid " 
                       "16r22AE"    16r00 " invalid " 
                       "16r22AF"    16r00 " invalid " 
                       "16r22B0"    16r00 " invalid " 
                       "16r22B1"    16r00 " invalid " 
                       "16r22B2"    16r00 " invalid " 
                       "16r22B3"    16r00 " invalid " 
                       "16r22B4"    16r00 " invalid " 
                       "16r22B5"    16r00 " invalid " 
                       "16r22B6"    16r00 " invalid " 
                       "16r22B7"    16r00 " invalid " 
                       "16r22B8"    16r00 " invalid " 
                       "16r22B9"    16r00 " invalid " 
                       "16r22BA"    16r00 " invalid " 
                       "16r22BB"    16r00 " invalid " 
                       "16r22BC"    16r00 " invalid " 
                       "16r22BD"    16r00 " invalid " 
                       "16r22BE"    16r00 " invalid " 
                       "16r22BF"    16r00 " invalid " 
                       "16r22C0"    16r00 " invalid " 
                       "16r22C1"    16r00 " invalid " 
                       "16r22C2"    16r00 " invalid " 
                       "16r22C3"    16r00 " invalid " 
                       "16r22C4"    16r00 " invalid " 
                       "16r22C5"    16rD7 " DOT OPERATOR  # dotmath " 
                       ] at:(unicode - 16r21FF).
                    t == 0 ifFalse:[^ t].
                    ^ self encodingError
                ] value.
            ].
            unicode <= 16r231F ifTrue:[
                ^ self encodingError
            ].
            [
                |t|
                t := #[
                   "16r2320"    16rF3 " TOP HALF INTEGRAL     # integraltp " 
                   "16r2321"    16rF5 " BOTTOM HALF INTEGRAL  # integralbt " 
                   "16r2322"    16r00 " invalid " 
                   "16r2323"    16r00 " invalid " 
                   "16r2324"    16r00 " invalid " 
                   "16r2325"    16r00 " invalid " 
                   "16r2326"    16r00 " invalid " 
                   "16r2327"    16r00 " invalid " 
                   "16r2328"    16r00 " invalid " 
                   "16r2329"    16rE1 " LEFT-POINTING ANGLE BRACKET   # angleleft " 
                   "16r232A"    16rF1 " RIGHT-POINTING ANGLE BRACKET  # angleright " 
                   ] at:(unicode - 16r231F).
                t == 0 ifFalse:[^ t].
                ^ self encodingError
            ] value.
        ].
        unicode <= 16r25C9 ifTrue:[
            ^ self encodingError
        ].
        unicode == 16r25CA ifTrue:[
            ^  "16r25CA" 16r00E0 " LOZENGE       # lozenge " 
        ].
        unicode <= 16r265F ifTrue:[
            ^ self encodingError
        ].
        [
            |t|
            t := #[
               "16r2660"    16rAA " BLACK SPADE SUIT      # spade " 
               "16r2661"    16r00 " invalid " 
               "16r2662"    16r00 " invalid " 
               "16r2663"    16rA7 " BLACK CLUB SUIT       # club " 
               "16r2664"    16r00 " invalid " 
               "16r2665"    16rA9 " BLACK HEART SUIT      # heart " 
               "16r2666"    16rA8 " BLACK DIAMOND SUIT    # diamond " 
               ] at:(unicode - 16r265F).
            t == 0 ifFalse:[^ t].
            ^ self encodingError
        ] value.
    ].
    unicode <= 16rF6D8 ifTrue:[
        ^ self encodingError
    ].
    unicode <= 16rF6DB ifTrue:[
        ^ #[
           "16rF6D9"    16rD3 " COPYRIGHT SIGN SERIF  # copyrightserif (CUS) " 
           "16rF6DA"    16rD2 " REGISTERED SIGN SERIF # registerserif (CUS) " 
           "16rF6DB"    16rD4 " TRADE MARK SIGN SERIF # trademarkserif (CUS) " 
           ] at:(unicode - 16rF6D8).
    ].
    unicode <= 16rF8E4 ifTrue:[
        ^ self encodingError
    ].
    ^ #[
       "16rF8E5"    16r60 " RADICAL EXTENDER      # radicalex (CUS) " 
       "16rF8E6"    16rBD " VERTICAL ARROW EXTENDER       # arrowvertex (CUS) " 
       "16rF8E7"    16rBE " HORIZONTAL ARROW EXTENDER     # arrowhorizex (CUS) " 
       "16rF8E8"    16rE2 " REGISTERED SIGN SANS SERIF    # registersans (CUS) " 
       "16rF8E9"    16rE3 " COPYRIGHT SIGN SANS SERIF     # copyrightsans (CUS) " 
       "16rF8EA"    16rE4 " TRADE MARK SIGN SANS SERIF    # trademarksans (CUS) " 
       "16rF8EB"    16rE6 " LEFT PAREN TOP        # parenlefttp (CUS) " 
       "16rF8EC"    16rE7 " LEFT PAREN EXTENDER   # parenleftex (CUS) " 
       "16rF8ED"    16rE8 " LEFT PAREN BOTTOM     # parenleftbt (CUS) " 
       "16rF8EE"    16rE9 " LEFT SQUARE BRACKET TOP       # bracketlefttp (CUS) " 
       "16rF8EF"    16rEA " LEFT SQUARE BRACKET EXTENDER  # bracketleftex (CUS) " 
       "16rF8F0"    16rEB " LEFT SQUARE BRACKET BOTTOM    # bracketleftbt (CUS) " 
       "16rF8F1"    16rEC " LEFT CURLY BRACKET TOP        # bracelefttp (CUS) " 
       "16rF8F2"    16rED " LEFT CURLY BRACKET MID        # braceleftmid (CUS) " 
       "16rF8F3"    16rEE " LEFT CURLY BRACKET BOTTOM     # braceleftbt (CUS) " 
       "16rF8F4"    16rEF " CURLY BRACKET EXTENDER        # braceex (CUS) " 
       "16rF8F5"    16rF4 " INTEGRAL EXTENDER     # integralex (CUS) " 
       "16rF8F6"    16rF6 " RIGHT PAREN TOP       # parenrighttp (CUS) " 
       "16rF8F7"    16rF7 " RIGHT PAREN EXTENDER  # parenrightex (CUS) " 
       "16rF8F8"    16rF8 " RIGHT PAREN BOTTOM    # parenrightbt (CUS) " 
       "16rF8F9"    16rF9 " RIGHT SQUARE BRACKET TOP      # bracketrighttp (CUS) " 
       "16rF8FA"    16rFA " RIGHT SQUARE BRACKET EXTENDER # bracketrightex (CUS) " 
       "16rF8FB"    16rFB " RIGHT SQUARE BRACKET BOTTOM   # bracketrightbt (CUS) " 
       "16rF8FC"    16rFC " RIGHT CURLY BRACKET TOP       # bracerighttp (CUS) " 
       "16rF8FD"    16rFD " RIGHT CURLY BRACKET MID       # bracerightmid (CUS) " 
       "16rF8FE"    16rFE " RIGHT CURLY BRACKET BOTTOM    # bracerightbt (CUS) " 
       ] at:(unicode - 16rF8E4).
! !

!AdobeSymbol class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !