--- 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!