<<>> <> <> <> <> <<>> DIRECTORY Rope, Atom, Basics, UXStrings, RefTab, CardTab, Char, CharCodeConvert; CharCodeConvertImpl: CEDAR MONITOR IMPORTS Rope, Atom, Char, UXStrings, RefTab, CardTab EXPORTS CharCodeConvert ~ BEGIN XCHAR: TYPE ~ Char.XCHAR; nullXChar: XCHAR ~ XCHAR.LAST; Entry: TYPE ~ REF EntryRep; EntryRep: TYPE ~ RECORD [ xChar: XCHAR, names: LIST OF ATOM ]; entryForName: RefTab.Ref ¬ NIL; entryForXChar: CardTab.Ref ~ CardTab.Create[]; privateSet: BYTE ~ 254; hiPrivate: XCHAR ~ Char.Make[07E0000H, 0]; nextPrivate: XCHAR ¬ Char.Make[privateSet, 0]; Conflict: PUBLIC ERROR [xChar: XCHAR, name: ATOM] ~ CODE; PrivateUseFull: PUBLIC ERROR ~ CODE; Ord: PROC [xChar: XCHAR] RETURNS [CARD] ~ INLINE { RETURN [ORD[xChar]] }; Val: PROC [card: CARD] RETURNS [XCHAR] ~ INLINE { RETURN [VAL[card]] }; NameFromXChar: PUBLIC ENTRY PROC [xChar: XCHAR] RETURNS [ATOM] ~ { IF entryForName = NIL THEN Init[]; WITH CardTab.Fetch[entryForXChar, Ord[xChar]].val SELECT FROM entry: Entry => { <> FOR tail: LIST OF ATOM ¬ entry.names, tail.rest UNTIL tail = NIL DO IF tail.rest = NIL THEN RETURN [tail.first] ENDLOOP; }; ENDCASE; RETURN [NIL] }; NamesFromXChar: PUBLIC ENTRY PROC [xChar: XCHAR] RETURNS [LIST OF ATOM] ~ { IF entryForName = NIL THEN Init[]; WITH CardTab.Fetch[entryForXChar, Ord[xChar]].val SELECT FROM entry: Entry => { RETURN [entry.names] }; ENDCASE => { RETURN [NIL] }; }; XCharFromName: PUBLIC ENTRY PROC [name: ATOM] RETURNS [XCHAR] ~ { IF entryForName = NIL THEN Init[]; WITH RefTab.Fetch[entryForName, name].val SELECT FROM entry: Entry => { RETURN [entry.xChar] }; ENDCASE => { THROUGH [0..255] DO xChar: XCHAR ~ nextPrivate; nextPrivate ¬ IF nextPrivate = Char.Make[privateSet, 254] THEN hiPrivate ELSE nextPrivate.SUCC; IF nextPrivate.Code = 255 THEN nextPrivate ¬ nextPrivate.SUCC; IF NOT CardTab.Fetch[entryForXChar, Ord[xChar]].found THEN { [] ¬ DefineInternal[xChar, name]; RETURN [xChar] }; ENDLOOP; ERROR PrivateUseFull; }; }; Funny: PROC [name: ATOM] RETURNS [BOOL] = { a: Rope.Text = Atom.GetPName[name]; FOR i: INT DECREASING IN (0..a.Length) DO IF a[i] NOT IN ['0..'9] THEN RETURN [FALSE]; ENDLOOP; RETURN [a.Length > 1] }; DefineInternal: INTERNAL PROC [xChar: XCHAR, name: ATOM] RETURNS [ok: BOOL ¬ FALSE] ~ { Action: CardTab.UpdateAction ~ { <> IF found THEN { WITH val SELECT FROM entry: Entry => { FOR tail: LIST OF ATOM ¬ entry.names, tail.rest UNTIL tail = NIL DO IF tail.first = name THEN {ok ¬ TRUE; RETURN}; -- already defined ENDLOOP; IF RefTab.Insert[entryForName, name, entry] THEN { IF entry.names # NIL AND entry.names.rest = NIL AND Funny[entry.names.first] THEN { entry.names ¬ LIST[entry.names.first, name] } ELSE entry.names ¬ CONS[name, entry.names]; ok ¬ TRUE; RETURN; }; }; ENDCASE => ERROR; } ELSE { entry: Entry ~ NEW[EntryRep ¬ [xChar: xChar, names: LIST[name]]]; IF RefTab.Insert[entryForName, name, entry] THEN { ok ¬ TRUE; op ¬ store; new ¬ entry } ELSE { ok ¬ FALSE }; }; }; IF xChar = nullXChar OR name = NIL THEN RETURN [ok: FALSE]; CardTab.Update[entryForXChar, Ord[xChar], Action]; }; Enumerate: PUBLIC PROC [action: PROC [xChar: XCHAR, names: LIST OF ATOM]] ~ { Each: CardTab.EachPairAction ~ { WITH val SELECT FROM entry: Entry => action[entry.xChar, entry.names]; ENDCASE; }; CheckInit: ENTRY PROC = INLINE {IF entryForName = NIL THEN Init[]}; CheckInit[]; [] ¬ CardTab.Pairs[entryForXChar, Each]; }; Define: PUBLIC ENTRY PROC [xChar: XCHAR, name: ATOM] ~ { IF entryForName = NIL THEN Init[]; IF NOT DefineInternal[xChar, name] THEN RETURN WITH ERROR Conflict[xChar: xChar, name: name]; }; DefineName: INTERNAL PROC [xChar: XCHAR, nameString: LONG STRING] ~ TRUSTED { <> [] ¬ DefineInternal[xChar, Atom.MakeAtomFromRefText[LOOPHOLE[nameString]]]; }; Undefine: ENTRY PROC [xChar: XCHAR, name: ATOM] ~ { Remove: PROC [list: LIST OF ATOM] RETURNS [LIST OF ATOM] ~ { IF list.first = name THEN { [] ¬ RefTab.Delete[entryForName, name]; RETURN [list.rest] } ELSE { RETURN [CONS[list.first, Remove[list.rest]]]}; }; WITH CardTab.Fetch[entryForXChar, Ord[xChar]].val SELECT FROM entry: Entry => {entry.names ¬ Remove[entry.names]}; ENDCASE => NULL; }; Redefine: PUBLIC PROC [xChar: XCHAR, names: LIST OF ATOM] ~ { Inner: PROC [list: LIST OF ATOM] ~ { IF list # NIL THEN { Inner[list.rest]; Define[xChar, list.first]; }; }; }; useDotH: BOOL ~ FALSE; Init: INTERNAL PROC ~ { entryForName ¬ RefTab.Create[]; IF useDotH THEN { <> XccsEncodeLength: PROC [i: CARD ¬ 0] RETURNS [CARDINAL] = TRUSTED MACHINE CODE { "+#include \"fsstd.h\"\n"; "#include \"psencode.h\"\n"; "#define xccsEncode_length(a) sizeof(xccsEncode)/sizeof(CharStringStruct)\n"; ".xccsEncode_length" }; XccsEncodeName: PROC [i: CARD] RETURNS [POINTER TO Basics.RawChars] = TRUSTED MACHINE CODE { "+#define xccsEncode_name(a) xccsEncode[a].name\n"; ".xccsEncode_name" }; XccsEncodeCharCode: PROC [i: CARD] RETURNS [CARD16] = TRUSTED MACHINE CODE { "+#define xccsEncode_charCode(a) xccsEncode[a].charCode\n"; ".xccsEncode_charCode" }; n: CARD = XccsEncodeLength[]; FOR i: CARD DECREASING IN [0..n) DO nameString: POINTER TO Basics.RawChars ~ XccsEncodeName[i]; charCode: CARD ~ XccsEncodeCharCode[i]; name: ATOM ~ Atom.MakeAtom[UXStrings.ToRope[nameString]]; [] ¬ DefineInternal[Val[charCode], name]; ENDLOOP; } ELSE { <> DefineName[Char.Make[000B, 040B], "space"]; DefineName[Char.Make[000B, 041B], "exclam"]; DefineName[Char.Make[000B, 042B], "quotedbl"]; DefineName[Char.Make[000B, 043B], "numbersign"]; DefineName[Char.Make[000B, 044B], "currency"]; DefineName[Char.Make[000B, 045B], "percent"]; DefineName[Char.Make[000B, 046B], "ampersand"]; DefineName[Char.Make[000B, 050B], "parenleft"]; DefineName[Char.Make[000B, 051B], "parenright"]; DefineName[Char.Make[000B, 052B], "asterisk"]; DefineName[Char.Make[000B, 053B], "plus"]; DefineName[Char.Make[000B, 054B], "comma"]; DefineName[Char.Make[000B, 056B], "period"]; DefineName[Char.Make[000B, 057B], "slash"]; DefineName[Char.Make[000B, 060B], "zero"]; DefineName[Char.Make[000B, 061B], "one"]; DefineName[Char.Make[000B, 062B], "two"]; DefineName[Char.Make[000B, 063B], "three"]; DefineName[Char.Make[000B, 064B], "four"]; DefineName[Char.Make[000B, 065B], "five"]; DefineName[Char.Make[000B, 066B], "six"]; DefineName[Char.Make[000B, 067B], "seven"]; DefineName[Char.Make[000B, 070B], "eight"]; DefineName[Char.Make[000B, 071B], "nine"]; DefineName[Char.Make[000B, 072B], "colon"]; DefineName[Char.Make[000B, 073B], "semicolon"]; DefineName[Char.Make[000B, 074B], "less"]; DefineName[Char.Make[000B, 075B], "equal"]; DefineName[Char.Make[000B, 076B], "greater"]; DefineName[Char.Make[000B, 077B], "question"]; DefineName[Char.Make[000B, 100B], "at"]; DefineName[Char.Make[000B, 101B], "A"]; DefineName[Char.Make[000B, 102B], "B"]; DefineName[Char.Make[000B, 103B], "C"]; DefineName[Char.Make[000B, 104B], "D"]; DefineName[Char.Make[000B, 105B], "E"]; DefineName[Char.Make[000B, 106B], "F"]; DefineName[Char.Make[000B, 107B], "G"]; DefineName[Char.Make[000B, 110B], "H"]; DefineName[Char.Make[000B, 111B], "I"]; DefineName[Char.Make[000B, 112B], "J"]; DefineName[Char.Make[000B, 113B], "K"]; DefineName[Char.Make[000B, 114B], "L"]; DefineName[Char.Make[000B, 115B], "M"]; DefineName[Char.Make[000B, 116B], "N"]; DefineName[Char.Make[000B, 117B], "O"]; DefineName[Char.Make[000B, 120B], "P"]; DefineName[Char.Make[000B, 121B], "Q"]; DefineName[Char.Make[000B, 122B], "R"]; DefineName[Char.Make[000B, 123B], "S"]; DefineName[Char.Make[000B, 124B], "T"]; DefineName[Char.Make[000B, 125B], "U"]; DefineName[Char.Make[000B, 126B], "V"]; DefineName[Char.Make[000B, 127B], "W"]; DefineName[Char.Make[000B, 130B], "X"]; DefineName[Char.Make[000B, 131B], "Y"]; DefineName[Char.Make[000B, 132B], "Z"]; DefineName[Char.Make[000B, 133B], "bracketleft"]; DefineName[Char.Make[000B, 134B], "backslash"]; DefineName[Char.Make[000B, 135B], "bracketright"]; DefineName[Char.Make[000B, 136B], "asciicircum"]; DefineName[Char.Make[000B, 137B], "underscore"]; DefineName[Char.Make[000B, 141B], "a"]; DefineName[Char.Make[000B, 142B], "b"]; DefineName[Char.Make[000B, 143B], "c"]; DefineName[Char.Make[000B, 144B], "d"]; DefineName[Char.Make[000B, 145B], "e"]; DefineName[Char.Make[000B, 146B], "f"]; DefineName[Char.Make[000B, 147B], "g"]; DefineName[Char.Make[000B, 150B], "h"]; DefineName[Char.Make[000B, 151B], "i"]; DefineName[Char.Make[000B, 152B], "j"]; DefineName[Char.Make[000B, 153B], "k"]; DefineName[Char.Make[000B, 154B], "l"]; DefineName[Char.Make[000B, 155B], "m"]; DefineName[Char.Make[000B, 156B], "n"]; DefineName[Char.Make[000B, 157B], "o"]; DefineName[Char.Make[000B, 160B], "p"]; DefineName[Char.Make[000B, 161B], "q"]; DefineName[Char.Make[000B, 162B], "r"]; DefineName[Char.Make[000B, 163B], "s"]; DefineName[Char.Make[000B, 164B], "t"]; DefineName[Char.Make[000B, 165B], "u"]; DefineName[Char.Make[000B, 166B], "v"]; DefineName[Char.Make[000B, 167B], "w"]; DefineName[Char.Make[000B, 170B], "x"]; DefineName[Char.Make[000B, 171B], "y"]; DefineName[Char.Make[000B, 172B], "z"]; DefineName[Char.Make[000B, 173B], "braceleft"]; DefineName[Char.Make[000B, 174B], "bar"]; DefineName[Char.Make[000B, 174B], "a82"]; DefineName[Char.Make[000B, 175B], "braceright"]; DefineName[Char.Make[000B, 176B], "asciitilde"]; DefineName[Char.Make[000B, 241B], "exclamdown"]; DefineName[Char.Make[000B, 242B], "cent"]; DefineName[Char.Make[000B, 243B], "sterling"]; DefineName[Char.Make[000B, 244B], "dollar"]; DefineName[Char.Make[000B, 245B], "yen"]; DefineName[Char.Make[000B, 247B], "section"]; DefineName[Char.Make[000B, 251B], "quoteleft"]; DefineName[Char.Make[000B, 251B], "a97"]; DefineName[Char.Make[000B, 252B], "quotedblleft"]; DefineName[Char.Make[000B, 252B], "a99"]; DefineName[Char.Make[000B, 253B], "guillemotleft"]; DefineName[Char.Make[000B, 254B], "arrowleft"]; DefineName[Char.Make[000B, 255B], "arrowup"]; DefineName[Char.Make[000B, 256B], "arrowright"]; DefineName[Char.Make[000B, 256B], "a161"]; DefineName[Char.Make[000B, 257B], "arrowdown"]; DefineName[Char.Make[000B, 260B], "degree"]; DefineName[Char.Make[000B, 261B], "plusminus"]; DefineName[Char.Make[000B, 262B], "twosuperior"]; DefineName[Char.Make[000B, 263B], "threesuperior"]; DefineName[Char.Make[000B, 264B], "multiply"]; DefineName[Char.Make[000B, 266B], "paragraph"]; DefineName[Char.Make[000B, 267B], "periodcentered"]; DefineName[Char.Make[000B, 270B], "divide"]; DefineName[Char.Make[000B, 271B], "quoteright"]; DefineName[Char.Make[000B, 271B], "a98"]; DefineName[Char.Make[000B, 272B], "quotedblright"]; DefineName[Char.Make[000B, 272B], "a100"]; DefineName[Char.Make[000B, 273B], "guillemotright"]; DefineName[Char.Make[000B, 277B], "questiondown"]; DefineName[Char.Make[000B, 301B], "grave"]; DefineName[Char.Make[000B, 302B], "acute"]; DefineName[Char.Make[000B, 303B], "circumflex"]; DefineName[Char.Make[000B, 304B], "tilde"]; DefineName[Char.Make[000B, 305B], "macron"]; DefineName[Char.Make[000B, 306B], "breve"]; DefineName[Char.Make[000B, 307B], "dotaccent"]; DefineName[Char.Make[000B, 310B], "dieresis"]; DefineName[Char.Make[000B, 312B], "ring"]; DefineName[Char.Make[000B, 313B], "cedilla"]; DefineName[Char.Make[000B, 315B], "hungarumlaut"]; DefineName[Char.Make[000B, 316B], "ogonek"]; DefineName[Char.Make[000B, 317B], "caron"]; DefineName[Char.Make[000B, 321B], "onesuperior"]; DefineName[Char.Make[000B, 322B], "registered"]; DefineName[Char.Make[000B, 323B], "copyright"]; DefineName[Char.Make[000B, 324B], "trademark"]; DefineName[Char.Make[000B, 341B], "AE"]; DefineName[Char.Make[000B, 342B], "Eth"]; DefineName[Char.Make[000B, 343B], "ordfeminine"]; DefineName[Char.Make[000B, 346B], "IJ"]; DefineName[Char.Make[000B, 350B], "Lslash"]; DefineName[Char.Make[000B, 351B], "Oslash"]; DefineName[Char.Make[000B, 352B], "OE"]; DefineName[Char.Make[000B, 353B], "ordmasculine"]; DefineName[Char.Make[000B, 354B], "Thorn"]; DefineName[Char.Make[000B, 361B], "ae"]; DefineName[Char.Make[000B, 363B], "eth"]; DefineName[Char.Make[000B, 365B], "dotlessi"]; DefineName[Char.Make[000B, 366B], "ij"]; DefineName[Char.Make[000B, 370B], "lslash"]; DefineName[Char.Make[000B, 371B], "oslash"]; DefineName[Char.Make[000B, 372B], "oe"]; DefineName[Char.Make[000B, 373B], "germandbls"]; DefineName[Char.Make[000B, 374B], "thorn"]; DefineName[Char.Make[041B, 076B], "hyphen"]; DefineName[Char.Make[041B, 104B], "ellipsis"]; DefineName[Char.Make[041B, 114B], "a87"]; DefineName[Char.Make[041B, 115B], "a88"]; DefineName[Char.Make[041B, 142B], "notequal"]; DefineName[Char.Make[041B, 145B], "lessequal"]; DefineName[Char.Make[041B, 146B], "greaterequal"]; DefineName[Char.Make[041B, 147B], "infinity"]; DefineName[Char.Make[041B, 150B], "therefore"]; DefineName[Char.Make[041B, 154B], "minute"]; DefineName[Char.Make[041B, 155B], "second"]; DefineName[Char.Make[041B, 172B], "a35"]; DefineName[Char.Make[041B, 174B], "a71"]; DefineName[Char.Make[041B, 256B], "a9"]; DefineName[Char.Make[042B, 041B], "center"]; DefineName[Char.Make[042B, 041B], "a78"]; DefineName[Char.Make[042B, 042B], "square"]; DefineName[Char.Make[042B, 043B], "stop"]; DefineName[Char.Make[042B, 043B], "a73"]; DefineName[Char.Make[042B, 045B], "a76"]; DefineName[Char.Make[042B, 047B], "a77"]; DefineName[Char.Make[042B, 140B], "arrowdblup"]; DefineName[Char.Make[042B, 141B], "arrowdbldown"]; DefineName[Char.Make[042B, 246B], "weierstrass"]; DefineName[Char.Make[042B, 250B], "Rfraktur"]; DefineName[Char.Make[042B, 251B], "Ifraktur"]; DefineName[Char.Make[042B, 277B], "radicalex"]; DefineName[Char.Make[042B, 333B], "bracketleftex"]; DefineName[Char.Make[042B, 334B], "bracketrightex"]; DefineName[Char.Make[042B, 335B], "arrowhorizex"]; DefineName[Char.Make[042B, 336B], "arrowvertex"]; DefineName[Char.Make[042B, 340B], "parenlefttp"]; DefineName[Char.Make[042B, 341B], "parenleftex"]; DefineName[Char.Make[042B, 342B], "parenleftbt"]; DefineName[Char.Make[042B, 344B], "parenrighttp"]; DefineName[Char.Make[042B, 345B], "parenrightex"]; DefineName[Char.Make[042B, 346B], "parenrightbt"]; DefineName[Char.Make[043B, 176B], "overscore"]; DefineName[Char.Make[043B, 262B], "quotesinglbase"]; DefineName[Char.Make[046B, 101B], "Alpha"]; DefineName[Char.Make[046B, 102B], "Beta"]; DefineName[Char.Make[046B, 104B], "Gamma"]; DefineName[Char.Make[046B, 105B], "Delta"]; DefineName[Char.Make[046B, 106B], "Epsilon"]; DefineName[Char.Make[046B, 111B], "Zeta"]; DefineName[Char.Make[046B, 112B], "Eta"]; DefineName[Char.Make[046B, 113B], "Theta"]; DefineName[Char.Make[046B, 114B], "Iota"]; DefineName[Char.Make[046B, 115B], "Kappa"]; DefineName[Char.Make[046B, 116B], "Lambda"]; DefineName[Char.Make[046B, 117B], "Mu"]; DefineName[Char.Make[046B, 120B], "Nu"]; DefineName[Char.Make[046B, 121B], "Xi"]; DefineName[Char.Make[046B, 122B], "Omicron"]; DefineName[Char.Make[046B, 123B], "Pi"]; DefineName[Char.Make[046B, 125B], "Rho"]; DefineName[Char.Make[046B, 126B], "Sigma"]; DefineName[Char.Make[046B, 130B], "Tau"]; DefineName[Char.Make[046B, 131B], "Upsilon"]; DefineName[Char.Make[046B, 132B], "Phi"]; DefineName[Char.Make[046B, 133B], "Chi"]; DefineName[Char.Make[046B, 134B], "Psi"]; DefineName[Char.Make[046B, 135B], "Omega"]; DefineName[Char.Make[046B, 141B], "alpha"]; DefineName[Char.Make[046B, 142B], "beta"]; DefineName[Char.Make[046B, 144B], "gamma"]; DefineName[Char.Make[046B, 145B], "delta"]; DefineName[Char.Make[046B, 146B], "epsilon"]; DefineName[Char.Make[046B, 151B], "zeta"]; DefineName[Char.Make[046B, 152B], "eta"]; DefineName[Char.Make[046B, 153B], "theta"]; DefineName[Char.Make[046B, 154B], "iota"]; DefineName[Char.Make[046B, 155B], "kappa"]; DefineName[Char.Make[046B, 156B], "lambda"]; DefineName[Char.Make[046B, 157B], "mu"]; DefineName[Char.Make[046B, 160B], "nu"]; DefineName[Char.Make[046B, 161B], "xi"]; DefineName[Char.Make[046B, 162B], "omicron"]; DefineName[Char.Make[046B, 163B], "pi"]; DefineName[Char.Make[046B, 165B], "rho"]; DefineName[Char.Make[046B, 166B], "sigma"]; DefineName[Char.Make[046B, 167B], "sigma1"]; DefineName[Char.Make[046B, 170B], "tau"]; DefineName[Char.Make[046B, 171B], "upsilon"]; DefineName[Char.Make[046B, 172B], "phi"]; DefineName[Char.Make[046B, 173B], "chi"]; DefineName[Char.Make[046B, 174B], "psi"]; DefineName[Char.Make[046B, 175B], "omega"]; DefineName[Char.Make[354B, 125B], "a45"]; DefineName[Char.Make[354B, 270B], "a120"]; DefineName[Char.Make[354B, 271B], "a121"]; DefineName[Char.Make[354B, 272B], "a122"]; DefineName[Char.Make[354B, 273B], "a123"]; DefineName[Char.Make[354B, 274B], "a124"]; DefineName[Char.Make[354B, 275B], "a125"]; DefineName[Char.Make[354B, 276B], "a126"]; DefineName[Char.Make[354B, 277B], "a127"]; DefineName[Char.Make[354B, 300B], "a128"]; DefineName[Char.Make[354B, 301B], "a129"]; DefineName[Char.Make[354B, 302B], "a140"]; DefineName[Char.Make[354B, 303B], "a141"]; DefineName[Char.Make[354B, 304B], "a142"]; DefineName[Char.Make[354B, 305B], "a143"]; DefineName[Char.Make[354B, 306B], "a144"]; DefineName[Char.Make[354B, 307B], "a145"]; DefineName[Char.Make[354B, 310B], "a146"]; DefineName[Char.Make[354B, 311B], "a147"]; DefineName[Char.Make[354B, 312B], "a148"]; DefineName[Char.Make[354B, 313B], "a149"]; DefineName[Char.Make[354B, 314B], "a150"]; DefineName[Char.Make[354B, 315B], "a151"]; DefineName[Char.Make[354B, 316B], "a152"]; DefineName[Char.Make[354B, 317B], "a153"]; DefineName[Char.Make[354B, 320B], "a154"]; DefineName[Char.Make[354B, 321B], "a155"]; DefineName[Char.Make[354B, 322B], "a156"]; DefineName[Char.Make[354B, 323B], "a157"]; DefineName[Char.Make[354B, 324B], "a158"]; DefineName[Char.Make[354B, 325B], "a159"]; DefineName[Char.Make[354B, 346B], "apple"]; DefineName[Char.Make[355B, 041B], "a1"]; DefineName[Char.Make[355B, 042B], "a2"]; DefineName[Char.Make[355B, 043B], "a202"]; DefineName[Char.Make[355B, 044B], "a3"]; DefineName[Char.Make[355B, 046B], "a5"]; DefineName[Char.Make[355B, 047B], "a119"]; DefineName[Char.Make[355B, 050B], "a118"]; DefineName[Char.Make[355B, 051B], "a117"]; DefineName[Char.Make[355B, 052B], "a11"]; DefineName[Char.Make[355B, 053B], "a12"]; DefineName[Char.Make[355B, 054B], "a13"]; DefineName[Char.Make[355B, 055B], "a14"]; DefineName[Char.Make[355B, 056B], "a15"]; DefineName[Char.Make[355B, 057B], "a16"]; DefineName[Char.Make[355B, 060B], "a105"]; DefineName[Char.Make[355B, 061B], "a17"]; DefineName[Char.Make[355B, 062B], "a18"]; DefineName[Char.Make[355B, 063B], "a20"]; DefineName[Char.Make[355B, 064B], "a21"]; DefineName[Char.Make[355B, 065B], "a22"]; DefineName[Char.Make[355B, 067B], "a24"]; DefineName[Char.Make[355B, 070B], "a25"]; DefineName[Char.Make[355B, 071B], "a26"]; DefineName[Char.Make[355B, 072B], "a27"]; DefineName[Char.Make[355B, 073B], "a28"]; DefineName[Char.Make[355B, 074B], "a6"]; DefineName[Char.Make[355B, 075B], "a7"]; DefineName[Char.Make[355B, 076B], "a8"]; DefineName[Char.Make[355B, 077B], "a10"]; DefineName[Char.Make[355B, 100B], "a29"]; DefineName[Char.Make[355B, 101B], "a30"]; DefineName[Char.Make[355B, 102B], "a31"]; DefineName[Char.Make[355B, 103B], "a32"]; DefineName[Char.Make[355B, 104B], "a33"]; DefineName[Char.Make[355B, 105B], "a34"]; DefineName[Char.Make[355B, 106B], "a36"]; DefineName[Char.Make[355B, 107B], "a37"]; DefineName[Char.Make[355B, 110B], "a38"]; DefineName[Char.Make[355B, 111B], "a39"]; DefineName[Char.Make[355B, 112B], "a40"]; DefineName[Char.Make[355B, 113B], "a41"]; DefineName[Char.Make[355B, 114B], "a42"]; DefineName[Char.Make[355B, 115B], "a43"]; DefineName[Char.Make[355B, 116B], "a44"]; DefineName[Char.Make[355B, 120B], "a46"]; DefineName[Char.Make[355B, 121B], "a47"]; DefineName[Char.Make[355B, 122B], "a48"]; DefineName[Char.Make[355B, 123B], "a49"]; DefineName[Char.Make[355B, 124B], "a50"]; DefineName[Char.Make[355B, 125B], "a51"]; DefineName[Char.Make[355B, 126B], "a52"]; DefineName[Char.Make[355B, 127B], "a53"]; DefineName[Char.Make[355B, 130B], "a54"]; DefineName[Char.Make[355B, 131B], "a55"]; DefineName[Char.Make[355B, 132B], "a56"]; DefineName[Char.Make[355B, 133B], "a57"]; DefineName[Char.Make[355B, 134B], "a58"]; DefineName[Char.Make[355B, 135B], "a59"]; DefineName[Char.Make[355B, 136B], "a60"]; DefineName[Char.Make[355B, 137B], "a61"]; DefineName[Char.Make[355B, 140B], "a62"]; DefineName[Char.Make[355B, 141B], "a63"]; DefineName[Char.Make[355B, 142B], "a64"]; DefineName[Char.Make[355B, 143B], "a65"]; DefineName[Char.Make[355B, 144B], "a66"]; DefineName[Char.Make[355B, 145B], "a67"]; DefineName[Char.Make[355B, 146B], "a68"]; DefineName[Char.Make[355B, 147B], "a69"]; DefineName[Char.Make[355B, 150B], "a70"]; DefineName[Char.Make[355B, 151B], "a72"]; DefineName[Char.Make[355B, 152B], "a74"]; DefineName[Char.Make[355B, 153B], "a203"]; DefineName[Char.Make[355B, 154B], "a75"]; DefineName[Char.Make[355B, 155B], "a204"]; DefineName[Char.Make[355B, 156B], "a79"]; DefineName[Char.Make[355B, 157B], "a81"]; DefineName[Char.Make[355B, 160B], "a83"]; DefineName[Char.Make[355B, 161B], "a84"]; DefineName[Char.Make[355B, 162B], "a101"]; DefineName[Char.Make[355B, 163B], "a102"]; DefineName[Char.Make[355B, 164B], "a103"]; DefineName[Char.Make[355B, 165B], "a104"]; DefineName[Char.Make[355B, 166B], "a106"]; DefineName[Char.Make[355B, 167B], "a107"]; DefineName[Char.Make[355B, 170B], "a108"]; DefineName[Char.Make[355B, 171B], "a130"]; DefineName[Char.Make[355B, 172B], "a131"]; DefineName[Char.Make[355B, 173B], "a132"]; DefineName[Char.Make[355B, 174B], "a133"]; DefineName[Char.Make[355B, 175B], "a134"]; DefineName[Char.Make[355B, 176B], "a135"]; DefineName[Char.Make[355B, 241B], "a136"]; DefineName[Char.Make[355B, 242B], "a137"]; DefineName[Char.Make[355B, 243B], "a138"]; DefineName[Char.Make[355B, 244B], "a139"]; DefineName[Char.Make[355B, 245B], "a160"]; DefineName[Char.Make[355B, 246B], "a196"]; DefineName[Char.Make[355B, 247B], "a165"]; DefineName[Char.Make[355B, 250B], "a192"]; DefineName[Char.Make[355B, 251B], "a166"]; DefineName[Char.Make[355B, 252B], "a167"]; DefineName[Char.Make[355B, 253B], "a168"]; DefineName[Char.Make[355B, 254B], "a169"]; DefineName[Char.Make[355B, 255B], "a170"]; DefineName[Char.Make[355B, 256B], "a171"]; DefineName[Char.Make[355B, 257B], "a173"]; DefineName[Char.Make[355B, 260B], "a162"]; DefineName[Char.Make[355B, 261B], "a174"]; DefineName[Char.Make[355B, 262B], "a175"]; DefineName[Char.Make[355B, 263B], "a176"]; DefineName[Char.Make[355B, 264B], "a177"]; DefineName[Char.Make[355B, 265B], "a178"]; DefineName[Char.Make[355B, 266B], "a179"]; DefineName[Char.Make[355B, 267B], "a193"]; DefineName[Char.Make[355B, 270B], "a180"]; DefineName[Char.Make[355B, 271B], "a199"]; DefineName[Char.Make[355B, 272B], "a181"]; DefineName[Char.Make[355B, 273B], "a200"]; DefineName[Char.Make[355B, 274B], "a182"]; DefineName[Char.Make[355B, 275B], "a201"]; DefineName[Char.Make[355B, 276B], "a183"]; DefineName[Char.Make[355B, 277B], "a184"]; DefineName[Char.Make[355B, 300B], "a197"]; DefineName[Char.Make[355B, 301B], "a185"]; DefineName[Char.Make[355B, 302B], "a194"]; DefineName[Char.Make[355B, 303B], "a198"]; DefineName[Char.Make[355B, 304B], "a186"]; DefineName[Char.Make[355B, 305B], "a195"]; DefineName[Char.Make[355B, 306B], "a187"]; DefineName[Char.Make[355B, 307B], "a188"]; DefineName[Char.Make[355B, 310B], "a189"]; DefineName[Char.Make[355B, 311B], "a190"]; DefineName[Char.Make[355B, 312B], "a191"]; DefineName[Char.Make[355B, 347B], "a93"]; DefineName[Char.Make[355B, 350B], "a94"]; DefineName[Char.Make[355B, 351B], "a95"]; DefineName[Char.Make[355B, 352B], "a96"]; DefineName[Char.Make[355B, 354B], "a89"]; DefineName[Char.Make[355B, 355B], "a90"]; DefineName[Char.Make[355B, 361B], "a206"]; DefineName[Char.Make[355B, 362B], "a86"]; DefineName[Char.Make[355B, 365B], "a205"]; DefineName[Char.Make[355B, 366B], "a85"]; DefineName[Char.Make[356B, 055B], "minus"]; DefineName[Char.Make[356B, 163B], "bracketlefttp"]; DefineName[Char.Make[356B, 164B], "bracketleftbt"]; DefineName[Char.Make[356B, 166B], "bracketrighttp"]; DefineName[Char.Make[356B, 167B], "bracketrightbt"]; DefineName[Char.Make[356B, 172B], "notegraphic"]; DefineName[Char.Make[356B, 175B], "asteriskmath"]; DefineName[Char.Make[356B, 176B], "similar"]; DefineName[Char.Make[356B, 244B], "a172"]; DefineName[Char.Make[356B, 260B], "tab"]; DefineName[Char.Make[356B, 261B], "return"]; DefineName[Char.Make[356B, 264B], "dotmath"]; DefineName[Char.Make[356B, 265B], "merge"]; DefineName[Char.Make[356B, 265B], "a164"]; DefineName[Char.Make[356B, 314B], "heart"]; DefineName[Char.Make[356B, 314B], "a110"]; DefineName[Char.Make[356B, 315B], "diamond"]; DefineName[Char.Make[356B, 315B], "a111"]; DefineName[Char.Make[356B, 340B], "bracerighttp"]; DefineName[Char.Make[356B, 341B], "braceex"]; DefineName[Char.Make[356B, 342B], "bracerightmid"]; DefineName[Char.Make[356B, 343B], "bracerightbt"]; DefineName[Char.Make[356B, 344B], "bracelefttp"]; DefineName[Char.Make[356B, 345B], "braceleftbt"]; DefineName[Char.Make[356B, 346B], "braceleftmid"]; DefineName[Char.Make[356B, 355B], "integraltp"]; DefineName[Char.Make[356B, 356B], "integralbt"]; DefineName[Char.Make[356B, 357B], "integralex"]; DefineName[Char.Make[357B, 044B], "endash"]; DefineName[Char.Make[357B, 045B], "emdash"]; DefineName[Char.Make[357B, 047B], "quotesingle"]; DefineName[Char.Make[357B, 050B], "quotedblbase"]; DefineName[Char.Make[357B, 052B], "guilsinglleft"]; DefineName[Char.Make[357B, 053B], "guilsinglright"]; DefineName[Char.Make[357B, 060B], "dagger"]; DefineName[Char.Make[357B, 061B], "daggerdbl"]; DefineName[Char.Make[357B, 062B], "angleleft"]; DefineName[Char.Make[357B, 062B], "a91"]; DefineName[Char.Make[357B, 063B], "angleright"]; DefineName[Char.Make[357B, 063B], "a92"]; DefineName[Char.Make[357B, 101B], "perthousand"]; DefineName[Char.Make[357B, 112B], "element"]; DefineName[Char.Make[357B, 113B], "notelement"]; DefineName[Char.Make[357B, 114B], "suchthat"]; DefineName[Char.Make[357B, 115B], "arrowdblleft"]; DefineName[Char.Make[357B, 116B], "arrowdblboth"]; DefineName[Char.Make[357B, 117B], "arrowdblright"]; DefineName[Char.Make[357B, 122B], "arrowboth"]; DefineName[Char.Make[357B, 122B], "a163"]; DefineName[Char.Make[357B, 126B], "intersection"]; DefineName[Char.Make[357B, 127B], "union"]; DefineName[Char.Make[357B, 130B], "reflexsuperset"]; DefineName[Char.Make[357B, 131B], "reflexsubset"]; DefineName[Char.Make[357B, 132B], "propersuperset"]; DefineName[Char.Make[357B, 133B], "propersubset"]; DefineName[Char.Make[357B, 137B], "notsubset"]; DefineName[Char.Make[357B, 141B], "emptyset"]; DefineName[Char.Make[357B, 142B], "circleplus"]; DefineName[Char.Make[357B, 144B], "circlemultiply"]; DefineName[Char.Make[357B, 146B], "bullet"]; DefineName[Char.Make[357B, 152B], "logicalnot"]; DefineName[Char.Make[357B, 153B], "brokenbar"]; DefineName[Char.Make[357B, 154B], "angle"]; DefineName[Char.Make[357B, 160B], "perpendicular"]; DefineName[Char.Make[357B, 161B], "proportional"]; DefineName[Char.Make[357B, 162B], "equivalence"]; DefineName[Char.Make[357B, 165B], "integral"]; DefineName[Char.Make[357B, 170B], "congruent"]; DefineName[Char.Make[357B, 171B], "approxequal"]; DefineName[Char.Make[357B, 172B], "summation"]; DefineName[Char.Make[357B, 173B], "product"]; DefineName[Char.Make[357B, 174B], "radical"]; DefineName[Char.Make[357B, 242B], "florin"]; DefineName[Char.Make[357B, 247B], "aleph"]; DefineName[Char.Make[357B, 251B], "prescription"]; DefineName[Char.Make[357B, 264B], "existential"]; DefineName[Char.Make[357B, 265B], "universal"]; DefineName[Char.Make[357B, 266B], "logicaland"]; DefineName[Char.Make[357B, 267B], "logicalor"]; DefineName[Char.Make[357B, 271B], "gradient"]; DefineName[Char.Make[357B, 272B], "partialdiff"]; DefineName[Char.Make[357B, 313B], "spade"]; DefineName[Char.Make[357B, 313B], "a109"]; DefineName[Char.Make[357B, 315B], "lozenge"]; DefineName[Char.Make[357B, 316B], "club"]; DefineName[Char.Make[357B, 316B], "a112"]; DefineName[Char.Make[357B, 317B], "a19"]; DefineName[Char.Make[357B, 320B], "a23"]; DefineName[Char.Make[357B, 374B], "a4"]; DefineName[Char.Make[360B, 044B], "fi"]; DefineName[Char.Make[360B, 045B], "fl"]; DefineName[Char.Make[360B, 160B], "onequarter"]; DefineName[Char.Make[360B, 161B], "onehalf"]; DefineName[Char.Make[360B, 162B], "threequarters"]; DefineName[Char.Make[360B, 275B], "carriagereturn"]; DefineName[Char.Make[360B, 312B], ".notdef"]; DefineName[Char.Make[361B, 041B], "Agrave"]; DefineName[Char.Make[361B, 042B], "Aacute"]; DefineName[Char.Make[361B, 043B], "Acircumflex"]; DefineName[Char.Make[361B, 044B], "Atilde"]; DefineName[Char.Make[361B, 047B], "Adieresis"]; DefineName[Char.Make[361B, 050B], "Aring"]; DefineName[Char.Make[361B, 055B], "Ccedilla"]; DefineName[Char.Make[361B, 060B], "Egrave"]; DefineName[Char.Make[361B, 061B], "Eacute"]; DefineName[Char.Make[361B, 062B], "Ecircumflex"]; DefineName[Char.Make[361B, 065B], "Edieresis"]; DefineName[Char.Make[361B, 076B], "Igrave"]; DefineName[Char.Make[361B, 077B], "Iacute"]; DefineName[Char.Make[361B, 100B], "Icircumflex"]; DefineName[Char.Make[361B, 103B], "Idot"]; DefineName[Char.Make[361B, 104B], "Idieresis"]; DefineName[Char.Make[361B, 114B], "Ntilde"]; DefineName[Char.Make[361B, 117B], "Ograve"]; DefineName[Char.Make[361B, 120B], "Oacute"]; DefineName[Char.Make[361B, 121B], "Ocircumflex"]; DefineName[Char.Make[361B, 122B], "Otilde"]; DefineName[Char.Make[361B, 124B], "Odieresis"]; DefineName[Char.Make[361B, 133B], "Scedilla"]; DefineName[Char.Make[361B, 134B], "Scaron"]; DefineName[Char.Make[361B, 137B], "Ugrave"]; DefineName[Char.Make[361B, 140B], "Uacute"]; DefineName[Char.Make[361B, 141B], "Ucircumflex"]; DefineName[Char.Make[361B, 145B], "Udieresis"]; DefineName[Char.Make[361B, 153B], "Yacute"]; DefineName[Char.Make[361B, 155B], "Ydieresis"]; DefineName[Char.Make[361B, 160B], "Zcaron"]; DefineName[Char.Make[361B, 241B], "agrave"]; DefineName[Char.Make[361B, 242B], "aacute"]; DefineName[Char.Make[361B, 243B], "acircumflex"]; DefineName[Char.Make[361B, 244B], "atilde"]; DefineName[Char.Make[361B, 247B], "adieresis"]; DefineName[Char.Make[361B, 250B], "aring"]; DefineName[Char.Make[361B, 255B], "ccedilla"]; DefineName[Char.Make[361B, 260B], "egrave"]; DefineName[Char.Make[361B, 261B], "eacute"]; DefineName[Char.Make[361B, 262B], "ecircumflex"]; DefineName[Char.Make[361B, 265B], "edieresis"]; DefineName[Char.Make[361B, 276B], "igrave"]; DefineName[Char.Make[361B, 277B], "iacute"]; DefineName[Char.Make[361B, 300B], "icircumflex"]; DefineName[Char.Make[361B, 304B], "idieresis"]; DefineName[Char.Make[361B, 314B], "ntilde"]; DefineName[Char.Make[361B, 317B], "ograve"]; DefineName[Char.Make[361B, 320B], "oacute"]; DefineName[Char.Make[361B, 321B], "ocircumflex"]; DefineName[Char.Make[361B, 322B], "otilde"]; DefineName[Char.Make[361B, 324B], "odieresis"]; DefineName[Char.Make[361B, 333B], "scedilla"]; DefineName[Char.Make[361B, 334B], "scaron"]; DefineName[Char.Make[361B, 337B], "ugrave"]; DefineName[Char.Make[361B, 340B], "uacute"]; DefineName[Char.Make[361B, 341B], "ucircumflex"]; DefineName[Char.Make[361B, 345B], "udieresis"]; DefineName[Char.Make[361B, 353B], "yacute"]; DefineName[Char.Make[361B, 355B], "ydieresis"]; DefineName[Char.Make[361B, 360B], "zcaron"]; DefineName[Char.Make[375B, 060B], "zerooldstyle"]; DefineName[Char.Make[375B, 061B], "oneoldstyle"]; DefineName[Char.Make[375B, 062B], "twooldstyle"]; DefineName[Char.Make[375B, 063B], "threeoldstyle"]; DefineName[Char.Make[375B, 064B], "fouroldstyle"]; DefineName[Char.Make[375B, 065B], "fiveoldstyle"]; DefineName[Char.Make[375B, 066B], "sixoldstyle"]; DefineName[Char.Make[375B, 067B], "sevenoldstyle"]; DefineName[Char.Make[375B, 070B], "eightoldstyle"]; DefineName[Char.Make[375B, 071B], "nineoldstyle"]; DefineName[Char.Make[375B, 100B], "Upsilon1"]; DefineName[Char.Make[375B, 134B], "omega1"]; DefineName[Char.Make[375B, 135B], "theta1"]; DefineName[Char.Make[375B, 137B], "phi1"]; DefineName[Char.Make[375B, 257B], "fraction"]; DefineName[Char.Make[375B, 326B], "registersans"]; DefineName[Char.Make[375B, 327B], "copyrightsans"]; DefineName[Char.Make[375B, 330B], "trademarksans"]; DefineName[Char.Make[375B, 366B], "registerserif"]; DefineName[Char.Make[375B, 367B], "copyrightserif"]; DefineName[Char.Make[375B, 370B], "trademarkserif"]; DefineName[Char.Make[376B, 000B], "LL"]; DefineName[Char.Make[376B, 001B], "Gcaron"]; DefineName[Char.Make[376B, 002B], "down"]; DefineName[Char.Make[376B, 003B], "indent"]; DefineName[Char.Make[376B, 004B], "left"]; DefineName[Char.Make[376B, 005B], "gcaron"]; DefineName[Char.Make[376B, 006B], "ll"]; DefineName[Char.Make[376B, 007B], "up"]; DefineName[Char.Make[376B, 010B], "dectab"]; DefineName[Char.Make[376B, 011B], "format"]; DefineName[Char.Make[376B, 012B], "lira"]; DefineName[Char.Make[376B, 013B], "graybox"]; DefineName[Char.Make[376B, 014B], "largebullet"]; }; }; END. Here are the extra character codes from the xerox/ps/CasloFivForIta and xerox/ps/Couri fonts. I found all of them in the CasloFivForIta, but not all in Couri (six characters do not have corresponding codes/glyphs in the XCC book). There are also several other characters that could be interpreted in multiple ways; I need to speak with you about these. I have looked in the PostScript book for guidance, but it has not been helpful. -- D. (376|000) .notdef (356|172) notegraphic (376|002) format -- multiple interpretations (000|366) ij (043|176) overscore (356|260) tab (361|103) Idot (000|256) indent -- questionable; arrows already exist (000|346) IJ (376|011) graybox -- multiple interpretations (042|043) stop (356|265) merge (376|014) dectab -- not found (042|041) center (000|254) left -- questionable; arrows already exist (000|255) up -- questionable; arrows already exist (357|251) prescription (376|021) lira -- not found (042|042) square (376|023) LL -- not found (000|257) down -- questionable; arrows already exist (376|025) ll -- not found (376|026) largebullet -- multiple interpretations (356|261) return (376|030) Gcaron -- not found (361|133) Scedilla (376|032) gcaron -- not found (361|333) scedilla (375|070) eightoldstyle (375|065) fiveoldstyle (375|064) fouroldstyle (375|071) nineoldstyle (375|061) oneoldstyle (375|067) sevenoldstyle (375|066) sixoldstyle (375|063) threeoldstyle (375|062) twooldstyle (375|060) zerooldstyle