CharacterEncoderImplementations__MS_Arabic.st
changeset 8081 b468050174a9
child 8114 05274a80fcc4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CharacterEncoderImplementations__MS_Arabic.st	Fri Mar 05 18:28:27 2004 +0100
@@ -0,0 +1,812 @@
+"{ Encoding: utf8 }"
+
+"{ Package: 'stx:libbasic' }"
+
+"{ NameSpace: CharacterEncoderImplementations }"
+
+SingleByteEncoder subclass:#MS_Arabic
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Collections-Text-Encodings'
+!
+
+
+!MS_Arabic class methodsFor:'mapping'!
+
+mapFileURL2_relativePathName
+    ^ 'CP1256'
+!
+
+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
+END CHARMAP
+
+"
+! !
+
+!MS_Arabic class methodsFor:'queries'!
+
+namesOfEncoding
+    ^ #( 'ms-arabic' 'ms-cp1256' 'microsoft-cp1256' 'cp1256'  'microsoft-arabic' 'windows-1256'  )
+!
+
+userFriendlyNameOfEncoding
+    ^ 'Arabic'
+! !
+
+!MS_Arabic 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"    16r060C " ARABIC COMMA " 
+           "16r0081"    16r0660 " ARABIC-INDIC DIGIT ZERO " 
+           "16r0082"    16r201A " SINGLE LOW-9 QUOTATION MARK " 
+           "16r0083"    16r0661 " ARABIC-INDIC DIGIT ONE " 
+           "16r0084"    16r201E " DOUBLE LOW-9 QUOTATION MARK " 
+           "16r0085"    16r2026 " HORIZONTAL ELLIPSIS " 
+           "16r0086"    16r2020 " DAGGER " 
+           "16r0087"    16r2021 " DOUBLE DAGGER " 
+           "16r0088"    16r0662 " ARABIC-INDIC DIGIT TWO " 
+           "16r0089"    16r0663 " ARABIC-INDIC DIGIT THREE " 
+           "16r008A"    16r0664 " ARABIC-INDIC DIGIT FOUR " 
+           "16r008B"    16r2039 " SINGLE LEFT-POINTING ANGLE QUOTATION MARK " 
+           "16r008C"    16r0665 " ARABIC-INDIC DIGIT FIVE " 
+           "16r008D"    16r0666 " ARABIC-INDIC DIGIT SIX " 
+           "16r008E"    16r0667 " ARABIC-INDIC DIGIT SEVEN " 
+           "16r008F"    16r0668 " ARABIC-INDIC DIGIT EIGHT " 
+           "16r0090"    16r0669 " ARABIC-INDIC DIGIT NINE " 
+           "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"    16r061B " ARABIC SEMICOLON " 
+           "16r0099"    16r2122 " TRADE MARK SIGN " 
+           "16r009A"    16r061F " ARABIC QUESTION MARK " 
+           "16r009B"    16r203A " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK " 
+           "16r009C"    16r0621 " ARABIC LETTER HAMZA " 
+           "16r009D"    16r0622 " ARABIC LETTER ALEF WITH MADDA ABOVE " 
+           "16r009E"    16r0623 " ARABIC LETTER ALEF WITH HAMZA ABOVE " 
+           "16r009F"    16r0178 " LATIN CAPITAL LETTER Y WITH DIAERESIS " 
+           "16r00A0"    16r00A0 " NO-BREAK SPACE " 
+           "16r00A1"    16r0624 " ARABIC LETTER WAW WITH HAMZA ABOVE " 
+           "16r00A2"    16r0625 " ARABIC LETTER ALEF WITH HAMZA BELOW " 
+           "16r00A3"    16r00A3 " POUND SIGN " 
+           "16r00A4"    16r00A4 " CURRENCY SIGN " 
+           "16r00A5"    16r0626 " ARABIC LETTER YEH WITH HAMZA ABOVE " 
+           "16r00A6"    16r00A6 " BROKEN BAR " 
+           "16r00A7"    16r00A7 " SECTION SIGN " 
+           "16r00A8"    16r0627 " ARABIC LETTER ALEF " 
+           "16r00A9"    16r00A9 " COPYRIGHT SIGN " 
+           "16r00AA"    16r0628 " ARABIC LETTER BEH " 
+           "16r00AB"    16r00AB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00AC"    16r00AC " NOT SIGN " 
+           "16r00AD"    16r00AD " SOFT HYPHEN " 
+           "16r00AE"    16r00AE " REGISTERED SIGN " 
+           "16r00AF"    16r067E " ARABIC LETTER PEH " 
+           "16r00B0"    16r00B0 " DEGREE SIGN " 
+           "16r00B1"    16r00B1 " PLUS-MINUS SIGN " 
+           "16r00B2"    16r0629 " ARABIC LETTER TEH MARBUTA " 
+           "16r00B3"    16r062A " ARABIC LETTER TEH " 
+           "16r00B4"    16r062B " ARABIC LETTER THEH " 
+           "16r00B5"    16r00B5 " MICRO SIGN " 
+           "16r00B6"    16r00B6 " PILCROW SIGN " 
+           "16r00B7"    16r00B7 " MIDDLE DOT " 
+           "16r00B8"    16r062C " ARABIC LETTER JEEM " 
+           "16r00B9"    16r0686 " ARABIC LETTER TCHEH " 
+           "16r00BA"    16r062D " ARABIC LETTER HAH " 
+           "16r00BB"    16r00BB " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00BC"    16r062E " ARABIC LETTER KHAH " 
+           "16r00BD"    16r062F " ARABIC LETTER DAL " 
+           "16r00BE"    16r0630 " ARABIC LETTER THAL " 
+           "16r00BF"    16r0631 " ARABIC LETTER REH " 
+           "16r00C0"    16r00C0 " LATIN CAPITAL LETTER A WITH GRAVE " 
+           "16r00C1"    16r0632 " ARABIC LETTER ZAIN " 
+           "16r00C2"    16r00C2 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+           "16r00C3"    16r0698 " ARABIC LETTER JEH " 
+           "16r00C4"    16r0633 " ARABIC LETTER SEEN " 
+           "16r00C5"    16r0634 " ARABIC LETTER SHEEN " 
+           "16r00C6"    16r0635 " ARABIC LETTER SAD " 
+           "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"    16r0636 " ARABIC LETTER DAD " 
+           "16r00CD"    16r0637 " ARABIC LETTER TAH " 
+           "16r00CE"    16r00CE " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+           "16r00CF"    16r00CF " LATIN CAPITAL LETTER I WITH DIAERESIS " 
+           "16r00D0"    16r3113 " BOPOMOFO LETTER ZH " 
+           "16r00D1"    16r0639 " ARABIC LETTER AIN " 
+           "16r00D2"    16r063A " ARABIC LETTER GHAIN " 
+           "16r00D3"    16r0640 " ARABIC TATWEEL " 
+           "16r00D4"    16r00D4 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+           "16r00D5"    16r0641 " ARABIC LETTER FEH " 
+           "16r00D6"    16r0642 " ARABIC LETTER QAF " 
+           "16r00D7"    16r00D7 " MULTIPLICATION SIGN " 
+           "16r00D8"    16r0643 " ARABIC LETTER KAF " 
+           "16r00D9"    16r00D9 " LATIN CAPITAL LETTER U WITH GRAVE " 
+           "16r00DA"    16r06AF " ARABIC LETTER GAF " 
+           "16r00DB"    16r00DB " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " 
+           "16r00DC"    16r00DC " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    16r0644 " ARABIC LETTER LAM " 
+           "16r00DE"    16r0645 " ARABIC LETTER MEEM " 
+           "16r00DF"    16r0646 " ARABIC LETTER NOON " 
+           "16r00E0"    16r00E0 " LATIN SMALL LETTER A WITH GRAVE " 
+           "16r00E1"    16r0647 " ARABIC LETTER HEH " 
+           "16r00E2"    16r00E2 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+           "16r00E3"    16r0681 " ARABIC LETTER HAH WITH HAMZA ABOVE " 
+           "16r00E4"    16r0648 " ARABIC LETTER WAW " 
+           "16r00E5"    16r0649 " ARABIC LETTER ALEF MAKSURA " 
+           "16r00E6"    16r064A " ARABIC LETTER YEH " 
+           "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"    16r064B " ARABIC FATHATAN " 
+           "16r00ED"    16r064C " ARABIC DAMMATAN " 
+           "16r00EE"    16r00EE " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+           "16r00EF"    16r00EF " LATIN SMALL LETTER I WITH DIAERESIS " 
+           "16r00F0"    16r064D " ARABIC KASRATAN " 
+           "16r00F1"    16r064E " ARABIC FATHA " 
+           "16r00F2"    16r064F " ARABIC DAMMA " 
+           "16r00F3"    16r0650 " ARABIC KASRA " 
+           "16r00F4"    16r00F4 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+           "16r00F5"    16r0651 " ARABIC SHADDA " 
+           "16r00F6"    16r0652 " ARABIC SUKUN " 
+           "16r00F7"    16r00F7 " DIVISION SIGN " 
+           "16r00F8"    16r0000 " invalid " 
+           "16r00F9"    16r00F9 " LATIN SMALL LETTER U WITH GRAVE " 
+           "16r00FA"    16r0000 " invalid " 
+           "16r00FB"    16r00FB " LATIN SMALL LETTER U WITH CIRCUMFLEX " 
+           "16r00FC"    16r00FC " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    16r200E " LEFT-TO-RIGHT MARK " 
+           "16r00FE"    16r200F " RIGHT-TO-LEFT MARK " 
+           "16r00FF"    16r00FF " LATIN SMALL LETTER Y WITH DIAERESIS " 
+           ) 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 > 16r3113 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode <= 16r9F ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode <= 16r6AF ifTrue:[
+        unicode <= 16r178 ifTrue:[
+            unicode <= 16rFF ifTrue:[
+                    (#[
+                       "16r00A0"    1 " NO-BREAK SPACE " 
+                       "16r00A1"    0 " invalid " 
+                       "16r00A2"    0 " invalid " 
+                       "16r00A3"    1 " POUND SIGN " 
+                       "16r00A4"    1 " CURRENCY SIGN " 
+                       "16r00A5"    0 " invalid " 
+                       "16r00A6"    1 " BROKEN BAR " 
+                       "16r00A7"    1 " SECTION SIGN " 
+                       "16r00A8"    0 " invalid " 
+                       "16r00A9"    1 " COPYRIGHT SIGN " 
+                       "16r00AA"    0 " invalid " 
+                       "16r00AB"    1 " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+                       "16r00AC"    1 " NOT SIGN " 
+                       "16r00AD"    1 " SOFT HYPHEN " 
+                       "16r00AE"    1 " REGISTERED SIGN " 
+                       "16r00AF"    0 " invalid " 
+                       "16r00B0"    1 " DEGREE SIGN " 
+                       "16r00B1"    1 " PLUS-MINUS SIGN " 
+                       "16r00B2"    0 " invalid " 
+                       "16r00B3"    0 " invalid " 
+                       "16r00B4"    0 " invalid " 
+                       "16r00B5"    1 " MICRO SIGN " 
+                       "16r00B6"    1 " PILCROW SIGN " 
+                       "16r00B7"    1 " MIDDLE DOT " 
+                       "16r00B8"    0 " invalid " 
+                       "16r00B9"    0 " invalid " 
+                       "16r00BA"    0 " invalid " 
+                       "16r00BB"    1 " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+                       "16r00BC"    0 " invalid " 
+                       "16r00BD"    0 " invalid " 
+                       "16r00BE"    0 " invalid " 
+                       "16r00BF"    0 " invalid " 
+                       "16r00C0"    1 " LATIN CAPITAL LETTER A WITH GRAVE " 
+                       "16r00C1"    0 " invalid " 
+                       "16r00C2"    1 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+                       "16r00C3"    0 " invalid " 
+                       "16r00C4"    0 " invalid " 
+                       "16r00C5"    0 " invalid " 
+                       "16r00C6"    0 " invalid " 
+                       "16r00C7"    1 " LATIN CAPITAL LETTER C WITH CEDILLA " 
+                       "16r00C8"    1 " LATIN CAPITAL LETTER E WITH GRAVE " 
+                       "16r00C9"    1 " LATIN CAPITAL LETTER E WITH ACUTE " 
+                       "16r00CA"    1 " LATIN CAPITAL LETTER E WITH CIRCUMFLEX " 
+                       "16r00CB"    1 " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+                       "16r00CC"    0 " invalid " 
+                       "16r00CD"    0 " invalid " 
+                       "16r00CE"    1 " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+                       "16r00CF"    1 " LATIN CAPITAL LETTER I WITH DIAERESIS " 
+                       "16r00D0"    0 " invalid " 
+                       "16r00D1"    0 " invalid " 
+                       "16r00D2"    0 " invalid " 
+                       "16r00D3"    0 " invalid " 
+                       "16r00D4"    1 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+                       "16r00D5"    0 " invalid " 
+                       "16r00D6"    0 " invalid " 
+                       "16r00D7"    1 " MULTIPLICATION SIGN " 
+                       "16r00D8"    0 " invalid " 
+                       "16r00D9"    1 " LATIN CAPITAL LETTER U WITH GRAVE " 
+                       "16r00DA"    0 " invalid " 
+                       "16r00DB"    1 " LATIN CAPITAL LETTER U WITH CIRCUMFLEX " 
+                       "16r00DC"    1 " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+                       "16r00DD"    0 " invalid " 
+                       "16r00DE"    0 " invalid " 
+                       "16r00DF"    0 " invalid " 
+                       "16r00E0"    1 " LATIN SMALL LETTER A WITH GRAVE " 
+                       "16r00E1"    0 " invalid " 
+                       "16r00E2"    1 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+                       "16r00E3"    0 " invalid " 
+                       "16r00E4"    0 " invalid " 
+                       "16r00E5"    0 " invalid " 
+                       "16r00E6"    0 " invalid " 
+                       "16r00E7"    1 " LATIN SMALL LETTER C WITH CEDILLA " 
+                       "16r00E8"    1 " LATIN SMALL LETTER E WITH GRAVE " 
+                       "16r00E9"    1 " LATIN SMALL LETTER E WITH ACUTE " 
+                       "16r00EA"    1 " LATIN SMALL LETTER E WITH CIRCUMFLEX " 
+                       "16r00EB"    1 " LATIN SMALL LETTER E WITH DIAERESIS " 
+                       "16r00EC"    0 " invalid " 
+                       "16r00ED"    0 " invalid " 
+                       "16r00EE"    1 " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+                       "16r00EF"    1 " LATIN SMALL LETTER I WITH DIAERESIS " 
+                       "16r00F0"    0 " invalid " 
+                       "16r00F1"    0 " invalid " 
+                       "16r00F2"    0 " invalid " 
+                       "16r00F3"    0 " invalid " 
+                       "16r00F4"    1 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+                       "16r00F5"    0 " invalid " 
+                       "16r00F6"    0 " invalid " 
+                       "16r00F7"    1 " DIVISION SIGN " 
+                       "16r00F8"    0 " invalid " 
+                       "16r00F9"    1 " LATIN SMALL LETTER U WITH GRAVE " 
+                       "16r00FA"    0 " invalid " 
+                       "16r00FB"    1 " LATIN SMALL LETTER U WITH CIRCUMFLEX " 
+                       "16r00FC"    1 " LATIN SMALL LETTER U WITH DIAERESIS " 
+                       "16r00FD"    0 " invalid " 
+                       "16r00FE"    0 " invalid " 
+                       "16r00FF"    1 " LATIN SMALL LETTER Y WITH DIAERESIS " 
+                    ] at:(unicode - 159)) ~~ 0 ifTrue:[^ unicode].
+                    ^ self encodingError.
+            ].
+            unicode <= 16r177 ifTrue:[
+                ^ self encodingError.
+            ].
+            ^  "16r0178" 16r009F " LATIN CAPITAL LETTER Y WITH DIAERESIS " 
+        ].
+        unicode <= 16r60B ifTrue:[
+            ^ self encodingError.
+        ].
+        [
+            |t|
+            t := #[
+               "16r060C"    16r80 " ARABIC COMMA " 
+               "16r060D"    16r00 " invalid " 
+               "16r060E"    16r00 " invalid " 
+               "16r060F"    16r00 " invalid " 
+               "16r0610"    16r00 " invalid " 
+               "16r0611"    16r00 " invalid " 
+               "16r0612"    16r00 " invalid " 
+               "16r0613"    16r00 " invalid " 
+               "16r0614"    16r00 " invalid " 
+               "16r0615"    16r00 " invalid " 
+               "16r0616"    16r00 " invalid " 
+               "16r0617"    16r00 " invalid " 
+               "16r0618"    16r00 " invalid " 
+               "16r0619"    16r00 " invalid " 
+               "16r061A"    16r00 " invalid " 
+               "16r061B"    16r98 " ARABIC SEMICOLON " 
+               "16r061C"    16r00 " invalid " 
+               "16r061D"    16r00 " invalid " 
+               "16r061E"    16r00 " invalid " 
+               "16r061F"    16r9A " ARABIC QUESTION MARK " 
+               "16r0620"    16r00 " invalid " 
+               "16r0621"    16r9C " ARABIC LETTER HAMZA " 
+               "16r0622"    16r9D " ARABIC LETTER ALEF WITH MADDA ABOVE " 
+               "16r0623"    16r9E " ARABIC LETTER ALEF WITH HAMZA ABOVE " 
+               "16r0624"    16rA1 " ARABIC LETTER WAW WITH HAMZA ABOVE " 
+               "16r0625"    16rA2 " ARABIC LETTER ALEF WITH HAMZA BELOW " 
+               "16r0626"    16rA5 " ARABIC LETTER YEH WITH HAMZA ABOVE " 
+               "16r0627"    16rA8 " ARABIC LETTER ALEF " 
+               "16r0628"    16rAA " ARABIC LETTER BEH " 
+               "16r0629"    16rB2 " ARABIC LETTER TEH MARBUTA " 
+               "16r062A"    16rB3 " ARABIC LETTER TEH " 
+               "16r062B"    16rB4 " ARABIC LETTER THEH " 
+               "16r062C"    16rB8 " ARABIC LETTER JEEM " 
+               "16r062D"    16rBA " ARABIC LETTER HAH " 
+               "16r062E"    16rBC " ARABIC LETTER KHAH " 
+               "16r062F"    16rBD " ARABIC LETTER DAL " 
+               "16r0630"    16rBE " ARABIC LETTER THAL " 
+               "16r0631"    16rBF " ARABIC LETTER REH " 
+               "16r0632"    16rC1 " ARABIC LETTER ZAIN " 
+               "16r0633"    16rC4 " ARABIC LETTER SEEN " 
+               "16r0634"    16rC5 " ARABIC LETTER SHEEN " 
+               "16r0635"    16rC6 " ARABIC LETTER SAD " 
+               "16r0636"    16rCC " ARABIC LETTER DAD " 
+               "16r0637"    16rCD " ARABIC LETTER TAH " 
+               "16r0638"    16r00 " invalid " 
+               "16r0639"    16rD1 " ARABIC LETTER AIN " 
+               "16r063A"    16rD2 " ARABIC LETTER GHAIN " 
+               "16r063B"    16r00 " invalid " 
+               "16r063C"    16r00 " invalid " 
+               "16r063D"    16r00 " invalid " 
+               "16r063E"    16r00 " invalid " 
+               "16r063F"    16r00 " invalid " 
+               "16r0640"    16rD3 " ARABIC TATWEEL " 
+               "16r0641"    16rD5 " ARABIC LETTER FEH " 
+               "16r0642"    16rD6 " ARABIC LETTER QAF " 
+               "16r0643"    16rD8 " ARABIC LETTER KAF " 
+               "16r0644"    16rDD " ARABIC LETTER LAM " 
+               "16r0645"    16rDE " ARABIC LETTER MEEM " 
+               "16r0646"    16rDF " ARABIC LETTER NOON " 
+               "16r0647"    16rE1 " ARABIC LETTER HEH " 
+               "16r0648"    16rE4 " ARABIC LETTER WAW " 
+               "16r0649"    16rE5 " ARABIC LETTER ALEF MAKSURA " 
+               "16r064A"    16rE6 " ARABIC LETTER YEH " 
+               "16r064B"    16rEC " ARABIC FATHATAN " 
+               "16r064C"    16rED " ARABIC DAMMATAN " 
+               "16r064D"    16rF0 " ARABIC KASRATAN " 
+               "16r064E"    16rF1 " ARABIC FATHA " 
+               "16r064F"    16rF2 " ARABIC DAMMA " 
+               "16r0650"    16rF3 " ARABIC KASRA " 
+               "16r0651"    16rF5 " ARABIC SHADDA " 
+               "16r0652"    16rF6 " ARABIC SUKUN " 
+               "16r0653"    16r00 " invalid " 
+               "16r0654"    16r00 " invalid " 
+               "16r0655"    16r00 " invalid " 
+               "16r0656"    16r00 " invalid " 
+               "16r0657"    16r00 " invalid " 
+               "16r0658"    16r00 " invalid " 
+               "16r0659"    16r00 " invalid " 
+               "16r065A"    16r00 " invalid " 
+               "16r065B"    16r00 " invalid " 
+               "16r065C"    16r00 " invalid " 
+               "16r065D"    16r00 " invalid " 
+               "16r065E"    16r00 " invalid " 
+               "16r065F"    16r00 " invalid " 
+               "16r0660"    16r81 " ARABIC-INDIC DIGIT ZERO " 
+               "16r0661"    16r83 " ARABIC-INDIC DIGIT ONE " 
+               "16r0662"    16r88 " ARABIC-INDIC DIGIT TWO " 
+               "16r0663"    16r89 " ARABIC-INDIC DIGIT THREE " 
+               "16r0664"    16r8A " ARABIC-INDIC DIGIT FOUR " 
+               "16r0665"    16r8C " ARABIC-INDIC DIGIT FIVE " 
+               "16r0666"    16r8D " ARABIC-INDIC DIGIT SIX " 
+               "16r0667"    16r8E " ARABIC-INDIC DIGIT SEVEN " 
+               "16r0668"    16r8F " ARABIC-INDIC DIGIT EIGHT " 
+               "16r0669"    16r90 " ARABIC-INDIC DIGIT NINE " 
+               "16r066A"    16r00 " invalid " 
+               "16r066B"    16r00 " invalid " 
+               "16r066C"    16r00 " invalid " 
+               "16r066D"    16r00 " invalid " 
+               "16r066E"    16r00 " invalid " 
+               "16r066F"    16r00 " invalid " 
+               "16r0670"    16r00 " invalid " 
+               "16r0671"    16r00 " invalid " 
+               "16r0672"    16r00 " invalid " 
+               "16r0673"    16r00 " invalid " 
+               "16r0674"    16r00 " invalid " 
+               "16r0675"    16r00 " invalid " 
+               "16r0676"    16r00 " invalid " 
+               "16r0677"    16r00 " invalid " 
+               "16r0678"    16r00 " invalid " 
+               "16r0679"    16r00 " invalid " 
+               "16r067A"    16r00 " invalid " 
+               "16r067B"    16r00 " invalid " 
+               "16r067C"    16r00 " invalid " 
+               "16r067D"    16r00 " invalid " 
+               "16r067E"    16rAF " ARABIC LETTER PEH " 
+               "16r067F"    16r00 " invalid " 
+               "16r0680"    16r00 " invalid " 
+               "16r0681"    16rE3 " ARABIC LETTER HAH WITH HAMZA ABOVE " 
+               "16r0682"    16r00 " invalid " 
+               "16r0683"    16r00 " invalid " 
+               "16r0684"    16r00 " invalid " 
+               "16r0685"    16r00 " invalid " 
+               "16r0686"    16rB9 " ARABIC LETTER TCHEH " 
+               "16r0687"    16r00 " invalid " 
+               "16r0688"    16r00 " invalid " 
+               "16r0689"    16r00 " invalid " 
+               "16r068A"    16r00 " invalid " 
+               "16r068B"    16r00 " invalid " 
+               "16r068C"    16r00 " invalid " 
+               "16r068D"    16r00 " invalid " 
+               "16r068E"    16r00 " invalid " 
+               "16r068F"    16r00 " invalid " 
+               "16r0690"    16r00 " invalid " 
+               "16r0691"    16r00 " invalid " 
+               "16r0692"    16r00 " invalid " 
+               "16r0693"    16r00 " invalid " 
+               "16r0694"    16r00 " invalid " 
+               "16r0695"    16r00 " invalid " 
+               "16r0696"    16r00 " invalid " 
+               "16r0697"    16r00 " invalid " 
+               "16r0698"    16rC3 " ARABIC LETTER JEH " 
+               "16r0699"    16r00 " invalid " 
+               "16r069A"    16r00 " invalid " 
+               "16r069B"    16r00 " invalid " 
+               "16r069C"    16r00 " invalid " 
+               "16r069D"    16r00 " invalid " 
+               "16r069E"    16r00 " invalid " 
+               "16r069F"    16r00 " invalid " 
+               "16r06A0"    16r00 " invalid " 
+               "16r06A1"    16r00 " invalid " 
+               "16r06A2"    16r00 " invalid " 
+               "16r06A3"    16r00 " invalid " 
+               "16r06A4"    16r00 " invalid " 
+               "16r06A5"    16r00 " invalid " 
+               "16r06A6"    16r00 " invalid " 
+               "16r06A7"    16r00 " invalid " 
+               "16r06A8"    16r00 " invalid " 
+               "16r06A9"    16r00 " invalid " 
+               "16r06AA"    16r00 " invalid " 
+               "16r06AB"    16r00 " invalid " 
+               "16r06AC"    16r00 " invalid " 
+               "16r06AD"    16r00 " invalid " 
+               "16r06AE"    16r00 " invalid " 
+               "16r06AF"    16rDA " ARABIC LETTER GAF " 
+               ] at:(unicode - 16r60B).
+            t == 0 ifFalse:[^ t].
+            ^ self encodingError
+        ] value.
+    ].
+    unicode <= 16r200D ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode <= 16r2122 ifTrue:[
+        unicode <= 16r203A ifTrue:[
+            unicode <= 16r2026 ifTrue:[
+                [
+                    |t|
+                    t := #[
+                       "16r200E"    16rFD " LEFT-TO-RIGHT MARK " 
+                       "16r200F"    16rFE " RIGHT-TO-LEFT MARK " 
+                       "16r2010"    16r00 " invalid " 
+                       "16r2011"    16r00 " invalid " 
+                       "16r2012"    16r00 " invalid " 
+                       "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 " 
+                       ] at:(unicode - 16r200D).
+                    t == 0 ifFalse:[^ t].
+                    ^ self encodingError
+                ] value.
+            ].
+            unicode <= 16r2038 ifTrue:[
+                ^ self encodingError.
+            ].
+            ^ #[
+               "16r2039"    16r8B " SINGLE LEFT-POINTING ANGLE QUOTATION MARK " 
+               "16r203A"    16r9B " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK " 
+               ] at:(unicode - 16r2038).
+        ].
+        unicode <= 16r2121 ifTrue:[
+            ^ self encodingError.
+        ].
+        ^  "16r2122" 16r0099 " TRADE MARK SIGN " 
+    ].
+    unicode <= 16r3112 ifTrue:[
+        ^ self encodingError.
+    ].
+    ^  "16r3113" 16r00D0 " BOPOMOFO LETTER ZH " 
+! !
+
+!MS_Arabic class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_Arabic.st,v 1.1 2004-03-05 17:19:10 cg Exp $'
+! !