CharacterEncoderImplementations__MS_Cyrillic.st
changeset 8813 c2908c7fc648
parent 8148 dbf64e3142d9
child 17711 39faaaf888b4
--- a/CharacterEncoderImplementations__MS_Cyrillic.st	Thu Mar 31 20:21:44 2005 +0200
+++ b/CharacterEncoderImplementations__MS_Cyrillic.st	Thu Mar 31 20:49:01 2005 +0200
@@ -35,12 +35,28 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+!
+
+documentation
+"
+    CP1251 / Microsoft Cyrillic
+
+    [see with:]
+        CharacterEncoderImplementations::MS_Cyrillic showCharacterSet
+
+    [author:]
+        Claus Gittinger
+"
 ! !
 
 !MS_Cyrillic class methodsFor:'mapping'!
 
 mapFileURL2_relativePathName
     ^ 'CP1251'
+
+    "
+     self generateCode
+    "
 !
 
 mapping
@@ -315,8 +331,392 @@
 "
 ! !
 
+!MS_Cyrillic methodsFor:'encoding & decoding'!
+
+decode:codeArg
+    "Automagically generated by generateCode - do not modify.
+     Decode from my encoding into unicode."
+
+    |code "{ Class: SmallInteger }"|
+
+    code := codeArg.
+    code <= 16r7F ifTrue:[ ^ code ].
+    code > 16rFF ifTrue:[
+        ^ self decodingError.
+    ].
+    [
+        |t|
+        t := #(
+           "16r0080"    16r0402 " CYRILLIC CAPITAL LETTER DJE (Serbocroatian) " 
+           "16r0081"    16r0403 " CYRILLIC CAPITAL LETTER GJE " 
+           "16r0082"    16r201A " SINGLE LOW-9 QUOTATION MARK " 
+           "16r0083"    16r0453 " CYRILLIC SMALL LETTER GJE " 
+           "16r0084"    16r201E " DOUBLE LOW-9 QUOTATION MARK " 
+           "16r0085"    16r2026 " HORIZONTAL ELLIPSIS " 
+           "16r0086"    16r2020 " DAGGER " 
+           "16r0087"    16r2021 " DOUBLE DAGGER " 
+           "16r0088"    16r0000 " invalid " 
+           "16r0089"    16r2030 " PER MILLE SIGN " 
+           "16r008A"    16r0409 " CYRILLIC CAPITAL LETTER LJE " 
+           "16r008B"    16r2039 " SINGLE LEFT-POINTING ANGLE QUOTATION MARK " 
+           "16r008C"    16r040A " CYRILLIC CAPITAL LETTER NJE " 
+           "16r008D"    16r040C " CYRILLIC CAPITAL LETTER KJE " 
+           "16r008E"    16r040B " CYRILLIC CAPITAL LETTER TSHE (Serbocroatian) " 
+           "16r008F"    16r040F " CYRILLIC CAPITAL LETTER DZHE " 
+           "16r0090"    16r0452 " CYRILLIC SMALL LETTER DJE (Serbocroatian) " 
+           "16r0091"    16r2018 " LEFT SINGLE QUOTATION MARK " 
+           "16r0092"    16r2019 " RIGHT SINGLE QUOTATION MARK " 
+           "16r0093"    16r201C " LEFT DOUBLE QUOTATION MARK " 
+           "16r0094"    16r201D " RIGHT DOUBLE QUOTATION MARK " 
+           "16r0095"    16r2022 " BULLET " 
+           "16r0096"    16r2013 " EN DASH " 
+           "16r0097"    16r2014 " EM DASH " 
+           "16r0098"    16r0000 " invalid " 
+           "16r0099"    16r2122 " TRADE MARK SIGN " 
+           "16r009A"    16r0459 " CYRILLIC SMALL LETTER LJE " 
+           "16r009B"    16r203A " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK " 
+           "16r009C"    16r045A " CYRILLIC SMALL LETTER NJE " 
+           "16r009D"    16r045C " CYRILLIC SMALL LETTER KJE " 
+           "16r009E"    16r045B " CYRILLIC SMALL LETTER TSHE (Serbocroatian) " 
+           "16r009F"    16r045F " CYRILLIC SMALL LETTER DZHE " 
+           "16r00A0"    16r00A0 " NO-BREAK SPACE " 
+           "16r00A1"    16r040E " CYRILLIC CAPITAL LETTER SHORT U (Byelorussian) " 
+           "16r00A2"    16r045E " CYRILLIC SMALL LETTER SHORT U (Byelorussian) " 
+           "16r00A3"    16r0408 " CYRILLIC CAPITAL LETTER JE " 
+           "16r00A4"    16r00A4 " CURRENCY SIGN " 
+           "16r00A5"    16r0490 " CYRILLIC CAPITAL LETTER GHE WITH UPTURN " 
+           "16r00A6"    16r00A6 " BROKEN BAR " 
+           "16r00A7"    16r00A7 " SECTION SIGN " 
+           "16r00A8"    16r0401 " CYRILLIC CAPITAL LETTER IO " 
+           "16r00A9"    16r00A9 " COPYRIGHT SIGN " 
+           "16r00AA"    16r0404 " CYRILLIC CAPITAL LETTER UKRAINIAN IE " 
+           "16r00AB"    16r00AB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00AC"    16r00AC " NOT SIGN " 
+           "16r00AD"    16r00AD " SOFT HYPHEN " 
+           "16r00AE"    16r00AE " REGISTERED SIGN " 
+           "16r00AF"    16r0407 " CYRILLIC CAPITAL LETTER YI (Ukrainian) " 
+           "16r00B0"    16r00B0 " DEGREE SIGN " 
+           "16r00B1"    16r00B1 " PLUS-MINUS SIGN " 
+           "16r00B2"    16r0406 " CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I " 
+           "16r00B3"    16r0456 " CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I " 
+           "16r00B4"    16r0491 " CYRILLIC SMALL LETTER GHE WITH UPTURN " 
+           "16r00B5"    16r00B5 " MICRO SIGN " 
+           "16r00B6"    16r00B6 " PILCROW SIGN " 
+           "16r00B7"    16r00B7 " MIDDLE DOT " 
+           "16r00B8"    16r0451 " CYRILLIC SMALL LETTER IO " 
+           "16r00B9"    16r2116 " NUMERO SIGN " 
+           "16r00BA"    16r0454 " CYRILLIC SMALL LETTER UKRAINIAN IE " 
+           "16r00BB"    16r00BB " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00BC"    16r0458 " CYRILLIC SMALL LETTER JE " 
+           "16r00BD"    16r0405 " CYRILLIC CAPITAL LETTER DZE " 
+           "16r00BE"    16r0455 " CYRILLIC SMALL LETTER DZE " 
+           "16r00BF"    16r0457 " CYRILLIC SMALL LETTER YI (Ukrainian) " 
+           "16r00C0"    16r0410 " CYRILLIC CAPITAL LETTER A " 
+           "16r00C1"    16r0411 " CYRILLIC CAPITAL LETTER BE " 
+           "16r00C2"    16r0412 " CYRILLIC CAPITAL LETTER VE " 
+           "16r00C3"    16r0413 " CYRILLIC CAPITAL LETTER GHE " 
+           "16r00C4"    16r0414 " CYRILLIC CAPITAL LETTER DE " 
+           "16r00C5"    16r0415 " CYRILLIC CAPITAL LETTER IE " 
+           "16r00C6"    16r0416 " CYRILLIC CAPITAL LETTER ZHE " 
+           "16r00C7"    16r0417 " CYRILLIC CAPITAL LETTER ZE " 
+           "16r00C8"    16r0418 " CYRILLIC CAPITAL LETTER I " 
+           "16r00C9"    16r0419 " CYRILLIC CAPITAL LETTER SHORT I " 
+           "16r00CA"    16r041A " CYRILLIC CAPITAL LETTER KA " 
+           "16r00CB"    16r041B " CYRILLIC CAPITAL LETTER EL " 
+           "16r00CC"    16r041C " CYRILLIC CAPITAL LETTER EM " 
+           "16r00CD"    16r041D " CYRILLIC CAPITAL LETTER EN " 
+           "16r00CE"    16r041E " CYRILLIC CAPITAL LETTER O " 
+           "16r00CF"    16r041F " CYRILLIC CAPITAL LETTER PE " 
+           "16r00D0"    16r0420 " CYRILLIC CAPITAL LETTER ER " 
+           "16r00D1"    16r0421 " CYRILLIC CAPITAL LETTER ES " 
+           "16r00D2"    16r0422 " CYRILLIC CAPITAL LETTER TE " 
+           "16r00D3"    16r0423 " CYRILLIC CAPITAL LETTER U " 
+           "16r00D4"    16r0424 " CYRILLIC CAPITAL LETTER EF " 
+           "16r00D5"    16r0425 " CYRILLIC CAPITAL LETTER HA " 
+           "16r00D6"    16r0426 " CYRILLIC CAPITAL LETTER TSE " 
+           "16r00D7"    16r0427 " CYRILLIC CAPITAL LETTER CHE " 
+           "16r00D8"    16r0428 " CYRILLIC CAPITAL LETTER SHA " 
+           "16r00D9"    16r0429 " CYRILLIC CAPITAL LETTER SHCHA " 
+           "16r00DA"    16r042A " CYRILLIC CAPITAL LETTER HARD SIGN " 
+           "16r00DB"    16r042B " CYRILLIC CAPITAL LETTER YERU " 
+           "16r00DC"    16r042C " CYRILLIC CAPITAL LETTER SOFT SIGN " 
+           "16r00DD"    16r042D " CYRILLIC CAPITAL LETTER E " 
+           "16r00DE"    16r042E " CYRILLIC CAPITAL LETTER YU " 
+           "16r00DF"    16r042F " CYRILLIC CAPITAL LETTER YA " 
+           "16r00E0"    16r0430 " CYRILLIC SMALL LETTER A " 
+           "16r00E1"    16r0431 " CYRILLIC SMALL LETTER BE " 
+           "16r00E2"    16r0432 " CYRILLIC SMALL LETTER VE " 
+           "16r00E3"    16r0433 " CYRILLIC SMALL LETTER GHE " 
+           "16r00E4"    16r0434 " CYRILLIC SMALL LETTER DE " 
+           "16r00E5"    16r0435 " CYRILLIC SMALL LETTER IE " 
+           "16r00E6"    16r0436 " CYRILLIC SMALL LETTER ZHE " 
+           "16r00E7"    16r0437 " CYRILLIC SMALL LETTER ZE " 
+           "16r00E8"    16r0438 " CYRILLIC SMALL LETTER I " 
+           "16r00E9"    16r0439 " CYRILLIC SMALL LETTER SHORT I " 
+           "16r00EA"    16r043A " CYRILLIC SMALL LETTER KA " 
+           "16r00EB"    16r043B " CYRILLIC SMALL LETTER EL " 
+           "16r00EC"    16r043C " CYRILLIC SMALL LETTER EM " 
+           "16r00ED"    16r043D " CYRILLIC SMALL LETTER EN " 
+           "16r00EE"    16r043E " CYRILLIC SMALL LETTER O " 
+           "16r00EF"    16r043F " CYRILLIC SMALL LETTER PE " 
+           "16r00F0"    16r0440 " CYRILLIC SMALL LETTER ER " 
+           "16r00F1"    16r0441 " CYRILLIC SMALL LETTER ES " 
+           "16r00F2"    16r0442 " CYRILLIC SMALL LETTER TE " 
+           "16r00F3"    16r0443 " CYRILLIC SMALL LETTER U " 
+           "16r00F4"    16r0444 " CYRILLIC SMALL LETTER EF " 
+           "16r00F5"    16r0445 " CYRILLIC SMALL LETTER HA " 
+           "16r00F6"    16r0446 " CYRILLIC SMALL LETTER TSE " 
+           "16r00F7"    16r0447 " CYRILLIC SMALL LETTER CHE " 
+           "16r00F8"    16r0448 " CYRILLIC SMALL LETTER SHA " 
+           "16r00F9"    16r0449 " CYRILLIC SMALL LETTER SHCHA " 
+           "16r00FA"    16r044A " CYRILLIC SMALL LETTER HARD SIGN " 
+           "16r00FB"    16r044B " CYRILLIC SMALL LETTER YERU " 
+           "16r00FC"    16r044C " CYRILLIC SMALL LETTER SOFT SIGN " 
+           "16r00FD"    16r044D " CYRILLIC SMALL LETTER E " 
+           "16r00FE"    16r044E " CYRILLIC SMALL LETTER YU " 
+           "16r00FF"    16r044F " CYRILLIC SMALL LETTER YA " 
+           ) at:(code - 16r7F).
+        t == 0 ifFalse:[^ t].
+        ^ self decodingError.
+    ] value.
+!
+
+encode:unicodeArg
+    "Automagically generated by generateCode - do not modify.
+     Encode from unicode into my encoding."
+
+    |unicode "{ Class: SmallInteger }"|
+
+    unicode := unicodeArg.
+    unicode <= 16r7F ifTrue:[ ^ unicode ].
+    unicode > 16r2122 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode <= 16r9F ifTrue:[
+        ^ self encodingError
+    ].
+    unicode <= 16r491 ifTrue:[
+        unicode <= 16rBB ifTrue:[
+            [
+                |t|
+                t := #[
+                   "16r00A0"    16rA0 " NO-BREAK SPACE " 
+                   "16r00A1"    16r00 " invalid " 
+                   "16r00A2"    16r00 " invalid " 
+                   "16r00A3"    16r00 " invalid " 
+                   "16r00A4"    16rA4 " CURRENCY SIGN " 
+                   "16r00A5"    16r00 " invalid " 
+                   "16r00A6"    16rA6 " BROKEN BAR " 
+                   "16r00A7"    16rA7 " SECTION SIGN " 
+                   "16r00A8"    16r00 " invalid " 
+                   "16r00A9"    16rA9 " COPYRIGHT SIGN " 
+                   "16r00AA"    16r00 " invalid " 
+                   "16r00AB"    16rAB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+                   "16r00AC"    16rAC " NOT SIGN " 
+                   "16r00AD"    16rAD " SOFT HYPHEN " 
+                   "16r00AE"    16rAE " REGISTERED SIGN " 
+                   "16r00AF"    16r00 " invalid " 
+                   "16r00B0"    16rB0 " DEGREE SIGN " 
+                   "16r00B1"    16rB1 " PLUS-MINUS SIGN " 
+                   "16r00B2"    16r00 " invalid " 
+                   "16r00B3"    16r00 " invalid " 
+                   "16r00B4"    16r00 " invalid " 
+                   "16r00B5"    16rB5 " MICRO SIGN " 
+                   "16r00B6"    16rB6 " PILCROW SIGN " 
+                   "16r00B7"    16rB7 " MIDDLE DOT " 
+                   "16r00B8"    16r00 " invalid " 
+                   "16r00B9"    16r00 " invalid " 
+                   "16r00BA"    16r00 " invalid " 
+                   "16r00BB"    16rBB " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+                   ] at:(unicode - 16r9F).
+                t == 0 ifFalse:[^ t].
+                ^ self encodingError
+            ] value.
+        ].
+        unicode <= 16r400 ifTrue:[
+            ^ self encodingError
+        ].
+        unicode <= 16r45F ifTrue:[
+            [
+                |t|
+                t := #[
+                   "16r0401"    16rA8 " CYRILLIC CAPITAL LETTER IO " 
+                   "16r0402"    16r80 " CYRILLIC CAPITAL LETTER DJE (Serbocroatian) " 
+                   "16r0403"    16r81 " CYRILLIC CAPITAL LETTER GJE " 
+                   "16r0404"    16rAA " CYRILLIC CAPITAL LETTER UKRAINIAN IE " 
+                   "16r0405"    16rBD " CYRILLIC CAPITAL LETTER DZE " 
+                   "16r0406"    16rB2 " CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I " 
+                   "16r0407"    16rAF " CYRILLIC CAPITAL LETTER YI (Ukrainian) " 
+                   "16r0408"    16rA3 " CYRILLIC CAPITAL LETTER JE " 
+                   "16r0409"    16r8A " CYRILLIC CAPITAL LETTER LJE " 
+                   "16r040A"    16r8C " CYRILLIC CAPITAL LETTER NJE " 
+                   "16r040B"    16r8E " CYRILLIC CAPITAL LETTER TSHE (Serbocroatian) " 
+                   "16r040C"    16r8D " CYRILLIC CAPITAL LETTER KJE " 
+                   "16r040D"    16r00 " invalid " 
+                   "16r040E"    16rA1 " CYRILLIC CAPITAL LETTER SHORT U (Byelorussian) " 
+                   "16r040F"    16r8F " CYRILLIC CAPITAL LETTER DZHE " 
+                   "16r0410"    16rC0 " CYRILLIC CAPITAL LETTER A " 
+                   "16r0411"    16rC1 " CYRILLIC CAPITAL LETTER BE " 
+                   "16r0412"    16rC2 " CYRILLIC CAPITAL LETTER VE " 
+                   "16r0413"    16rC3 " CYRILLIC CAPITAL LETTER GHE " 
+                   "16r0414"    16rC4 " CYRILLIC CAPITAL LETTER DE " 
+                   "16r0415"    16rC5 " CYRILLIC CAPITAL LETTER IE " 
+                   "16r0416"    16rC6 " CYRILLIC CAPITAL LETTER ZHE " 
+                   "16r0417"    16rC7 " CYRILLIC CAPITAL LETTER ZE " 
+                   "16r0418"    16rC8 " CYRILLIC CAPITAL LETTER I " 
+                   "16r0419"    16rC9 " CYRILLIC CAPITAL LETTER SHORT I " 
+                   "16r041A"    16rCA " CYRILLIC CAPITAL LETTER KA " 
+                   "16r041B"    16rCB " CYRILLIC CAPITAL LETTER EL " 
+                   "16r041C"    16rCC " CYRILLIC CAPITAL LETTER EM " 
+                   "16r041D"    16rCD " CYRILLIC CAPITAL LETTER EN " 
+                   "16r041E"    16rCE " CYRILLIC CAPITAL LETTER O " 
+                   "16r041F"    16rCF " CYRILLIC CAPITAL LETTER PE " 
+                   "16r0420"    16rD0 " CYRILLIC CAPITAL LETTER ER " 
+                   "16r0421"    16rD1 " CYRILLIC CAPITAL LETTER ES " 
+                   "16r0422"    16rD2 " CYRILLIC CAPITAL LETTER TE " 
+                   "16r0423"    16rD3 " CYRILLIC CAPITAL LETTER U " 
+                   "16r0424"    16rD4 " CYRILLIC CAPITAL LETTER EF " 
+                   "16r0425"    16rD5 " CYRILLIC CAPITAL LETTER HA " 
+                   "16r0426"    16rD6 " CYRILLIC CAPITAL LETTER TSE " 
+                   "16r0427"    16rD7 " CYRILLIC CAPITAL LETTER CHE " 
+                   "16r0428"    16rD8 " CYRILLIC CAPITAL LETTER SHA " 
+                   "16r0429"    16rD9 " CYRILLIC CAPITAL LETTER SHCHA " 
+                   "16r042A"    16rDA " CYRILLIC CAPITAL LETTER HARD SIGN " 
+                   "16r042B"    16rDB " CYRILLIC CAPITAL LETTER YERU " 
+                   "16r042C"    16rDC " CYRILLIC CAPITAL LETTER SOFT SIGN " 
+                   "16r042D"    16rDD " CYRILLIC CAPITAL LETTER E " 
+                   "16r042E"    16rDE " CYRILLIC CAPITAL LETTER YU " 
+                   "16r042F"    16rDF " CYRILLIC CAPITAL LETTER YA " 
+                   "16r0430"    16rE0 " CYRILLIC SMALL LETTER A " 
+                   "16r0431"    16rE1 " CYRILLIC SMALL LETTER BE " 
+                   "16r0432"    16rE2 " CYRILLIC SMALL LETTER VE " 
+                   "16r0433"    16rE3 " CYRILLIC SMALL LETTER GHE " 
+                   "16r0434"    16rE4 " CYRILLIC SMALL LETTER DE " 
+                   "16r0435"    16rE5 " CYRILLIC SMALL LETTER IE " 
+                   "16r0436"    16rE6 " CYRILLIC SMALL LETTER ZHE " 
+                   "16r0437"    16rE7 " CYRILLIC SMALL LETTER ZE " 
+                   "16r0438"    16rE8 " CYRILLIC SMALL LETTER I " 
+                   "16r0439"    16rE9 " CYRILLIC SMALL LETTER SHORT I " 
+                   "16r043A"    16rEA " CYRILLIC SMALL LETTER KA " 
+                   "16r043B"    16rEB " CYRILLIC SMALL LETTER EL " 
+                   "16r043C"    16rEC " CYRILLIC SMALL LETTER EM " 
+                   "16r043D"    16rED " CYRILLIC SMALL LETTER EN " 
+                   "16r043E"    16rEE " CYRILLIC SMALL LETTER O " 
+                   "16r043F"    16rEF " CYRILLIC SMALL LETTER PE " 
+                   "16r0440"    16rF0 " CYRILLIC SMALL LETTER ER " 
+                   "16r0441"    16rF1 " CYRILLIC SMALL LETTER ES " 
+                   "16r0442"    16rF2 " CYRILLIC SMALL LETTER TE " 
+                   "16r0443"    16rF3 " CYRILLIC SMALL LETTER U " 
+                   "16r0444"    16rF4 " CYRILLIC SMALL LETTER EF " 
+                   "16r0445"    16rF5 " CYRILLIC SMALL LETTER HA " 
+                   "16r0446"    16rF6 " CYRILLIC SMALL LETTER TSE " 
+                   "16r0447"    16rF7 " CYRILLIC SMALL LETTER CHE " 
+                   "16r0448"    16rF8 " CYRILLIC SMALL LETTER SHA " 
+                   "16r0449"    16rF9 " CYRILLIC SMALL LETTER SHCHA " 
+                   "16r044A"    16rFA " CYRILLIC SMALL LETTER HARD SIGN " 
+                   "16r044B"    16rFB " CYRILLIC SMALL LETTER YERU " 
+                   "16r044C"    16rFC " CYRILLIC SMALL LETTER SOFT SIGN " 
+                   "16r044D"    16rFD " CYRILLIC SMALL LETTER E " 
+                   "16r044E"    16rFE " CYRILLIC SMALL LETTER YU " 
+                   "16r044F"    16rFF " CYRILLIC SMALL LETTER YA " 
+                   "16r0450"    16r00 " invalid " 
+                   "16r0451"    16rB8 " CYRILLIC SMALL LETTER IO " 
+                   "16r0452"    16r90 " CYRILLIC SMALL LETTER DJE (Serbocroatian) " 
+                   "16r0453"    16r83 " CYRILLIC SMALL LETTER GJE " 
+                   "16r0454"    16rBA " CYRILLIC SMALL LETTER UKRAINIAN IE " 
+                   "16r0455"    16rBE " CYRILLIC SMALL LETTER DZE " 
+                   "16r0456"    16rB3 " CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I " 
+                   "16r0457"    16rBF " CYRILLIC SMALL LETTER YI (Ukrainian) " 
+                   "16r0458"    16rBC " CYRILLIC SMALL LETTER JE " 
+                   "16r0459"    16r9A " CYRILLIC SMALL LETTER LJE " 
+                   "16r045A"    16r9C " CYRILLIC SMALL LETTER NJE " 
+                   "16r045B"    16r9E " CYRILLIC SMALL LETTER TSHE (Serbocroatian) " 
+                   "16r045C"    16r9D " CYRILLIC SMALL LETTER KJE " 
+                   "16r045D"    16r00 " invalid " 
+                   "16r045E"    16rA2 " CYRILLIC SMALL LETTER SHORT U (Byelorussian) " 
+                   "16r045F"    16r9F " CYRILLIC SMALL LETTER DZHE " 
+                   ] at:(unicode - 16r400).
+                t == 0 ifFalse:[^ t].
+                ^ self encodingError
+            ] value.
+        ].
+        unicode <= 16r48F ifTrue:[
+            ^ self encodingError
+        ].
+        ^ #[
+           "16r0490"    16rA5 " CYRILLIC CAPITAL LETTER GHE WITH UPTURN " 
+           "16r0491"    16rB4 " CYRILLIC SMALL LETTER GHE WITH UPTURN " 
+           ] at:(unicode - 16r48F).
+    ].
+    unicode <= 16r2012 ifTrue:[
+        ^ self encodingError
+    ].
+    unicode <= 16r203A ifTrue:[
+        [
+            |t|
+            t := #[
+               "16r2013"    16r96 " EN DASH " 
+               "16r2014"    16r97 " EM DASH " 
+               "16r2015"    16r00 " invalid " 
+               "16r2016"    16r00 " invalid " 
+               "16r2017"    16r00 " invalid " 
+               "16r2018"    16r91 " LEFT SINGLE QUOTATION MARK " 
+               "16r2019"    16r92 " RIGHT SINGLE QUOTATION MARK " 
+               "16r201A"    16r82 " SINGLE LOW-9 QUOTATION MARK " 
+               "16r201B"    16r00 " invalid " 
+               "16r201C"    16r93 " LEFT DOUBLE QUOTATION MARK " 
+               "16r201D"    16r94 " RIGHT DOUBLE QUOTATION MARK " 
+               "16r201E"    16r84 " DOUBLE LOW-9 QUOTATION MARK " 
+               "16r201F"    16r00 " invalid " 
+               "16r2020"    16r86 " DAGGER " 
+               "16r2021"    16r87 " DOUBLE DAGGER " 
+               "16r2022"    16r95 " BULLET " 
+               "16r2023"    16r00 " invalid " 
+               "16r2024"    16r00 " invalid " 
+               "16r2025"    16r00 " invalid " 
+               "16r2026"    16r85 " HORIZONTAL ELLIPSIS " 
+               "16r2027"    16r00 " invalid " 
+               "16r2028"    16r00 " invalid " 
+               "16r2029"    16r00 " invalid " 
+               "16r202A"    16r00 " invalid " 
+               "16r202B"    16r00 " invalid " 
+               "16r202C"    16r00 " invalid " 
+               "16r202D"    16r00 " invalid " 
+               "16r202E"    16r00 " invalid " 
+               "16r202F"    16r00 " invalid " 
+               "16r2030"    16r89 " PER MILLE SIGN " 
+               "16r2031"    16r00 " invalid " 
+               "16r2032"    16r00 " invalid " 
+               "16r2033"    16r00 " invalid " 
+               "16r2034"    16r00 " invalid " 
+               "16r2035"    16r00 " invalid " 
+               "16r2036"    16r00 " invalid " 
+               "16r2037"    16r00 " invalid " 
+               "16r2038"    16r00 " invalid " 
+               "16r2039"    16r8B " SINGLE LEFT-POINTING ANGLE QUOTATION MARK " 
+               "16r203A"    16r9B " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK " 
+               ] at:(unicode - 16r2012).
+            t == 0 ifFalse:[^ t].
+            ^ self encodingError
+        ] value.
+    ].
+    unicode <= 16r2115 ifTrue:[
+        ^ self encodingError
+    ].
+    unicode == 16r2116 ifTrue:[
+        (#[
+           "16r2116"    1 " NUMERO SIGN " 
+        ] at:(unicode - 8469)) ~~ 0 ifTrue:[^ unicode].
+        ^ self encodingError
+    ].
+    unicode <= 16r2121 ifTrue:[
+        ^ self encodingError
+    ].
+    ^  "16r2122" 16r0099 " TRADE MARK SIGN " 
+! !
+
 !MS_Cyrillic class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Cyrillic.st,v 1.3 2004-03-09 22:01:08 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Cyrillic.st,v 1.4 2005-03-31 18:48:53 cg Exp $'
 ! !