CharacterEncoder.st
changeset 7909 a045c719fca2
parent 7904 e3940bba2746
child 7912 fbbb59645576
--- a/CharacterEncoder.st	Wed Feb 11 16:19:44 2004 +0100
+++ b/CharacterEncoder.st	Wed Feb 11 16:22:02 2004 +0100
@@ -215,7 +215,7 @@
 	privateIn:CharacterEncoder
 !
 
-CharacterEncoder::SingleByteEncoder subclass:#KOI8_U
+CharacterEncoder::KOI8_R subclass:#KOI8_U
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -503,27 +503,33 @@
 
     Thats all !!
 
-    CharacterEncoder::SingleByteEncoder allSubclassesDo:[:cls | cls flushCode; generateCode ]
-
-    CharacterEncoder::ASCII flushCode; generateCode.
-    CharacterEncoder::ISO8859_1 flushCode; generateCode.
-    CharacterEncoder::ISO8859_2 flushCode; generateCode.
-    CharacterEncoder::ISO8859_3 flushCode; generateCode.
-    CharacterEncoder::ISO8859_4 flushCode; generateCode.
-    CharacterEncoder::ISO8859_5 flushCode; generateCode.
-    CharacterEncoder::ISO8859_6 flushCode; generateCode.
-    CharacterEncoder::ISO8859_7 flushCode; generateCode.
-    CharacterEncoder::ISO8859_8 flushCode; generateCode.
-    CharacterEncoder::ISO8859_9 flushCode; generateCode.
-    CharacterEncoder::ISO8859_10 flushCode; generateCode.
-    CharacterEncoder::ISO8859_11 flushCode; generateCode.
-    CharacterEncoder::ISO8859_13 flushCode; generateCode.
-    CharacterEncoder::ISO8859_14 flushCode; generateCode.
-    CharacterEncoder::ISO8859_15 flushCode; generateCode.
-    CharacterEncoder::ISO8859_16 flushCode; generateCode.
-    CharacterEncoder::KOI8_R flushCode; generateCode.
-    CharacterEncoder::KOI8_U flushCode; generateCode.
-    CharacterEncoder::GSM0338 flushCode; generateCode.
+
+    The existing code was generated by:
+
+        CharacterEncoder::SingleByteEncoder subclassesDo:[:cls | Transcript showCR:cls name. cls flushCode; generateCode ]
+        CharacterEncoder::SingleByteEncoder subclassesDo:[:cls | cls allSubclassesDo:[:sub | Transcript showCR:sub name. sub flushCode; generateSubclassCode]]
+
+    or individually:
+        CharacterEncoder::ASCII flushCode; generateCode.
+        CharacterEncoder::ISO8859_1 flushCode; generateCode.
+        CharacterEncoder::ISO8859_2 flushCode; generateCode.
+        CharacterEncoder::ISO8859_3 flushCode; generateCode.
+        CharacterEncoder::ISO8859_4 flushCode; generateCode.
+        CharacterEncoder::ISO8859_5 flushCode; generateCode.
+        CharacterEncoder::ISO8859_6 flushCode; generateCode.
+        CharacterEncoder::ISO8859_7 flushCode; generateCode.
+        CharacterEncoder::ISO8859_8 flushCode; generateCode.
+        CharacterEncoder::ISO8859_9 flushCode; generateCode.
+        CharacterEncoder::ISO8859_10 flushCode; generateCode.
+        CharacterEncoder::ISO8859_11 flushCode; generateCode.
+        CharacterEncoder::ISO8859_13 flushCode; generateCode.
+        CharacterEncoder::ISO8859_14 flushCode; generateCode.
+        CharacterEncoder::ISO8859_15 flushCode; generateCode.
+        CharacterEncoder::ISO8859_16 flushCode; generateCode.
+        CharacterEncoder::KOI8_R flushCode; generateCode.
+        CharacterEncoder::GSM0338 flushCode; generateCode.
+
+        CharacterEncoder::KOI8_U flushCode; generateSubclassCode.
 "
 ! !
 
@@ -693,601 +699,11 @@
 !CharacterEncoder class methodsFor:'private-mapping setup'!
 
 generateCode
-    |tables codeTable nameTable 
-     minCode maxCode minUnicode maxUnicode
-     firstDiff lastDiff 
-     firstUnicodeDiff lastUnicodeDiff
-     source unicodeTable unicodeNameTable m limit|
-
-    tables := self mappingTables.
-    tables isNil ifTrue:[
-        self halt.
-        ^ self.
-    ].
-
-    codeTable := tables at:1.
-    nameTable := tables at:2.
-    unicodeTable := IdentityDictionary new.
-    unicodeNameTable := IdentityDictionary new.
-
-    minCode := 16rFFFFFFF.
-    maxCode := -1.
-    minUnicode := 16rFFFFFFF.
-    maxUnicode := -1.
-
-    codeTable keysAndValuesDo:[:code :uniCode |
-        minCode := minCode min:code.
-        maxCode := maxCode max:code.
-        minUnicode := minUnicode min:uniCode.
-        maxUnicode := maxUnicode max:uniCode.
-
-        unicodeTable at:uniCode put:code.
-        unicodeNameTable at:uniCode put:(nameTable at:code).
-    ].
-
-    "/ first difference...
-    firstDiff := (minCode to:maxCode) detect:[:code | (codeTable at:code ifAbsent:nil) ~~ code] ifNone:nil.
-    lastDiff := (maxCode to:minCode by:-1) detect:[:code | (codeTable at:code ifAbsent:nil) ~~ code] ifNone:nil.
-
-    firstUnicodeDiff := (minUnicode to:maxUnicode) detect:[:unicode | (unicodeTable at:unicode ifAbsent:nil) ~~ unicode] ifNone:nil.
-    lastUnicodeDiff := (maxUnicode to:minUnicode by:-1) detect:[:unicode | (unicodeTable at:unicode ifAbsent:nil) ~~ unicode] ifNone:nil.
-
-    "/ do not overwrite handwritten methods...
-    m := self compiledMethodAt:#'decode:'.
-    (m notNil and:[((m comment ? '') includesString:'Automagically generated') not]) ifTrue:[
-        self warn:'Will not overwrite handwritten code.'
-    ] ifFalse:[
-        "/ generate the decoder...
-
-        source := WriteStream on:(String new:200).
-        source nextPutLine:'decode:codeArg'.
-        source nextPutLine:'    "Automagically generated by generateCode - do not modify.'.
-        source nextPutLine:'     Decode from my encoding into unicode."'.
-        source nextPutLine:''.
-        source nextPutLine:'    |code "{ Class: SmallInteger }"|'.
-        source nextPutLine:''.
-        source nextPutLine:'    code := codeArg.'.
-        firstDiff isNil ifTrue:[
-            minCode ~~ 0 ifTrue:[
-                source nextPutLine:'    code <= ' , ((minCode-1) radixPrintStringRadix:16) , ' ifTrue:['.
-                source nextPutLine:'        ^ self decodingError.'.
-                source nextPutLine:'    ].'.
-            ].
-            true "maxCode ~~ 255" ifTrue:[
-                source nextPutLine:'    code > ' , (maxCode radixPrintStringRadix:16) , ' ifTrue:['.
-                source nextPutLine:'        ^ self decodingError.'.
-                source nextPutLine:'    ].'.
-            ].
-            source nextPutLine:'    ^ code.'.
-        ] ifFalse:[
-            source nextPutLine:'    code <= ' , ((firstDiff-1) radixPrintStringRadix:16) , ' ifTrue:[ ^ code ].'.
-            true "maxCode ~~ 255" ifTrue:[
-                source nextPutLine:'    code > ' , (maxCode radixPrintStringRadix:16) , ' ifTrue:['.
-                source nextPutLine:'        ^ self decodingError.'.
-                source nextPutLine:'    ].'.
-            ].
-            lastDiff > maxCode ifTrue:[
-                source nextPutLine:'    code > ' , (lastDiff radixPrintStringRadix:16) , ' ifTrue:[ ^ code ].'.
-                limit := lastDiff
-            ] ifFalse:[
-                limit := maxCode.
-            ].
-
-            self 
-                generateLookupFor:codeTable nameTable:nameTable from:firstDiff to:limit varName:'code' 
-                errorCode:'^ self decodingError.' 
-                indent:4 onto:source.
-        ].
-
-        self 
-            compile:source contents
-            classified:'encoding & decoding'
-            logged:false.
-    ].
-
-    m := self compiledMethodAt:#'encode:'.
-    (m notNil and:[((m comment ? '') includesString:'Automagically generated') not]) ifTrue:[
-        self warn:'Will not overwrite handwritten code.'
-    ] ifFalse:[
-
-        "/ generate the encoder...
-
-        source := WriteStream on:(String new:200).
-        source nextPutLine:'encode:unicodeArg'.
-        source nextPutLine:'    "Automagically generated by generateCode - do not modify.'.
-        source nextPutLine:'     Encode from unicode into my encoding."'.
-        source nextPutLine:''.
-        source nextPutLine:'    |unicode "{ Class: SmallInteger }"|'.
-        source nextPutLine:''.
-        source nextPutLine:'    unicode := unicodeArg.'.
-        firstDiff isNil ifTrue:[
-            minUnicode ~~ 0 ifTrue:[
-                source nextPutLine:'    unicode <= ' , ((minUnicode-1) radixPrintStringRadix:16) , ' ifTrue:['.
-                source nextPutLine:'        ^ self encodingError.'.
-                source nextPutLine:'    ].'.
-            ].
-            true "maxUnicode ~~ 255" ifTrue:[
-                source nextPutLine:'    unicode > ' , (maxUnicode radixPrintStringRadix:16) , ' ifTrue:['.
-                source nextPutLine:'        ^ self encodingError.'.
-                source nextPutLine:'    ].'.
-            ].
-            source nextPutLine:'    ^ unicode.'.
-        ] ifFalse:[
-            source nextPutLine:'    unicode <= ' , ((firstUnicodeDiff-1) radixPrintStringRadix:16) , ' ifTrue:[ ^ unicode ].'.
-            source nextPutLine:'    unicode > ' , (maxUnicode radixPrintStringRadix:16) , ' ifTrue:['.
-            source nextPutLine:'        ^ self encodingError.'.
-            source nextPutLine:'    ].'.
-            lastDiff > maxCode ifTrue:[
-                source nextPutLine:'    unicode > ' , (lastUnicodeDiff radixPrintStringRadix:16) , ' ifTrue:[ ^ unicode ].'.
-            ].
-
-            self 
-                generateLookupFor:unicodeTable nameTable:unicodeNameTable from:firstUnicodeDiff to:lastUnicodeDiff varName:'unicode' 
-                errorCode:'^ self encodingError'  
-                indent:4 onto:source.
-        ].
-
-        self 
-            compile:source contents
-            classified:'encoding & decoding'
-            logged:false.
-    ].
-
-    "
-     ISO8859_1 flushCode; generateCode
-     ISO8859_2 flushCode; generateCode
-     KOI8_U flushCode; generateCode
-     NEXT flushCode; generateCode
-    "
-!
-
-generateDirectTableLookupFor:codeTable nameTable:nameTable from:firstIndex to:lastIndex varName:codeVar errorCode:errorCode indent:indentArg onto:stream
-    "/ generate direct table lookup
-
-    |maxElement useByteArray valPad anyInvalid usedElements invalidMarker indent code unicode unicodeCharacterName|
-
-    indent := indentArg.
-
-    firstIndex == lastIndex ifTrue:[
-        code := firstIndex.
-        unicode := codeTable at:code ifAbsent:nil.
-        unicodeCharacterName := nameTable at:code ifAbsent:nil.
-        unicode isNil ifTrue:[
-            unicodeCharacterName := 'invalid'.
-        ].
-        unicode isNil ifTrue:[
-self halt.
-            stream spaces:indent; nextPutLine:errorCode.
-        ] ifFalse:[
-            stream spaces:indent; nextPutAll:'^ '.
-            stream nextPutAll:' "' , '16r' , ((code printStringRadix:16) leftPaddedTo:4 with:$0).
-            stream nextPutAll:'" ' , '16r' , ((unicode printStringRadix:16) leftPaddedTo:4 with:$0).
-            unicodeCharacterName notNil ifTrue:[
-                stream nextPutAll:' " ' , unicodeCharacterName , ' " '.
-            ].
-            stream cr.
-        ].
-        ^ self
-    ].
-
-    anyInvalid := false.
-    usedElements := IdentitySet new.
-    maxElement := -1.
-    firstIndex to:lastIndex do:[:code |
-        |unicode|
-
-        unicode := codeTable at:code ifAbsent:nil.
-        unicode notNil ifTrue:[
-            usedElements add:unicode.
-            maxElement := maxElement max:unicode.  
-        ] ifFalse:[
-            anyInvalid := true.
-        ]
-    ].
-
-    useByteArray := maxElement <= 255.
-
-    (usedElements includes:0) ifFalse:[
-        invalidMarker := 0.
-    ] ifTrue:[
-        useByteArray ifTrue:[
-            (usedElements includes:255) ifFalse:[
-                invalidMarker := 255.
-            ] ifFalse:[
-                invalidMarker := (1 to:255) detect:[:n | (usedElements includes:n) not].
-            ].
-        ] ifFalse:[
-            (usedElements includes:16rFFFF) ifFalse:[
-                invalidMarker := 16rFFFF.
-            ] ifTrue:[
-                invalidMarker := maxElement + 1.
-            ]
-        ].
-    ].
-
-    anyInvalid ifTrue:[
-        stream spaces:indent; nextPutLine:'['.
-        indent := indent + 4.
-        stream spaces:indent; nextPutLine:'|t|'.
-        stream spaces:indent; nextPutAll:'t := '.
-    ] ifFalse:[
-        stream spaces:indent; nextPutAll:'^ '.
-    ].
-    useByteArray ifTrue:[
-        valPad := 2.
-        stream nextPutLine:'#['.
-    ] ifFalse:[
-        valPad := 4.
-        stream nextPutLine:'#('.
-    ].
-    firstIndex to:lastIndex do:[:code |
-        |unicode unicodeCharacterName|
-
-        unicode := codeTable at:code ifAbsent:nil.
-        unicodeCharacterName := nameTable at:code ifAbsent:nil.
-        unicode isNil ifTrue:[
-            unicode := invalidMarker.
-            unicodeCharacterName := 'invalid'.
-        ].
-        stream spaces:indent; nextPutAll:'   "' , '16r' , ((code printStringRadix:16) leftPaddedTo:4 with:$0).
-        stream nextPutAll:'"    ' , '16r' , ((unicode printStringRadix:16) leftPaddedTo:valPad with:$0).
-        unicodeCharacterName notNil ifTrue:[
-            stream nextPutAll:' " ' , unicodeCharacterName , ' " '.
-        ].
-        stream cr.
-    ].
-    useByteArray ifTrue:[
-        stream spaces:indent; nextPutAll:'   ]'.
-    ] ifFalse:[
-        stream spaces:indent; nextPutAll:'   )'.
-    ].
-    stream nextPutLine:' at:(',codeVar,' - ' , ((firstIndex-1) radixPrintStringRadix:16) , ').'.
-
-    anyInvalid ifTrue:[
-        stream spaces:indent; nextPutLine:'t == ',invalidMarker printString,' ifFalse:[^ t].'.
-        stream spaces:indent; nextPutLine:errorCode.
-        indent := indent - 4.
-        stream spaces:indent; nextPutLine:'] value.'.
-    ].
-!
-
-generateLookupFor:codeTable nameTable:nameTable from:firstIndex to:lastIndex varName:codeVar errorCode:errorCode indent:indent onto:stream
-    |info fillRatio firstValidNonIdentical lastValidNonIdentical|
-
-    info := self mapInfoFor:codeTable from:firstIndex to:lastIndex.
-    fillRatio := info validRangeSize / info domainSize.
-
-    fillRatio < 1 ifTrue:[
-        "/ some mappings are invalid
-
-        info firstInvalid == firstIndex ifTrue:[
-            "/ invalid block at beginning...
-            (firstIndex to:info firstValid) size >= 10 ifTrue:[
-                stream spaces:indent; nextPutLine:codeVar,' <= ', ((info firstValid - 1) radixPrintStringRadix:16),' ifTrue:['.
-                stream spaces:indent+4; nextPutLine:errorCode,'.'.
-                stream spaces:indent; nextPutLine:'].'.
-
-                self 
-                    generateLookupFor:codeTable nameTable:nameTable from:(info firstValid) to:lastIndex varName:codeVar 
-                    errorCode:errorCode 
-                    indent:indent onto:stream.
-                ^ self.
-            ].
-        ].
-
-        info lastInvalid == lastIndex ifTrue:[
-            "/ invalid block at the end...
-self halt.
-        ].
-
-        (info largestInvalidBlock size) / (firstIndex to:lastIndex) size > 0.3 ifTrue:[
-            (info largestInvalidBlock size) > 15 ifTrue:[
-                "/ big invalid block in the middle...
-                firstIndex == (info largestInvalidBlock start-1) ifTrue:[
-                    stream spaces:indent; nextPutLine:codeVar,' == ', (firstIndex radixPrintStringRadix:16),' ifTrue:['.
-                ] ifFalse:[
-                    stream spaces:indent; nextPutLine:codeVar,' <= ',((info largestInvalidBlock start - 1) radixPrintStringRadix:16),' ifTrue:['.
-                ].
-                self 
-                    generateLookupFor:codeTable nameTable:nameTable from:firstIndex to:(info largestInvalidBlock start-1) varName:codeVar 
-                    errorCode:errorCode 
-                    indent:indent+4 onto:stream.
-                stream spaces:indent; nextPutLine:'].'.
-                "/ invalid block...
-                stream spaces:indent; nextPutLine:codeVar,' <= ',(info largestInvalidBlock stop radixPrintStringRadix:16),' ifTrue:['.
-                stream spaces:indent+4; nextPutLine:errorCode,'.'.
-                stream spaces:indent; nextPutLine:'].'.
-                self 
-                    generateLookupFor:codeTable nameTable:nameTable from:(info largestInvalidBlock stop+1) to:lastIndex varName:codeVar 
-                    errorCode:errorCode 
-                    indent:indent onto:stream.
-                ^ self.
-            ].
-        ].
-
-        info domainSize > 40 ifTrue:[
-            "/ is there a part of the mapping which is either identity-mapping or error ?
-            firstValidNonIdentical := (firstIndex to:lastIndex) detect:[:idx | (codeTable at:idx ifAbsent:idx) ~~ idx] ifNone:nil.
-
-            firstValidNonIdentical isNil ifTrue:[
-                "/ wow - all should be done this way
-                self 
-                    generateLookupForIdenticalOrInvalid:codeTable nameTable:nameTable from:firstIndex to:lastIndex varName:codeVar 
-                    errorCode:errorCode 
-                    indent:indent+4 onto:stream.
-                ^ self.
-            ].
-
-            (firstIndex to:firstValidNonIdentical-1) size > 40 ifTrue:[
-                stream spaces:indent; nextPutLine:codeVar,' <= ',((firstValidNonIdentical - 1) radixPrintStringRadix:16),' ifTrue:['.
-                self 
-                    generateLookupForIdenticalOrInvalid:codeTable nameTable:nameTable from:firstIndex to:firstValidNonIdentical-1 varName:codeVar 
-                    errorCode:errorCode 
-                    indent:indent+4 onto:stream.
-                stream spaces:indent; nextPutLine:'].'.
-                self 
-                    generateLookupFor:codeTable nameTable:nameTable from:firstValidNonIdentical to:lastIndex varName:codeVar 
-                    errorCode:errorCode 
-                    indent:indent onto:stream.
-                ^ self.
-            ].
-
-            lastValidNonIdentical := (lastIndex to:firstIndex by:-1) detect:[:idx | (codeTable at:idx ifAbsent:idx) ~~ idx] ifNone:nil.
-            (lastValidNonIdentical+1 to:lastIndex) size > 40 ifTrue:[
-self halt.
-            ].
-
-            info largestInvalidBlock size > 40 ifTrue:[
-                stream spaces:indent; nextPutLine:codeVar,' <= ',((info largestInvalidBlock start - 1) radixPrintStringRadix:16),' ifTrue:['.
-                self 
-                    generateLookupFor:codeTable nameTable:nameTable from:firstIndex to:(info largestInvalidBlock start-1) varName:codeVar 
-                    errorCode:errorCode 
-                    indent:indent+4 onto:stream.
-                stream spaces:indent; nextPutLine:'].'.
-                "/ invalid block...
-                stream spaces:indent; nextPutLine:codeVar,' <= ',(info largestInvalidBlock stop radixPrintStringRadix:16),' ifTrue:['.
-                stream spaces:indent+4; nextPutLine:errorCode,'.'.
-                stream spaces:indent; nextPutLine:'].'.
-                self 
-                    generateLookupFor:codeTable nameTable:nameTable from:(info largestInvalidBlock stop+1) to:lastIndex varName:codeVar 
-                    errorCode:errorCode 
-                    indent:indent onto:stream.
-                ^ self.
-            ].
-            "/ how would it look if we did it in parts/page-wise ?
-"/            fillRatio < 0.5 ifTrue:[
-"/            ].
-"/ self halt.
-        ] ifFalse:[
-            info firstInvalid == (firstIndex+1) ifTrue:[
-                info largestInvalidBlock start == info firstInvalid ifTrue:[
-                    "/ a single valid item followed by an invalid block
-                    info largestInvalidBlock size >= 10 ifTrue:[
-                        stream spaces:indent; nextPutLine:codeVar,' == ', (firstIndex radixPrintStringRadix:16),' ifTrue:['.
-                        self 
-                            generateLookupForIdenticalOrInvalid:codeTable nameTable:nameTable from:firstIndex to:firstIndex varName:codeVar 
-                            errorCode:errorCode 
-                            indent:indent+4 onto:stream.
-                        stream spaces:indent; nextPutLine:'].'.
-                        self 
-                            generateLookupFor:codeTable nameTable:nameTable from:firstIndex+1 to:lastIndex varName:codeVar 
-                            errorCode:errorCode 
-                            indent:indent onto:stream.
-                        ^ self.
-                    ]
-                ]
-            ].
-            info lastInvalid == (lastIndex-1) ifTrue:[
-                info largestInvalidBlock stop == info lastInvalid ifTrue:[
-                    info largestInvalidBlock size >= 10 ifTrue:[
-self halt.
-                    ]
-                ]
-            ].
-"/ self halt.
-        ]
-    ].
-
-    self 
-        generateDirectTableLookupFor:codeTable nameTable:nameTable from:firstIndex to:lastIndex varName:codeVar 
-        errorCode:errorCode 
-        indent:indent onto:stream
-!
-
-generateLookupForIdenticalOrInvalid:codeTable nameTable:nameTable from:firstIndex to:lastIndex varName:codeVar errorCode:errorCode indent:indent onto:stream.
-    "/ generate flag lookup for either identity or invalid
-
-    stream spaces:indent; nextPutLine:'(#['.
-    firstIndex to:lastIndex do:[:code |
-        |unicode unicodeCharacterName flag|
-
-        unicode := codeTable at:code ifAbsent:nil.
-        unicodeCharacterName := nameTable at:code ifAbsent:nil.
-        unicode notNil ifTrue:[
-            flag := 1
-        ] ifFalse:[
-            flag := 0.
-            unicodeCharacterName := 'invalid'.
-        ].
-        stream spaces:indent; nextPutAll:'   "' , '16r' , ((code printStringRadix:16) leftPaddedTo:4 with:$0).
-        stream nextPutAll:'"    ' , flag printString.
-        unicodeCharacterName notNil ifTrue:[
-            stream nextPutAll:' " ' , unicodeCharacterName , ' " '.
-        ].
-        stream cr.
-    ].
-    stream spaces:indent; nextPutLine:'] at:(',codeVar,' - ' , (firstIndex-1) printString , ')) ~~ 0 ifTrue:[^ ',codeVar,'].'..
-    stream spaces:indent; nextPutLine:errorCode,'.'.
-!
-
-mapInfoFor:codeTable from:firstIndex to:lastIndex
-    |minCode maxCode domainSize rangeSize validRangeSize firstDiff lastDiff firstValid lastValid firstInvalid lastInvalid info
-     largestInvalidBlock invalidBlockStart invalidBlockEnd sizeOfLargestInvalidBlock|
-
-    minCode := 16rFFFFFFF.
-    maxCode := -1.
-    validRangeSize := 0.
-
-    sizeOfLargestInvalidBlock := 0.
-    largestInvalidBlock := nil.
-    invalidBlockStart := nil.
-    invalidBlockEnd := nil.
-
-    (firstIndex to:lastIndex) do:[:index |
-        |code|
-
-        code := codeTable at:index ifAbsent:nil.
-        code notNil ifTrue:[
-            validRangeSize := validRangeSize + 1.
-            minCode := minCode min:code.
-            maxCode := maxCode max:code.
-
-            invalidBlockStart notNil ifTrue:[    
-                (invalidBlockStart to:invalidBlockEnd) size > sizeOfLargestInvalidBlock ifTrue:[
-                    largestInvalidBlock := (invalidBlockStart to:invalidBlockEnd).
-                    sizeOfLargestInvalidBlock := largestInvalidBlock size.
-                ].
-            ].
-            invalidBlockStart := nil.
-            invalidBlockEnd := nil.
-        ] ifFalse:[
-            invalidBlockStart isNil ifTrue:[
-                invalidBlockStart := invalidBlockEnd := index.
-            ] ifFalse:[
-                invalidBlockEnd := index.
-            ].
-        ]
-    ].
-    invalidBlockStart notNil ifTrue:[    
-self halt.
-        (invalidBlockStart to:invalidBlockEnd) size > sizeOfLargestInvalidBlock ifTrue:[
-            largestInvalidBlock := (invalidBlockStart to:invalidBlockEnd).
-        ].
-    ].
-
-    domainSize := (firstIndex to:lastIndex) size.
-    rangeSize := (minCode to:maxCode) size.
-
-    "/ first difference...
-    firstDiff := (firstIndex to:lastIndex) detect:[:code | (codeTable at:code ifAbsent:nil) ~~ code] ifNone:nil.
-    lastDiff := (lastIndex to:firstIndex by:-1) detect:[:code | (codeTable at:code ifAbsent:nil) ~~ code] ifNone:nil.
-
-    firstValid := (firstIndex to:lastIndex) detect:[:code | (codeTable includesKey:code)] ifNone:nil.
-    lastValid := (lastIndex to:firstIndex by:-1) detect:[:code | (codeTable includesKey:code)] ifNone:nil.
-
-    firstInvalid := (firstIndex to:lastIndex) detect:[:code | (codeTable includesKey:code) not] ifNone:nil.
-    lastInvalid := (lastIndex to:firstIndex by:-1) detect:[:code | (codeTable includesKey:code) not] ifNone:nil.
-
-    info := Structure newWith:#( domainSize rangeSize validRangeSize firstDiff lastDiff firstValid lastValid firstInvalid lastInvalid largestInvalidBlock ).
-    info domainSize:domainSize.
-    info rangeSize:rangeSize.
-    info validRangeSize:validRangeSize.
-    info firstDiff:firstDiff.
-    info lastDiff:lastDiff.
-    info firstValid:firstValid.
-    info lastValid:lastValid.
-    info firstInvalid:firstInvalid.
-    info lastInvalid:lastInvalid.
-    info largestInvalidBlock:largestInvalidBlock.
-    ^ info.
-!
-
-mappingSource
-    |url m response text source|
-
-    m := (self class compiledMethodAt:#mapping).
-    m isNil ifTrue:[
-        url := self mappingURL2.
-        url notNil ifTrue:[
-            response := HTTPInterface get:url.
-        ] ifFalse:[
-            url := self mappingURL1.
-            url isNil ifTrue:[
-                self error:'neither url1 nor url2 is defined (needed for mappingTables)'.
-            ].
-            response := HTTPInterface get:(self mappingURL1).
-        ].
-        text := response data.
-        text replaceAll:$" with:$'.
-
-        source := 'mapping\"\# From: ' withCRs, url, '\\' withCRs, text , '\"' withCRs.
-
-        source size > 30000 ifTrue:[ 
-            ^ source
-        ].
-        
-        "/ compiled codes comment used as a cache.
-        self class 
-            compile:source
-            classified:'mapping'.
-        m := (self class compiledMethodAt:#mapping).
-    ].
-    ^ m source
-
-    "
-     ISO8859_1 mappingSource
-     ISO8859_2 mappingSource
-     ISO8859_3 mappingSource
-     KOI8_U mappingSource
-    "
-!
-
-mappingTables
-    "reads and parses the character maps;
-     Returns an array with 2 tables:
-     - the first maps codes to uniCode
-     - the second maps codes to uniCode character names."
-
-    |src codeTable nameTable|
-
-    "/ the code here reads mappings from unicode.org.
-    "/ the i18n charactermaps are read in a separate method.
-
-    src := self mappingSource.
-    src readStream linesDo:[:line |
-        |l|
-
-        l := line withoutSeparators.
-        (l startsWith:'<code_set_name>') ifTrue:[
-            ^ self readI18NCharmapFrom:src.
-        ].
-
-        (l startsWith:'0x') ifTrue:[
-            |s code uniCode characterComment rest|
-
-            s := l readStream.
-            s skip:2.
-            code := Integer readFrom:s radix:16.
-            s skipSeparators.
-            (s next:2) = '0x' ifTrue:[
-                uniCode := Integer readFrom:s radix:16.
-            ] ifFalse:[ 
-                s position:(s position - 2).
-                "an undefined character ?"
-                uniCode := 16rFFFF.
-            ].
-            s skipSeparators.
-            s next == $# ifTrue:[ 
-                s skipSeparators.
-                characterComment := s upToEnd withoutSeparators.
-            ].
-            codeTable isNil ifTrue:[
-                codeTable := IdentityDictionary new.
-                nameTable := IdentityDictionary new.
-            ].
-            codeTable at:code put:uniCode.
-            nameTable at:code put:characterComment.
-        ]
-    ].
-    codeTable isNil ifTrue:[^ nil].
-    ^ Array with:codeTable with:nameTable
-
-    "
-     ISO8859_1 mappingTables
-     ISO8859_2 mappingTables
-     ISO8859_5 mappingTables
-     KOI8_R mappingTables
-    "
+    (CharacterEncoderCodeGenerator new targetClass:self) generateCode.
+!
+
+generateSubclassCode
+    (CharacterEncoderCodeGenerator new targetClass:self) generateSubclassCode.
 !
 
 mappingURL1
@@ -1320,104 +736,6 @@
     "raise an error: must be redefined in concrete subclass(es)"
     
     ^ nil
-!
-
-readI18NCharmapFrom:src
-    "q&d hack to read i18n character map files"
-    "as an example, see http://std.dkuug.dk/i18n/charmaps/KOI8-U"
-
-    |codeTable nameTable commentChar escapeChar|
-
-    src readStream linesDo:[:line |
-	|l|
-
-	l := line withoutSeparators.
-	(l startsWith:commentChar) ifTrue:[
-	] ifFalse:[
-	    (l startsWith:'<') ifTrue:[
-		|s w code uniCode characterComment rest|
-
-		s := l readStream.
-		w := WriteStream on:(String new:10).
-		s next.
-
-		[                                        
-		    |ch|
-		    [
-
-			ch := s nextOrNil.
-			ch == escapeChar ifTrue:[
-			    s nextOrNil.
-			    true
-			] ifFalse:[
-			    ch notNil and:[ch ~~ $>] 
-			]
-		    ] whileTrue:[ w nextPut:ch ].
-		] doUntil:[(s atEnd or:[s peek ~~ $>])].
-		w := w contents.
-		s skipSeparators.
-		rest := s upToEnd.
-		w = 'code_set_name' ifTrue:[
-		] ifFalse:[
-		    w = 'comment_char' ifTrue:[
-			commentChar := rest first.
-		    ] ifFalse:[
-			w = 'escape_char' ifTrue:[
-			    escapeChar := rest first.
-			] ifFalse:[
-			    s := rest readStream.
-			    s peek == escapeChar ifTrue:[
-				s next.
-				s peek == $x ifTrue:[
-				    s next.
-				    code := Integer readFrom:s radix:16.
-				    s skipSeparators.
-				    s peek == $< ifTrue:[
-					s next.
-					s peek == $U ifTrue:[
-					    s next.
-					    uniCode := Integer readFrom:s radix:16.
-					    s peek == $> ifTrue:[
-						s next.
-						s skipSeparators.
-						characterComment := s upToEnd withoutSeparators.
-						codeTable isNil ifTrue:[
-						    codeTable := IdentityDictionary new.
-						    nameTable := IdentityDictionary new.
-						].
-						codeTable at:code put:uniCode.
-						nameTable at:code put:characterComment.
-
-					    ] ifFalse:[
-						self halt.    
-					    ].
-					] ifFalse:[
-					    self halt.    
-					].
-				    ] ifFalse:[
-					self halt.    
-				    ].
-				] ifFalse:[
-				    self halt.    
-				].
-			    ] ifFalse:[
-				self halt.    
-			    ]
-			]
-		    ]
-		].
-	    ].
-	].
-    ].
-    codeTable isNil ifTrue:[^ nil].
-    ^ Array with:codeTable with:nameTable
-
-    "
-     ISO8859_1 mappingTables
-     ISO8859_2 mappingTables
-     ISO8859_5 mappingTables
-     KOI8_U mappingTables
-    "
 ! !
 
 !CharacterEncoder class methodsFor:'queries'!
@@ -12695,47 +12013,13 @@
     |code "{ Class: SmallInteger }"|
 
     code := codeArg.
-    code <= 16r7F ifTrue:[ ^ code ].
-    code > 16rFF ifTrue:[
-        ^ self decodingError.
+    code <= 16rA3 ifTrue:[
+        ^ super decode:codeArg.
+    ].
+    code > 16rBD ifTrue:[
+        ^ super decode:codeArg.
     ].
     ^ #(
-       "16r0080"    16r2500 " BOX DRAWINGS LIGHT HORIZONTAL " 
-       "16r0081"    16r2502 " BOX DRAWINGS LIGHT VERTICAL " 
-       "16r0082"    16r250C " BOX DRAWINGS LIGHT DOWN AND RIGHT " 
-       "16r0083"    16r2510 " BOX DRAWINGS LIGHT DOWN AND LEFT " 
-       "16r0084"    16r2514 " BOX DRAWINGS LIGHT UP AND RIGHT " 
-       "16r0085"    16r2518 " BOX DRAWINGS LIGHT UP AND LEFT " 
-       "16r0086"    16r251C " BOX DRAWINGS LIGHT VERTICAL AND RIGHT " 
-       "16r0087"    16r2524 " BOX DRAWINGS LIGHT VERTICAL AND LEFT " 
-       "16r0088"    16r252C " BOX DRAWINGS LIGHT DOWN AND HORIZONTAL " 
-       "16r0089"    16r2534 " BOX DRAWINGS LIGHT UP AND HORIZONTAL " 
-       "16r008A"    16r253C " BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL " 
-       "16r008B"    16r2580 " UPPER HALF BLOCK " 
-       "16r008C"    16r2584 " LOWER HALF BLOCK " 
-       "16r008D"    16r2588 " FULL BLOCK " 
-       "16r008E"    16r258C " LEFT HALF BLOCK " 
-       "16r008F"    16r2590 " RIGHT HALF BLOCK " 
-       "16r0090"    16r2591 " LIGHT SHADE " 
-       "16r0091"    16r2592 " MEDIUM SHADE " 
-       "16r0092"    16r2593 " DARK SHADE " 
-       "16r0093"    16r2320 " TOP HALF INTEGRAL " 
-       "16r0094"    16r25A0 " BLACK SQUARE " 
-       "16r0095"    16r2219 " BULLET OPERATOR " 
-       "16r0096"    16r221A " SQUARE ROOT " 
-       "16r0097"    16r2248 " ALMOST EQUAL TO " 
-       "16r0098"    16r2264 " LESS-THAN OR EQUAL TO " 
-       "16r0099"    16r2265 " GREATER-THAN OR EQUAL TO " 
-       "16r009A"    16r00A0 " NO-BREAK SPACE " 
-       "16r009B"    16r2321 " BOTTOM HALF INTEGRAL " 
-       "16r009C"    16r00B0 " DEGREE SIGN " 
-       "16r009D"    16r00B2 " SUPERSCRIPT TWO " 
-       "16r009E"    16r00B7 " MIDDLE DOT " 
-       "16r009F"    16r00F7 " DIVISION SIGN " 
-       "16r00A0"    16r2550 " BOX DRAWINGS DOUBLE HORIZONTAL " 
-       "16r00A1"    16r2551 " BOX DRAWINGS DOUBLE VERTICAL " 
-       "16r00A2"    16r2552 " BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE " 
-       "16r00A3"    16r0451 " CYRILLIC SMALL LETTER IO " 
        "16r00A4"    16r0454 " CYRILLIC SMALL LETTER UKRAINIAN IE " 
        "16r00A5"    16r2554 " BOX DRAWINGS DOUBLE DOWN AND RIGHT " 
        "16r00A6"    16r0456 " CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I " 
@@ -12762,73 +12046,7 @@
        "16r00BB"    16r2569 " BOX DRAWINGS DOUBLE UP AND HORIZONTAL " 
        "16r00BC"    16r256A " BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE " 
        "16r00BD"    16r0490 " CYRILLIC CAPITAL LETTER GHE WITH UPTURN " 
-       "16r00BE"    16r256C " BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL " 
-       "16r00BF"    16r00A9 " COPYRIGHT SIGN " 
-       "16r00C0"    16r044E " CYRILLIC SMALL LETTER YU " 
-       "16r00C1"    16r0430 " CYRILLIC SMALL LETTER A " 
-       "16r00C2"    16r0431 " CYRILLIC SMALL LETTER BE " 
-       "16r00C3"    16r0446 " CYRILLIC SMALL LETTER TSE " 
-       "16r00C4"    16r0434 " CYRILLIC SMALL LETTER DE " 
-       "16r00C5"    16r0435 " CYRILLIC SMALL LETTER IE " 
-       "16r00C6"    16r0444 " CYRILLIC SMALL LETTER EF " 
-       "16r00C7"    16r0433 " CYRILLIC SMALL LETTER GHE " 
-       "16r00C8"    16r0445 " CYRILLIC SMALL LETTER HA " 
-       "16r00C9"    16r0438 " CYRILLIC SMALL LETTER I " 
-       "16r00CA"    16r0439 " CYRILLIC SMALL LETTER SHORT I " 
-       "16r00CB"    16r043A " CYRILLIC SMALL LETTER KA " 
-       "16r00CC"    16r043B " CYRILLIC SMALL LETTER EL " 
-       "16r00CD"    16r043C " CYRILLIC SMALL LETTER EM " 
-       "16r00CE"    16r043D " CYRILLIC SMALL LETTER EN " 
-       "16r00CF"    16r043E " CYRILLIC SMALL LETTER O " 
-       "16r00D0"    16r043F " CYRILLIC SMALL LETTER PE " 
-       "16r00D1"    16r044F " CYRILLIC SMALL LETTER YA " 
-       "16r00D2"    16r0440 " CYRILLIC SMALL LETTER ER " 
-       "16r00D3"    16r0441 " CYRILLIC SMALL LETTER ES " 
-       "16r00D4"    16r0442 " CYRILLIC SMALL LETTER TE " 
-       "16r00D5"    16r0443 " CYRILLIC SMALL LETTER U " 
-       "16r00D6"    16r0436 " CYRILLIC SMALL LETTER ZHE " 
-       "16r00D7"    16r0432 " CYRILLIC SMALL LETTER VE " 
-       "16r00D8"    16r044C " CYRILLIC SMALL LETTER SOFT SIGN " 
-       "16r00D9"    16r044B " CYRILLIC SMALL LETTER YERU " 
-       "16r00DA"    16r0437 " CYRILLIC SMALL LETTER ZE " 
-       "16r00DB"    16r0448 " CYRILLIC SMALL LETTER SHA " 
-       "16r00DC"    16r044D " CYRILLIC SMALL LETTER E " 
-       "16r00DD"    16r0449 " CYRILLIC SMALL LETTER SHCHA " 
-       "16r00DE"    16r0447 " CYRILLIC SMALL LETTER CHE " 
-       "16r00DF"    16r044A " CYRILLIC SMALL LETTER HARD SIGN " 
-       "16r00E0"    16r042E " CYRILLIC CAPITAL LETTER YU " 
-       "16r00E1"    16r0410 " CYRILLIC CAPITAL LETTER A " 
-       "16r00E2"    16r0411 " CYRILLIC CAPITAL LETTER BE " 
-       "16r00E3"    16r0426 " CYRILLIC CAPITAL LETTER TSE " 
-       "16r00E4"    16r0414 " CYRILLIC CAPITAL LETTER DE " 
-       "16r00E5"    16r0415 " CYRILLIC CAPITAL LETTER IE " 
-       "16r00E6"    16r0424 " CYRILLIC CAPITAL LETTER EF " 
-       "16r00E7"    16r0413 " CYRILLIC CAPITAL LETTER GHE " 
-       "16r00E8"    16r0425 " CYRILLIC CAPITAL LETTER HA " 
-       "16r00E9"    16r0418 " CYRILLIC CAPITAL LETTER I " 
-       "16r00EA"    16r0419 " CYRILLIC CAPITAL LETTER SHORT I " 
-       "16r00EB"    16r041A " CYRILLIC CAPITAL LETTER KA " 
-       "16r00EC"    16r041B " CYRILLIC CAPITAL LETTER EL " 
-       "16r00ED"    16r041C " CYRILLIC CAPITAL LETTER EM " 
-       "16r00EE"    16r041D " CYRILLIC CAPITAL LETTER EN " 
-       "16r00EF"    16r041E " CYRILLIC CAPITAL LETTER O " 
-       "16r00F0"    16r041F " CYRILLIC CAPITAL LETTER PE " 
-       "16r00F1"    16r042F " CYRILLIC CAPITAL LETTER YA " 
-       "16r00F2"    16r0420 " CYRILLIC CAPITAL LETTER ER " 
-       "16r00F3"    16r0421 " CYRILLIC CAPITAL LETTER ES " 
-       "16r00F4"    16r0422 " CYRILLIC CAPITAL LETTER TE " 
-       "16r00F5"    16r0423 " CYRILLIC CAPITAL LETTER U " 
-       "16r00F6"    16r0416 " CYRILLIC CAPITAL LETTER ZHE " 
-       "16r00F7"    16r0412 " CYRILLIC CAPITAL LETTER VE " 
-       "16r00F8"    16r042C " CYRILLIC CAPITAL LETTER SOFT SIGN " 
-       "16r00F9"    16r042B " CYRILLIC CAPITAL LETTER YERU " 
-       "16r00FA"    16r0417 " CYRILLIC CAPITAL LETTER ZE " 
-       "16r00FB"    16r0428 " CYRILLIC CAPITAL LETTER SHA " 
-       "16r00FC"    16r042D " CYRILLIC CAPITAL LETTER E " 
-       "16r00FD"    16r0429 " CYRILLIC CAPITAL LETTER SHCHA " 
-       "16r00FE"    16r0427 " CYRILLIC CAPITAL LETTER CHE " 
-       "16r00FF"    16r042A " CYRILLIC CAPITAL LETTER HARD SIGN " 
-       ) at:(code - 16r7F).
+       ) at:(code - 16rA3).
 !
 
 encode:unicodeArg
