diff -r e5cfd06920ca -r 2cc8e7ba3be6 CharacterEncoderImplementations__MS_Ansi.st --- a/CharacterEncoderImplementations__MS_Ansi.st Tue May 06 22:17:51 2008 +0200 +++ b/CharacterEncoderImplementations__MS_Ansi.st Wed May 07 16:46:49 2008 +0200 @@ -9,7 +9,6 @@ other person. No title to or ownership of the software is hereby transferred. " - "{ Package: 'stx:libbasic' }" "{ NameSpace: CharacterEncoderImplementations }" @@ -330,279 +329,294 @@ decode:codeArg |code "{ Class: SmallInteger }"| - code := codeArg. - code <= 16r7F ifTrue:[ ^ code ]. - code > 16rFF ifTrue:[ - ^ codeArg. - ]. - [ - |t| - t := #( - "16r0080" 16r0000 " invalid " - "16r0081" 16r0000 " invalid " - "16r0082" 16r201A " SINGLE LOW-9 QUOTATION MARK " - "16r0083" 16r0192 " LATIN SMALL LETTER F WITH HOOK " - "16r0084" 16r201E " DOUBLE LOW-9 QUOTATION MARK " - "16r0085" 16r2026 " HORIZONTAL ELLIPSIS " - "16r0086" 16r2020 " DAGGER " - "16r0087" 16r2021 " DOUBLE DAGGER " - "16r0088" 16r02C6 " MODIFIER LETTER CIRCUMFLEX ACCENT " - "16r0089" 16r2030 " PER MILLE SIGN " - "16r008A" 16r0160 " LATIN CAPITAL LETTER S WITH CARON " - "16r008B" 16r2039 " SINGLE LEFT-POINTING ANGLE QUOTATION MARK " - "16r008C" 16r0152 " LATIN CAPITAL LIGATURE OE " - "16r008D" 16r0000 " invalid " - "16r008E" 16r0000 " invalid " - "16r008F" 16r0000 " invalid " - "16r0090" 16r0000 " invalid " - "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" 16r02DC " SMALL TILDE " - "16r0099" 16r2122 " TRADE MARK SIGN " - "16r009A" 16r0161 " LATIN SMALL LETTER S WITH CARON " - "16r009B" 16r203A " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK " - "16r009C" 16r0153 " LATIN SMALL LIGATURE OE " - "16r009D" 16r0000 " invalid " - "16r009E" 16r0000 " invalid " - "16r009F" 16r0178 " LATIN CAPITAL LETTER Y WITH DIAERESIS " - "16r00A0" 16r00A0 " NO-BREAK SPACE " - "16r00A1" 16r00A1 " INVERTED EXCLAMATION MARK " - "16r00A2" 16r00A2 " CENT SIGN " - "16r00A3" 16r00A3 " POUND SIGN " - "16r00A4" 16r00A4 " CURRENCY SIGN " - "16r00A5" 16r00A5 " YEN SIGN " - "16r00A6" 16r00A6 " BROKEN BAR " - "16r00A7" 16r00A7 " SECTION SIGN " - "16r00A8" 16r00A8 " DIAERESIS " - "16r00A9" 16r00A9 " COPYRIGHT SIGN " - "16r00AA" 16r00AA " FEMININE ORDINAL INDICATOR " - "16r00AB" 16r00AB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " - "16r00AC" 16r00AC " NOT SIGN " - "16r00AD" 16r00AD " SOFT HYPHEN " - "16r00AE" 16r00AE " REGISTERED SIGN " - "16r00AF" 16r00AF " MACRON " - "16r00B0" 16r00B0 " DEGREE SIGN " - "16r00B1" 16r00B1 " PLUS-MINUS SIGN " - "16r00B2" 16r00B2 " SUPERSCRIPT TWO " - "16r00B3" 16r00B3 " SUPERSCRIPT THREE " - "16r00B4" 16r00B4 " ACUTE ACCENT " - "16r00B5" 16r00B5 " MICRO SIGN " - "16r00B6" 16r00B6 " PILCROW SIGN " - "16r00B7" 16r00B7 " MIDDLE DOT " - "16r00B8" 16r00B8 " CEDILLA " - "16r00B9" 16r00B9 " SUPERSCRIPT ONE " - "16r00BA" 16r00BA " MASCULINE ORDINAL INDICATOR " - "16r00BB" 16r00BB " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " - "16r00BC" 16r00BC " VULGAR FRACTION ONE QUARTER " - "16r00BD" 16r00BD " VULGAR FRACTION ONE HALF " - "16r00BE" 16r00BE " VULGAR FRACTION THREE QUARTERS " - "16r00BF" 16r00BF " INVERTED QUESTION MARK " - "16r00C0" 16r00C0 " LATIN CAPITAL LETTER A WITH GRAVE " - "16r00C1" 16r00C1 " LATIN CAPITAL LETTER A WITH ACUTE " - "16r00C2" 16r00C2 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " - "16r00C3" 16r00C3 " LATIN CAPITAL LETTER A WITH TILDE " - "16r00C4" 16r00C4 " LATIN CAPITAL LETTER A WITH DIAERESIS " - "16r00C5" 16r00C5 " LATIN CAPITAL LETTER A WITH RING ABOVE " - "16r00C6" 16r00C6 " LATIN CAPITAL LETTER AE " - "16r00C7" 16r00C7 " LATIN CAPITAL LETTER C WITH CEDILLA " - "16r00C8" 16r00C8 " LATIN CAPITAL LETTER E WITH GRAVE " - "16r00C9" 16r00C9 " LATIN CAPITAL LETTER E WITH ACUTE " - "16r00CA" 16r00CA " LATIN CAPITAL LETTER E WITH CIRCUMFLEX " - "16r00CB" 16r00CB " LATIN CAPITAL LETTER E WITH DIAERESIS " - "16r00CC" 16r00CC " LATIN CAPITAL LETTER I WITH GRAVE " - "16r00CD" 16r00CD " LATIN CAPITAL LETTER I WITH ACUTE " - "16r00CE" 16r00CE " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " - "16r00CF" 16r00CF " LATIN CAPITAL LETTER I WITH DIAERESIS " - "16r00D0" 16r00D0 " LATIN CAPITAL LETTER ETH (Icelandic) " - "16r00D1" 16r00D1 " LATIN CAPITAL LETTER N WITH TILDE " - "16r00D2" 16r00D2 " LATIN CAPITAL LETTER O WITH GRAVE " - "16r00D3" 16r00D3 " LATIN CAPITAL LETTER O WITH ACUTE " - "16r00D4" 16r00D4 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " - "16r00D5" 16r00D5 " LATIN CAPITAL LETTER O WITH TILDE " - "16r00D6" 16r00D6 " LATIN CAPITAL LETTER O WITH DIAERESIS " - "16r00D7" 16r00D7 " MULTIPLICATION SIGN " - "16r00D8" 16r00D8 " LATIN CAPITAL LETTER O WITH STROKE " - "16r00D9" 16r00D9 " LATIN CAPITAL LETTER U WITH GRAVE " - "16r00DA" 16r00DA " LATIN CAPITAL LETTER U WITH ACUTE " - "16r00DB" 16r00DB " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " - "16r00DC" 16r00DC " LATIN CAPITAL LETTER U WITH DIAERESIS " - "16r00DD" 16r00DD " LATIN CAPITAL LETTER Y WITH ACUTE " - "16r00DE" 16r00DE " LATIN CAPITAL LETTER THORN (Icelandic) " - "16r00DF" 16r00DF " LATIN SMALL LETTER SHARP S (German) " - "16r00E0" 16r00E0 " LATIN SMALL LETTER A WITH GRAVE " - "16r00E1" 16r00E1 " LATIN SMALL LETTER A WITH ACUTE " - "16r00E2" 16r00E2 " LATIN SMALL LETTER A WITH CIRCUMFLEX " - "16r00E3" 16r00E3 " LATIN SMALL LETTER A WITH TILDE " - "16r00E4" 16r00E4 " LATIN SMALL LETTER A WITH DIAERESIS " - "16r00E5" 16r00E5 " LATIN SMALL LETTER A WITH RING ABOVE " - "16r00E6" 16r00E6 " LATIN SMALL LETTER AE " - "16r00E7" 16r00E7 " LATIN SMALL LETTER C WITH CEDILLA " - "16r00E8" 16r00E8 " LATIN SMALL LETTER E WITH GRAVE " - "16r00E9" 16r00E9 " LATIN SMALL LETTER E WITH ACUTE " - "16r00EA" 16r00EA " LATIN SMALL LETTER E WITH CIRCUMFLEX " - "16r00EB" 16r00EB " LATIN SMALL LETTER E WITH DIAERESIS " - "16r00EC" 16r00EC " LATIN SMALL LETTER I WITH GRAVE " - "16r00ED" 16r00ED " LATIN SMALL LETTER I WITH ACUTE " - "16r00EE" 16r00EE " LATIN SMALL LETTER I WITH CIRCUMFLEX " - "16r00EF" 16r00EF " LATIN SMALL LETTER I WITH DIAERESIS " - "16r00F0" 16r00F0 " LATIN SMALL LETTER ETH (Icelandic) " - "16r00F1" 16r00F1 " LATIN SMALL LETTER N WITH TILDE " - "16r00F2" 16r00F2 " LATIN SMALL LETTER O WITH GRAVE " - "16r00F3" 16r00F3 " LATIN SMALL LETTER O WITH ACUTE " - "16r00F4" 16r00F4 " LATIN SMALL LETTER O WITH CIRCUMFLEX " - "16r00F5" 16r00F5 " LATIN SMALL LETTER O WITH TILDE " - "16r00F6" 16r00F6 " LATIN SMALL LETTER O WITH DIAERESIS " - "16r00F7" 16r00F7 " DIVISION SIGN " - "16r00F8" 16r00F8 " LATIN SMALL LETTER O WITH STROKE " - "16r00F9" 16r00F9 " LATIN SMALL LETTER U WITH GRAVE " - "16r00FA" 16r00FA " LATIN SMALL LETTER U WITH ACUTE " - "16r00FB" 16r00FB " LATIN SMALL LETTER U WITH CIRCUMFLEX " - "16r00FC" 16r00FC " LATIN SMALL LETTER U WITH DIAERESIS " - "16r00FD" 16r00FD " LATIN SMALL LETTER Y WITH ACUTE " - "16r00FE" 16r00FE " LATIN SMALL LETTER THORN (Icelandic) " - "16r00FF" 16r00FF " LATIN SMALL LETTER Y WITH DIAERESIS " - ) at:(code - 16r7F). - t == 0 ifFalse:[^ t]. - ^ self decodingError. - ] value. + "/ mh - it seems that microsoft has fixed ms-ansi to be unicode compatible + "/ with XP, Vista etc. + "/ as W95 is not supported anyhow, simply return identity here... + ^ codeArg. + +"/ code := codeArg. +"/ code <= 16r7F ifTrue:[ ^ code ]. +"/ code > 16rFF ifTrue:[ +"/ ^ codeArg. +"/ ]. +"/ [ +"/ |t| +"/ t := #( +"/ "16r0080" 16r0000 " invalid " +"/ "16r0081" 16r0000 " invalid " +"/ "16r0082" 16r201A " SINGLE LOW-9 QUOTATION MARK " +"/ "16r0083" 16r0192 " LATIN SMALL LETTER F WITH HOOK " +"/ "16r0084" 16r201E " DOUBLE LOW-9 QUOTATION MARK " +"/ "16r0085" 16r2026 " HORIZONTAL ELLIPSIS " +"/ "16r0086" 16r2020 " DAGGER " +"/ "16r0087" 16r2021 " DOUBLE DAGGER " +"/ "16r0088" 16r02C6 " MODIFIER LETTER CIRCUMFLEX ACCENT " +"/ "16r0089" 16r2030 " PER MILLE SIGN " +"/ "16r008A" 16r0160 " LATIN CAPITAL LETTER S WITH CARON " +"/ "16r008B" 16r2039 " SINGLE LEFT-POINTING ANGLE QUOTATION MARK " +"/ "16r008C" 16r0152 " LATIN CAPITAL LIGATURE OE " +"/ "16r008D" 16r0000 " invalid " +"/ "16r008E" 16r0000 " invalid " +"/ "16r008F" 16r0000 " invalid " +"/ "16r0090" 16r0000 " invalid " +"/ "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" 16r02DC " SMALL TILDE " +"/ "16r0099" 16r2122 " TRADE MARK SIGN " +"/ "16r009A" 16r0161 " LATIN SMALL LETTER S WITH CARON " +"/ "16r009B" 16r203A " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK " +"/ "16r009C" 16r0153 " LATIN SMALL LIGATURE OE " +"/ "16r009D" 16r0000 " invalid " +"/ "16r009E" 16r0000 " invalid " +"/ "16r009F" 16r0178 " LATIN CAPITAL LETTER Y WITH DIAERESIS " +"/ "16r00A0" 16r00A0 " NO-BREAK SPACE " +"/ "16r00A1" 16r00A1 " INVERTED EXCLAMATION MARK " +"/ "16r00A2" 16r00A2 " CENT SIGN " +"/ "16r00A3" 16r00A3 " POUND SIGN " +"/ "16r00A4" 16r00A4 " CURRENCY SIGN " +"/ "16r00A5" 16r00A5 " YEN SIGN " +"/ "16r00A6" 16r00A6 " BROKEN BAR " +"/ "16r00A7" 16r00A7 " SECTION SIGN " +"/ "16r00A8" 16r00A8 " DIAERESIS " +"/ "16r00A9" 16r00A9 " COPYRIGHT SIGN " +"/ "16r00AA" 16r00AA " FEMININE ORDINAL INDICATOR " +"/ "16r00AB" 16r00AB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " +"/ "16r00AC" 16r00AC " NOT SIGN " +"/ "16r00AD" 16r00AD " SOFT HYPHEN " +"/ "16r00AE" 16r00AE " REGISTERED SIGN " +"/ "16r00AF" 16r00AF " MACRON " +"/ "16r00B0" 16r00B0 " DEGREE SIGN " +"/ "16r00B1" 16r00B1 " PLUS-MINUS SIGN " +"/ "16r00B2" 16r00B2 " SUPERSCRIPT TWO " +"/ "16r00B3" 16r00B3 " SUPERSCRIPT THREE " +"/ "16r00B4" 16r00B4 " ACUTE ACCENT " +"/ "16r00B5" 16r00B5 " MICRO SIGN " +"/ "16r00B6" 16r00B6 " PILCROW SIGN " +"/ "16r00B7" 16r00B7 " MIDDLE DOT " +"/ "16r00B8" 16r00B8 " CEDILLA " +"/ "16r00B9" 16r00B9 " SUPERSCRIPT ONE " +"/ "16r00BA" 16r00BA " MASCULINE ORDINAL INDICATOR " +"/ "16r00BB" 16r00BB " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " +"/ "16r00BC" 16r00BC " VULGAR FRACTION ONE QUARTER " +"/ "16r00BD" 16r00BD " VULGAR FRACTION ONE HALF " +"/ "16r00BE" 16r00BE " VULGAR FRACTION THREE QUARTERS " +"/ "16r00BF" 16r00BF " INVERTED QUESTION MARK " +"/ "16r00C0" 16r00C0 " LATIN CAPITAL LETTER A WITH GRAVE " +"/ "16r00C1" 16r00C1 " LATIN CAPITAL LETTER A WITH ACUTE " +"/ "16r00C2" 16r00C2 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " +"/ "16r00C3" 16r00C3 " LATIN CAPITAL LETTER A WITH TILDE " +"/ "16r00C4" 16r00C4 " LATIN CAPITAL LETTER A WITH DIAERESIS " +"/ "16r00C5" 16r00C5 " LATIN CAPITAL LETTER A WITH RING ABOVE " +"/ "16r00C6" 16r00C6 " LATIN CAPITAL LETTER AE " +"/ "16r00C7" 16r00C7 " LATIN CAPITAL LETTER C WITH CEDILLA " +"/ "16r00C8" 16r00C8 " LATIN CAPITAL LETTER E WITH GRAVE " +"/ "16r00C9" 16r00C9 " LATIN CAPITAL LETTER E WITH ACUTE " +"/ "16r00CA" 16r00CA " LATIN CAPITAL LETTER E WITH CIRCUMFLEX " +"/ "16r00CB" 16r00CB " LATIN CAPITAL LETTER E WITH DIAERESIS " +"/ "16r00CC" 16r00CC " LATIN CAPITAL LETTER I WITH GRAVE " +"/ "16r00CD" 16r00CD " LATIN CAPITAL LETTER I WITH ACUTE " +"/ "16r00CE" 16r00CE " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " +"/ "16r00CF" 16r00CF " LATIN CAPITAL LETTER I WITH DIAERESIS " +"/ "16r00D0" 16r00D0 " LATIN CAPITAL LETTER ETH (Icelandic) " +"/ "16r00D1" 16r00D1 " LATIN CAPITAL LETTER N WITH TILDE " +"/ "16r00D2" 16r00D2 " LATIN CAPITAL LETTER O WITH GRAVE " +"/ "16r00D3" 16r00D3 " LATIN CAPITAL LETTER O WITH ACUTE " +"/ "16r00D4" 16r00D4 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " +"/ "16r00D5" 16r00D5 " LATIN CAPITAL LETTER O WITH TILDE " +"/ "16r00D6" 16r00D6 " LATIN CAPITAL LETTER O WITH DIAERESIS " +"/ "16r00D7" 16r00D7 " MULTIPLICATION SIGN " +"/ "16r00D8" 16r00D8 " LATIN CAPITAL LETTER O WITH STROKE " +"/ "16r00D9" 16r00D9 " LATIN CAPITAL LETTER U WITH GRAVE " +"/ "16r00DA" 16r00DA " LATIN CAPITAL LETTER U WITH ACUTE " +"/ "16r00DB" 16r00DB " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " +"/ "16r00DC" 16r00DC " LATIN CAPITAL LETTER U WITH DIAERESIS " +"/ "16r00DD" 16r00DD " LATIN CAPITAL LETTER Y WITH ACUTE " +"/ "16r00DE" 16r00DE " LATIN CAPITAL LETTER THORN (Icelandic) " +"/ "16r00DF" 16r00DF " LATIN SMALL LETTER SHARP S (German) " +"/ "16r00E0" 16r00E0 " LATIN SMALL LETTER A WITH GRAVE " +"/ "16r00E1" 16r00E1 " LATIN SMALL LETTER A WITH ACUTE " +"/ "16r00E2" 16r00E2 " LATIN SMALL LETTER A WITH CIRCUMFLEX " +"/ "16r00E3" 16r00E3 " LATIN SMALL LETTER A WITH TILDE " +"/ "16r00E4" 16r00E4 " LATIN SMALL LETTER A WITH DIAERESIS " +"/ "16r00E5" 16r00E5 " LATIN SMALL LETTER A WITH RING ABOVE " +"/ "16r00E6" 16r00E6 " LATIN SMALL LETTER AE " +"/ "16r00E7" 16r00E7 " LATIN SMALL LETTER C WITH CEDILLA " +"/ "16r00E8" 16r00E8 " LATIN SMALL LETTER E WITH GRAVE " +"/ "16r00E9" 16r00E9 " LATIN SMALL LETTER E WITH ACUTE " +"/ "16r00EA" 16r00EA " LATIN SMALL LETTER E WITH CIRCUMFLEX " +"/ "16r00EB" 16r00EB " LATIN SMALL LETTER E WITH DIAERESIS " +"/ "16r00EC" 16r00EC " LATIN SMALL LETTER I WITH GRAVE " +"/ "16r00ED" 16r00ED " LATIN SMALL LETTER I WITH ACUTE " +"/ "16r00EE" 16r00EE " LATIN SMALL LETTER I WITH CIRCUMFLEX " +"/ "16r00EF" 16r00EF " LATIN SMALL LETTER I WITH DIAERESIS " +"/ "16r00F0" 16r00F0 " LATIN SMALL LETTER ETH (Icelandic) " +"/ "16r00F1" 16r00F1 " LATIN SMALL LETTER N WITH TILDE " +"/ "16r00F2" 16r00F2 " LATIN SMALL LETTER O WITH GRAVE " +"/ "16r00F3" 16r00F3 " LATIN SMALL LETTER O WITH ACUTE " +"/ "16r00F4" 16r00F4 " LATIN SMALL LETTER O WITH CIRCUMFLEX " +"/ "16r00F5" 16r00F5 " LATIN SMALL LETTER O WITH TILDE " +"/ "16r00F6" 16r00F6 " LATIN SMALL LETTER O WITH DIAERESIS " +"/ "16r00F7" 16r00F7 " DIVISION SIGN " +"/ "16r00F8" 16r00F8 " LATIN SMALL LETTER O WITH STROKE " +"/ "16r00F9" 16r00F9 " LATIN SMALL LETTER U WITH GRAVE " +"/ "16r00FA" 16r00FA " LATIN SMALL LETTER U WITH ACUTE " +"/ "16r00FB" 16r00FB " LATIN SMALL LETTER U WITH CIRCUMFLEX " +"/ "16r00FC" 16r00FC " LATIN SMALL LETTER U WITH DIAERESIS " +"/ "16r00FD" 16r00FD " LATIN SMALL LETTER Y WITH ACUTE " +"/ "16r00FE" 16r00FE " LATIN SMALL LETTER THORN (Icelandic) " +"/ "16r00FF" 16r00FF " LATIN SMALL LETTER Y WITH DIAERESIS " +"/ ) at:(code - 16r7F). +"/ t == 0 ifFalse:[^ t]. +"/ ^ self decodingError. +"/ ] value. ! encode:unicodeArg |unicode "{ Class: SmallInteger }"| - unicode := unicodeArg. - unicode > 16r2122 ifTrue:[ - ^ unicode. - ]. - unicode <= 16r151 ifTrue:[ - ^ unicode - ]. - unicode <= 16r2DC ifTrue:[ - unicode <= 16r192 ifTrue:[ - unicode <= 16r178 ifTrue:[ - unicode <= 16r161 ifTrue:[ - [ - |t| - t := #[ - "16r0152" 16r8C " LATIN CAPITAL LIGATURE OE " - "16r0153" 16r9C " LATIN SMALL LIGATURE OE " - "16r0154" 16r00 " invalid " - "16r0155" 16r00 " invalid " - "16r0156" 16r00 " invalid " - "16r0157" 16r00 " invalid " - "16r0158" 16r00 " invalid " - "16r0159" 16r00 " invalid " - "16r015A" 16r00 " invalid " - "16r015B" 16r00 " invalid " - "16r015C" 16r00 " invalid " - "16r015D" 16r00 " invalid " - "16r015E" 16r00 " invalid " - "16r015F" 16r00 " invalid " - "16r0160" 16r8A " LATIN CAPITAL LETTER S WITH CARON " - "16r0161" 16r9A " LATIN SMALL LETTER S WITH CARON " - ] at:(unicode - 16r151). - t == 0 ifFalse:[^ t]. - ^ unicode - ] value. - ]. - unicode <= 16r177 ifTrue:[ - ^ unicode - ]. - ^ "16r0178" 16r009F " LATIN CAPITAL LETTER Y WITH DIAERESIS " - ]. - unicode <= 16r191 ifTrue:[ - ^ unicode - ]. - ^ "16r0192" 16r0083 " LATIN SMALL LETTER F WITH HOOK " - ]. - unicode <= 16r2C5 ifTrue:[ - ^ unicode - ]. - unicode == 16r2C6 ifTrue:[ - ^ "16r02C6" 16r0088 " MODIFIER LETTER CIRCUMFLEX ACCENT " - ]. - unicode <= 16r2DB ifTrue:[ - ^ unicode - ]. - ^ "16r02DC" 16r0098 " SMALL TILDE " - ]. - unicode <= 16r2012 ifTrue:[ - ^ unicode - ]. - 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]. - ^ unicode - ] value. - ]. - unicode <= 16r2121 ifTrue:[ - ^ unicode - ]. - ^ "16r2122" 16r0099 " TRADE MARK SIGN " + "/ mh - it seems that microsoft has fixed ms-ansi to be unicode compatible + "/ with XP, Vista etc. + "/ as W95 is not supported anyhow, simply return identity here... + ^ unicodeArg. + +"/ unicode := unicodeArg. +"/ unicode > 16r2122 ifTrue:[ +"/ ^ unicode. +"/ ]. +"/ unicode <= 16r151 ifTrue:[ +"/ ^ unicode +"/ ]. +"/ unicode <= 16r2DC ifTrue:[ +"/ unicode <= 16r192 ifTrue:[ +"/ unicode <= 16r178 ifTrue:[ +"/ unicode <= 16r161 ifTrue:[ +"/ [ +"/ |t| +"/ t := #[ +"/ "16r0152" 16r8C " LATIN CAPITAL LIGATURE OE " +"/ "16r0153" 16r9C " LATIN SMALL LIGATURE OE " +"/ "16r0154" 16r00 " invalid " +"/ "16r0155" 16r00 " invalid " +"/ "16r0156" 16r00 " invalid " +"/ "16r0157" 16r00 " invalid " +"/ "16r0158" 16r00 " invalid " +"/ "16r0159" 16r00 " invalid " +"/ "16r015A" 16r00 " invalid " +"/ "16r015B" 16r00 " invalid " +"/ "16r015C" 16r00 " invalid " +"/ "16r015D" 16r00 " invalid " +"/ "16r015E" 16r00 " invalid " +"/ "16r015F" 16r00 " invalid " +"/ "16r0160" 16r8A " LATIN CAPITAL LETTER S WITH CARON " +"/ "16r0161" 16r9A " LATIN SMALL LETTER S WITH CARON " +"/ ] at:(unicode - 16r151). +"/ t == 0 ifFalse:[^ t]. +"/ ^ unicode +"/ ] value. +"/ ]. +"/ unicode <= 16r177 ifTrue:[ +"/ ^ unicode +"/ ]. +"/ ^ "16r0178" 16r009F " LATIN CAPITAL LETTER Y WITH DIAERESIS " +"/ ]. +"/ unicode <= 16r191 ifTrue:[ +"/ ^ unicode +"/ ]. +"/ ^ "16r0192" 16r0083 " LATIN SMALL LETTER F WITH HOOK " +"/ ]. +"/ unicode <= 16r2C5 ifTrue:[ +"/ ^ unicode +"/ ]. +"/ unicode == 16r2C6 ifTrue:[ +"/ ^ "16r02C6" 16r0088 " MODIFIER LETTER CIRCUMFLEX ACCENT " +"/ ]. +"/ unicode <= 16r2DB ifTrue:[ +"/ ^ unicode +"/ ]. +"/ ^ "16r02DC" 16r0098 " SMALL TILDE " +"/ ]. +"/ unicode <= 16r2012 ifTrue:[ +"/ ^ unicode +"/ ]. +"/ unicode <= 16r203A ifTrue:[ +"/ [ +"/ |t| +"/ t := #( +"/ "16r2013" 16r2013 "16r96" " EN DASH " +"/ "16r2014" 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]. +"/ ^ unicode +"/ ] value. +"/ ]. +"/ unicode <= 16r2121 ifTrue:[ +"/ ^ unicode +"/ ]. +"/ ^ "16r2122" 16r0099 " TRADE MARK SIGN " ! encodeString:aStringOrUnicodeString "redefined to speedup simple 8 bit strings" - aStringOrUnicodeString bitsPerCharacter == 8 ifTrue:[ - "/ all between 0 and FF - (aStringOrUnicodeString contains8BitCharacters) ifFalse:[ - ^ aStringOrUnicodeString - ] - ]. - ^ super encodeString:aStringOrUnicodeString + "/ mh - it seems that microsoft has fixed ms-ansi to be unicode compatible + "/ with XP, Vista etc. + "/ as W95 is not supported anyhow, simply return identity here... + ^ aStringOrUnicodeString. + +"/ aStringOrUnicodeString bitsPerCharacter == 8 ifTrue:[ +"/ "/ all between 0 and FF +"/ (aStringOrUnicodeString contains8BitCharacters) ifFalse:[ +"/ ^ aStringOrUnicodeString +"/ ] +"/ ]. +"/ ^ super encodeString:aStringOrUnicodeString ! ! !MS_Ansi class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Ansi.st,v 1.6 2006-03-13 16:07:07 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Ansi.st,v 1.7 2008-05-07 14:46:49 mb Exp $' ! !