CharCodeConvertImpl.mesa
Copyright Ó 1991, 1993 by Xerox Corporation. All rights reserved.
Michael Plass, May 14, 1993 4:47 pm PDT
Tim Diebert: April 9, 1991 7:52 pm PDT
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 => {
Return LAST name on the list as the preferred name.
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 ~ {
PROC [found: BOOL, val: Val] RETURNS [op: UpdateOperation ← none, new: Val]
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 {
We use a STRING here because it cuts down on the number of copies of the names, making the installation code much smaller.
[] ¬ 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 {
This branch includes psencode.h, and derives the information from there. Under normal circumstances, this branch generates no code, since useDotH is a constant FALSE
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𡤌harCode(a) xccsEncode[a].charCode\n";
".xccsEncode𡤌harCode"
};
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 {
The following mesa code was generated by the XCharMapping command with the -m switch.
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