@@ -12838,63 +12056,17 @@
     |unicode "{ Class: SmallInteger }"|
 
     unicode := unicodeArg.
-    unicode <= 16r7F ifTrue:[ ^ unicode ].
-    unicode > 16r25A0 ifTrue:[
-        ^ self encodingError.
-    ].
-    unicode <= 16r9F ifTrue:[
-        ^ self encodingError.
+    unicode <= 16r403 ifTrue:[
+        ^ super encode:codeArg.
+    ].
+    unicode > 16r256B ifTrue:[
+        ^ super encode:codeArg.
     ].
     unicode <= 16r491 ifTrue:[
-        unicode <= 16rF7 ifTrue:[
-            unicode <= 16rB7 ifTrue:[
-                [
-                    |t|
-                    t := #[
-                       "16r00A0"    16r9A " NO-BREAK SPACE " 
-                       "16r00A1"    16r00 " invalid " 
-                       "16r00A2"    16r00 " invalid " 
-                       "16r00A3"    16r00 " invalid " 
-                       "16r00A4"    16r00 " invalid " 
-                       "16r00A5"    16r00 " invalid " 
-                       "16r00A6"    16r00 " invalid " 
-                       "16r00A7"    16r00 " invalid " 
-                       "16r00A8"    16r00 " invalid " 
-                       "16r00A9"    16rBF " COPYRIGHT SIGN " 
-                       "16r00AA"    16r00 " invalid " 
-                       "16r00AB"    16r00 " invalid " 
-                       "16r00AC"    16r00 " invalid " 
-                       "16r00AD"    16r00 " invalid " 
-                       "16r00AE"    16r00 " invalid " 
-                       "16r00AF"    16r00 " invalid " 
-                       "16r00B0"    16r9C " DEGREE SIGN " 
-                       "16r00B1"    16r00 " invalid " 
-                       "16r00B2"    16r9D " SUPERSCRIPT TWO " 
-                       "16r00B3"    16r00 " invalid " 
-                       "16r00B4"    16r00 " invalid " 
-                       "16r00B5"    16r00 " invalid " 
-                       "16r00B6"    16r00 " invalid " 
-                       "16r00B7"    16r9E " MIDDLE DOT " 
-                       ] at:(unicode - 16r9F).
-                    t == 0 ifFalse:[^ t].
-                    ^ self encodingError
-                ] value.
-            ].
-            unicode <= 16rF6 ifTrue:[
-                ^ self encodingError.
-            ].
-            ^  "16r00F7" 16r009F " DIVISION SIGN " 
-        ].
-        unicode <= 16r400 ifTrue:[
-            ^ self encodingError.
-        ].
         unicode <= 16r457 ifTrue:[
             [
                 |t|
                 t := #[
-                   "16r0401"    16rB3 " CYRILLIC CAPITAL LETTER IO " 
-                   "16r0402"    16r00 " invalid " 
-                   "16r0403"    16r00 " invalid " 
                    "16r0404"    16rB4 " CYRILLIC CAPITAL LETTER UKRAINIAN IE " 
                    "16r0405"    16r00 " invalid " 
                    "16r0406"    16rB6 " CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I " 
@@ -12979,13 +12151,13 @@
                    "16r0455"    16r00 " invalid " 
                    "16r0456"    16rA6 " CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I " 
                    "16r0457"    16rA7 " CYRILLIC SMALL LETTER YI (Ukrainian) " 
-                   ] at:(unicode - 16r400).
+                   ] at:(unicode - 16r403).
                 t == 0 ifFalse:[^ t].
-                ^ self encodingError
+                ^ self decodingError.
             ] value.
         ].
         unicode <= 16r48F ifTrue:[
-            ^ self encodingError.
+            ^ self decodingError..
         ].
         ^ #[
            "16r0490"    16rBD " CYRILLIC CAPITAL LETTER GHE WITH UPTURN " 
@@ -12993,7 +12165,7 @@
            ] at:(unicode - 16r48F).
     ].
     unicode <= 16r2218 ifTrue:[
-        ^ self encodingError.
+        ^ self decodingError..
     ].
     unicode <= 16r2321 ifTrue:[
         unicode <= 16r2265 ifTrue:[
@@ -13004,13 +12176,13 @@
                    ] at:(unicode - 16r2218).
             ].
             unicode <= 16r2247 ifTrue:[
-                ^ self encodingError.
+                ^ self decodingError..
             ].
             unicode == 16r2248 ifTrue:[
                 ^  "16r2248" 16r0097 " ALMOST EQUAL TO " 
             ].
             unicode <= 16r2263 ifTrue:[
-                ^ self encodingError.
+                ^ self decodingError..
             ].
             ^ #[
                "16r2264"    16r98 " LESS-THAN OR EQUAL TO " 
@@ -13018,7 +12190,7 @@
                ] at:(unicode - 16r2263).
         ].
         unicode <= 16r231F ifTrue:[
-            ^ self encodingError.
+            ^ self decodingError..
         ].
         ^ #[
            "16r2320"    16r93 " TOP HALF INTEGRAL " 
@@ -13026,7 +12198,7 @@
            ] at:(unicode - 16r231F).
     ].
     unicode <= 16r24FF ifTrue:[
-        ^ self encodingError.
+        ^ self decodingError..
     ].
     [
         |t|
@@ -13139,62 +12311,9 @@
            "16r2569"    16rBB " BOX DRAWINGS DOUBLE UP AND HORIZONTAL " 
            "16r256A"    16rBC " BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE " 
            "16r256B"    16r00 " invalid " 
-           "16r256C"    16rBE " BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL " 
-           "16r256D"    16r00 " invalid " 
-           "16r256E"    16r00 " invalid " 
-           "16r256F"    16r00 " invalid " 
-           "16r2570"    16r00 " invalid " 
-           "16r2571"    16r00 " invalid " 
-           "16r2572"    16r00 " invalid " 
-           "16r2573"    16r00 " invalid " 
-           "16r2574"    16r00 " invalid " 
-           "16r2575"    16r00 " invalid " 
-           "16r2576"    16r00 " invalid " 
-           "16r2577"    16r00 " invalid " 
-           "16r2578"    16r00 " invalid " 
-           "16r2579"    16r00 " invalid " 
-           "16r257A"    16r00 " invalid " 
-           "16r257B"    16r00 " invalid " 
-           "16r257C"    16r00 " invalid " 
-           "16r257D"    16r00 " invalid " 
-           "16r257E"    16r00 " invalid " 
-           "16r257F"    16r00 " invalid " 
-           "16r2580"    16r8B " UPPER HALF BLOCK " 
-           "16r2581"    16r00 " invalid " 
-           "16r2582"    16r00 " invalid " 
-           "16r2583"    16r00 " invalid " 
-           "16r2584"    16r8C " LOWER HALF BLOCK " 
-           "16r2585"    16r00 " invalid " 
-           "16r2586"    16r00 " invalid " 
-           "16r2587"    16r00 " invalid " 
-           "16r2588"    16r8D " FULL BLOCK " 
-           "16r2589"    16r00 " invalid " 
-           "16r258A"    16r00 " invalid " 
-           "16r258B"    16r00 " invalid " 
-           "16r258C"    16r8E " LEFT HALF BLOCK " 
-           "16r258D"    16r00 " invalid " 
-           "16r258E"    16r00 " invalid " 
-           "16r258F"    16r00 " invalid " 
-           "16r2590"    16r8F " RIGHT HALF BLOCK " 
-           "16r2591"    16r90 " LIGHT SHADE " 
-           "16r2592"    16r91 " MEDIUM SHADE " 
-           "16r2593"    16r92 " DARK SHADE " 
-           "16r2594"    16r00 " invalid " 
-           "16r2595"    16r00 " invalid " 
-           "16r2596"    16r00 " invalid " 
-           "16r2597"    16r00 " invalid " 
-           "16r2598"    16r00 " invalid " 
-           "16r2599"    16r00 " invalid " 
-           "16r259A"    16r00 " invalid " 
-           "16r259B"    16r00 " invalid " 
-           "16r259C"    16r00 " invalid " 
-           "16r259D"    16r00 " invalid " 
-           "16r259E"    16r00 " invalid " 
-           "16r259F"    16r00 " invalid " 
-           "16r25A0"    16r94 " BLACK SQUARE " 
            ] at:(unicode - 16r24FF).
         t == 0 ifFalse:[^ t].
-        ^ self encodingError
+        ^ self decodingError.
     ] value.
 ! !
 
@@ -18142,6 +17261,392 @@
 
 !CharacterEncoder::MAC_Thai class methodsFor:'mapping'!
 
+mapping
+"
+# From: http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/THAI.TXT
+
+#=======================================================================
+#   File name:  THAI.TXT
+#
+#   Contents:   Map (external version) from Mac OS Thai
+#               character set to Unicode 3.2
+#
+#   Copyright:  (c) 1995-2002 by Apple Computer, Inc., all rights
+#               reserved.
+#
+#   Contact:    charsets@apple.com
+#
+#   Changes:
+#
+#      b3,c1 2002-Dec-19    Update mapping for 0xDB to use new Unicode
+#                           3.2 WORD JOINER instead of ZWNBSP (BOM).
+#                           Update URLs. Matches internal utom<b3>.
+#       b02  1999-Sep-22    Update contact e-mail address. Matches
+#                           internal utom<b1>, ufrm<b2>, and Text
+#                           Encoding Converter version 1.5.
+#       n07  1998-Feb-05    Update to match internal utom<n5>, ufrm<n13>
+#                           and Text Encoding Converter version 1.3:
+#                           Use standard Unicodes plus transcoding hints
+#                           instead of single corporate characters; see
+#                           details below. Also update header comments
+#                           to new format.
+#       n04  1995-Nov-17    First version (after fixing some typos).
+#                           Matches internal ufrm<n6>.
+#
+# Standard header:
+# ----------------
+#
+#   Apple, the Apple logo, and Macintosh are trademarks of Apple
+#   Computer, Inc., registered in the United States and other countries.
+#   Unicode is a trademark of Unicode Inc. For the sake of brevity,
+#   throughout this document, 'Macintosh' can be used to refer to
+#   Macintosh computers and 'Unicode' can be used to refer to the
+#   Unicode standard.
+#
+#   Apple makes no warranty or representation, either express or
+#   implied, with respect to these tables, their quality, accuracy, or
+#   fitness for a particular purpose. In no event will Apple be liable
+#   for direct, indirect, special, incidental, or consequential damages 
+#   resulting from any defect or inaccuracy in this document or the
+#   accompanying tables.
+#
+#   These mapping tables and character lists are subject to change.
+#   The latest tables should be available from the following:
+#
+#   <http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/>
+#
+#   For general information about Mac OS encodings and these mapping
+#   tables, see the file 'README.TXT'.
+#
+# Format:
+# -------
+#
+#   Three tab-separated columns;
+#   '#' begins a comment which continues to the end of the line.
+#     Column #1 is the Mac OS Thai code (in hex as 0xNN)
+#     Column #2 is the corresponding Unicode or Unicode sequence
+#       (in hex as 0xNNNN or 0xNNNN+0xNNNN).
+#     Column #3 is a comment containing the Unicode name
+#
+#   The entries are in Mac OS Thai code order.
+#
+#   Some of these mappings require the use of corporate characters.
+#   See the file 'CORPCHAR.TXT' and notes below.
+#
+#   Control character mappings are not shown in this table, following
+#   the conventions of the standard UTC mapping tables. However, the
+#   Mac OS Thai character set uses the standard control characters at
+#   0x00-0x1F and 0x7F.
+#
+# Notes on Mac OS Thai:
+# ---------------------
+#
+#   Codes 0xA1-0xDA and 0xDF-0xFB are the character set from Thai
+#   standard TIS 620-2533, except that the following changes are
+#   made:
+#     0xEE is TRADE MARK SIGN (instead of THAI CHARACTER YAMAKKAN)
+#     0xFA is REGISTERED SIGN (instead of THAI CHARACTER ANGKHANKHU)
+#     0xFB is COPYRIGHT SIGN (instead of THAI CHARACTER KHOMUT)
+#
+#   Codes 0x80-0x82, 0x8D-0x8E, 0x91, 0x9D-0x9E, and 0xDB-0xDE are
+#   various additional punctuation marks (e.g. curly quotes,
+#   ellipsis), no-break space, and two special characters 'word join'
+#   and 'word break'.
+#
+#   Codes 0x83-0x8C, 0x8F, and 0x92-0x9C are for positional variants
+#   of the upper vowels, tone marks, and other signs at 0xD1,
+#   0xD4-0xD7, and 0xE7-0xED. The positional variants would normally
+#   be considered presentation forms only and not characters. In most
+#   cases they are not typed directly; they are selected automatically
+#   at display time by the WorldScript software. However, using the
+#   Thai-DTP keyboard, the presentation forms can in fact be typed
+#   directly using dead keys. Thus they must be treated as real
+#   characters in the Mac OS Thai encoding. They are mapped using
+#   variant tags; see below.
+#
+#   Several code points are undefined and unused (they cannot be
+#   typed using any of the Mac OS Thai keyboard layouts): 0x90, 0x9F,
+#   0xFC-0xFE. These are not shown in the table below.
+#
+# Unicode mapping issues and notes:
+# ---------------------------------
+#
+#   The goals in the Apple mappings provided here are:
+#   - Ensure roundtrip mapping from every character in the Mac OS Thai
+#   character set to Unicode and back
+#   - Use standard Unicode characters as much as possible, to maximize
+#   interchangeability of the resulting Unicode text. Whenever possible,
+#   avoid having content carried by private-use characters.
+#
+#   To satisfy both goals, we use private use characters to mark variants
+#   that are similar to a sequence of one or more standard Unicode
+#   characters.
+#
+#   Apple has defined a block of 32 corporate characters as 'transcoding
+#   hints.' These are used in combination with standard Unicode characters
+#   to force them to be treated in a special way for mapping to other
+#   encodings; they have no other effect. Sixteen of these transcoding
+#   hints are 'grouping hints' - they indicate that the next 2-4 Unicode
+#   characters should be treated as a single entity for transcoding. The
+#   other sixteen transcoding hints are 'variant tags' - they are like
+#   combining characters, and can follow a standard Unicode (or a sequence
+#   consisting of a base character and other combining characters) to
+#   cause it to be treated in a special way for transcoding. These always
+#   terminate a combining-character sequence.
+#
+#   The transcoding coding hints used in this mapping table are four
+#   variant tags in the range 0xF873-75. Since these are combined with
+#   standard Unicode characters, some characters in the Mac OS Thai
+#   character set map to a sequence of two Unicodes instead of a single
+#   Unicode character. For example, the Mac OS Thai character at 0x83 is a
+#   low-left positional variant of THAI CHARACTER MAI EK (the standard
+#   mapping is for the abstract character at 0xE8). So 0x83 is mapped to
+#   0x0E48 (THAI CHARACTER MAI EK) + 0xF875 (a variant tag).
+#
+# Details of mapping changes in each version:
+# -------------------------------------------
+#
+#   Changes from version b02 to version b03/c01:
+#
+#   - Update mapping for 0xDB to use new Unicode 3.2 character U+2060
+#     WORD JOINER instead of U+FEFF ZERO WIDTH NO-BREAK SPACE (BOM)
+#
+#   Changes from version n04 to version n07:
+#
+#   - Changed mappings of the positional variants to use standard
+#   Unicodes + transcoding hint, instead of using single corporate
+#   zone characters. This affected the mappings for the following:
+#   0x83-08C, 0x8F, 0x92-0x9C
+#
+#   - Just comment out unused code points in the table, instead
+#   of mapping them to U+FFFD.
+#
+##################
+
+0x20	0x0020	# SPACE
+0x21	0x0021	# EXCLAMATION MARK
+0x22	0x0022	# QUOTATION MARK
+0x23	0x0023	# NUMBER SIGN
+0x24	0x0024	# DOLLAR SIGN
+0x25	0x0025	# PERCENT SIGN
+0x26	0x0026	# AMPERSAND
+0x27	0x0027	# APOSTROPHE
+0x28	0x0028	# LEFT PARENTHESIS
+0x29	0x0029	# RIGHT PARENTHESIS
+0x2A	0x002A	# ASTERISK
+0x2B	0x002B	# PLUS SIGN
+0x2C	0x002C	# COMMA
+0x2D	0x002D	# HYPHEN-MINUS
+0x2E	0x002E	# FULL STOP
+0x2F	0x002F	# SOLIDUS
+0x30	0x0030	# DIGIT ZERO
+0x31	0x0031	# DIGIT ONE
+0x32	0x0032	# DIGIT TWO
+0x33	0x0033	# DIGIT THREE
+0x34	0x0034	# DIGIT FOUR
+0x35	0x0035	# DIGIT FIVE
+0x36	0x0036	# DIGIT SIX
+0x37	0x0037	# DIGIT SEVEN
+0x38	0x0038	# DIGIT EIGHT
+0x39	0x0039	# DIGIT NINE
+0x3A	0x003A	# COLON
+0x3B	0x003B	# SEMICOLON
+0x3C	0x003C	# LESS-THAN SIGN
+0x3D	0x003D	# EQUALS SIGN
+0x3E	0x003E	# GREATER-THAN SIGN
+0x3F	0x003F	# QUESTION MARK
+0x40	0x0040	# COMMERCIAL AT
+0x41	0x0041	# LATIN CAPITAL LETTER A
+0x42	0x0042	# LATIN CAPITAL LETTER B
+0x43	0x0043	# LATIN CAPITAL LETTER C
+0x44	0x0044	# LATIN CAPITAL LETTER D
+0x45	0x0045	# LATIN CAPITAL LETTER E
+0x46	0x0046	# LATIN CAPITAL LETTER F
+0x47	0x0047	# LATIN CAPITAL LETTER G
+0x48	0x0048	# LATIN CAPITAL LETTER H
+0x49	0x0049	# LATIN CAPITAL LETTER I
+0x4A	0x004A	# LATIN CAPITAL LETTER J
+0x4B	0x004B	# LATIN CAPITAL LETTER K
+0x4C	0x004C	# LATIN CAPITAL LETTER L
+0x4D	0x004D	# LATIN CAPITAL LETTER M
+0x4E	0x004E	# LATIN CAPITAL LETTER N
+0x4F	0x004F	# LATIN CAPITAL LETTER O
+0x50	0x0050	# LATIN CAPITAL LETTER P
+0x51	0x0051	# LATIN CAPITAL LETTER Q
+0x52	0x0052	# LATIN CAPITAL LETTER R
+0x53	0x0053	# LATIN CAPITAL LETTER S
+0x54	0x0054	# LATIN CAPITAL LETTER T
+0x55	0x0055	# LATIN CAPITAL LETTER U
+0x56	0x0056	# LATIN CAPITAL LETTER V
+0x57	0x0057	# LATIN CAPITAL LETTER W
+0x58	0x0058	# LATIN CAPITAL LETTER X
+0x59	0x0059	# LATIN CAPITAL LETTER Y
+0x5A	0x005A	# LATIN CAPITAL LETTER Z
+0x5B	0x005B	# LEFT SQUARE BRACKET
+0x5C	0x005C	# REVERSE SOLIDUS
+0x5D	0x005D	# RIGHT SQUARE BRACKET
+0x5E	0x005E	# CIRCUMFLEX ACCENT
+0x5F	0x005F	# LOW LINE
+0x60	0x0060	# GRAVE ACCENT
+0x61	0x0061	# LATIN SMALL LETTER A
+0x62	0x0062	# LATIN SMALL LETTER B
+0x63	0x0063	# LATIN SMALL LETTER C
+0x64	0x0064	# LATIN SMALL LETTER D
+0x65	0x0065	# LATIN SMALL LETTER E
+0x66	0x0066	# LATIN SMALL LETTER F
+0x67	0x0067	# LATIN SMALL LETTER G
+0x68	0x0068	# LATIN SMALL LETTER H
+0x69	0x0069	# LATIN SMALL LETTER I
+0x6A	0x006A	# LATIN SMALL LETTER J
+0x6B	0x006B	# LATIN SMALL LETTER K
+0x6C	0x006C	# LATIN SMALL LETTER L
+0x6D	0x006D	# LATIN SMALL LETTER M
+0x6E	0x006E	# LATIN SMALL LETTER N
+0x6F	0x006F	# LATIN SMALL LETTER O
+0x70	0x0070	# LATIN SMALL LETTER P
+0x71	0x0071	# LATIN SMALL LETTER Q
+0x72	0x0072	# LATIN SMALL LETTER R
+0x73	0x0073	# LATIN SMALL LETTER S
+0x74	0x0074	# LATIN SMALL LETTER T
+0x75	0x0075	# LATIN SMALL LETTER U
+0x76	0x0076	# LATIN SMALL LETTER V
+0x77	0x0077	# LATIN SMALL LETTER W
+0x78	0x0078	# LATIN SMALL LETTER X
+0x79	0x0079	# LATIN SMALL LETTER Y
+0x7A	0x007A	# LATIN SMALL LETTER Z
+0x7B	0x007B	# LEFT CURLY BRACKET
+0x7C	0x007C	# VERTICAL LINE
+0x7D	0x007D	# RIGHT CURLY BRACKET
+0x7E	0x007E	# TILDE
+#
+0x80	0x00AB	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+0x81	0x00BB	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0x82	0x2026	# HORIZONTAL ELLIPSIS
+0x83	0x0E48+0xF875	# THAI CHARACTER MAI EK, low left position
+0x84	0x0E49+0xF875	# THAI CHARACTER MAI THO, low left position
+0x85	0x0E4A+0xF875	# THAI CHARACTER MAI TRI, low left position
+0x86	0x0E4B+0xF875	# THAI CHARACTER MAI CHATTAWA, low left position
+0x87	0x0E4C+0xF875	# THAI CHARACTER THANTHAKHAT, low left position
+0x88	0x0E48+0xF873	# THAI CHARACTER MAI EK, low position
+0x89	0x0E49+0xF873	# THAI CHARACTER MAI THO, low position
+0x8A	0x0E4A+0xF873	# THAI CHARACTER MAI TRI, low position
+0x8B	0x0E4B+0xF873	# THAI CHARACTER MAI CHATTAWA, low position
+0x8C	0x0E4C+0xF873	# THAI CHARACTER THANTHAKHAT, low position
+0x8D	0x201C	# LEFT DOUBLE QUOTATION MARK
+0x8E	0x201D	# RIGHT DOUBLE QUOTATION MARK
+0x8F	0x0E4D+0xF874	# THAI CHARACTER NIKHAHIT, left position
+#
+0x91	0x2022	# BULLET
+0x92	0x0E31+0xF874	# THAI CHARACTER MAI HAN-AKAT, left position
+0x93	0x0E47+0xF874	# THAI CHARACTER MAITAIKHU, left position
+0x94	0x0E34+0xF874	# THAI CHARACTER SARA I, left position
+0x95	0x0E35+0xF874	# THAI CHARACTER SARA II, left position
+0x96	0x0E36+0xF874	# THAI CHARACTER SARA UE, left position
+0x97	0x0E37+0xF874	# THAI CHARACTER SARA UEE, left position
+0x98	0x0E48+0xF874	# THAI CHARACTER MAI EK, left position
+0x99	0x0E49+0xF874	# THAI CHARACTER MAI THO, left position
+0x9A	0x0E4A+0xF874	# THAI CHARACTER MAI TRI, left position
+0x9B	0x0E4B+0xF874	# THAI CHARACTER MAI CHATTAWA, left position
+0x9C	0x0E4C+0xF874	# THAI CHARACTER THANTHAKHAT, left position
+0x9D	0x2018	# LEFT SINGLE QUOTATION MARK
+0x9E	0x2019	# RIGHT SINGLE QUOTATION MARK
+#
+0xA0	0x00A0	# NO-BREAK SPACE
+0xA1	0x0E01	# THAI CHARACTER KO KAI
+0xA2	0x0E02	# THAI CHARACTER KHO KHAI
+0xA3	0x0E03	# THAI CHARACTER KHO KHUAT
+0xA4	0x0E04	# THAI CHARACTER KHO KHWAI
+0xA5	0x0E05	# THAI CHARACTER KHO KHON
+0xA6	0x0E06	# THAI CHARACTER KHO RAKHANG
+0xA7	0x0E07	# THAI CHARACTER NGO NGU
+0xA8	0x0E08	# THAI CHARACTER CHO CHAN
+0xA9	0x0E09	# THAI CHARACTER CHO CHING
+0xAA	0x0E0A	# THAI CHARACTER CHO CHANG
+0xAB	0x0E0B	# THAI CHARACTER SO SO
+0xAC	0x0E0C	# THAI CHARACTER CHO CHOE
+0xAD	0x0E0D	# THAI CHARACTER YO YING
+0xAE	0x0E0E	# THAI CHARACTER DO CHADA
+0xAF	0x0E0F	# THAI CHARACTER TO PATAK
+0xB0	0x0E10	# THAI CHARACTER THO THAN
+0xB1	0x0E11	# THAI CHARACTER THO NANGMONTHO
+0xB2	0x0E12	# THAI CHARACTER THO PHUTHAO
+0xB3	0x0E13	# THAI CHARACTER NO NEN
+0xB4	0x0E14	# THAI CHARACTER DO DEK
+0xB5	0x0E15	# THAI CHARACTER TO TAO
+0xB6	0x0E16	# THAI CHARACTER THO THUNG
+0xB7	0x0E17	# THAI CHARACTER THO THAHAN
+0xB8	0x0E18	# THAI CHARACTER THO THONG
+0xB9	0x0E19	# THAI CHARACTER NO NU
+0xBA	0x0E1A	# THAI CHARACTER BO BAIMAI
+0xBB	0x0E1B	# THAI CHARACTER PO PLA
+0xBC	0x0E1C	# THAI CHARACTER PHO PHUNG
+0xBD	0x0E1D	# THAI CHARACTER FO FA
+0xBE	0x0E1E	# THAI CHARACTER PHO PHAN
+0xBF	0x0E1F	# THAI CHARACTER FO FAN
+0xC0	0x0E20	# THAI CHARACTER PHO SAMPHAO
+0xC1	0x0E21	# THAI CHARACTER MO MA
+0xC2	0x0E22	# THAI CHARACTER YO YAK
+0xC3	0x0E23	# THAI CHARACTER RO RUA
+0xC4	0x0E24	# THAI CHARACTER RU
+0xC5	0x0E25	# THAI CHARACTER LO LING
+0xC6	0x0E26	# THAI CHARACTER LU
+0xC7	0x0E27	# THAI CHARACTER WO WAEN
+0xC8	0x0E28	# THAI CHARACTER SO SALA
+0xC9	0x0E29	# THAI CHARACTER SO RUSI
+0xCA	0x0E2A	# THAI CHARACTER SO SUA
+0xCB	0x0E2B	# THAI CHARACTER HO HIP
+0xCC	0x0E2C	# THAI CHARACTER LO CHULA
+0xCD	0x0E2D	# THAI CHARACTER O ANG
+0xCE	0x0E2E	# THAI CHARACTER HO NOKHUK
+0xCF	0x0E2F	# THAI CHARACTER PAIYANNOI
+0xD0	0x0E30	# THAI CHARACTER SARA A
+0xD1	0x0E31	# THAI CHARACTER MAI HAN-AKAT
+0xD2	0x0E32	# THAI CHARACTER SARA AA
+0xD3	0x0E33	# THAI CHARACTER SARA AM
+0xD4	0x0E34	# THAI CHARACTER SARA I
+0xD5	0x0E35	# THAI CHARACTER SARA II
+0xD6	0x0E36	# THAI CHARACTER SARA UE
+0xD7	0x0E37	# THAI CHARACTER SARA UEE
+0xD8	0x0E38	# THAI CHARACTER SARA U
+0xD9	0x0E39	# THAI CHARACTER SARA UU
+0xDA	0x0E3A	# THAI CHARACTER PHINTHU
+0xDB	0x2060	# WORD JOINER # for Unicode 3.2 and later
+0xDC	0x200B	# ZERO WIDTH SPACE
+0xDD	0x2013	# EN DASH
+0xDE	0x2014	# EM DASH
+0xDF	0x0E3F	# THAI CURRENCY SYMBOL BAHT
+0xE0	0x0E40	# THAI CHARACTER SARA E
+0xE1	0x0E41	# THAI CHARACTER SARA AE
+0xE2	0x0E42	# THAI CHARACTER SARA O
+0xE3	0x0E43	# THAI CHARACTER SARA AI MAIMUAN
+0xE4	0x0E44	# THAI CHARACTER SARA AI MAIMALAI
+0xE5	0x0E45	# THAI CHARACTER LAKKHANGYAO
+0xE6	0x0E46	# THAI CHARACTER MAIYAMOK
+0xE7	0x0E47	# THAI CHARACTER MAITAIKHU
+0xE8	0x0E48	# THAI CHARACTER MAI EK
+0xE9	0x0E49	# THAI CHARACTER MAI THO
+0xEA	0x0E4A	# THAI CHARACTER MAI TRI
+0xEB	0x0E4B	# THAI CHARACTER MAI CHATTAWA
+0xEC	0x0E4C	# THAI CHARACTER THANTHAKHAT
+0xED	0x0E4D	# THAI CHARACTER NIKHAHIT
+0xEE	0x2122	# TRADE MARK SIGN
+0xEF	0x0E4F	# THAI CHARACTER FONGMAN
+0xF0	0x0E50	# THAI DIGIT ZERO
+0xF1	0x0E51	# THAI DIGIT ONE
+0xF2	0x0E52	# THAI DIGIT TWO
+0xF3	0x0E53	# THAI DIGIT THREE
+0xF4	0x0E54	# THAI DIGIT FOUR
+0xF5	0x0E55	# THAI DIGIT FIVE
+0xF6	0x0E56	# THAI DIGIT SIX
+0xF7	0x0E57	# THAI DIGIT SEVEN
+0xF8	0x0E58	# THAI DIGIT EIGHT
+0xF9	0x0E59	# THAI DIGIT NINE
+0xFA	0x00AE	# REGISTERED SIGN
+0xFB	0x00A9	# COPYRIGHT SIGN
+
+"
+!
+
 mappingURL1_relativePathName
     ^ 'VENDORS/APPLE/THAI.TXT'
 ! !
@@ -18497,6 +18002,355 @@
 
 !CharacterEncoder::MS_Ansi class methodsFor:'mapping'!
 
+mapping
+"
+# From: http://std.dkuug.dk/i18n/charmaps/CP1252
+
+<code_set_name> CP1252
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% repertoiremap: mnemonic,ds
+%  source: UNICODE 1.0
+
+% alias MS-ANSI
+CHARMAP
+<NU>                   /x00   <U0000> NULL (NUL)
+<SH>                   /x01   <U0001> START OF HEADING (SOH)
+<SX>                   /x02   <U0002> START OF TEXT (STX)
+<EX>                   /x03   <U0003> END OF TEXT (ETX)
+<ET>                   /x04   <U0004> END OF TRANSMISSION (EOT)
+<EQ>                   /x05   <U0005> ENQUIRY (ENQ)
+<AK>                   /x06   <U0006> ACKNOWLEDGE (ACK)
+<BL>                   /x07   <U0007> BELL (BEL)
+<BS>                   /x08   <U0008> BACKSPACE (BS)
+<HT>                   /x09   <U0009> CHARACTER TABULATION (HT)
+<LF>                   /x0A   <U000A> LINE FEED (LF)
+<VT>                   /x0B   <U000B> LINE TABULATION (VT)
+<FF>                   /x0C   <U000C> FORM FEED (FF)
+<CR>                   /x0D   <U000D> CARRIAGE RETURN (CR)
+<SO>                   /x0E   <U000E> SHIFT OUT (SO)
+<SI>                   /x0F   <U000F> SHIFT IN (SI)
+<DL>                   /x10   <U0010> DATALINK ESCAPE (DLE)
+<D1>                   /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<D2>                   /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<D3>                   /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<D4>                   /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NK>                   /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SY>                   /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<EB>                   /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CN>                   /x18   <U0018> CANCEL (CAN)
+<EM>                   /x19   <U0019> END OF MEDIUM (EM)
+<SB>                   /x1A   <U001A> SUBSTITUTE (SUB)
+<EC>                   /x1B   <U001B> ESCAPE (ESC)
+<FS>                   /x1C   <U001C> FILE SEPARATOR (IS4)
+<GS>                   /x1D   <U001D> GROUP SEPARATOR (IS3)
+<RS>                   /x1E   <U001E> RECORD SEPARATOR (IS2)
+<US>                   /x1F   <U001F> UNIT SEPARATOR (IS1)
+<SP>                   /x20   <U0020> SPACE
+<!!>                    /x21   <U0021> EXCLAMATION MARK
+<'>                    /x22   <U0022> QUOTATION MARK
+<Nb>                   /x23   <U0023> NUMBER SIGN
+<DO>                   /x24   <U0024> DOLLAR SIGN
+<%>                    /x25   <U0025> PERCENT SIGN
+<&>                    /x26   <U0026> AMPERSAND
+<'>                    /x27   <U0027> APOSTROPHE
+<(>                    /x28   <U0028> LEFT PARENTHESIS
+<)>                    /x29   <U0029> RIGHT PARENTHESIS
+<*>                    /x2A   <U002A> ASTERISK
+<+>                    /x2B   <U002B> PLUS SIGN
+<,>                    /x2C   <U002C> COMMA
+<->                    /x2D   <U002D> HYPHEN-MINUS
+<.>                    /x2E   <U002E> FULL STOP
+<//>                   /x2F   <U002F> SOLIDUS
+<0>                    /x30   <U0030> DIGIT ZERO
+<1>                    /x31   <U0031> DIGIT ONE
+<2>                    /x32   <U0032> DIGIT TWO
+<3>                    /x33   <U0033> DIGIT THREE
+<4>                    /x34   <U0034> DIGIT FOUR
+<5>                    /x35   <U0035> DIGIT FIVE
+<6>                    /x36   <U0036> DIGIT SIX
+<7>                    /x37   <U0037> DIGIT SEVEN
+<8>                    /x38   <U0038> DIGIT EIGHT
+<9>                    /x39   <U0039> DIGIT NINE
+<:>                    /x3A   <U003A> COLON
+<;>                    /x3B   <U003B> SEMICOLON
+<<>                    /x3C   <U003C> LESS-THAN SIGN
+<=>                    /x3D   <U003D> EQUALS SIGN
+</>>                   /x3E   <U003E> GREATER-THAN SIGN
+<?>                    /x3F   <U003F> QUESTION MARK
+<At>                   /x40   <U0040> COMMERCIAL AT
+<A>                    /x41   <U0041> LATIN CAPITAL LETTER A
+<B>                    /x42   <U0042> LATIN CAPITAL LETTER B
+<C>                    /x43   <U0043> LATIN CAPITAL LETTER C
+<D>                    /x44   <U0044> LATIN CAPITAL LETTER D
+<E>                    /x45   <U0045> LATIN CAPITAL LETTER E
+<F>                    /x46   <U0046> LATIN CAPITAL LETTER F
+<G>                    /x47   <U0047> LATIN CAPITAL LETTER G
+<H>                    /x48   <U0048> LATIN CAPITAL LETTER H
+<I>                    /x49   <U0049> LATIN CAPITAL LETTER I
+<J>                    /x4A   <U004A> LATIN CAPITAL LETTER J
+<K>                    /x4B   <U004B> LATIN CAPITAL LETTER K
+<L>                    /x4C   <U004C> LATIN CAPITAL LETTER L
+<M>                    /x4D   <U004D> LATIN CAPITAL LETTER M
+<N>                    /x4E   <U004E> LATIN CAPITAL LETTER N
+<O>                    /x4F   <U004F> LATIN CAPITAL LETTER O
+<P>                    /x50   <U0050> LATIN CAPITAL LETTER P
+<Q>                    /x51   <U0051> LATIN CAPITAL LETTER Q
+<R>                    /x52   <U0052> LATIN CAPITAL LETTER R
+<S>                    /x53   <U0053> LATIN CAPITAL LETTER S
+<T>                    /x54   <U0054> LATIN CAPITAL LETTER T
+<U>                    /x55   <U0055> LATIN CAPITAL LETTER U
+<V>                    /x56   <U0056> LATIN CAPITAL LETTER V
+<W>                    /x57   <U0057> LATIN CAPITAL LETTER W
+<X>                    /x58   <U0058> LATIN CAPITAL LETTER X
+<Y>                    /x59   <U0059> LATIN CAPITAL LETTER Y
+<Z>                    /x5A   <U005A> LATIN CAPITAL LETTER Z
+<<(>                   /x5B   <U005B> LEFT SQUARE BRACKET
+<////>                 /x5C   <U005C> REVERSE SOLIDUS
+<)/>>                  /x5D   <U005D> RIGHT SQUARE BRACKET
+<'/>>                  /x5E   <U005E> CIRCUMFLEX ACCENT
+<_>                    /x5F   <U005F> LOW LINE
+<'!!>                   /x60   <U0060> GRAVE ACCENT
+<a>                    /x61   <U0061> LATIN SMALL LETTER A
+<b>                    /x62   <U0062> LATIN SMALL LETTER B
+<c>                    /x63   <U0063> LATIN SMALL LETTER C
+<d>                    /x64   <U0064> LATIN SMALL LETTER D
+<e>                    /x65   <U0065> LATIN SMALL LETTER E
+<f>                    /x66   <U0066> LATIN SMALL LETTER F
+<g>                    /x67   <U0067> LATIN SMALL LETTER G
+<h>                    /x68   <U0068> LATIN SMALL LETTER H
+<i>                    /x69   <U0069> LATIN SMALL LETTER I
+<j>                    /x6A   <U006A> LATIN SMALL LETTER J
+<k>                    /x6B   <U006B> LATIN SMALL LETTER K
+<l>                    /x6C   <U006C> LATIN SMALL LETTER L
+<m>                    /x6D   <U006D> LATIN SMALL LETTER M
+<n>                    /x6E   <U006E> LATIN SMALL LETTER N
+<o>                    /x6F   <U006F> LATIN SMALL LETTER O
+<p>                    /x70   <U0070> LATIN SMALL LETTER P
+<q>                    /x71   <U0071> LATIN SMALL LETTER Q
+<r>                    /x72   <U0072> LATIN SMALL LETTER R
+<s>                    /x73   <U0073> LATIN SMALL LETTER S
+<t>                    /x74   <U0074> LATIN SMALL LETTER T
+<u>                    /x75   <U0075> LATIN SMALL LETTER U
+<v>                    /x76   <U0076> LATIN SMALL LETTER V
+<w>                    /x77   <U0077> LATIN SMALL LETTER W
+<x>                    /x78   <U0078> LATIN SMALL LETTER X
+<y>                    /x79   <U0079> LATIN SMALL LETTER Y
+<z>                    /x7A   <U007A> LATIN SMALL LETTER Z
+<(!!>                   /x7B   <U007B> LEFT CURLY BRACKET
+<!!!!>                   /x7C   <U007C> VERTICAL LINE
+<!!)>                   /x7D   <U007D> RIGHT CURLY BRACKET
+<'?>                   /x7E   <U007E> TILDE
+<DT>                   /x7F   <U007F> DELETE (DEL)
+<.9>                   /x82   <U201A> SINGLE LOW-9 QUOTATION MARK
+<f2>                   /x83   <U0192> LATIN SMALL LETTER F WITH HOOK
+<:9>                   /x84   <U201E> DOUBLE LOW-9 QUOTATION MARK
+<.3>                   /x85   <U2026> HORIZONTAL ELLIPSIS
+<//->                  /x86   <U2020> DAGGER
+<//=>                  /x87   <U2021> DOUBLE DAGGER
+<1/>>                  /x88   <U02C6> MODIFIER LETTER CIRCUMFLEX ACCENT
+<%0>                   /x89   <U2030> PER MILLE SIGN
+<S<>                   /x8A   <U0160> LATIN CAPITAL LETTER S WITH CARON
+<<1>                   /x8B   <U2039> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+<OE>                   /x8C   <U0152> LATIN CAPITAL LIGATURE OE
+<'6>                   /x91   <U2018> LEFT SINGLE QUOTATION MARK
+<'9>                   /x92   <U2019> RIGHT SINGLE QUOTATION MARK
+<'6>                   /x93   <U201C> LEFT DOUBLE QUOTATION MARK
+<'9>                   /x94   <U201D> RIGHT DOUBLE QUOTATION MARK
+<sb>                   /x95   <U2022> BULLET
+<-N>                   /x96   <U2013> EN DASH
+<-M>                   /x97   <U2014> EM DASH
+<1?>                   /x98   <U02DC> SMALL TILDE
+<TM>                   /x99   <U2122> TRADE MARK SIGN
+<s<>                   /x9A   <U0161> LATIN SMALL LETTER S WITH CARON
+</>1>                  /x9B   <U203A> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+<oe>                   /x9C   <U0153> LATIN SMALL LIGATURE OE
+<Y:>                   /x9F   <U0178> LATIN CAPITAL LETTER Y WITH DIAERESIS
+<NS>                   /xA0   <U00A0> NO-BREAK SPACE
+<!!I>                   /xA1   <U00A1> INVERTED EXCLAMATION MARK
+<Ct>                   /xA2   <U00A2> CENT SIGN
+<Pd>                   /xA3   <U00A3> POUND SIGN
+<Cu>                   /xA4   <U00A4> CURRENCY SIGN
+<Ye>                   /xA5   <U00A5> YEN SIGN
+<BB>                   /xA6   <U00A6> BROKEN BAR
+<SE>                   /xA7   <U00A7> SECTION SIGN
+<':>                   /xA8   <U00A8> DIAERESIS
+<Co>                   /xA9   <U00A9> COPYRIGHT SIGN
+<-a>                   /xAA   <U00AA> FEMININE ORDINAL INDICATOR
+<<<>                   /xAB   <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<NO>                   /xAC   <U00AC> NOT SIGN
+<-->                   /xAD   <U00AD> SOFT HYPHEN
+<Rg>                   /xAE   <U00AE> REGISTERED SIGN
+<'m>                   /xAF   <U00AF> MACRON
+<DG>                   /xB0   <U00B0> DEGREE SIGN
+<+->                   /xB1   <U00B1> PLUS-MINUS SIGN
+<2S>                   /xB2   <U00B2> SUPERSCRIPT TWO
+<3S>                   /xB3   <U00B3> SUPERSCRIPT THREE
+<''>                   /xB4   <U00B4> ACUTE ACCENT
+<My>                   /xB5   <U00B5> MICRO SIGN
+<PI>                   /xB6   <U00B6> PILCROW SIGN
+<.M>                   /xB7   <U00B7> MIDDLE DOT
+<',>                   /xB8   <U00B8> CEDILLA
+<1S>                   /xB9   <U00B9> SUPERSCRIPT ONE
+<-o>                   /xBA   <U00BA> MASCULINE ORDINAL INDICATOR
+</>/>>                 /xBB   <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<14>                   /xBC   <U00BC> VULGAR FRACTION ONE QUARTER
+<12>                   /xBD   <U00BD> VULGAR FRACTION ONE HALF
+<34>                   /xBE   <U00BE> VULGAR FRACTION THREE QUARTERS
+<?I>                   /xBF   <U00BF> INVERTED QUESTION MARK
+<A!!>                   /xC0   <U00C0> LATIN CAPITAL LETTER A WITH GRAVE
+<A'>                   /xC1   <U00C1> LATIN CAPITAL LETTER A WITH ACUTE
+<A/>>                  /xC2   <U00C2> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<A?>                   /xC3   <U00C3> LATIN CAPITAL LETTER A WITH TILDE
+<A:>                   /xC4   <U00C4> LATIN CAPITAL LETTER A WITH DIAERESIS
+<AA>                   /xC5   <U00C5> LATIN CAPITAL LETTER A WITH RING ABOVE
+<AE>                   /xC6   <U00C6> LATIN CAPITAL LETTER AE
+<C,>                   /xC7   <U00C7> LATIN CAPITAL LETTER C WITH CEDILLA
+<E!!>                   /xC8   <U00C8> LATIN CAPITAL LETTER E WITH GRAVE
+<E'>                   /xC9   <U00C9> LATIN CAPITAL LETTER E WITH ACUTE
+<E/>>                  /xCA   <U00CA> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<E:>                   /xCB   <U00CB> LATIN CAPITAL LETTER E WITH DIAERESIS
+<I!!>                   /xCC   <U00CC> LATIN CAPITAL LETTER I WITH GRAVE
+<I'>                   /xCD   <U00CD> LATIN CAPITAL LETTER I WITH ACUTE
+<I/>>                  /xCE   <U00CE> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<I:>                   /xCF   <U00CF> LATIN CAPITAL LETTER I WITH DIAERESIS
+<D->                   /xD0   <U00D0> LATIN CAPITAL LETTER ETH (Icelandic)
+<N?>                   /xD1   <U00D1> LATIN CAPITAL LETTER N WITH TILDE
+<O!!>                   /xD2   <U00D2> LATIN CAPITAL LETTER O WITH GRAVE
+<O'>                   /xD3   <U00D3> LATIN CAPITAL LETTER O WITH ACUTE
+<O/>>                  /xD4   <U00D4> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<O?>                   /xD5   <U00D5> LATIN CAPITAL LETTER O WITH TILDE
+<O:>                   /xD6   <U00D6> LATIN CAPITAL LETTER O WITH DIAERESIS
+<*X>                   /xD7   <U00D7> MULTIPLICATION SIGN
+<O//>                  /xD8   <U00D8> LATIN CAPITAL LETTER O WITH STROKE
+<U!!>                   /xD9   <U00D9> LATIN CAPITAL LETTER U WITH GRAVE
+<U'>                   /xDA   <U00DA> LATIN CAPITAL LETTER U WITH ACUTE
+<U/>>                  /xDB   <U00DB> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<U:>                   /xDC   <U00DC> LATIN CAPITAL LETTER U WITH DIAERESIS
+<Y'>                   /xDD   <U00DD> LATIN CAPITAL LETTER Y WITH ACUTE
+<TH>                   /xDE   <U00DE> LATIN CAPITAL LETTER THORN (Icelandic)
+<ss>                   /xDF   <U00DF> LATIN SMALL LETTER SHARP S (German)
+<a!!>                   /xE0   <U00E0> LATIN SMALL LETTER A WITH GRAVE
+<a'>                   /xE1   <U00E1> LATIN SMALL LETTER A WITH ACUTE
+<a/>>                  /xE2   <U00E2> LATIN SMALL LETTER A WITH CIRCUMFLEX
+<a?>                   /xE3   <U00E3> LATIN SMALL LETTER A WITH TILDE
+<a:>                   /xE4   <U00E4> LATIN SMALL LETTER A WITH DIAERESIS
+<aa>                   /xE5   <U00E5> LATIN SMALL LETTER A WITH RING ABOVE
+<ae>                   /xE6   <U00E6> LATIN SMALL LETTER AE
+<c,>                   /xE7   <U00E7> LATIN SMALL LETTER C WITH CEDILLA
+<e!!>                   /xE8   <U00E8> LATIN SMALL LETTER E WITH GRAVE
+<e'>                   /xE9   <U00E9> LATIN SMALL LETTER E WITH ACUTE
+<e/>>                  /xEA   <U00EA> LATIN SMALL LETTER E WITH CIRCUMFLEX
+<e:>                   /xEB   <U00EB> LATIN SMALL LETTER E WITH DIAERESIS
+<i!!>                   /xEC   <U00EC> LATIN SMALL LETTER I WITH GRAVE
+<i'>                   /xED   <U00ED> LATIN SMALL LETTER I WITH ACUTE
+<i/>>                  /xEE   <U00EE> LATIN SMALL LETTER I WITH CIRCUMFLEX
+<i:>                   /xEF   <U00EF> LATIN SMALL LETTER I WITH DIAERESIS
+<d->                   /xF0   <U00F0> LATIN SMALL LETTER ETH (Icelandic)
+<n?>                   /xF1   <U00F1> LATIN SMALL LETTER N WITH TILDE
+<o!!>                   /xF2   <U00F2> LATIN SMALL LETTER O WITH GRAVE
+<o'>                   /xF3   <U00F3> LATIN SMALL LETTER O WITH ACUTE
+<o/>>                  /xF4   <U00F4> LATIN SMALL LETTER O WITH CIRCUMFLEX
+<o?>                   /xF5   <U00F5> LATIN SMALL LETTER O WITH TILDE
+<o:>                   /xF6   <U00F6> LATIN SMALL LETTER O WITH DIAERESIS
+<-:>                   /xF7   <U00F7> DIVISION SIGN
+<o//>                  /xF8   <U00F8> LATIN SMALL LETTER O WITH STROKE
+<u!!>                   /xF9   <U00F9> LATIN SMALL LETTER U WITH GRAVE
+<u'>                   /xFA   <U00FA> LATIN SMALL LETTER U WITH ACUTE
+<u/>>                  /xFB   <U00FB> LATIN SMALL LETTER U WITH CIRCUMFLEX
+<u:>                   /xFC   <U00FC> LATIN SMALL LETTER U WITH DIAERESIS
+<y'>                   /xFD   <U00FD> LATIN SMALL LETTER Y WITH ACUTE
+<th>                   /xFE   <U00FE> LATIN SMALL LETTER THORN (Icelandic)
+<y:>                   /xFF   <U00FF> LATIN SMALL LETTER Y WITH DIAERESIS
+<NUL>                  /x00   <U0000> NUL
+<SOH>                  /x01   <U0001> START OF HEADING (SOH)
+<STX>                  /x02   <U0002> START OF TEXT (STX)
+<ETX>                  /x03   <U0003> END OF TEXT (ETX)
+<EOT>                  /x04   <U0004> END OF TRANSMISSION (EOT)
+<ENQ>                  /x05   <U0005> ENQUIRY (ENQ)
+<ACK>                  /x06   <U0006> ACKNOWLEDGE (ACK)
+<alert>                /x07   <U0007> BELL (BEL)
+<BEL>                  /x07   <U0007> BELL (BEL)
+<backspace>            /x08   <U0008> BACKSPACE (BS)
+<tab>                  /x09   <U0009> CHARACTER TABULATION (HT)
+<newline>              /x0A   <U000A> LINE FEED (LF)
+<vertical-tab>         /x0B   <U000B> LINE TABULATION (VT)
+<form-feed>            /x0C   <U000C> FORM FEED (FF)
+<carriage-return>      /x0D   <U000D> CARRIAGE RETURN (CR)
+<DLE>                  /x10   <U0010> DATALINK ESCAPE (DLE)
+<DC1>                  /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<DC2>                  /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<DC3>                  /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<DC4>                  /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NAK>                  /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SYN>                  /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<ETB>                  /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CAN>                  /x18   <U0018> CANCEL (CAN)
+<SUB>                  /x1A   <U001A> SUBSTITUTE (SUB)
+<ESC>                  /x1B   <U001B> ESCAPE (ESC)
+<IS4>                  /x1C   <U001C> FILE SEPARATOR (IS4)
+<IS3>                  /x1D   <U001D> GROUP SEPARATOR (IS3)
+<intro>                /x1D   <U001D> GROUP SEPARATOR (IS3)
+<IS2>                  /x1E   <U001E> RECORD SEPARATOR (IS2)
+<IS1>                  /x1F   <U001F> UNIT SEPARATOR (IS1)
+<DEL>                  /x7F   <U007F> DELETE (DEL)
+<space>                /x20   <U0020> SPACE
+<exclamation-mark>     /x21   <U0021> EXCLAMATION MARK
+<quotation-mark>       /x22   <U0022> QUOTATION MARK
+<number-sign>          /x23   <U0023> NUMBER SIGN
+<dollar-sign>          /x24   <U0024> DOLLAR SIGN
+<percent-sign>         /x25   <U0025> PERCENT SIGN
+<ampersand>            /x26   <U0026> AMPERSAND
+<apostrophe>           /x27   <U0027> APOSTROPHE
+<left-parenthesis>     /x28   <U0028> LEFT PARENTHESIS
+<right-parenthesis>    /x29   <U0029> RIGHT PARENTHESIS
+<asterisk>             /x2A   <U002A> ASTERISK
+<plus-sign>            /x2B   <U002B> PLUS SIGN
+<comma>                /x2C   <U002C> COMMA
+<hyphen>               /x2D   <U002D> HYPHEN-MINUS
+<hyphen-minus>         /x2D   <U002D> HYPHEN-MINUS
+<period>               /x2E   <U002E> FULL STOP
+<full-stop>            /x2E   <U002E> FULL STOP
+<slash>                /x2F   <U002F> SOLIDUS
+<solidus>              /x2F   <U002F> SOLIDUS
+<zero>                 /x30   <U0030> DIGIT ZERO
+<one>                  /x31   <U0031> DIGIT ONE
+<two>                  /x32   <U0032> DIGIT TWO
+<three>                /x33   <U0033> DIGIT THREE
+<four>                 /x34   <U0034> DIGIT FOUR
+<five>                 /x35   <U0035> DIGIT FIVE
+<six>                  /x36   <U0036> DIGIT SIX
+<seven>                /x37   <U0037> DIGIT SEVEN
+<eight>                /x38   <U0038> DIGIT EIGHT
+<nine>                 /x39   <U0039> DIGIT NINE
+<colon>                /x3A   <U003A> COLON
+<semicolon>            /x3B   <U003B> SEMICOLON
+<less-than-sign>       /x3C   <U003C> LESS-THAN SIGN
+<equals-sign>          /x3D   <U003D> EQUALS SIGN
+<greater-than-sign>    /x3E   <U003E> GREATER-THAN SIGN
+<question-mark>        /x3F   <U003F> QUESTION MARK
+<commercial-at>        /x40   <U0040> COMMERCIAL AT
+<left-square-bracket>  /x5B   <U005B> LEFT SQUARE BRACKET
+<backslash>            /x5C   <U005C> REVERSE SOLIDUS
+<reverse-solidus>      /x5C   <U005C> REVERSE SOLIDUS
+<right-square-bracket> /x5D   <U005D> RIGHT SQUARE BRACKET
+<circumflex>           /x5E   <U005E> CIRCUMFLEX ACCENT
+<circumflex-accent>    /x5E   <U005E> CIRCUMFLEX ACCENT
+<underscore>           /x5F   <U005F> LOW LINE
+<low-line>             /x5F   <U005F> LOW LINE
+<grave-accent>         /x60   <U0060> GRAVE ACCENT
+<left-brace>           /x7B   <U007B> LEFT CURLY BRACKET
+<left-curly-bracket>   /x7B   <U007B> LEFT CURLY BRACKET
+<vertical-line>        /x7C   <U007C> VERTICAL LINE
+<right-brace>          /x7D   <U007D> RIGHT CURLY BRACKET
+<right-curly-bracket>  /x7D   <U007D> RIGHT CURLY BRACKET
+<tilde>                /x7E   <U007E> TILDE
+END CHARMAP
+
+"
+!
+
 mappingURL2_relativePathName
     ^ 'CP1252'
 ! !
@@ -18509,6 +18363,361 @@
 
 !CharacterEncoder::MS_Arabic class methodsFor:'mapping'!
 
+mapping
+"
+# From: http://std.dkuug.dk/i18n/charmaps/CP1256
+
+<code_set_name> CP1256
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% repertoiremap: mnemonic,ds
+%  source: UNICODE 1.0
+
+% alias MS-ARAB
+CHARMAP
+<NU>                   /x00   <U0000> NULL (NUL)
+<SH>                   /x01   <U0001> START OF HEADING (SOH)
+<SX>                   /x02   <U0002> START OF TEXT (STX)
+<EX>                   /x03   <U0003> END OF TEXT (ETX)
+<ET>                   /x04   <U0004> END OF TRANSMISSION (EOT)
+<EQ>                   /x05   <U0005> ENQUIRY (ENQ)
+<AK>                   /x06   <U0006> ACKNOWLEDGE (ACK)
+<BL>                   /x07   <U0007> BELL (BEL)
+<BS>                   /x08   <U0008> BACKSPACE (BS)
+<HT>                   /x09   <U0009> CHARACTER TABULATION (HT)
+<LF>                   /x0A   <U000A> LINE FEED (LF)
+<VT>                   /x0B   <U000B> LINE TABULATION (VT)
+<FF>                   /x0C   <U000C> FORM FEED (FF)
+<CR>                   /x0D   <U000D> CARRIAGE RETURN (CR)
+<SO>                   /x0E   <U000E> SHIFT OUT (SO)
+<SI>                   /x0F   <U000F> SHIFT IN (SI)
+<DL>                   /x10   <U0010> DATALINK ESCAPE (DLE)
+<D1>                   /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<D2>                   /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<D3>                   /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<D4>                   /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NK>                   /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SY>                   /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<EB>                   /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CN>                   /x18   <U0018> CANCEL (CAN)
+<EM>                   /x19   <U0019> END OF MEDIUM (EM)
+<SB>                   /x1A   <U001A> SUBSTITUTE (SUB)
+<EC>                   /x1B   <U001B> ESCAPE (ESC)
+<FS>                   /x1C   <U001C> FILE SEPARATOR (IS4)
+<GS>                   /x1D   <U001D> GROUP SEPARATOR (IS3)
+<RS>                   /x1E   <U001E> RECORD SEPARATOR (IS2)
+<US>                   /x1F   <U001F> UNIT SEPARATOR (IS1)
+<SP>                   /x20   <U0020> SPACE
+<!!>                    /x21   <U0021> EXCLAMATION MARK
+<'>                    /x22   <U0022> QUOTATION MARK
+<Nb>                   /x23   <U0023> NUMBER SIGN
+<DO>                   /x24   <U0024> DOLLAR SIGN
+<%>                    /x25   <U0025> PERCENT SIGN
+<&>                    /x26   <U0026> AMPERSAND
+<'>                    /x27   <U0027> APOSTROPHE
+<(>                    /x28   <U0028> LEFT PARENTHESIS
+<)>                    /x29   <U0029> RIGHT PARENTHESIS
+<*>                    /x2A   <U002A> ASTERISK
+<+>                    /x2B   <U002B> PLUS SIGN
+<,>                    /x2C   <U002C> COMMA
+<->                    /x2D   <U002D> HYPHEN-MINUS
+<.>                    /x2E   <U002E> FULL STOP
+<//>                   /x2F   <U002F> SOLIDUS
+<0>                    /x30   <U0030> DIGIT ZERO
+<1>                    /x31   <U0031> DIGIT ONE
+<2>                    /x32   <U0032> DIGIT TWO
+<3>                    /x33   <U0033> DIGIT THREE
+<4>                    /x34   <U0034> DIGIT FOUR
+<5>                    /x35   <U0035> DIGIT FIVE
+<6>                    /x36   <U0036> DIGIT SIX
+<7>                    /x37   <U0037> DIGIT SEVEN
+<8>                    /x38   <U0038> DIGIT EIGHT
+<9>                    /x39   <U0039> DIGIT NINE
+<:>                    /x3A   <U003A> COLON
+<;>                    /x3B   <U003B> SEMICOLON
+<<>                    /x3C   <U003C> LESS-THAN SIGN
+<=>                    /x3D   <U003D> EQUALS SIGN
+</>>                   /x3E   <U003E> GREATER-THAN SIGN
+<?>                    /x3F   <U003F> QUESTION MARK
+<At>                   /x40   <U0040> COMMERCIAL AT
+<A>                    /x41   <U0041> LATIN CAPITAL LETTER A
+<B>                    /x42   <U0042> LATIN CAPITAL LETTER B
+<C>                    /x43   <U0043> LATIN CAPITAL LETTER C
+<D>                    /x44   <U0044> LATIN CAPITAL LETTER D
+<E>                    /x45   <U0045> LATIN CAPITAL LETTER E
+<F>                    /x46   <U0046> LATIN CAPITAL LETTER F
+<G>                    /x47   <U0047> LATIN CAPITAL LETTER G
+<H>                    /x48   <U0048> LATIN CAPITAL LETTER H
+<I>                    /x49   <U0049> LATIN CAPITAL LETTER I
+<J>                    /x4A   <U004A> LATIN CAPITAL LETTER J
+<K>                    /x4B   <U004B> LATIN CAPITAL LETTER K
+<L>                    /x4C   <U004C> LATIN CAPITAL LETTER L
+<M>                    /x4D   <U004D> LATIN CAPITAL LETTER M
+<N>                    /x4E   <U004E> LATIN CAPITAL LETTER N
+<O>                    /x4F   <U004F> LATIN CAPITAL LETTER O
+<P>                    /x50   <U0050> LATIN CAPITAL LETTER P
+<Q>                    /x51   <U0051> LATIN CAPITAL LETTER Q
+<R>                    /x52   <U0052> LATIN CAPITAL LETTER R
+<S>                    /x53   <U0053> LATIN CAPITAL LETTER S
+<T>                    /x54   <U0054> LATIN CAPITAL LETTER T
+<U>                    /x55   <U0055> LATIN CAPITAL LETTER U
+<V>                    /x56   <U0056> LATIN CAPITAL LETTER V
+<W>                    /x57   <U0057> LATIN CAPITAL LETTER W
+<X>                    /x58   <U0058> LATIN CAPITAL LETTER X
+<Y>                    /x59   <U0059> LATIN CAPITAL LETTER Y
+<Z>                    /x5A   <U005A> LATIN CAPITAL LETTER Z
+<<(>                   /x5B   <U005B> LEFT SQUARE BRACKET
+<////>                 /x5C   <U005C> REVERSE SOLIDUS
+<)/>>                  /x5D   <U005D> RIGHT SQUARE BRACKET
+<'/>>                  /x5E   <U005E> CIRCUMFLEX ACCENT
+<_>                    /x5F   <U005F> LOW LINE
+<'!!>                   /x60   <U0060> GRAVE ACCENT
+<a>                    /x61   <U0061> LATIN SMALL LETTER A
+<b>                    /x62   <U0062> LATIN SMALL LETTER B
+<c>                    /x63   <U0063> LATIN SMALL LETTER C
+<d>                    /x64   <U0064> LATIN SMALL LETTER D
+<e>                    /x65   <U0065> LATIN SMALL LETTER E
+<f>                    /x66   <U0066> LATIN SMALL LETTER F
+<g>                    /x67   <U0067> LATIN SMALL LETTER G
+<h>                    /x68   <U0068> LATIN SMALL LETTER H
+<i>                    /x69   <U0069> LATIN SMALL LETTER I
+<j>                    /x6A   <U006A> LATIN SMALL LETTER J
+<k>                    /x6B   <U006B> LATIN SMALL LETTER K
+<l>                    /x6C   <U006C> LATIN SMALL LETTER L
+<m>                    /x6D   <U006D> LATIN SMALL LETTER M
+<n>                    /x6E   <U006E> LATIN SMALL LETTER N
+<o>                    /x6F   <U006F> LATIN SMALL LETTER O
+<p>                    /x70   <U0070> LATIN SMALL LETTER P
+<q>                    /x71   <U0071> LATIN SMALL LETTER Q
+<r>                    /x72   <U0072> LATIN SMALL LETTER R
+<s>                    /x73   <U0073> LATIN SMALL LETTER S
+<t>                    /x74   <U0074> LATIN SMALL LETTER T
+<u>                    /x75   <U0075> LATIN SMALL LETTER U
+<v>                    /x76   <U0076> LATIN SMALL LETTER V
+<w>                    /x77   <U0077> LATIN SMALL LETTER W
+<x>                    /x78   <U0078> LATIN SMALL LETTER X
+<y>                    /x79   <U0079> LATIN SMALL LETTER Y
+<z>                    /x7A   <U007A> LATIN SMALL LETTER Z
+<(!!>                   /x7B   <U007B> LEFT CURLY BRACKET
+<!!!!>                   /x7C   <U007C> VERTICAL LINE
+<!!)>                   /x7D   <U007D> RIGHT CURLY BRACKET
+<'?>                   /x7E   <U007E> TILDE
+<DT>                   /x7F   <U007F> DELETE (DEL)
+<,+>                   /x80   <U060C> ARABIC COMMA
+<0a>                   /x81   <U0660> ARABIC-INDIC DIGIT ZERO
+<.9>                   /x82   <U201A> SINGLE LOW-9 QUOTATION MARK
+<1a>                   /x83   <U0661> ARABIC-INDIC DIGIT ONE
+<:9>                   /x84   <U201E> DOUBLE LOW-9 QUOTATION MARK
+<.3>                   /x85   <U2026> HORIZONTAL ELLIPSIS
+<//->                  /x86   <U2020> DAGGER
+<//=>                  /x87   <U2021> DOUBLE DAGGER
+<2a>                   /x88   <U0662> ARABIC-INDIC DIGIT TWO
+<3a>                   /x89   <U0663> ARABIC-INDIC DIGIT THREE
+<4a>                   /x8A   <U0664> ARABIC-INDIC DIGIT FOUR
+<<1>                   /x8B   <U2039> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+<5a>                   /x8C   <U0665> ARABIC-INDIC DIGIT FIVE
+<6a>                   /x8D   <U0666> ARABIC-INDIC DIGIT SIX
+<7a>                   /x8E   <U0667> ARABIC-INDIC DIGIT SEVEN
+<8a>                   /x8F   <U0668> ARABIC-INDIC DIGIT EIGHT
+<9a>                   /x90   <U0669> ARABIC-INDIC DIGIT NINE
+<'6>                   /x91   <U2018> LEFT SINGLE QUOTATION MARK
+<'9>                   /x92   <U2019> RIGHT SINGLE QUOTATION MARK
+<'6>                   /x93   <U201C> LEFT DOUBLE QUOTATION MARK
+<'9>                   /x94   <U201D> RIGHT DOUBLE QUOTATION MARK
+<sb>                   /x95   <U2022> BULLET
+<-N>                   /x96   <U2013> EN DASH
+<-M>                   /x97   <U2014> EM DASH
+<;+>                   /x98   <U061B> ARABIC SEMICOLON
+<TM>                   /x99   <U2122> TRADE MARK SIGN
+<?+>                   /x9A   <U061F> ARABIC QUESTION MARK
+</>1>                  /x9B   <U203A> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+<H'>                   /x9C   <U0621> ARABIC LETTER HAMZA
+<aM>                   /x9D   <U0622> ARABIC LETTER ALEF WITH MADDA ABOVE
+<aH>                   /x9E   <U0623> ARABIC LETTER ALEF WITH HAMZA ABOVE
+<Y:>                   /x9F   <U0178> LATIN CAPITAL LETTER Y WITH DIAERESIS
+<NS>                   /xA0   <U00A0> NO-BREAK SPACE
+<wH>                   /xA1   <U0624> ARABIC LETTER WAW WITH HAMZA ABOVE
+<ah>                   /xA2   <U0625> ARABIC LETTER ALEF WITH HAMZA BELOW
+<Pd>                   /xA3   <U00A3> POUND SIGN
+<Cu>                   /xA4   <U00A4> CURRENCY SIGN
+<yH>                   /xA5   <U0626> ARABIC LETTER YEH WITH HAMZA ABOVE
+<BB>                   /xA6   <U00A6> BROKEN BAR
+<SE>                   /xA7   <U00A7> SECTION SIGN
+<a+>                   /xA8   <U0627> ARABIC LETTER ALEF
+<Co>                   /xA9   <U00A9> COPYRIGHT SIGN
+<b+>                   /xAA   <U0628> ARABIC LETTER BEH
+<<<>                   /xAB   <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<NO>                   /xAC   <U00AC> NOT SIGN
+<-->                   /xAD   <U00AD> SOFT HYPHEN
+<Rg>                   /xAE   <U00AE> REGISTERED SIGN
+<p+>                   /xAF   <U067E> ARABIC LETTER PEH
+<DG>                   /xB0   <U00B0> DEGREE SIGN
+<+->                   /xB1   <U00B1> PLUS-MINUS SIGN
+<tm>                   /xB2   <U0629> ARABIC LETTER TEH MARBUTA
+<t+>                   /xB3   <U062A> ARABIC LETTER TEH
+<tk>                   /xB4   <U062B> ARABIC LETTER THEH
+<My>                   /xB5   <U00B5> MICRO SIGN
+<PI>                   /xB6   <U00B6> PILCROW SIGN
+<.M>                   /xB7   <U00B7> MIDDLE DOT
+<g+>                   /xB8   <U062C> ARABIC LETTER JEEM
+<tc>                   /xB9   <U0686> ARABIC LETTER TCHEH
+<hk>                   /xBA   <U062D> ARABIC LETTER HAH
+</>/>>                 /xBB   <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<x+>                   /xBC   <U062E> ARABIC LETTER KHAH
+<d+>                   /xBD   <U062F> ARABIC LETTER DAL
+<dk>                   /xBE   <U0630> ARABIC LETTER THAL
+<r+>                   /xBF   <U0631> ARABIC LETTER REH
+<A!!>                   /xC0   <U00C0> LATIN CAPITAL LETTER A WITH GRAVE
+<z+>                   /xC1   <U0632> ARABIC LETTER ZAIN
+<A/>>                  /xC2   <U00C2> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<zj>                   /xC3   <U0698> ARABIC LETTER JEH
+<s+>                   /xC4   <U0633> ARABIC LETTER SEEN
+<sn>                   /xC5   <U0634> ARABIC LETTER SHEEN
+<c+>                   /xC6   <U0635> ARABIC LETTER SAD
+<C,>                   /xC7   <U00C7> LATIN CAPITAL LETTER C WITH CEDILLA
+<E!!>                   /xC8   <U00C8> LATIN CAPITAL LETTER E WITH GRAVE
+<E'>                   /xC9   <U00C9> LATIN CAPITAL LETTER E WITH ACUTE
+<E/>>                  /xCA   <U00CA> LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<E:>                   /xCB   <U00CB> LATIN CAPITAL LETTER E WITH DIAERESIS
+<dd>                   /xCC   <U0636> ARABIC LETTER DAD
+<tj>                   /xCD   <U0637> ARABIC LETTER TAH
+<I/>>                  /xCE   <U00CE> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<I:>                   /xCF   <U00CF> LATIN CAPITAL LETTER I WITH DIAERESIS
+<zh>                   /xD0   <U3113> BOPOMOFO LETTER ZH
+<e+>                   /xD1   <U0639> ARABIC LETTER AIN
+<i+>                   /xD2   <U063A> ARABIC LETTER GHAIN
+<++>                   /xD3   <U0640> ARABIC TATWEEL
+<O/>>                  /xD4   <U00D4> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<f+>                   /xD5   <U0641> ARABIC LETTER FEH
+<q+>                   /xD6   <U0642> ARABIC LETTER QAF
+<*X>                   /xD7   <U00D7> MULTIPLICATION SIGN
+<k+>                   /xD8   <U0643> ARABIC LETTER KAF
+<U!!>                   /xD9   <U00D9> LATIN CAPITAL LETTER U WITH GRAVE
+<gf>                   /xDA   <U06AF> ARABIC LETTER GAF
+<U/>>                  /xDB   <U00DB> LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<U:>                   /xDC   <U00DC> LATIN CAPITAL LETTER U WITH DIAERESIS
+<l+>                   /xDD   <U0644> ARABIC LETTER LAM
+<m+>                   /xDE   <U0645> ARABIC LETTER MEEM
+<n+>                   /xDF   <U0646> ARABIC LETTER NOON
+<a!!>                   /xE0   <U00E0> LATIN SMALL LETTER A WITH GRAVE
+<h+>                   /xE1   <U0647> ARABIC LETTER HEH
+<a/>>                  /xE2   <U00E2> LATIN SMALL LETTER A WITH CIRCUMFLEX
+<hH>                   /xE3   <U0681> ARABIC LETTER HAH WITH HAMZA ABOVE
+<w+>                   /xE4   <U0648> ARABIC LETTER WAW
+<j+>                   /xE5   <U0649> ARABIC LETTER ALEF MAKSURA
+<y+>                   /xE6   <U064A> ARABIC LETTER YEH
+<c,>                   /xE7   <U00E7> LATIN SMALL LETTER C WITH CEDILLA
+<e!!>                   /xE8   <U00E8> LATIN SMALL LETTER E WITH GRAVE
+<e'>                   /xE9   <U00E9> LATIN SMALL LETTER E WITH ACUTE
+<e/>>                  /xEA   <U00EA> LATIN SMALL LETTER E WITH CIRCUMFLEX
+<e:>                   /xEB   <U00EB> LATIN SMALL LETTER E WITH DIAERESIS
+<:+>                   /xEC   <U064B> ARABIC FATHATAN
+<'+>                   /xED   <U064C> ARABIC DAMMATAN
+<i/>>                  /xEE   <U00EE> LATIN SMALL LETTER I WITH CIRCUMFLEX
+<i:>                   /xEF   <U00EF> LATIN SMALL LETTER I WITH DIAERESIS
+<=+>                   /xF0   <U064D> ARABIC KASRATAN
+<//+>                  /xF1   <U064E> ARABIC FATHA
+<'+>                   /xF2   <U064F> ARABIC DAMMA
+<1+>                   /xF3   <U0650> ARABIC KASRA
+<o/>>                  /xF4   <U00F4> LATIN SMALL LETTER O WITH CIRCUMFLEX
+<3+>                   /xF5   <U0651> ARABIC SHADDA
+<0+>                   /xF6   <U0652> ARABIC SUKUN
+<-:>                   /xF7   <U00F7> DIVISION SIGN
+<u!!>                   /xF9   <U00F9> LATIN SMALL LETTER U WITH GRAVE
+<u/>>                  /xFB   <U00FB> LATIN SMALL LETTER U WITH CIRCUMFLEX
+<u:>                   /xFC   <U00FC> LATIN SMALL LETTER U WITH DIAERESIS
+<LR>                   /xFD   <U200E> LEFT-TO-RIGHT MARK
+<RL>                   /xFE   <U200F> RIGHT-TO-LEFT MARK
+<y:>                   /xFF   <U00FF> LATIN SMALL LETTER Y WITH DIAERESIS
+<NUL>                  /x00   <U0000> NUL
+<SOH>                  /x01   <U0001> START OF HEADING (SOH)
+<STX>                  /x02   <U0002> START OF TEXT (STX)
+<ETX>                  /x03   <U0003> END OF TEXT (ETX)
+<EOT>                  /x04   <U0004> END OF TRANSMISSION (EOT)
+<ENQ>                  /x05   <U0005> ENQUIRY (ENQ)
+<ACK>                  /x06   <U0006> ACKNOWLEDGE (ACK)
+<alert>                /x07   <U0007> BELL (BEL)
+<BEL>                  /x07   <U0007> BELL (BEL)
+<backspace>            /x08   <U0008> BACKSPACE (BS)
+<tab>                  /x09   <U0009> CHARACTER TABULATION (HT)
+<newline>              /x0A   <U000A> LINE FEED (LF)
+<vertical-tab>         /x0B   <U000B> LINE TABULATION (VT)
+<form-feed>            /x0C   <U000C> FORM FEED (FF)
+<carriage-return>      /x0D   <U000D> CARRIAGE RETURN (CR)
+<DLE>                  /x10   <U0010> DATALINK ESCAPE (DLE)
+<DC1>                  /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<DC2>                  /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<DC3>                  /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<DC4>                  /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NAK>                  /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SYN>                  /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<ETB>                  /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CAN>                  /x18   <U0018> CANCEL (CAN)
+<SUB>                  /x1A   <U001A> SUBSTITUTE (SUB)
+<ESC>                  /x1B   <U001B> ESCAPE (ESC)
+<IS4>                  /x1C   <U001C> FILE SEPARATOR (IS4)
+<IS3>                  /x1D   <U001D> GROUP SEPARATOR (IS3)
+<intro>                /x1D   <U001D> GROUP SEPARATOR (IS3)
+<IS2>                  /x1E   <U001E> RECORD SEPARATOR (IS2)
+<IS1>                  /x1F   <U001F> UNIT SEPARATOR (IS1)
+<DEL>                  /x7F   <U007F> DELETE (DEL)
+<space>                /x20   <U0020> SPACE
+<exclamation-mark>     /x21   <U0021> EXCLAMATION MARK
+<quotation-mark>       /x22   <U0022> QUOTATION MARK
+<number-sign>          /x23   <U0023> NUMBER SIGN
+<dollar-sign>          /x24   <U0024> DOLLAR SIGN
+<percent-sign>         /x25   <U0025> PERCENT SIGN
+<ampersand>            /x26   <U0026> AMPERSAND
+<apostrophe>           /x27   <U0027> APOSTROPHE
+<left-parenthesis>     /x28   <U0028> LEFT PARENTHESIS
+<right-parenthesis>    /x29   <U0029> RIGHT PARENTHESIS
+<asterisk>             /x2A   <U002A> ASTERISK
+<plus-sign>            /x2B   <U002B> PLUS SIGN
+<comma>                /x2C   <U002C> COMMA
+<hyphen>               /x2D   <U002D> HYPHEN-MINUS
+<hyphen-minus>         /x2D   <U002D> HYPHEN-MINUS
+<period>               /x2E   <U002E> FULL STOP
+<full-stop>            /x2E   <U002E> FULL STOP
+<slash>                /x2F   <U002F> SOLIDUS
+<solidus>              /x2F   <U002F> SOLIDUS
+<zero>                 /x30   <U0030> DIGIT ZERO
+<one>                  /x31   <U0031> DIGIT ONE
+<two>                  /x32   <U0032> DIGIT TWO
+<three>                /x33   <U0033> DIGIT THREE
+<four>                 /x34   <U0034> DIGIT FOUR
+<five>                 /x35   <U0035> DIGIT FIVE
+<six>                  /x36   <U0036> DIGIT SIX
+<seven>                /x37   <U0037> DIGIT SEVEN
+<eight>                /x38   <U0038> DIGIT EIGHT
+<nine>                 /x39   <U0039> DIGIT NINE
+<colon>                /x3A   <U003A> COLON
+<semicolon>            /x3B   <U003B> SEMICOLON
+<less-than-sign>       /x3C   <U003C> LESS-THAN SIGN
+<equals-sign>          /x3D   <U003D> EQUALS SIGN
+<greater-than-sign>    /x3E   <U003E> GREATER-THAN SIGN
+<question-mark>        /x3F   <U003F> QUESTION MARK
+<commercial-at>        /x40   <U0040> COMMERCIAL AT
+<left-square-bracket>  /x5B   <U005B> LEFT SQUARE BRACKET
+<backslash>            /x5C   <U005C> REVERSE SOLIDUS
+<reverse-solidus>      /x5C   <U005C> REVERSE SOLIDUS
+<right-square-bracket> /x5D   <U005D> RIGHT SQUARE BRACKET
+<circumflex>           /x5E   <U005E> CIRCUMFLEX ACCENT
+<circumflex-accent>    /x5E   <U005E> CIRCUMFLEX ACCENT
+<underscore>           /x5F   <U005F> LOW LINE
+<low-line>             /x5F   <U005F> LOW LINE
+<grave-accent>         /x60   <U0060> GRAVE ACCENT
+<left-brace>           /x7B   <U007B> LEFT CURLY BRACKET
+<left-curly-bracket>   /x7B   <U007B> LEFT CURLY BRACKET
+<vertical-line>        /x7C   <U007C> VERTICAL LINE
+<right-brace>          /x7D   <U007D> RIGHT CURLY BRACKET
+<right-curly-bracket>  /x7D   <U007D> RIGHT CURLY BRACKET
+<tilde>                /x7E   <U007E> TILDE
+END CHARMAP
+
+"
+!
+
 mappingURL2_relativePathName
     ^ 'CP1256'
 ! !
@@ -18521,6 +18730,361 @@
 
 !CharacterEncoder::MS_Cyrillic class methodsFor:'mapping'!
 
+mapping
+"
+# From: http://std.dkuug.dk/i18n/charmaps/CP1251
+
+<code_set_name> CP1251
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% repertoiremap: mnemonic,ds
+%  source: UNICODE 1.0
+
+% alias MS-CYRL
+CHARMAP
+<NU>                   /x00   <U0000> NULL (NUL)
+<SH>                   /x01   <U0001> START OF HEADING (SOH)
+<SX>                   /x02   <U0002> START OF TEXT (STX)
+<EX>                   /x03   <U0003> END OF TEXT (ETX)
+<ET>                   /x04   <U0004> END OF TRANSMISSION (EOT)
+<EQ>                   /x05   <U0005> ENQUIRY (ENQ)
+<AK>                   /x06   <U0006> ACKNOWLEDGE (ACK)
+<BL>                   /x07   <U0007> BELL (BEL)
+<BS>                   /x08   <U0008> BACKSPACE (BS)
+<HT>                   /x09   <U0009> CHARACTER TABULATION (HT)
+<LF>                   /x0A   <U000A> LINE FEED (LF)
+<VT>                   /x0B   <U000B> LINE TABULATION (VT)
+<FF>                   /x0C   <U000C> FORM FEED (FF)
+<CR>                   /x0D   <U000D> CARRIAGE RETURN (CR)
+<SO>                   /x0E   <U000E> SHIFT OUT (SO)
+<SI>                   /x0F   <U000F> SHIFT IN (SI)
+<DL>                   /x10   <U0010> DATALINK ESCAPE (DLE)
+<D1>                   /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<D2>                   /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<D3>                   /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<D4>                   /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NK>                   /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SY>                   /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<EB>                   /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CN>                   /x18   <U0018> CANCEL (CAN)
+<EM>                   /x19   <U0019> END OF MEDIUM (EM)
+<SB>                   /x1A   <U001A> SUBSTITUTE (SUB)
+<EC>                   /x1B   <U001B> ESCAPE (ESC)
+<FS>                   /x1C   <U001C> FILE SEPARATOR (IS4)
+<GS>                   /x1D   <U001D> GROUP SEPARATOR (IS3)
+<RS>                   /x1E   <U001E> RECORD SEPARATOR (IS2)
+<US>                   /x1F   <U001F> UNIT SEPARATOR (IS1)
+<SP>                   /x20   <U0020> SPACE
+<!!>                    /x21   <U0021> EXCLAMATION MARK
+<'>                    /x22   <U0022> QUOTATION MARK
+<Nb>                   /x23   <U0023> NUMBER SIGN
+<DO>                   /x24   <U0024> DOLLAR SIGN
+<%>                    /x25   <U0025> PERCENT SIGN
+<&>                    /x26   <U0026> AMPERSAND
+<'>                    /x27   <U0027> APOSTROPHE
+<(>                    /x28   <U0028> LEFT PARENTHESIS
+<)>                    /x29   <U0029> RIGHT PARENTHESIS
+<*>                    /x2A   <U002A> ASTERISK
+<+>                    /x2B   <U002B> PLUS SIGN
+<,>                    /x2C   <U002C> COMMA
+<->                    /x2D   <U002D> HYPHEN-MINUS
+<.>                    /x2E   <U002E> FULL STOP
+<//>                   /x2F   <U002F> SOLIDUS
+<0>                    /x30   <U0030> DIGIT ZERO
+<1>                    /x31   <U0031> DIGIT ONE
+<2>                    /x32   <U0032> DIGIT TWO
+<3>                    /x33   <U0033> DIGIT THREE
+<4>                    /x34   <U0034> DIGIT FOUR
+<5>                    /x35   <U0035> DIGIT FIVE
+<6>                    /x36   <U0036> DIGIT SIX
+<7>                    /x37   <U0037> DIGIT SEVEN
+<8>                    /x38   <U0038> DIGIT EIGHT
+<9>                    /x39   <U0039> DIGIT NINE
+<:>                    /x3A   <U003A> COLON
+<;>                    /x3B   <U003B> SEMICOLON
+<<>                    /x3C   <U003C> LESS-THAN SIGN
+<=>                    /x3D   <U003D> EQUALS SIGN
+</>>                   /x3E   <U003E> GREATER-THAN SIGN
+<?>                    /x3F   <U003F> QUESTION MARK
+<At>                   /x40   <U0040> COMMERCIAL AT
+<A>                    /x41   <U0041> LATIN CAPITAL LETTER A
+<B>                    /x42   <U0042> LATIN CAPITAL LETTER B
+<C>                    /x43   <U0043> LATIN CAPITAL LETTER C
+<D>                    /x44   <U0044> LATIN CAPITAL LETTER D
+<E>                    /x45   <U0045> LATIN CAPITAL LETTER E
+<F>                    /x46   <U0046> LATIN CAPITAL LETTER F
+<G>                    /x47   <U0047> LATIN CAPITAL LETTER G
+<H>                    /x48   <U0048> LATIN CAPITAL LETTER H
+<I>                    /x49   <U0049> LATIN CAPITAL LETTER I
+<J>                    /x4A   <U004A> LATIN CAPITAL LETTER J
+<K>                    /x4B   <U004B> LATIN CAPITAL LETTER K
+<L>                    /x4C   <U004C> LATIN CAPITAL LETTER L
+<M>                    /x4D   <U004D> LATIN CAPITAL LETTER M
+<N>                    /x4E   <U004E> LATIN CAPITAL LETTER N
+<O>                    /x4F   <U004F> LATIN CAPITAL LETTER O
+<P>                    /x50   <U0050> LATIN CAPITAL LETTER P
+<Q>                    /x51   <U0051> LATIN CAPITAL LETTER Q
+<R>                    /x52   <U0052> LATIN CAPITAL LETTER R
+<S>                    /x53   <U0053> LATIN CAPITAL LETTER S
+<T>                    /x54   <U0054> LATIN CAPITAL LETTER T
+<U>                    /x55   <U0055> LATIN CAPITAL LETTER U
+<V>                    /x56   <U0056> LATIN CAPITAL LETTER V
+<W>                    /x57   <U0057> LATIN CAPITAL LETTER W
+<X>                    /x58   <U0058> LATIN CAPITAL LETTER X
+<Y>                    /x59   <U0059> LATIN CAPITAL LETTER Y
+<Z>                    /x5A   <U005A> LATIN CAPITAL LETTER Z
+<<(>                   /x5B   <U005B> LEFT SQUARE BRACKET
+<////>                 /x5C   <U005C> REVERSE SOLIDUS
+<)/>>                  /x5D   <U005D> RIGHT SQUARE BRACKET
+<'/>>                  /x5E   <U005E> CIRCUMFLEX ACCENT
+<_>                    /x5F   <U005F> LOW LINE
+<'!!>                   /x60   <U0060> GRAVE ACCENT
+<a>                    /x61   <U0061> LATIN SMALL LETTER A
+<b>                    /x62   <U0062> LATIN SMALL LETTER B
+<c>                    /x63   <U0063> LATIN SMALL LETTER C
+<d>                    /x64   <U0064> LATIN SMALL LETTER D
+<e>                    /x65   <U0065> LATIN SMALL LETTER E
+<f>                    /x66   <U0066> LATIN SMALL LETTER F
+<g>                    /x67   <U0067> LATIN SMALL LETTER G
+<h>                    /x68   <U0068> LATIN SMALL LETTER H
+<i>                    /x69   <U0069> LATIN SMALL LETTER I
+<j>                    /x6A   <U006A> LATIN SMALL LETTER J
+<k>                    /x6B   <U006B> LATIN SMALL LETTER K
+<l>                    /x6C   <U006C> LATIN SMALL LETTER L
+<m>                    /x6D   <U006D> LATIN SMALL LETTER M
+<n>                    /x6E   <U006E> LATIN SMALL LETTER N
+<o>                    /x6F   <U006F> LATIN SMALL LETTER O
+<p>                    /x70   <U0070> LATIN SMALL LETTER P
+<q>                    /x71   <U0071> LATIN SMALL LETTER Q
+<r>                    /x72   <U0072> LATIN SMALL LETTER R
+<s>                    /x73   <U0073> LATIN SMALL LETTER S
+<t>                    /x74   <U0074> LATIN SMALL LETTER T
+<u>                    /x75   <U0075> LATIN SMALL LETTER U
+<v>                    /x76   <U0076> LATIN SMALL LETTER V
+<w>                    /x77   <U0077> LATIN SMALL LETTER W
+<x>                    /x78   <U0078> LATIN SMALL LETTER X
+<y>                    /x79   <U0079> LATIN SMALL LETTER Y
+<z>                    /x7A   <U007A> LATIN SMALL LETTER Z
+<(!!>                   /x7B   <U007B> LEFT CURLY BRACKET
+<!!!!>                   /x7C   <U007C> VERTICAL LINE
+<!!)>                   /x7D   <U007D> RIGHT CURLY BRACKET
+<'?>                   /x7E   <U007E> TILDE
+<DT>                   /x7F   <U007F> DELETE (DEL)
+<D%>                   /x80   <U0402> CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
+<G%>                   /x81   <U0403> CYRILLIC CAPITAL LETTER GJE
+<.9>                   /x82   <U201A> SINGLE LOW-9 QUOTATION MARK
+<g%>                   /x83   <U0453> CYRILLIC SMALL LETTER GJE
+<:9>                   /x84   <U201E> DOUBLE LOW-9 QUOTATION MARK
+<.3>                   /x85   <U2026> HORIZONTAL ELLIPSIS
+<//->                  /x86   <U2020> DAGGER
+<//=>                  /x87   <U2021> DOUBLE DAGGER
+<%0>                   /x89   <U2030> PER MILLE SIGN
+<LJ>                   /x8A   <U0409> CYRILLIC CAPITAL LETTER LJE
+<<1>                   /x8B   <U2039> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+<NJ>                   /x8C   <U040A> CYRILLIC CAPITAL LETTER NJE
+<KJ>                   /x8D   <U040C> CYRILLIC CAPITAL LETTER KJE
+<Ts>                   /x8E   <U040B> CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
+<DZ>                   /x8F   <U040F> CYRILLIC CAPITAL LETTER DZHE
+<d%>                   /x90   <U0452> CYRILLIC SMALL LETTER DJE (Serbocroatian)
+<'6>                   /x91   <U2018> LEFT SINGLE QUOTATION MARK
+<'9>                   /x92   <U2019> RIGHT SINGLE QUOTATION MARK
+<'6>                   /x93   <U201C> LEFT DOUBLE QUOTATION MARK
+<'9>                   /x94   <U201D> RIGHT DOUBLE QUOTATION MARK
+<sb>                   /x95   <U2022> BULLET
+<-N>                   /x96   <U2013> EN DASH
+<-M>                   /x97   <U2014> EM DASH
+<TM>                   /x99   <U2122> TRADE MARK SIGN
+<lj>                   /x9A   <U0459> CYRILLIC SMALL LETTER LJE
+</>1>                  /x9B   <U203A> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+<nj>                   /x9C   <U045A> CYRILLIC SMALL LETTER NJE
+<kj>                   /x9D   <U045C> CYRILLIC SMALL LETTER KJE
+<ts>                   /x9E   <U045B> CYRILLIC SMALL LETTER TSHE (Serbocroatian)
+<dz>                   /x9F   <U045F> CYRILLIC SMALL LETTER DZHE
+<NS>                   /xA0   <U00A0> NO-BREAK SPACE
+<V%>                   /xA1   <U040E> CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)
+<v%>                   /xA2   <U045E> CYRILLIC SMALL LETTER SHORT U (Byelorussian)
+<J%>                   /xA3   <U0408> CYRILLIC CAPITAL LETTER JE
+<Cu>                   /xA4   <U00A4> CURRENCY SIGN
+<G3>                   /xA5   <U0490> CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+<BB>                   /xA6   <U00A6> BROKEN BAR
+<SE>                   /xA7   <U00A7> SECTION SIGN
+<IO>                   /xA8   <U0401> CYRILLIC CAPITAL LETTER IO
+<Co>                   /xA9   <U00A9> COPYRIGHT SIGN
+<IE>                   /xAA   <U0404> CYRILLIC CAPITAL LETTER UKRAINIAN IE
+<<<>                   /xAB   <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<NO>                   /xAC   <U00AC> NOT SIGN
+<-->                   /xAD   <U00AD> SOFT HYPHEN
+<Rg>                   /xAE   <U00AE> REGISTERED SIGN
+<YI>                   /xAF   <U0407> CYRILLIC CAPITAL LETTER YI (Ukrainian)
+<DG>                   /xB0   <U00B0> DEGREE SIGN
+<+->                   /xB1   <U00B1> PLUS-MINUS SIGN
+<II>                   /xB2   <U0406> CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+<ii>                   /xB3   <U0456> CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+<g3>                   /xB4   <U0491> CYRILLIC SMALL LETTER GHE WITH UPTURN
+<My>                   /xB5   <U00B5> MICRO SIGN
+<PI>                   /xB6   <U00B6> PILCROW SIGN
+<.M>                   /xB7   <U00B7> MIDDLE DOT
+<io>                   /xB8   <U0451> CYRILLIC SMALL LETTER IO
+<N0>                   /xB9   <U2116> NUMERO SIGN
+<ie>                   /xBA   <U0454> CYRILLIC SMALL LETTER UKRAINIAN IE
+</>/>>                 /xBB   <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<j%>                   /xBC   <U0458> CYRILLIC SMALL LETTER JE
+<DS>                   /xBD   <U0405> CYRILLIC CAPITAL LETTER DZE
+<ds>                   /xBE   <U0455> CYRILLIC SMALL LETTER DZE
+<yi>                   /xBF   <U0457> CYRILLIC SMALL LETTER YI (Ukrainian)
+<A=>                   /xC0   <U0410> CYRILLIC CAPITAL LETTER A
+<B=>                   /xC1   <U0411> CYRILLIC CAPITAL LETTER BE
+<V=>                   /xC2   <U0412> CYRILLIC CAPITAL LETTER VE
+<G=>                   /xC3   <U0413> CYRILLIC CAPITAL LETTER GHE
+<D=>                   /xC4   <U0414> CYRILLIC CAPITAL LETTER DE
+<E=>                   /xC5   <U0415> CYRILLIC CAPITAL LETTER IE
+<Z%>                   /xC6   <U0416> CYRILLIC CAPITAL LETTER ZHE
+<Z=>                   /xC7   <U0417> CYRILLIC CAPITAL LETTER ZE
+<I=>                   /xC8   <U0418> CYRILLIC CAPITAL LETTER I
+<J=>                   /xC9   <U0419> CYRILLIC CAPITAL LETTER SHORT I
+<K=>                   /xCA   <U041A> CYRILLIC CAPITAL LETTER KA
+<L=>                   /xCB   <U041B> CYRILLIC CAPITAL LETTER EL
+<M=>                   /xCC   <U041C> CYRILLIC CAPITAL LETTER EM
+<N=>                   /xCD   <U041D> CYRILLIC CAPITAL LETTER EN
+<O=>                   /xCE   <U041E> CYRILLIC CAPITAL LETTER O
+<P=>                   /xCF   <U041F> CYRILLIC CAPITAL LETTER PE
+<R=>                   /xD0   <U0420> CYRILLIC CAPITAL LETTER ER
+<S=>                   /xD1   <U0421> CYRILLIC CAPITAL LETTER ES
+<T=>                   /xD2   <U0422> CYRILLIC CAPITAL LETTER TE
+<U=>                   /xD3   <U0423> CYRILLIC CAPITAL LETTER U
+<F=>                   /xD4   <U0424> CYRILLIC CAPITAL LETTER EF
+<H=>                   /xD5   <U0425> CYRILLIC CAPITAL LETTER HA
+<C=>                   /xD6   <U0426> CYRILLIC CAPITAL LETTER TSE
+<C%>                   /xD7   <U0427> CYRILLIC CAPITAL LETTER CHE
+<S%>                   /xD8   <U0428> CYRILLIC CAPITAL LETTER SHA
+<Sc>                   /xD9   <U0429> CYRILLIC CAPITAL LETTER SHCHA
+<='>                   /xDA   <U042A> CYRILLIC CAPITAL LETTER HARD SIGN
+<Y=>                   /xDB   <U042B> CYRILLIC CAPITAL LETTER YERU
+<%'>                   /xDC   <U042C> CYRILLIC CAPITAL LETTER SOFT SIGN
+<JE>                   /xDD   <U042D> CYRILLIC CAPITAL LETTER E
+<JU>                   /xDE   <U042E> CYRILLIC CAPITAL LETTER YU
+<JA>                   /xDF   <U042F> CYRILLIC CAPITAL LETTER YA
+<a=>                   /xE0   <U0430> CYRILLIC SMALL LETTER A
+<b=>                   /xE1   <U0431> CYRILLIC SMALL LETTER BE
+<v=>                   /xE2   <U0432> CYRILLIC SMALL LETTER VE
+<g=>                   /xE3   <U0433> CYRILLIC SMALL LETTER GHE
+<d=>                   /xE4   <U0434> CYRILLIC SMALL LETTER DE
+<e=>                   /xE5   <U0435> CYRILLIC SMALL LETTER IE
+<z%>                   /xE6   <U0436> CYRILLIC SMALL LETTER ZHE
+<z=>                   /xE7   <U0437> CYRILLIC SMALL LETTER ZE
+<i=>                   /xE8   <U0438> CYRILLIC SMALL LETTER I
+<j=>                   /xE9   <U0439> CYRILLIC SMALL LETTER SHORT I
+<k=>                   /xEA   <U043A> CYRILLIC SMALL LETTER KA
+<l=>                   /xEB   <U043B> CYRILLIC SMALL LETTER EL
+<m=>                   /xEC   <U043C> CYRILLIC SMALL LETTER EM
+<n=>                   /xED   <U043D> CYRILLIC SMALL LETTER EN
+<o=>                   /xEE   <U043E> CYRILLIC SMALL LETTER O
+<p=>                   /xEF   <U043F> CYRILLIC SMALL LETTER PE
+<r=>                   /xF0   <U0440> CYRILLIC SMALL LETTER ER
+<s=>                   /xF1   <U0441> CYRILLIC SMALL LETTER ES
+<t=>                   /xF2   <U0442> CYRILLIC SMALL LETTER TE
+<u=>                   /xF3   <U0443> CYRILLIC SMALL LETTER U
+<f=>                   /xF4   <U0444> CYRILLIC SMALL LETTER EF
+<h=>                   /xF5   <U0445> CYRILLIC SMALL LETTER HA
+<c=>                   /xF6   <U0446> CYRILLIC SMALL LETTER TSE
+<c%>                   /xF7   <U0447> CYRILLIC SMALL LETTER CHE
+<s%>                   /xF8   <U0448> CYRILLIC SMALL LETTER SHA
+<sc>                   /xF9   <U0449> CYRILLIC SMALL LETTER SHCHA
+<='>                   /xFA   <U044A> CYRILLIC SMALL LETTER HARD SIGN
+<y=>                   /xFB   <U044B> CYRILLIC SMALL LETTER YERU
+<%'>                   /xFC   <U044C> CYRILLIC SMALL LETTER SOFT SIGN
+<je>                   /xFD   <U044D> CYRILLIC SMALL LETTER E
+<ju>                   /xFE   <U044E> CYRILLIC SMALL LETTER YU
+<ja>                   /xFF   <U044F> CYRILLIC SMALL LETTER YA
+<NUL>                  /x00   <U0000> NUL
+<SOH>                  /x01   <U0001> START OF HEADING (SOH)
+<STX>                  /x02   <U0002> START OF TEXT (STX)
+<ETX>                  /x03   <U0003> END OF TEXT (ETX)
+<EOT>                  /x04   <U0004> END OF TRANSMISSION (EOT)
+<ENQ>                  /x05   <U0005> ENQUIRY (ENQ)
+<ACK>                  /x06   <U0006> ACKNOWLEDGE (ACK)
+<alert>                /x07   <U0007> BELL (BEL)
+<BEL>                  /x07   <U0007> BELL (BEL)
+<backspace>            /x08   <U0008> BACKSPACE (BS)
+<tab>                  /x09   <U0009> CHARACTER TABULATION (HT)
+<newline>              /x0A   <U000A> LINE FEED (LF)
+<vertical-tab>         /x0B   <U000B> LINE TABULATION (VT)
+<form-feed>            /x0C   <U000C> FORM FEED (FF)
+<carriage-return>      /x0D   <U000D> CARRIAGE RETURN (CR)
+<DLE>                  /x10   <U0010> DATALINK ESCAPE (DLE)
+<DC1>                  /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<DC2>                  /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<DC3>                  /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<DC4>                  /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NAK>                  /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SYN>                  /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<ETB>                  /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CAN>                  /x18   <U0018> CANCEL (CAN)
+<SUB>                  /x1A   <U001A> SUBSTITUTE (SUB)
+<ESC>                  /x1B   <U001B> ESCAPE (ESC)
+<IS4>                  /x1C   <U001C> FILE SEPARATOR (IS4)
+<IS3>                  /x1D   <U001D> GROUP SEPARATOR (IS3)
+<intro>                /x1D   <U001D> GROUP SEPARATOR (IS3)
+<IS2>                  /x1E   <U001E> RECORD SEPARATOR (IS2)
+<IS1>                  /x1F   <U001F> UNIT SEPARATOR (IS1)
+<DEL>                  /x7F   <U007F> DELETE (DEL)
+<space>                /x20   <U0020> SPACE
+<exclamation-mark>     /x21   <U0021> EXCLAMATION MARK
+<quotation-mark>       /x22   <U0022> QUOTATION MARK
+<number-sign>          /x23   <U0023> NUMBER SIGN
+<dollar-sign>          /x24   <U0024> DOLLAR SIGN
+<percent-sign>         /x25   <U0025> PERCENT SIGN
+<ampersand>            /x26   <U0026> AMPERSAND
+<apostrophe>           /x27   <U0027> APOSTROPHE
+<left-parenthesis>     /x28   <U0028> LEFT PARENTHESIS
+<right-parenthesis>    /x29   <U0029> RIGHT PARENTHESIS
+<asterisk>             /x2A   <U002A> ASTERISK
+<plus-sign>            /x2B   <U002B> PLUS SIGN
+<comma>                /x2C   <U002C> COMMA
+<hyphen>               /x2D   <U002D> HYPHEN-MINUS
+<hyphen-minus>         /x2D   <U002D> HYPHEN-MINUS
+<period>               /x2E   <U002E> FULL STOP
+<full-stop>            /x2E   <U002E> FULL STOP
+<slash>                /x2F   <U002F> SOLIDUS
+<solidus>              /x2F   <U002F> SOLIDUS
+<zero>                 /x30   <U0030> DIGIT ZERO
+<one>                  /x31   <U0031> DIGIT ONE
+<two>                  /x32   <U0032> DIGIT TWO
+<three>                /x33   <U0033> DIGIT THREE
+<four>                 /x34   <U0034> DIGIT FOUR
+<five>                 /x35   <U0035> DIGIT FIVE
+<six>                  /x36   <U0036> DIGIT SIX
+<seven>                /x37   <U0037> DIGIT SEVEN
+<eight>                /x38   <U0038> DIGIT EIGHT
+<nine>                 /x39   <U0039> DIGIT NINE
+<colon>                /x3A   <U003A> COLON
+<semicolon>            /x3B   <U003B> SEMICOLON
+<less-than-sign>       /x3C   <U003C> LESS-THAN SIGN
+<equals-sign>          /x3D   <U003D> EQUALS SIGN
+<greater-than-sign>    /x3E   <U003E> GREATER-THAN SIGN
+<question-mark>        /x3F   <U003F> QUESTION MARK
+<commercial-at>        /x40   <U0040> COMMERCIAL AT
+<left-square-bracket>  /x5B   <U005B> LEFT SQUARE BRACKET
+<backslash>            /x5C   <U005C> REVERSE SOLIDUS
+<reverse-solidus>      /x5C   <U005C> REVERSE SOLIDUS
+<right-square-bracket> /x5D   <U005D> RIGHT SQUARE BRACKET
+<circumflex>           /x5E   <U005E> CIRCUMFLEX ACCENT
+<circumflex-accent>    /x5E   <U005E> CIRCUMFLEX ACCENT
+<underscore>           /x5F   <U005F> LOW LINE
+<low-line>             /x5F   <U005F> LOW LINE
+<grave-accent>         /x60   <U0060> GRAVE ACCENT
+<left-brace>           /x7B   <U007B> LEFT CURLY BRACKET
+<left-curly-bracket>   /x7B   <U007B> LEFT CURLY BRACKET
+<vertical-line>        /x7C   <U007C> VERTICAL LINE
+<right-brace>          /x7D   <U007D> RIGHT CURLY BRACKET
+<right-curly-bracket>  /x7D   <U007D> RIGHT CURLY BRACKET
+<tilde>                /x7E   <U007E> TILDE
+END CHARMAP
+
+"
+!
+
 mappingURL2_relativePathName
     ^ 'CP1251'
 ! !
@@ -18533,6 +19097,357 @@
 
 !CharacterEncoder::MS_EastEuropean class methodsFor:'mapping'!
 
+mapping
+"
+# From: http://std.dkuug.dk/i18n/charmaps/CP1250
+
+<code_set_name> CP1250
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% repertoiremap: mnemonic,ds
+%  source: UNICODE 1.0
+
+% alias MS-EE
+CHARMAP
+<NU>                   /x00   <U0000> NULL (NUL)
+<SH>                   /x01   <U0001> START OF HEADING (SOH)
+<SX>                   /x02   <U0002> START OF TEXT (STX)
+<EX>                   /x03   <U0003> END OF TEXT (ETX)
+<ET>                   /x04   <U0004> END OF TRANSMISSION (EOT)
+<EQ>                   /x05   <U0005> ENQUIRY (ENQ)
+<AK>                   /x06   <U0006> ACKNOWLEDGE (ACK)
+<BL>                   /x07   <U0007> BELL (BEL)
+<BS>                   /x08   <U0008> BACKSPACE (BS)
+<HT>                   /x09   <U0009> CHARACTER TABULATION (HT)
+<LF>                   /x0A   <U000A> LINE FEED (LF)
+<VT>                   /x0B   <U000B> LINE TABULATION (VT)
+<FF>                   /x0C   <U000C> FORM FEED (FF)
+<CR>                   /x0D   <U000D> CARRIAGE RETURN (CR)
+<SO>                   /x0E   <U000E> SHIFT OUT (SO)
+<SI>                   /x0F   <U000F> SHIFT IN (SI)
+<DL>                   /x10   <U0010> DATALINK ESCAPE (DLE)
+<D1>                   /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<D2>                   /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<D3>                   /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<D4>                   /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NK>                   /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SY>                   /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<EB>                   /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CN>                   /x18   <U0018> CANCEL (CAN)
+<EM>                   /x19   <U0019> END OF MEDIUM (EM)
+<SB>                   /x1A   <U001A> SUBSTITUTE (SUB)
+<EC>                   /x1B   <U001B> ESCAPE (ESC)
+<FS>                   /x1C   <U001C> FILE SEPARATOR (IS4)
+<GS>                   /x1D   <U001D> GROUP SEPARATOR (IS3)
+<RS>                   /x1E   <U001E> RECORD SEPARATOR (IS2)
+<US>                   /x1F   <U001F> UNIT SEPARATOR (IS1)
+<SP>                   /x20   <U0020> SPACE
+<!!>                    /x21   <U0021> EXCLAMATION MARK
+<'>                    /x22   <U0022> QUOTATION MARK
+<Nb>                   /x23   <U0023> NUMBER SIGN
+<DO>                   /x24   <U0024> DOLLAR SIGN
+<%>                    /x25   <U0025> PERCENT SIGN
+<&>                    /x26   <U0026> AMPERSAND
+<'>                    /x27   <U0027> APOSTROPHE
+<(>                    /x28   <U0028> LEFT PARENTHESIS
+<)>                    /x29   <U0029> RIGHT PARENTHESIS
+<*>                    /x2A   <U002A> ASTERISK
+<+>                    /x2B   <U002B> PLUS SIGN
+<,>                    /x2C   <U002C> COMMA
+<->                    /x2D   <U002D> HYPHEN-MINUS
+<.>                    /x2E   <U002E> FULL STOP
+<//>                   /x2F   <U002F> SOLIDUS
+<0>                    /x30   <U0030> DIGIT ZERO
+<1>                    /x31   <U0031> DIGIT ONE
+<2>                    /x32   <U0032> DIGIT TWO
+<3>                    /x33   <U0033> DIGIT THREE
+<4>                    /x34   <U0034> DIGIT FOUR
+<5>                    /x35   <U0035> DIGIT FIVE
+<6>                    /x36   <U0036> DIGIT SIX
+<7>                    /x37   <U0037> DIGIT SEVEN
+<8>                    /x38   <U0038> DIGIT EIGHT
+<9>                    /x39   <U0039> DIGIT NINE
+<:>                    /x3A   <U003A> COLON
+<;>                    /x3B   <U003B> SEMICOLON
+<<>                    /x3C   <U003C> LESS-THAN SIGN
+<=>                    /x3D   <U003D> EQUALS SIGN
+</>>                   /x3E   <U003E> GREATER-THAN SIGN
+<?>                    /x3F   <U003F> QUESTION MARK
+<At>                   /x40   <U0040> COMMERCIAL AT
+<A>                    /x41   <U0041> LATIN CAPITAL LETTER A
+<B>                    /x42   <U0042> LATIN CAPITAL LETTER B
+<C>                    /x43   <U0043> LATIN CAPITAL LETTER C
+<D>                    /x44   <U0044> LATIN CAPITAL LETTER D
+<E>                    /x45   <U0045> LATIN CAPITAL LETTER E
+<F>                    /x46   <U0046> LATIN CAPITAL LETTER F
+<G>                    /x47   <U0047> LATIN CAPITAL LETTER G
+<H>                    /x48   <U0048> LATIN CAPITAL LETTER H
+<I>                    /x49   <U0049> LATIN CAPITAL LETTER I
+<J>                    /x4A   <U004A> LATIN CAPITAL LETTER J
+<K>                    /x4B   <U004B> LATIN CAPITAL LETTER K
+<L>                    /x4C   <U004C> LATIN CAPITAL LETTER L
+<M>                    /x4D   <U004D> LATIN CAPITAL LETTER M
+<N>                    /x4E   <U004E> LATIN CAPITAL LETTER N
+<O>                    /x4F   <U004F> LATIN CAPITAL LETTER O
+<P>                    /x50   <U0050> LATIN CAPITAL LETTER P
+<Q>                    /x51   <U0051> LATIN CAPITAL LETTER Q
+<R>                    /x52   <U0052> LATIN CAPITAL LETTER R
+<S>                    /x53   <U0053> LATIN CAPITAL LETTER S
+<T>                    /x54   <U0054> LATIN CAPITAL LETTER T
+<U>                    /x55   <U0055> LATIN CAPITAL LETTER U
+<V>                    /x56   <U0056> LATIN CAPITAL LETTER V
+<W>                    /x57   <U0057> LATIN CAPITAL LETTER W
+<X>                    /x58   <U0058> LATIN CAPITAL LETTER X
+<Y>                    /x59   <U0059> LATIN CAPITAL LETTER Y
+<Z>                    /x5A   <U005A> LATIN CAPITAL LETTER Z
+<<(>                   /x5B   <U005B> LEFT SQUARE BRACKET
+<////>                 /x5C   <U005C> REVERSE SOLIDUS
+<)/>>                  /x5D   <U005D> RIGHT SQUARE BRACKET
+<'/>>                  /x5E   <U005E> CIRCUMFLEX ACCENT
+<_>                    /x5F   <U005F> LOW LINE
+<'!!>                   /x60   <U0060> GRAVE ACCENT
+<a>                    /x61   <U0061> LATIN SMALL LETTER A
+<b>                    /x62   <U0062> LATIN SMALL LETTER B
+<c>                    /x63   <U0063> LATIN SMALL LETTER C
+<d>                    /x64   <U0064> LATIN SMALL LETTER D
+<e>                    /x65   <U0065> LATIN SMALL LETTER E
+<f>                    /x66   <U0066> LATIN SMALL LETTER F
+<g>                    /x67   <U0067> LATIN SMALL LETTER G
+<h>                    /x68   <U0068> LATIN SMALL LETTER H
+<i>                    /x69   <U0069> LATIN SMALL LETTER I
+<j>                    /x6A   <U006A> LATIN SMALL LETTER J
+<k>                    /x6B   <U006B> LATIN SMALL LETTER K
+<l>                    /x6C   <U006C> LATIN SMALL LETTER L
+<m>                    /x6D   <U006D> LATIN SMALL LETTER M
+<n>                    /x6E   <U006E> LATIN SMALL LETTER N
+<o>                    /x6F   <U006F> LATIN SMALL LETTER O
+<p>                    /x70   <U0070> LATIN SMALL LETTER P
+<q>                    /x71   <U0071> LATIN SMALL LETTER Q
+<r>                    /x72   <U0072> LATIN SMALL LETTER R
+<s>                    /x73   <U0073> LATIN SMALL LETTER S
+<t>                    /x74   <U0074> LATIN SMALL LETTER T
+<u>                    /x75   <U0075> LATIN SMALL LETTER U
+<v>                    /x76   <U0076> LATIN SMALL LETTER V
+<w>                    /x77   <U0077> LATIN SMALL LETTER W
+<x>                    /x78   <U0078> LATIN SMALL LETTER X
+<y>                    /x79   <U0079> LATIN SMALL LETTER Y
+<z>                    /x7A   <U007A> LATIN SMALL LETTER Z
+<(!!>                   /x7B   <U007B> LEFT CURLY BRACKET
+<!!!!>                   /x7C   <U007C> VERTICAL LINE
+<!!)>                   /x7D   <U007D> RIGHT CURLY BRACKET
+<'?>                   /x7E   <U007E> TILDE
+<DT>                   /x7F   <U007F> DELETE (DEL)
+<.9>                   /x82   <U201A> SINGLE LOW-9 QUOTATION MARK
+<:9>                   /x84   <U201E> DOUBLE LOW-9 QUOTATION MARK
+<.3>                   /x85   <U2026> HORIZONTAL ELLIPSIS
+<//->                  /x86   <U2020> DAGGER
+<//=>                  /x87   <U2021> DOUBLE DAGGER
+<%0>                   /x89   <U2030> PER MILLE SIGN
+<S<>                   /x8A   <U0160> LATIN CAPITAL LETTER S WITH CARON
+<<1>                   /x8B   <U2039> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+<S'>                   /x8C   <U015A> LATIN CAPITAL LETTER S WITH ACUTE
+<T<>                   /x8D   <U0164> LATIN CAPITAL LETTER T WITH CARON
+<Z<>                   /x8E   <U017D> LATIN CAPITAL LETTER Z WITH CARON
+<Z'>                   /x8F   <U0179> LATIN CAPITAL LETTER Z WITH ACUTE
+<'6>                   /x91   <U2018> LEFT SINGLE QUOTATION MARK
+<'9>                   /x92   <U2019> RIGHT SINGLE QUOTATION MARK
+<'6>                   /x93   <U201C> LEFT DOUBLE QUOTATION MARK
+<'9>                   /x94   <U201D> RIGHT DOUBLE QUOTATION MARK
+<sb>                   /x95   <U2022> BULLET
+<-N>                   /x96   <U2013> EN DASH
+<-M>                   /x97   <U2014> EM DASH
+<TM>                   /x99   <U2122> TRADE MARK SIGN
+<s<>                   /x9A   <U0161> LATIN SMALL LETTER S WITH CARON
+</>1>                  /x9B   <U203A> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+<s'>                   /x9C   <U015B> LATIN SMALL LETTER S WITH ACUTE
+<t<>                   /x9D   <U0165> LATIN SMALL LETTER T WITH CARON
+<z<>                   /x9E   <U017E> LATIN SMALL LETTER Z WITH CARON
+<z'>                   /x9F   <U017A> LATIN SMALL LETTER Z WITH ACUTE
+<NS>                   /xA0   <U00A0> NO-BREAK SPACE
+<'<>                   /xA1   <U02C7> CARON (Mandarin Chinese third tone)
+<'(>                   /xA2   <U02D8> BREVE
+<L//>                  /xA3   <U0141> LATIN CAPITAL LETTER L WITH STROKE
+<Cu>                   /xA4   <U00A4> CURRENCY SIGN
+<A;>                   /xA5   <U0104> LATIN CAPITAL LETTER A WITH OGONEK
+<BB>                   /xA6   <U00A6> BROKEN BAR
+<SE>                   /xA7   <U00A7> SECTION SIGN
+<':>                   /xA8   <U00A8> DIAERESIS
+<Co>                   /xA9   <U00A9> COPYRIGHT SIGN
+<S,>                   /xAA   <U015E> LATIN CAPITAL LETTER S WITH CEDILLA
+<<<>                   /xAB   <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<NO>                   /xAC   <U00AC> NOT SIGN
+<-->                   /xAD   <U00AD> SOFT HYPHEN
+<Rg>                   /xAE   <U00AE> REGISTERED SIGN
+<Z.>                   /xAF   <U017B> LATIN CAPITAL LETTER Z WITH DOT ABOVE
+<DG>                   /xB0   <U00B0> DEGREE SIGN
+<+->                   /xB1   <U00B1> PLUS-MINUS SIGN
+<';>                   /xB2   <U02DB> OGONEK
+<l//>                  /xB3   <U0142> LATIN SMALL LETTER L WITH STROKE
+<''>                   /xB4   <U00B4> ACUTE ACCENT
+<My>                   /xB5   <U00B5> MICRO SIGN
+<PI>                   /xB6   <U00B6> PILCROW SIGN
+<.M>                   /xB7   <U00B7> MIDDLE DOT
+<',>                   /xB8   <U00B8> CEDILLA
+<a;>                   /xB9   <U0105> LATIN SMALL LETTER A WITH OGONEK
+<s,>                   /xBA   <U015F> LATIN SMALL LETTER S WITH CEDILLA
+</>/>>                 /xBB   <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<L<>                   /xBC   <U013D> LATIN CAPITAL LETTER L WITH CARON
+<''>                   /xBD   <U02DD> DOUBLE ACUTE ACCENT
+<l<>                   /xBE   <U013E> LATIN SMALL LETTER L WITH CARON
+<z.>                   /xBF   <U017C> LATIN SMALL LETTER Z WITH DOT ABOVE
+<R'>                   /xC0   <U0154> LATIN CAPITAL LETTER R WITH ACUTE
+<A'>                   /xC1   <U00C1> LATIN CAPITAL LETTER A WITH ACUTE
+<A/>>                  /xC2   <U00C2> LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<A(>                   /xC3   <U0102> LATIN CAPITAL LETTER A WITH BREVE
+<A:>                   /xC4   <U00C4> LATIN CAPITAL LETTER A WITH DIAERESIS
+<L'>                   /xC5   <U0139> LATIN CAPITAL LETTER L WITH ACUTE
+<C'>                   /xC6   <U0106> LATIN CAPITAL LETTER C WITH ACUTE
+<C,>                   /xC7   <U00C7> LATIN CAPITAL LETTER C WITH CEDILLA
+<C<>                   /xC8   <U010C> LATIN CAPITAL LETTER C WITH CARON
+<E'>                   /xC9   <U00C9> LATIN CAPITAL LETTER E WITH ACUTE
+<E;>                   /xCA   <U0118> LATIN CAPITAL LETTER E WITH OGONEK
+<E:>                   /xCB   <U00CB> LATIN CAPITAL LETTER E WITH DIAERESIS
+<E<>                   /xCC   <U011A> LATIN CAPITAL LETTER E WITH CARON
+<I'>                   /xCD   <U00CD> LATIN CAPITAL LETTER I WITH ACUTE
+<I/>>                  /xCE   <U00CE> LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<D<>                   /xCF   <U010E> LATIN CAPITAL LETTER D WITH CARON
+<D//>                  /xD0   <U0110> LATIN CAPITAL LETTER D WITH STROKE
+<N'>                   /xD1   <U0143> LATIN CAPITAL LETTER N WITH ACUTE
+<N<>                   /xD2   <U0147> LATIN CAPITAL LETTER N WITH CARON
+<O'>                   /xD3   <U00D3> LATIN CAPITAL LETTER O WITH ACUTE
+<O/>>                  /xD4   <U00D4> LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<O'>                   /xD5   <U0150> LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+<O:>                   /xD6   <U00D6> LATIN CAPITAL LETTER O WITH DIAERESIS
+<*X>                   /xD7   <U00D7> MULTIPLICATION SIGN
+<R<>                   /xD8   <U0158> LATIN CAPITAL LETTER R WITH CARON
+<U0>                   /xD9   <U016E> LATIN CAPITAL LETTER U WITH RING ABOVE
+<U'>                   /xDA   <U00DA> LATIN CAPITAL LETTER U WITH ACUTE
+<U'>                   /xDB   <U0170> LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+<U:>                   /xDC   <U00DC> LATIN CAPITAL LETTER U WITH DIAERESIS
+<Y'>                   /xDD   <U00DD> LATIN CAPITAL LETTER Y WITH ACUTE
+<T,>                   /xDE   <U0162> LATIN CAPITAL LETTER T WITH CEDILLA
+<ss>                   /xDF   <U00DF> LATIN SMALL LETTER SHARP S (German)
+<r'>                   /xE0   <U0155> LATIN SMALL LETTER R WITH ACUTE
+<a'>                   /xE1   <U00E1> LATIN SMALL LETTER A WITH ACUTE
+<a/>>                  /xE2   <U00E2> LATIN SMALL LETTER A WITH CIRCUMFLEX
+<a(>                   /xE3   <U0103> LATIN SMALL LETTER A WITH BREVE
+<a:>                   /xE4   <U00E4> LATIN SMALL LETTER A WITH DIAERESIS
+<l'>                   /xE5   <U013A> LATIN SMALL LETTER L WITH ACUTE
+<c'>                   /xE6   <U0107> LATIN SMALL LETTER C WITH ACUTE
+<c,>                   /xE7   <U00E7> LATIN SMALL LETTER C WITH CEDILLA
+<c<>                   /xE8   <U010D> LATIN SMALL LETTER C WITH CARON
+<e'>                   /xE9   <U00E9> LATIN SMALL LETTER E WITH ACUTE
+<e;>                   /xEA   <U0119> LATIN SMALL LETTER E WITH OGONEK
+<e:>                   /xEB   <U00EB> LATIN SMALL LETTER E WITH DIAERESIS
+<e<>                   /xEC   <U011B> LATIN SMALL LETTER E WITH CARON
+<i'>                   /xED   <U00ED> LATIN SMALL LETTER I WITH ACUTE
+<i/>>                  /xEE   <U00EE> LATIN SMALL LETTER I WITH CIRCUMFLEX
+<d<>                   /xEF   <U010F> LATIN SMALL LETTER D WITH CARON
+<d//>                  /xF0   <U0111> LATIN SMALL LETTER D WITH STROKE
+<n'>                   /xF1   <U0144> LATIN SMALL LETTER N WITH ACUTE
+<n<>                   /xF2   <U0148> LATIN SMALL LETTER N WITH CARON
+<o'>                   /xF3   <U00F3> LATIN SMALL LETTER O WITH ACUTE
+<o/>>                  /xF4   <U00F4> LATIN SMALL LETTER O WITH CIRCUMFLEX
+<o'>                   /xF5   <U0151> LATIN SMALL LETTER O WITH DOUBLE ACUTE
+<o:>                   /xF6   <U00F6> LATIN SMALL LETTER O WITH DIAERESIS
+<-:>                   /xF7   <U00F7> DIVISION SIGN
+<r<>                   /xF8   <U0159> LATIN SMALL LETTER R WITH CARON
+<u0>                   /xF9   <U016F> LATIN SMALL LETTER U WITH RING ABOVE
+<u'>                   /xFA   <U00FA> LATIN SMALL LETTER U WITH ACUTE
+<u'>                   /xFB   <U0171> LATIN SMALL LETTER U WITH DOUBLE ACUTE
+<u:>                   /xFC   <U00FC> LATIN SMALL LETTER U WITH DIAERESIS
+<y'>                   /xFD   <U00FD> LATIN SMALL LETTER Y WITH ACUTE
+<t,>                   /xFE   <U0163> LATIN SMALL LETTER T WITH CEDILLA
+<'.>                   /xFF   <U02D9> DOT ABOVE (Mandarin Chinese light tone)
+<NUL>                  /x00   <U0000> NUL
+<SOH>                  /x01   <U0001> START OF HEADING (SOH)
+<STX>                  /x02   <U0002> START OF TEXT (STX)
+<ETX>                  /x03   <U0003> END OF TEXT (ETX)
+<EOT>                  /x04   <U0004> END OF TRANSMISSION (EOT)
+<ENQ>                  /x05   <U0005> ENQUIRY (ENQ)
+<ACK>                  /x06   <U0006> ACKNOWLEDGE (ACK)
+<alert>                /x07   <U0007> BELL (BEL)
+<BEL>                  /x07   <U0007> BELL (BEL)
+<backspace>            /x08   <U0008> BACKSPACE (BS)
+<tab>                  /x09   <U0009> CHARACTER TABULATION (HT)
+<newline>              /x0A   <U000A> LINE FEED (LF)
+<vertical-tab>         /x0B   <U000B> LINE TABULATION (VT)
+<form-feed>            /x0C   <U000C> FORM FEED (FF)
+<carriage-return>      /x0D   <U000D> CARRIAGE RETURN (CR)
+<DLE>                  /x10   <U0010> DATALINK ESCAPE (DLE)
+<DC1>                  /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<DC2>                  /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<DC3>                  /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<DC4>                  /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NAK>                  /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SYN>                  /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<ETB>                  /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CAN>                  /x18   <U0018> CANCEL (CAN)
+<SUB>                  /x1A   <U001A> SUBSTITUTE (SUB)
+<ESC>                  /x1B   <U001B> ESCAPE (ESC)
+<IS4>                  /x1C   <U001C> FILE SEPARATOR (IS4)
+<IS3>                  /x1D   <U001D> GROUP SEPARATOR (IS3)
+<intro>                /x1D   <U001D> GROUP SEPARATOR (IS3)
+<IS2>                  /x1E   <U001E> RECORD SEPARATOR (IS2)
+<IS1>                  /x1F   <U001F> UNIT SEPARATOR (IS1)
+<DEL>                  /x7F   <U007F> DELETE (DEL)
+<space>                /x20   <U0020> SPACE
+<exclamation-mark>     /x21   <U0021> EXCLAMATION MARK
+<quotation-mark>       /x22   <U0022> QUOTATION MARK
+<number-sign>          /x23   <U0023> NUMBER SIGN
+<dollar-sign>          /x24   <U0024> DOLLAR SIGN
+<percent-sign>         /x25   <U0025> PERCENT SIGN
+<ampersand>            /x26   <U0026> AMPERSAND
+<apostrophe>           /x27   <U0027> APOSTROPHE
+<left-parenthesis>     /x28   <U0028> LEFT PARENTHESIS
+<right-parenthesis>    /x29   <U0029> RIGHT PARENTHESIS
+<asterisk>             /x2A   <U002A> ASTERISK
+<plus-sign>            /x2B   <U002B> PLUS SIGN
+<comma>                /x2C   <U002C> COMMA
+<hyphen>               /x2D   <U002D> HYPHEN-MINUS
+<hyphen-minus>         /x2D   <U002D> HYPHEN-MINUS
+<period>               /x2E   <U002E> FULL STOP
+<full-stop>            /x2E   <U002E> FULL STOP
+<slash>                /x2F   <U002F> SOLIDUS
+<solidus>              /x2F   <U002F> SOLIDUS
+<zero>                 /x30   <U0030> DIGIT ZERO
+<one>                  /x31   <U0031> DIGIT ONE
+<two>                  /x32   <U0032> DIGIT TWO
+<three>                /x33   <U0033> DIGIT THREE
+<four>                 /x34   <U0034> DIGIT FOUR
+<five>                 /x35   <U0035> DIGIT FIVE
+<six>                  /x36   <U0036> DIGIT SIX
+<seven>                /x37   <U0037> DIGIT SEVEN
+<eight>                /x38   <U0038> DIGIT EIGHT
+<nine>                 /x39   <U0039> DIGIT NINE
+<colon>                /x3A   <U003A> COLON
+<semicolon>            /x3B   <U003B> SEMICOLON
+<less-than-sign>       /x3C   <U003C> LESS-THAN SIGN
+<equals-sign>          /x3D   <U003D> EQUALS SIGN
+<greater-than-sign>    /x3E   <U003E> GREATER-THAN SIGN
+<question-mark>        /x3F   <U003F> QUESTION MARK
+<commercial-at>        /x40   <U0040> COMMERCIAL AT
+<left-square-bracket>  /x5B   <U005B> LEFT SQUARE BRACKET
+<backslash>            /x5C   <U005C> REVERSE SOLIDUS
+<reverse-solidus>      /x5C   <U005C> REVERSE SOLIDUS
+<right-square-bracket> /x5D   <U005D> RIGHT SQUARE BRACKET
+<circumflex>           /x5E   <U005E> CIRCUMFLEX ACCENT
+<circumflex-accent>    /x5E   <U005E> CIRCUMFLEX ACCENT
+<underscore>           /x5F   <U005F> LOW LINE
+<low-line>             /x5F   <U005F> LOW LINE
+<grave-accent>         /x60   <U0060> GRAVE ACCENT
+<left-brace>           /x7B   <U007B> LEFT CURLY BRACKET
+<left-curly-bracket>   /x7B   <U007B> LEFT CURLY BRACKET
+<vertical-line>        /x7C   <U007C> VERTICAL LINE
+<right-brace>          /x7D   <U007D> RIGHT CURLY BRACKET
+<right-curly-bracket>  /x7D   <U007D> RIGHT CURLY BRACKET
+<tilde>                /x7E   <U007E> TILDE
+END CHARMAP
+
+"
+!
+
 mappingURL2_relativePathName
     ^ 'CP1250'
 ! !
@@ -18545,6 +19460,345 @@
 
 !CharacterEncoder::MS_Greek class methodsFor:'mapping'!
 
+mapping
+"
+# From: http://std.dkuug.dk/i18n/charmaps/CP1253
+
+<code_set_name> CP1253
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% repertoiremap: mnemonic,ds
+%  source: UNICODE 1.0
+
+% alias MS-GREEK
+CHARMAP
+<NU>                   /x00   <U0000> NULL (NUL)
+<SH>                   /x01   <U0001> START OF HEADING (SOH)
+<SX>                   /x02   <U0002> START OF TEXT (STX)
+<EX>                   /x03   <U0003> END OF TEXT (ETX)
+<ET>                   /x04   <U0004> END OF TRANSMISSION (EOT)
+<EQ>                   /x05   <U0005> ENQUIRY (ENQ)
+<AK>                   /x06   <U0006> ACKNOWLEDGE (ACK)
+<BL>                   /x07   <U0007> BELL (BEL)
+<BS>                   /x08   <U0008> BACKSPACE (BS)
+<HT>                   /x09   <U0009> CHARACTER TABULATION (HT)
+<LF>                   /x0A   <U000A> LINE FEED (LF)
+<VT>                   /x0B   <U000B> LINE TABULATION (VT)
+<FF>                   /x0C   <U000C> FORM FEED (FF)
+<CR>                   /x0D   <U000D> CARRIAGE RETURN (CR)
+<SO>                   /x0E   <U000E> SHIFT OUT (SO)
+<SI>                   /x0F   <U000F> SHIFT IN (SI)
+<DL>                   /x10   <U0010> DATALINK ESCAPE (DLE)
+<D1>                   /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<D2>                   /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<D3>                   /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<D4>                   /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NK>                   /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SY>                   /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<EB>                   /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CN>                   /x18   <U0018> CANCEL (CAN)
+<EM>                   /x19   <U0019> END OF MEDIUM (EM)
+<SB>                   /x1A   <U001A> SUBSTITUTE (SUB)
+<EC>                   /x1B   <U001B> ESCAPE (ESC)
+<FS>                   /x1C   <U001C> FILE SEPARATOR (IS4)
+<GS>                   /x1D   <U001D> GROUP SEPARATOR (IS3)
+<RS>                   /x1E   <U001E> RECORD SEPARATOR (IS2)
+<US>                   /x1F   <U001F> UNIT SEPARATOR (IS1)
+<SP>                   /x20   <U0020> SPACE
+<!!>                    /x21   <U0021> EXCLAMATION MARK
+<'>                    /x22   <U0022> QUOTATION MARK
+<Nb>                   /x23   <U0023> NUMBER SIGN
+<DO>                   /x24   <U0024> DOLLAR SIGN
+<%>                    /x25   <U0025> PERCENT SIGN
+<&>                    /x26   <U0026> AMPERSAND
+<'>                    /x27   <U0027> APOSTROPHE
+<(>                    /x28   <U0028> LEFT PARENTHESIS
+<)>                    /x29   <U0029> RIGHT PARENTHESIS
+<*>                    /x2A   <U002A> ASTERISK
+<+>                    /x2B   <U002B> PLUS SIGN
+<,>                    /x2C   <U002C> COMMA
+<->                    /x2D   <U002D> HYPHEN-MINUS
+<.>                    /x2E   <U002E> FULL STOP
+<//>                   /x2F   <U002F> SOLIDUS
+<0>                    /x30   <U0030> DIGIT ZERO
+<1>                    /x31   <U0031> DIGIT ONE
+<2>                    /x32   <U0032> DIGIT TWO
+<3>                    /x33   <U0033> DIGIT THREE
+<4>                    /x34   <U0034> DIGIT FOUR
+<5>                    /x35   <U0035> DIGIT FIVE
+<6>                    /x36   <U0036> DIGIT SIX
+<7>                    /x37   <U0037> DIGIT SEVEN
+<8>                    /x38   <U0038> DIGIT EIGHT
+<9>                    /x39   <U0039> DIGIT NINE
+<:>                    /x3A   <U003A> COLON
+<;>                    /x3B   <U003B> SEMICOLON
+<<>                    /x3C   <U003C> LESS-THAN SIGN
+<=>                    /x3D   <U003D> EQUALS SIGN
+</>>                   /x3E   <U003E> GREATER-THAN SIGN
+<?>                    /x3F   <U003F> QUESTION MARK
+<At>                   /x40   <U0040> COMMERCIAL AT
+<A>                    /x41   <U0041> LATIN CAPITAL LETTER A
+<B>                    /x42   <U0042> LATIN CAPITAL LETTER B
+<C>                    /x43   <U0043> LATIN CAPITAL LETTER C
+<D>                    /x44   <U0044> LATIN CAPITAL LETTER D
+<E>                    /x45   <U0045> LATIN CAPITAL LETTER E
+<F>                    /x46   <U0046> LATIN CAPITAL LETTER F
+<G>                    /x47   <U0047> LATIN CAPITAL LETTER G
+<H>                    /x48   <U0048> LATIN CAPITAL LETTER H
+<I>                    /x49   <U0049> LATIN CAPITAL LETTER I
+<J>                    /x4A   <U004A> LATIN CAPITAL LETTER J
+<K>                    /x4B   <U004B> LATIN CAPITAL LETTER K
+<L>                    /x4C   <U004C> LATIN CAPITAL LETTER L
+<M>                    /x4D   <U004D> LATIN CAPITAL LETTER M
+<N>                    /x4E   <U004E> LATIN CAPITAL LETTER N
+<O>                    /x4F   <U004F> LATIN CAPITAL LETTER O
+<P>                    /x50   <U0050> LATIN CAPITAL LETTER P
+<Q>                    /x51   <U0051> LATIN CAPITAL LETTER Q
+<R>                    /x52   <U0052> LATIN CAPITAL LETTER R
+<S>                    /x53   <U0053> LATIN CAPITAL LETTER S
+<T>                    /x54   <U0054> LATIN CAPITAL LETTER T
+<U>                    /x55   <U0055> LATIN CAPITAL LETTER U
+<V>                    /x56   <U0056> LATIN CAPITAL LETTER V
+<W>                    /x57   <U0057> LATIN CAPITAL LETTER W
+<X>                    /x58   <U0058> LATIN CAPITAL LETTER X
+<Y>                    /x59   <U0059> LATIN CAPITAL LETTER Y
+<Z>                    /x5A   <U005A> LATIN CAPITAL LETTER Z
+<<(>                   /x5B   <U005B> LEFT SQUARE BRACKET
+<////>                 /x5C   <U005C> REVERSE SOLIDUS
+<)/>>                  /x5D   <U005D> RIGHT SQUARE BRACKET
+<'/>>                  /x5E   <U005E> CIRCUMFLEX ACCENT
+<_>                    /x5F   <U005F> LOW LINE
+<'!!>                   /x60   <U0060> GRAVE ACCENT
+<a>                    /x61   <U0061> LATIN SMALL LETTER A
+<b>                    /x62   <U0062> LATIN SMALL LETTER B
+<c>                    /x63   <U0063> LATIN SMALL LETTER C
+<d>                    /x64   <U0064> LATIN SMALL LETTER D
+<e>                    /x65   <U0065> LATIN SMALL LETTER E
+<f>                    /x66   <U0066> LATIN SMALL LETTER F
+<g>                    /x67   <U0067> LATIN SMALL LETTER G
+<h>                    /x68   <U0068> LATIN SMALL LETTER H
+<i>                    /x69   <U0069> LATIN SMALL LETTER I
+<j>                    /x6A   <U006A> LATIN SMALL LETTER J
+<k>                    /x6B   <U006B> LATIN SMALL LETTER K
+<l>                    /x6C   <U006C> LATIN SMALL LETTER L
+<m>                    /x6D   <U006D> LATIN SMALL LETTER M
+<n>                    /x6E   <U006E> LATIN SMALL LETTER N
+<o>                    /x6F   <U006F> LATIN SMALL LETTER O
+<p>                    /x70   <U0070> LATIN SMALL LETTER P
+<q>                    /x71   <U0071> LATIN SMALL LETTER Q
+<r>                    /x72   <U0072> LATIN SMALL LETTER R
+<s>                    /x73   <U0073> LATIN SMALL LETTER S
+<t>                    /x74   <U0074> LATIN SMALL LETTER T
+<u>                    /x75   <U0075> LATIN SMALL LETTER U
+<v>                    /x76   <U0076> LATIN SMALL LETTER V
+<w>                    /x77   <U0077> LATIN SMALL LETTER W
+<x>                    /x78   <U0078> LATIN SMALL LETTER X
+<y>                    /x79   <U0079> LATIN SMALL LETTER Y
+<z>                    /x7A   <U007A> LATIN SMALL LETTER Z
+<(!!>                   /x7B   <U007B> LEFT CURLY BRACKET
+<!!!!>                   /x7C   <U007C> VERTICAL LINE
+<!!)>                   /x7D   <U007D> RIGHT CURLY BRACKET
+<'?>                   /x7E   <U007E> TILDE
+<DT>                   /x7F   <U007F> DELETE (DEL)
+<.9>                   /x82   <U201A> SINGLE LOW-9 QUOTATION MARK
+<f2>                   /x83   <U0192> LATIN SMALL LETTER F WITH HOOK
+<:9>                   /x84   <U201E> DOUBLE LOW-9 QUOTATION MARK
+<.3>                   /x85   <U2026> HORIZONTAL ELLIPSIS
+<//->                  /x86   <U2020> DAGGER
+<//=>                  /x87   <U2021> DOUBLE DAGGER
+<%0>                   /x89   <U2030> PER MILLE SIGN
+<<1>                   /x8B   <U2039> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+<'6>                   /x91   <U2018> LEFT SINGLE QUOTATION MARK
+<'9>                   /x92   <U2019> RIGHT SINGLE QUOTATION MARK
+<'6>                   /x93   <U201C> LEFT DOUBLE QUOTATION MARK
+<'9>                   /x94   <U201D> RIGHT DOUBLE QUOTATION MARK
+<sb>                   /x95   <U2022> BULLET
+<-N>                   /x96   <U2013> EN DASH
+<-M>                   /x97   <U2014> EM DASH
+<TM>                   /x99   <U2122> TRADE MARK SIGN
+</>1>                  /x9B   <U203A> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+<NS>                   /xA0   <U00A0> NO-BREAK SPACE
+<'%>                   /xA1   <U0385> GREEK DIALYTIKA TONOS
+<A%>                   /xA2   <U0386> GREEK CAPITAL LETTER ALPHA WITH TONOS
+<Pd>                   /xA3   <U00A3> POUND SIGN
+<Cu>                   /xA4   <U00A4> CURRENCY SIGN
+<Ye>                   /xA5   <U00A5> YEN SIGN
+<BB>                   /xA6   <U00A6> BROKEN BAR
+<SE>                   /xA7   <U00A7> SECTION SIGN
+<':>                   /xA8   <U00A8> DIAERESIS
+<Co>                   /xA9   <U00A9> COPYRIGHT SIGN
+<<<>                   /xAB   <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<NO>                   /xAC   <U00AC> NOT SIGN
+<-->                   /xAD   <U00AD> SOFT HYPHEN
+<Rg>                   /xAE   <U00AE> REGISTERED SIGN
+<-3>                   /xAF   <U2015> HORIZONTAL BAR
+<DG>                   /xB0   <U00B0> DEGREE SIGN
+<+->                   /xB1   <U00B1> PLUS-MINUS SIGN
+<2S>                   /xB2   <U00B2> SUPERSCRIPT TWO
+<3S>                   /xB3   <U00B3> SUPERSCRIPT THREE
+<'*>                   /xB4   <U0384> GREEK TONOS
+<My>                   /xB5   <U00B5> MICRO SIGN
+<PI>                   /xB6   <U00B6> PILCROW SIGN
+<.M>                   /xB7   <U00B7> MIDDLE DOT
+<E%>                   /xB8   <U0388> GREEK CAPITAL LETTER EPSILON WITH TONOS
+<Y%>                   /xB9   <U0389> GREEK CAPITAL LETTER ETA WITH TONOS
+<I%>                   /xBA   <U038A> GREEK CAPITAL LETTER IOTA WITH TONOS
+</>/>>                 /xBB   <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<O%>                   /xBC   <U038C> GREEK CAPITAL LETTER OMICRON WITH TONOS
+<12>                   /xBD   <U00BD> VULGAR FRACTION ONE HALF
+<U%>                   /xBE   <U038E> GREEK CAPITAL LETTER UPSILON WITH TONOS
+<W%>                   /xBF   <U038F> GREEK CAPITAL LETTER OMEGA WITH TONOS
+<i3>                   /xC0   <U0390> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+<A*>                   /xC1   <U0391> GREEK CAPITAL LETTER ALPHA
+<B*>                   /xC2   <U0392> GREEK CAPITAL LETTER BETA
+<G*>                   /xC3   <U0393> GREEK CAPITAL LETTER GAMMA
+<D*>                   /xC4   <U0394> GREEK CAPITAL LETTER DELTA
+<E*>                   /xC5   <U0395> GREEK CAPITAL LETTER EPSILON
+<Z*>                   /xC6   <U0396> GREEK CAPITAL LETTER ZETA
+<Y*>                   /xC7   <U0397> GREEK CAPITAL LETTER ETA
+<H*>                   /xC8   <U0398> GREEK CAPITAL LETTER THETA
+<I*>                   /xC9   <U0399> GREEK CAPITAL LETTER IOTA
+<K*>                   /xCA   <U039A> GREEK CAPITAL LETTER KAPPA
+<L*>                   /xCB   <U039B> GREEK CAPITAL LETTER LAMDA
+<M*>                   /xCC   <U039C> GREEK CAPITAL LETTER MU
+<N*>                   /xCD   <U039D> GREEK CAPITAL LETTER NU
+<C*>                   /xCE   <U039E> GREEK CAPITAL LETTER XI
+<O*>                   /xCF   <U039F> GREEK CAPITAL LETTER OMICRON
+<P*>                   /xD0   <U03A0> GREEK CAPITAL LETTER PI
+<R*>                   /xD1   <U03A1> GREEK CAPITAL LETTER RHO
+<S*>                   /xD3   <U03A3> GREEK CAPITAL LETTER SIGMA
+<T*>                   /xD4   <U03A4> GREEK CAPITAL LETTER TAU
+<U*>                   /xD5   <U03A5> GREEK CAPITAL LETTER UPSILON
+<F*>                   /xD6   <U03A6> GREEK CAPITAL LETTER PHI
+<X*>                   /xD7   <U03A7> GREEK CAPITAL LETTER CHI
+<Q*>                   /xD8   <U03A8> GREEK CAPITAL LETTER PSI
+<W*>                   /xD9   <U03A9> GREEK CAPITAL LETTER OMEGA
+<J*>                   /xDA   <U03AA> GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+<V*>                   /xDB   <U03AB> GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+<a%>                   /xDC   <U03AC> GREEK SMALL LETTER ALPHA WITH TONOS
+<e%>                   /xDD   <U03AD> GREEK SMALL LETTER EPSILON WITH TONOS
+<y%>                   /xDE   <U03AE> GREEK SMALL LETTER ETA WITH TONOS
+<i%>                   /xDF   <U03AF> GREEK SMALL LETTER IOTA WITH TONOS
+<u3>                   /xE0   <U03B0> GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+<a*>                   /xE1   <U03B1> GREEK SMALL LETTER ALPHA
+<b*>                   /xE2   <U03B2> GREEK SMALL LETTER BETA
+<g*>                   /xE3   <U03B3> GREEK SMALL LETTER GAMMA
+<d*>                   /xE4   <U03B4> GREEK SMALL LETTER DELTA
+<e*>                   /xE5   <U03B5> GREEK SMALL LETTER EPSILON
+<z*>                   /xE6   <U03B6> GREEK SMALL LETTER ZETA
+<y*>                   /xE7   <U03B7> GREEK SMALL LETTER ETA
+<h*>                   /xE8   <U03B8> GREEK SMALL LETTER THETA
+<i*>                   /xE9   <U03B9> GREEK SMALL LETTER IOTA
+<k*>                   /xEA   <U03BA> GREEK SMALL LETTER KAPPA
+<l*>                   /xEB   <U03BB> GREEK SMALL LETTER LAMDA
+<m*>                   /xEC   <U03BC> GREEK SMALL LETTER MU
+<n*>                   /xED   <U03BD> GREEK SMALL LETTER NU
+<c*>                   /xEE   <U03BE> GREEK SMALL LETTER XI
+<o*>                   /xEF   <U03BF> GREEK SMALL LETTER OMICRON
+<p*>                   /xF0   <U03C0> GREEK SMALL LETTER PI
+<r*>                   /xF1   <U03C1> GREEK SMALL LETTER RHO
+<*s>                   /xF2   <U03C2> GREEK SMALL LETTER FINAL SIGMA
+<s*>                   /xF3   <U03C3> GREEK SMALL LETTER SIGMA
+<t*>                   /xF4   <U03C4> GREEK SMALL LETTER TAU
+<u*>                   /xF5   <U03C5> GREEK SMALL LETTER UPSILON
+<f*>                   /xF6   <U03C6> GREEK SMALL LETTER PHI
+<x*>                   /xF7   <U03C7> GREEK SMALL LETTER CHI
+<q*>                   /xF8   <U03C8> GREEK SMALL LETTER PSI
+<w*>                   /xF9   <U03C9> GREEK SMALL LETTER OMEGA
+<j*>                   /xFA   <U03CA> GREEK SMALL LETTER IOTA WITH DIALYTIKA
+<v*>                   /xFB   <U03CB> GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+<o%>                   /xFC   <U03CC> GREEK SMALL LETTER OMICRON WITH TONOS
+<u%>                   /xFD   <U03CD> GREEK SMALL LETTER UPSILON WITH TONOS
+<w%>                   /xFE   <U03CE> GREEK SMALL LETTER OMEGA WITH TONOS
+<NUL>                  /x00   <U0000> NUL
+<SOH>                  /x01   <U0001> START OF HEADING (SOH)
+<STX>                  /x02   <U0002> START OF TEXT (STX)
+<ETX>                  /x03   <U0003> END OF TEXT (ETX)
+<EOT>                  /x04   <U0004> END OF TRANSMISSION (EOT)
+<ENQ>                  /x05   <U0005> ENQUIRY (ENQ)
+<ACK>                  /x06   <U0006> ACKNOWLEDGE (ACK)
+<alert>                /x07   <U0007> BELL (BEL)
+<BEL>                  /x07   <U0007> BELL (BEL)
+<backspace>            /x08   <U0008> BACKSPACE (BS)
+<tab>                  /x09   <U0009> CHARACTER TABULATION (HT)
+<newline>              /x0A   <U000A> LINE FEED (LF)
+<vertical-tab>         /x0B   <U000B> LINE TABULATION (VT)
+<form-feed>            /x0C   <U000C> FORM FEED (FF)
+<carriage-return>      /x0D   <U000D> CARRIAGE RETURN (CR)
+<DLE>                  /x10   <U0010> DATALINK ESCAPE (DLE)
+<DC1>                  /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<DC2>                  /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<DC3>                  /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<DC4>                  /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NAK>                  /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SYN>                  /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<ETB>                  /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CAN>                  /x18   <U0018> CANCEL (CAN)
+<SUB>                  /x1A   <U001A> SUBSTITUTE (SUB)
+<ESC>                  /x1B   <U001B> ESCAPE (ESC)
+<IS4>                  /x1C   <U001C> FILE SEPARATOR (IS4)
+<IS3>                  /x1D   <U001D> GROUP SEPARATOR (IS3)
+<intro>                /x1D   <U001D> GROUP SEPARATOR (IS3)
+<IS2>                  /x1E   <U001E> RECORD SEPARATOR (IS2)
+<IS1>                  /x1F   <U001F> UNIT SEPARATOR (IS1)
+<DEL>                  /x7F   <U007F> DELETE (DEL)
+<space>                /x20   <U0020> SPACE
+<exclamation-mark>     /x21   <U0021> EXCLAMATION MARK
+<quotation-mark>       /x22   <U0022> QUOTATION MARK
+<number-sign>          /x23   <U0023> NUMBER SIGN
+<dollar-sign>          /x24   <U0024> DOLLAR SIGN
+<percent-sign>         /x25   <U0025> PERCENT SIGN
+<ampersand>            /x26   <U0026> AMPERSAND
+<apostrophe>           /x27   <U0027> APOSTROPHE
+<left-parenthesis>     /x28   <U0028> LEFT PARENTHESIS
+<right-parenthesis>    /x29   <U0029> RIGHT PARENTHESIS
+<asterisk>             /x2A   <U002A> ASTERISK
+<plus-sign>            /x2B   <U002B> PLUS SIGN
+<comma>                /x2C   <U002C> COMMA
+<hyphen>               /x2D   <U002D> HYPHEN-MINUS
+<hyphen-minus>         /x2D   <U002D> HYPHEN-MINUS
+<period>               /x2E   <U002E> FULL STOP
+<full-stop>            /x2E   <U002E> FULL STOP
+<slash>                /x2F   <U002F> SOLIDUS
+<solidus>              /x2F   <U002F> SOLIDUS
+<zero>                 /x30   <U0030> DIGIT ZERO
+<one>                  /x31   <U0031> DIGIT ONE
+<two>                  /x32   <U0032> DIGIT TWO
+<three>                /x33   <U0033> DIGIT THREE
+<four>                 /x34   <U0034> DIGIT FOUR
+<five>                 /x35   <U0035> DIGIT FIVE
+<six>                  /x36   <U0036> DIGIT SIX
+<seven>                /x37   <U0037> DIGIT SEVEN
+<eight>                /x38   <U0038> DIGIT EIGHT
+<nine>                 /x39   <U0039> DIGIT NINE
+<colon>                /x3A   <U003A> COLON
+<semicolon>            /x3B   <U003B> SEMICOLON
+<less-than-sign>       /x3C   <U003C> LESS-THAN SIGN
+<equals-sign>          /x3D   <U003D> EQUALS SIGN
+<greater-than-sign>    /x3E   <U003E> GREATER-THAN SIGN
+<question-mark>        /x3F   <U003F> QUESTION MARK
+<commercial-at>        /x40   <U0040> COMMERCIAL AT
+<left-square-bracket>  /x5B   <U005B> LEFT SQUARE BRACKET
+<backslash>            /x5C   <U005C> REVERSE SOLIDUS
+<reverse-solidus>      /x5C   <U005C> REVERSE SOLIDUS
+<right-square-bracket> /x5D   <U005D> RIGHT SQUARE BRACKET
+<circumflex>           /x5E   <U005E> CIRCUMFLEX ACCENT
+<circumflex-accent>    /x5E   <U005E> CIRCUMFLEX ACCENT
+<underscore>           /x5F   <U005F> LOW LINE
+<low-line>             /x5F   <U005F> LOW LINE
+<grave-accent>         /x60   <U0060> GRAVE ACCENT
+<left-brace>           /x7B   <U007B> LEFT CURLY BRACKET
+<left-curly-bracket>   /x7B   <U007B> LEFT CURLY BRACKET
+<vertical-line>        /x7C   <U007C> VERTICAL LINE
+<right-brace>          /x7D   <U007D> RIGHT CURLY BRACKET
+<right-curly-bracket>  /x7D   <U007D> RIGHT CURLY BRACKET
+<tilde>                /x7E   <U007E> TILDE
+END CHARMAP
+
+"
+!
+
 mappingURL2_relativePathName
     ^ 'CP1253'
 ! !
@@ -18557,6 +19811,312 @@
 
 !CharacterEncoder::MS_Hebrew class methodsFor:'mapping'!
 
+mapping
+"
+# From: http://std.dkuug.dk/i18n/charmaps/CP1255
+
+<code_set_name> CP1255
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% repertoiremap: mnemonic,ds
+%  source: UNICODE 1.0
+
+% alias MS-HEBR
+CHARMAP
+<NU>                   /x00   <U0000> NULL (NUL)
+<SH>                   /x01   <U0001> START OF HEADING (SOH)
+<SX>                   /x02   <U0002> START OF TEXT (STX)
+<EX>                   /x03   <U0003> END OF TEXT (ETX)
+<ET>                   /x04   <U0004> END OF TRANSMISSION (EOT)
+<EQ>                   /x05   <U0005> ENQUIRY (ENQ)
+<AK>                   /x06   <U0006> ACKNOWLEDGE (ACK)
+<BL>                   /x07   <U0007> BELL (BEL)
+<BS>                   /x08   <U0008> BACKSPACE (BS)
+<HT>                   /x09   <U0009> CHARACTER TABULATION (HT)
+<LF>                   /x0A   <U000A> LINE FEED (LF)
+<VT>                   /x0B   <U000B> LINE TABULATION (VT)
+<FF>                   /x0C   <U000C> FORM FEED (FF)
+<CR>                   /x0D   <U000D> CARRIAGE RETURN (CR)
+<SO>                   /x0E   <U000E> SHIFT OUT (SO)
+<SI>                   /x0F   <U000F> SHIFT IN (SI)
+<DL>                   /x10   <U0010> DATALINK ESCAPE (DLE)
+<D1>                   /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<D2>                   /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<D3>                   /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<D4>                   /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NK>                   /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SY>                   /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<EB>                   /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CN>                   /x18   <U0018> CANCEL (CAN)
+<EM>                   /x19   <U0019> END OF MEDIUM (EM)
+<SB>                   /x1A   <U001A> SUBSTITUTE (SUB)
+<EC>                   /x1B   <U001B> ESCAPE (ESC)
+<FS>                   /x1C   <U001C> FILE SEPARATOR (IS4)
+<GS>                   /x1D   <U001D> GROUP SEPARATOR (IS3)
+<RS>                   /x1E   <U001E> RECORD SEPARATOR (IS2)
+<US>                   /x1F   <U001F> UNIT SEPARATOR (IS1)
+<SP>                   /x20   <U0020> SPACE
+<!!>                    /x21   <U0021> EXCLAMATION MARK
+<'>                    /x22   <U0022> QUOTATION MARK
+<Nb>                   /x23   <U0023> NUMBER SIGN
+<DO>                   /x24   <U0024> DOLLAR SIGN
+<%>                    /x25   <U0025> PERCENT SIGN
+<&>                    /x26   <U0026> AMPERSAND
+<'>                    /x27   <U0027> APOSTROPHE
+<(>                    /x28   <U0028> LEFT PARENTHESIS
+<)>                    /x29   <U0029> RIGHT PARENTHESIS
+<*>                    /x2A   <U002A> ASTERISK
+<+>                    /x2B   <U002B> PLUS SIGN
+<,>                    /x2C   <U002C> COMMA
+<->                    /x2D   <U002D> HYPHEN-MINUS
+<.>                    /x2E   <U002E> FULL STOP
+<//>                   /x2F   <U002F> SOLIDUS
+<0>                    /x30   <U0030> DIGIT ZERO
+<1>                    /x31   <U0031> DIGIT ONE
+<2>                    /x32   <U0032> DIGIT TWO
+<3>                    /x33   <U0033> DIGIT THREE
+<4>                    /x34   <U0034> DIGIT FOUR
+<5>                    /x35   <U0035> DIGIT FIVE
+<6>                    /x36   <U0036> DIGIT SIX
+<7>                    /x37   <U0037> DIGIT SEVEN
+<8>                    /x38   <U0038> DIGIT EIGHT
+<9>                    /x39   <U0039> DIGIT NINE
+<:>                    /x3A   <U003A> COLON
+<;>                    /x3B   <U003B> SEMICOLON
+<<>                    /x3C   <U003C> LESS-THAN SIGN
+<=>                    /x3D   <U003D> EQUALS SIGN
+</>>                   /x3E   <U003E> GREATER-THAN SIGN
+<?>                    /x3F   <U003F> QUESTION MARK
+<At>                   /x40   <U0040> COMMERCIAL AT
+<A>                    /x41   <U0041> LATIN CAPITAL LETTER A
+<B>                    /x42   <U0042> LATIN CAPITAL LETTER B
+<C>                    /x43   <U0043> LATIN CAPITAL LETTER C
+<D>                    /x44   <U0044> LATIN CAPITAL LETTER D
+<E>                    /x45   <U0045> LATIN CAPITAL LETTER E
+<F>                    /x46   <U0046> LATIN CAPITAL LETTER F
+<G>                    /x47   <U0047> LATIN CAPITAL LETTER G
+<H>                    /x48   <U0048> LATIN CAPITAL LETTER H
+<I>                    /x49   <U0049> LATIN CAPITAL LETTER I
+<J>                    /x4A   <U004A> LATIN CAPITAL LETTER J
+<K>                    /x4B   <U004B> LATIN CAPITAL LETTER K
+<L>                    /x4C   <U004C> LATIN CAPITAL LETTER L
+<M>                    /x4D   <U004D> LATIN CAPITAL LETTER M
+<N>                    /x4E   <U004E> LATIN CAPITAL LETTER N
+<O>                    /x4F   <U004F> LATIN CAPITAL LETTER O
+<P>                    /x50   <U0050> LATIN CAPITAL LETTER P
+<Q>                    /x51   <U0051> LATIN CAPITAL LETTER Q
+<R>                    /x52   <U0052> LATIN CAPITAL LETTER R
+<S>                    /x53   <U0053> LATIN CAPITAL LETTER S
+<T>                    /x54   <U0054> LATIN CAPITAL LETTER T
+<U>                    /x55   <U0055> LATIN CAPITAL LETTER U
+<V>                    /x56   <U0056> LATIN CAPITAL LETTER V
+<W>                    /x57   <U0057> LATIN CAPITAL LETTER W
+<X>                    /x58   <U0058> LATIN CAPITAL LETTER X
+<Y>                    /x59   <U0059> LATIN CAPITAL LETTER Y
+<Z>                    /x5A   <U005A> LATIN CAPITAL LETTER Z
+<<(>                   /x5B   <U005B> LEFT SQUARE BRACKET
+<////>                 /x5C   <U005C> REVERSE SOLIDUS
+<)/>>                  /x5D   <U005D> RIGHT SQUARE BRACKET
+<'/>>                  /x5E   <U005E> CIRCUMFLEX ACCENT
+<_>                    /x5F   <U005F> LOW LINE
+<'!!>                   /x60   <U0060> GRAVE ACCENT
+<a>                    /x61   <U0061> LATIN SMALL LETTER A
+<b>                    /x62   <U0062> LATIN SMALL LETTER B
+<c>                    /x63   <U0063> LATIN SMALL LETTER C
+<d>                    /x64   <U0064> LATIN SMALL LETTER D
+<e>                    /x65   <U0065> LATIN SMALL LETTER E
+<f>                    /x66   <U0066> LATIN SMALL LETTER F
+<g>                    /x67   <U0067> LATIN SMALL LETTER G
+<h>                    /x68   <U0068> LATIN SMALL LETTER H
+<i>                    /x69   <U0069> LATIN SMALL LETTER I
+<j>                    /x6A   <U006A> LATIN SMALL LETTER J
+<k>                    /x6B   <U006B> LATIN SMALL LETTER K
+<l>                    /x6C   <U006C> LATIN SMALL LETTER L
+<m>                    /x6D   <U006D> LATIN SMALL LETTER M
+<n>                    /x6E   <U006E> LATIN SMALL LETTER N
+<o>                    /x6F   <U006F> LATIN SMALL LETTER O
+<p>                    /x70   <U0070> LATIN SMALL LETTER P
+<q>                    /x71   <U0071> LATIN SMALL LETTER Q
+<r>                    /x72   <U0072> LATIN SMALL LETTER R
+<s>                    /x73   <U0073> LATIN SMALL LETTER S
+<t>                    /x74   <U0074> LATIN SMALL LETTER T
+<u>                    /x75   <U0075> LATIN SMALL LETTER U
+<v>                    /x76   <U0076> LATIN SMALL LETTER V
+<w>                    /x77   <U0077> LATIN SMALL LETTER W
+<x>                    /x78   <U0078> LATIN SMALL LETTER X
+<y>                    /x79   <U0079> LATIN SMALL LETTER Y
+<z>                    /x7A   <U007A> LATIN SMALL LETTER Z
+<(!!>                   /x7B   <U007B> LEFT CURLY BRACKET
+<!!!!>                   /x7C   <U007C> VERTICAL LINE
+<!!)>                   /x7D   <U007D> RIGHT CURLY BRACKET
+<'?>                   /x7E   <U007E> TILDE
+<DT>                   /x7F   <U007F> DELETE (DEL)
+<.9>                   /x82   <U201A> SINGLE LOW-9 QUOTATION MARK
+<f2>                   /x83   <U0192> LATIN SMALL LETTER F WITH HOOK
+<:9>                   /x84   <U201E> DOUBLE LOW-9 QUOTATION MARK
+<.3>                   /x85   <U2026> HORIZONTAL ELLIPSIS
+<//->                  /x86   <U2020> DAGGER
+<//=>                  /x87   <U2021> DOUBLE DAGGER
+<%0>                   /x89   <U2030> PER MILLE SIGN
+<<1>                   /x8B   <U2039> SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+<'6>                   /x91   <U2018> LEFT SINGLE QUOTATION MARK
+<'9>                   /x92   <U2019> RIGHT SINGLE QUOTATION MARK
+<'6>                   /x93   <U201C> LEFT DOUBLE QUOTATION MARK
+<'9>                   /x94   <U201D> RIGHT DOUBLE QUOTATION MARK
+<sb>                   /x95   <U2022> BULLET
+<-N>                   /x96   <U2013> EN DASH
+<-M>                   /x97   <U2014> EM DASH
+<TM>                   /x99   <U2122> TRADE MARK SIGN
+</>1>                  /x9B   <U203A> SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+<NS>                   /xA0   <U00A0> NO-BREAK SPACE
+<Ct>                   /xA2   <U00A2> CENT SIGN
+<Pd>                   /xA3   <U00A3> POUND SIGN
+<Cu>                   /xA4   <U00A4> CURRENCY SIGN
+<Ye>                   /xA5   <U00A5> YEN SIGN
+<BB>                   /xA6   <U00A6> BROKEN BAR
+<SE>                   /xA7   <U00A7> SECTION SIGN
+<':>                   /xA8   <U00A8> DIAERESIS
+<Co>                   /xA9   <U00A9> COPYRIGHT SIGN
+<*X>                   /xAA   <U00D7> MULTIPLICATION SIGN
+<<<>                   /xAB   <U00AB> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<NO>                   /xAC   <U00AC> NOT SIGN
+<-->                   /xAD   <U00AD> SOFT HYPHEN
+<Rg>                   /xAE   <U00AE> REGISTERED SIGN
+<'->                   /xAF   <U203E> OVERLINE
+<DG>                   /xB0   <U00B0> DEGREE SIGN
+<+->                   /xB1   <U00B1> PLUS-MINUS SIGN
+<2S>                   /xB2   <U00B2> SUPERSCRIPT TWO
+<3S>                   /xB3   <U00B3> SUPERSCRIPT THREE
+<''>                   /xB4   <U00B4> ACUTE ACCENT
+<My>                   /xB5   <U00B5> MICRO SIGN
+<PI>                   /xB6   <U00B6> PILCROW SIGN
+<.M>                   /xB7   <U00B7> MIDDLE DOT
+<',>                   /xB8   <U00B8> CEDILLA
+<1S>                   /xB9   <U00B9> SUPERSCRIPT ONE
+<-:>                   /xBA   <U00F7> DIVISION SIGN
+</>/>>                 /xBB   <U00BB> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<14>                   /xBC   <U00BC> VULGAR FRACTION ONE QUARTER
+<12>                   /xBD   <U00BD> VULGAR FRACTION ONE HALF
+<34>                   /xBE   <U00BE> VULGAR FRACTION THREE QUARTERS
+<=2>                   /xDF   <U2017> DOUBLE LOW LINE
+<A+>                   /xE0   <U05D0> HEBREW LETTER ALEF
+<B+>                   /xE1   <U05D1> HEBREW LETTER BET
+<G+>                   /xE2   <U05D2> HEBREW LETTER GIMEL
+<D+>                   /xE3   <U05D3> HEBREW LETTER DALET
+<H+>                   /xE4   <U05D4> HEBREW LETTER HE
+<W+>                   /xE5   <U05D5> HEBREW LETTER VAV
+<Z+>                   /xE6   <U05D6> HEBREW LETTER ZAYIN
+<X+>                   /xE7   <U05D7> HEBREW LETTER HET
+<Tj>                   /xE8   <U05D8> HEBREW LETTER TET
+<J+>                   /xE9   <U05D9> HEBREW LETTER YOD
+<K%>                   /xEA   <U05DA> HEBREW LETTER FINAL KAF
+<K+>                   /xEB   <U05DB> HEBREW LETTER KAF
+<L+>                   /xEC   <U05DC> HEBREW LETTER LAMED
+<M%>                   /xED   <U05DD> HEBREW LETTER FINAL MEM
+<M+>                   /xEE   <U05DE> HEBREW LETTER MEM
+<N%>                   /xEF   <U05DF> HEBREW LETTER FINAL NUN
+<N+>                   /xF0   <U05E0> HEBREW LETTER NUN
+<S+>                   /xF1   <U05E1> HEBREW LETTER SAMEKH
+<E+>                   /xF2   <U05E2> HEBREW LETTER AYIN
+<P%>                   /xF3   <U05E3> HEBREW LETTER FINAL PE
+<P+>                   /xF4   <U05E4> HEBREW LETTER PE
+<Zj>                   /xF5   <U05E5> HEBREW LETTER FINAL TSADI
+<ZJ>                   /xF6   <U05E6> HEBREW LETTER TSADI
+<Q+>                   /xF7   <U05E7> HEBREW LETTER QOF
+<R+>                   /xF8   <U05E8> HEBREW LETTER RESH
+<Sh>                   /xF9   <U05E9> HEBREW LETTER SHIN
+<T+>                   /xFA   <U05EA> HEBREW LETTER TAV
+<LR>                   /xFD   <U200E> LEFT-TO-RIGHT MARK
+<RL>                   /xFE   <U200F> RIGHT-TO-LEFT MARK
+<NUL>                  /x00   <U0000> NUL
+<SOH>                  /x01   <U0001> START OF HEADING (SOH)
+<STX>                  /x02   <U0002> START OF TEXT (STX)
+<ETX>                  /x03   <U0003> END OF TEXT (ETX)
+<EOT>                  /x04   <U0004> END OF TRANSMISSION (EOT)
+<ENQ>                  /x05   <U0005> ENQUIRY (ENQ)
+<ACK>                  /x06   <U0006> ACKNOWLEDGE (ACK)
+<alert>                /x07   <U0007> BELL (BEL)
+<BEL>                  /x07   <U0007> BELL (BEL)
+<backspace>            /x08   <U0008> BACKSPACE (BS)
+<tab>                  /x09   <U0009> CHARACTER TABULATION (HT)
+<newline>              /x0A   <U000A> LINE FEED (LF)
+<vertical-tab>         /x0B   <U000B> LINE TABULATION (VT)
+<form-feed>            /x0C   <U000C> FORM FEED (FF)
+<carriage-return>      /x0D   <U000D> CARRIAGE RETURN (CR)
+<DLE>                  /x10   <U0010> DATALINK ESCAPE (DLE)
+<DC1>                  /x11   <U0011> DEVICE CONTROL ONE (DC1)
+<DC2>                  /x12   <U0012> DEVICE CONTROL TWO (DC2)
+<DC3>                  /x13   <U0013> DEVICE CONTROL THREE (DC3)
+<DC4>                  /x14   <U0014> DEVICE CONTROL FOUR (DC4)
+<NAK>                  /x15   <U0015> NEGATIVE ACKNOWLEDGE (NAK)
+<SYN>                  /x16   <U0016> SYNCHRONOUS IDLE (SYN)
+<ETB>                  /x17   <U0017> END OF TRANSMISSION BLOCK (ETB)
+<CAN>                  /x18   <U0018> CANCEL (CAN)
+<SUB>                  /x1A   <U001A> SUBSTITUTE (SUB)
+<ESC>                  /x1B   <U001B> ESCAPE (ESC)
+<IS4>                  /x1C   <U001C> FILE SEPARATOR (IS4)
+<IS3>                  /x1D   <U001D> GROUP SEPARATOR (IS3)
+<intro>                /x1D   <U001D> GROUP SEPARATOR (IS3)
+<IS2>                  /x1E   <U001E> RECORD SEPARATOR (IS2)
+<IS1>                  /x1F   <U001F> UNIT SEPARATOR (IS1)
+<DEL>                  /x7F   <U007F> DELETE (DEL)
+<space>                /x20   <U0020> SPACE
+<exclamation-mark>     /x21   <U0021> EXCLAMATION MARK
+<quotation-mark>       /x22   <U0022> QUOTATION MARK
+<number-sign>          /x23   <U0023> NUMBER SIGN
+<dollar-sign>          /x24   <U0024> DOLLAR SIGN
+<percent-sign>         /x25   <U0025> PERCENT SIGN
+<ampersand>            /x26   <U0026> AMPERSAND
+<apostrophe>           /x27   <U0027> APOSTROPHE
+<left-parenthesis>     /x28   <U0028> LEFT PARENTHESIS
+<right-parenthesis>    /x29   <U0029> RIGHT PARENTHESIS
+<asterisk>             /x2A   <U002A> ASTERISK
+<plus-sign>            /x2B   <U002B> PLUS SIGN
+<comma>                /x2C   <U002C> COMMA
+<hyphen>               /x2D   <U002D> HYPHEN-MINUS
+<hyphen-minus>         /x2D   <U002D> HYPHEN-MINUS
+<period>               /x2E   <U002E> FULL STOP
+<full-stop>            /x2E   <U002E> FULL STOP
+<slash>                /x2F   <U002F> SOLIDUS
+<solidus>              /x2F   <U002F> SOLIDUS
+<zero>                 /x30   <U0030> DIGIT ZERO
+<one>                  /x31   <U0031> DIGIT ONE
+<two>                  /x32   <U0032> DIGIT TWO
+<three>                /x33   <U0033> DIGIT THREE
+<four>                 /x34   <U0034> DIGIT FOUR
+<five>                 /x35   <U0035> DIGIT FIVE
+<six>                  /x36   <U0036> DIGIT SIX
+<seven>                /x37   <U0037> DIGIT SEVEN
+<eight>                /x38   <U0038> DIGIT EIGHT
+<nine>                 /x39   <U0039> DIGIT NINE
+<colon>                /x3A   <U003A> COLON
+<semicolon>            /x3B   <U003B> SEMICOLON
+<less-than-sign>       /x3C   <U003C> LESS-THAN SIGN
+<equals-sign>          /x3D   <U003D> EQUALS SIGN
+<greater-than-sign>    /x3E   <U003E> GREATER-THAN SIGN
+<question-mark>        /x3F   <U003F> QUESTION MARK
+<commercial-at>        /x40   <U0040> COMMERCIAL AT
+<left-square-bracket>  /x5B   <U005B> LEFT SQUARE BRACKET
+<backslash>            /x5C   <U005C> REVERSE SOLIDUS
+<reverse-solidus>      /x5C   <U005C> REVERSE SOLIDUS
+<right-square-bracket> /x5D   <U005D> RIGHT SQUARE BRACKET
+<circumflex>           /x5E   <U005E> CIRCUMFLEX ACCENT
+<circumflex-accent>    /x5E   <U005E> CIRCUMFLEX ACCENT
+<underscore>           /x5F   <U005F> LOW LINE
+<low-line>             /x5F   <U005F> LOW LINE
+<grave-accent>         /x60   <U0060> GRAVE ACCENT
+<left-brace>           /x7B   <U007B> LEFT CURLY BRACKET
+<left-curly-bracket>   /x7B   <U007B> LEFT CURLY BRACKET
+<vertical-line>        /x7C   <U007C> VERTICAL LINE
+<right-brace>          /x7D   <U007D> RIGHT CURLY BRACKET
+<right-curly-bracket>  /x7D   <U007D> RIGHT CURLY BRACKET
+<tilde>                /x7E   <U007E> TILDE
+END CHARMAP
+
+"
+!
+
 mappingURL2_relativePathName
     ^ 'CP1255'
 ! !
@@ -19618,7 +21178,7 @@
 !CharacterEncoder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.6 2004-02-11 13:54:00 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoder.st,v 1.7 2004-02-11 15:22:02 cg Exp $'
 ! !
 
 CharacterEncoder initialize!