DIRECTORY IPtoPS, RefTab; IPtoPSCharCodesImpl: CEDAR PROGRAM IMPORTS RefTab EXPORTS IPtoPS ~ BEGIN EncodingVectorType: TYPE ~ IPtoPS.EncodingVectorType; Entry: TYPE ~ RECORD [code: BYTE, encodingVector: EncodingVectorType]; table: RefTab.Ref ¬ NIL; Initialize: PROC ~ { Insert: PROC [name: ATOM, code: BYTE, type: EncodingVectorType] ~ { [] ¬ RefTab.Insert[table, name, NEW[Entry ¬ [code, type]]]; }; InsertISO: PROC [name: ATOM, code: BYTE] ~ {Insert[name, code, isoLatin1]}; InsertSymbol: PROC [name: ATOM, code: BYTE] ~ {Insert[name, code, symbol]}; InsertStandard: PROC [name: ATOM, code: BYTE] ~ {Insert[name, code, standard]}; table ¬ RefTab.Create[]; InsertISO[$Aacute, 301B]; InsertISO[$Acircumflex, 302B]; InsertISO[$Adieresis, 304B]; InsertISO[$Agrave, 300B]; InsertISO[$Aring, 305B]; InsertISO[$Atilde, 303B]; InsertISO[$AE, 306B]; InsertISO[$Ccedilla, 307B]; InsertISO[$Eacute, 311B]; InsertISO[$Ecircumflex, 312B]; InsertISO[$Edieresis, 313B]; InsertISO[$Egrave, 310B]; InsertISO[$Eth, 320B]; InsertISO[$Iacute, 315B]; InsertISO[$Icircumflex, 316B]; InsertISO[$Idieresis, 317B]; InsertISO[$Igrave, 314B]; InsertISO[$Ntilde, 321B]; InsertISO[$Oacute, 323B]; InsertISO[$Ocircumflex, 324B]; InsertISO[$Odieresis, 326B]; InsertISO[$Ograve, 322B]; InsertISO[$Oslash, 330B]; InsertISO[$Otilde, 325B]; InsertISO[$Uacute, 332B]; InsertISO[$Ucircumflex, 333B]; InsertISO[$Udieresis, 334B]; InsertISO[$Ugrave, 331B]; InsertISO[$Yacute, 335B]; InsertISO[$aacute, 341B]; InsertISO[$acircumflex, 342B]; InsertISO[$adieresis, 344B]; InsertISO[$ae, 346B]; InsertISO[$agrave, 340B]; InsertISO[$aring, 345B]; InsertISO[$atilde, 343B]; InsertISO[$brokenbar, 246B]; InsertISO[$bullet, 267B]; InsertISO[$largebullet, 267B]; InsertISO[$ccedilla, 347B]; InsertISO[$eacute, 351B]; InsertISO[$ecircumflex, 352B]; InsertISO[$copyright, 251B]; InsertISO[$degree, 260B]; InsertISO[$divide, 367B]; InsertISO[$edieresis, 353B]; InsertISO[$egrave, 350B]; InsertISO[$eth, 360B]; InsertISO[$hyphen, 255B]; InsertISO[$iacute, 355B]; InsertISO[$icircumflex, 356B]; InsertISO[$idieresis, 357B]; InsertISO[$igrave, 354B]; InsertISO[$minus, 055B]; InsertISO[$minute, 242B]; InsertISO[$ntilde, 361B]; InsertISO[$oacute, 363B]; InsertISO[$multiply, 327B]; InsertISO[$plusminus, 261B]; InsertISO[$registered, 256B]; InsertISO[$ocircumflex, 364B]; InsertISO[$odieresis, 366B]; InsertISO[$ograve, 362B]; InsertISO[$onehalf, 275B]; InsertISO[$onequarter, 274B]; InsertISO[$oslash, 370B]; InsertISO[$otilde, 365B]; InsertISO[$quoteright, 047B]; InsertISO[$a98, 047B]; InsertISO[$threequarters, 276B]; InsertISO[$uacute, 372B]; InsertISO[$ucircumflex, 373B]; InsertISO[$udieresis, 374B]; InsertISO[$ugrave, 371B]; InsertISO[$yacute, 375B]; InsertSymbol[$Alpha, 101B]; InsertSymbol[$Beta, 102B]; InsertSymbol[$Chi, 103B]; InsertSymbol[$Delta, 104B]; InsertSymbol[$Epsilon, 105B]; InsertSymbol[$Eta, 110B]; InsertSymbol[$Gamma, 107B]; InsertSymbol[$Iota, 111B]; InsertSymbol[$Kappa, 113B]; InsertSymbol[$Lambda, 114B]; InsertSymbol[$Mu, 115B]; InsertSymbol[$Nu, 116B]; InsertSymbol[$Omega, 127B]; InsertSymbol[$Omicron, 117B]; InsertSymbol[$Phi, 106B]; InsertSymbol[$Pi, 120B]; InsertSymbol[$Psi, 131B]; InsertSymbol[$Rfraktur, 302B]; InsertSymbol[$Rho, 122B]; InsertSymbol[$Sigma, 123B]; InsertSymbol[$Tau, 124B]; InsertSymbol[$Theta, 121B]; InsertSymbol[$Upsilon, 125B]; InsertSymbol[$Upsilon1, 241B]; InsertSymbol[$Xi, 130B]; InsertSymbol[$Zeta, 132B]; InsertSymbol[$aleph, 300B]; InsertSymbol[$alpha, 141B]; InsertSymbol[$angle, 320B]; InsertSymbol[$angleleft, 341B]; InsertSymbol[$a91, 341B]; InsertSymbol[$angleright, 361B]; InsertSymbol[$a92, 361B]; InsertSymbol[$approxequal, 273B]; InsertSymbol[$arrowboth, 253B]; InsertSymbol[$a163, 253B]; InsertSymbol[$arrowdown, 257B]; InsertSymbol[$arrowleft, 254B]; InsertSymbol[$arrowright, 256B]; InsertSymbol[$a161, 256B]; InsertSymbol[$arrowup, 255B]; InsertSymbol[$arrowdblboth, 333B]; InsertSymbol[$arrowdbldown, 337B]; InsertSymbol[$arrowdblleft, 334B]; InsertSymbol[$arrowdblright, 336B]; InsertSymbol[$arrowdblup, 335B]; InsertSymbol[$arrowhorizex, 276B]; InsertSymbol[$arrowvertex, 275B]; InsertSymbol[$asteriskmath, 052B]; InsertSymbol[$beta, 142B]; InsertSymbol[$braceleftbt, 356B]; InsertSymbol[$braceex, 357B]; InsertSymbol[$braceleftmid, 355B]; InsertSymbol[$bracelefttp, 354B]; InsertSymbol[$bracerightbt, 376B]; InsertSymbol[$bracerightmid, 375B]; InsertSymbol[$bracerighttp, 374B]; InsertSymbol[$bracketleftbt, 353B]; InsertSymbol[$bracketleftex, 352B]; InsertSymbol[$bracketlefttp, 351B]; InsertSymbol[$bracketrightbt, 373B]; InsertSymbol[$bracketrightex, 372B]; InsertSymbol[$bracketrighttp, 371B]; InsertSymbol[$chi, 143B]; InsertSymbol[$circlemultiply, 304B]; InsertSymbol[$carriagereturn, 277B]; InsertSymbol[$copyrightsans, 343B]; InsertSymbol[$copyrightserif, 323B]; InsertSymbol[$circleplus, 305B]; InsertSymbol[$club, 247B]; InsertSymbol[$a112, 247B]; InsertSymbol[$congruent, 100B]; InsertSymbol[$copyrightserif, 323B]; InsertSymbol[$delta, 144B]; InsertSymbol[$diamond, 250B]; InsertSymbol[$dotmath, 327B]; InsertSymbol[$element, 316B]; InsertSymbol[$ellipsis, 274B]; InsertSymbol[$emptyset, 306B]; InsertSymbol[$epsilon, 145B]; InsertSymbol[$equivalence, 272B]; InsertSymbol[$eta, 150B]; InsertSymbol[$existential, 044B]; InsertSymbol[$fraction, 244B]; InsertSymbol[$gamma, 147B]; InsertSymbol[$gradient, 321B]; InsertSymbol[$greaterequal, 263B]; InsertSymbol[$heart, 251B]; InsertSymbol[$infinity, 245B]; InsertSymbol[$integral, 362B]; InsertSymbol[$integralbt, 365B]; InsertSymbol[$integralex, 364B]; InsertSymbol[$integraltp, 363B]; InsertSymbol[$intersection, 307B]; InsertSymbol[$iota, 151B]; InsertSymbol[$kappa, 153B]; InsertSymbol[$lambda, 154B]; InsertSymbol[$lessequal, 243B]; InsertSymbol[$logicaland, 331B]; InsertSymbol[$logicalnot, 330B]; InsertSymbol[$logicalor, 332B]; InsertSymbol[$lozenge, 340B]; InsertSymbol[$mu, 155B]; InsertSymbol[$notelement, 317B]; InsertSymbol[$notequal, 271B]; InsertSymbol[$notsubset, 313B]; InsertSymbol[$nu, 156B]; InsertSymbol[$omega, 167B]; InsertSymbol[$omega1, 166B]; InsertSymbol[$omicron, 157B]; InsertSymbol[$parenleftbt, 350B]; InsertSymbol[$parenleftex, 347B]; InsertSymbol[$parenlefttp, 346B]; InsertSymbol[$parenrightbt, 370B]; InsertSymbol[$parenrightex, 367B]; InsertSymbol[$parenrighttp, 366B]; InsertSymbol[$partialdiff, 266B]; InsertSymbol[$perpendicular, 136B]; InsertSymbol[$phi, 146B]; InsertSymbol[$phi1, 152B]; InsertSymbol[$pi, 160B]; InsertSymbol[$product, 325B]; InsertSymbol[$propersubset, 314B]; InsertSymbol[$propersuperset, 311B]; InsertSymbol[$proportional, 265B]; InsertSymbol[$psi, 171B]; InsertSymbol[$radical, 326B]; InsertSymbol[$radicale, 140B]; InsertSymbol[$reflexsubset, 315B]; InsertSymbol[$registersans, 342B]; InsertSymbol[$reflexsuperset, 312B]; InsertSymbol[$registerserif, 322B]; InsertSymbol[$rho, 162B]; InsertSymbol[$second, 262B]; InsertSymbol[$sigma, 163B]; InsertSymbol[$sigma1, 126B]; InsertSymbol[$similar, 176B]; InsertSymbol[$spade, 252B]; InsertSymbol[$a109, 252B]; InsertSymbol[$suchthat, 047B]; InsertSymbol[$summation, 345B]; InsertSymbol[$tau, 164B]; InsertSymbol[$therefore, 134B]; InsertSymbol[$theta, 161B]; InsertSymbol[$theta1, 112B]; InsertSymbol[$trademark, 324B]; InsertSymbol[$trademarksans, 344B]; InsertSymbol[$trademarkserif, 324B]; InsertSymbol[$union, 310B]; InsertSymbol[$universal, 042B]; InsertSymbol[$upsilon, 165B]; InsertSymbol[$weierstrass, 303B]; InsertSymbol[$xi, 170B]; InsertSymbol[$zeta, 172B]; InsertStandard[$L, 114B]; InsertStandard[$acute, 302B]; InsertStandard[$breve, 306B]; InsertStandard[$caron, 317B]; InsertStandard[$cedilla, 313B]; InsertStandard[$cent, 242B]; InsertStandard[$circumflex, 303B]; InsertStandard[$comma, 054B]; InsertStandard[$dagger, 262B]; InsertStandard[$daggerdbl, 263B]; InsertStandard[$dieresis, 310B]; InsertStandard[$dollar, 044B]; InsertStandard[$dotaccent, 307B]; InsertStandard[$emdash, 320B]; InsertStandard[$endash, 261B]; InsertStandard[$exclamdown, 241B]; InsertStandard[$fi, 256B]; InsertStandard[$fl, 256B]; InsertStandard[$florin, 246B]; InsertStandard[$grave, 301B]; InsertStandard[$germandbls, 373B]; InsertStandard[$guillemotleft, 253B]; InsertStandard[$guillemotright,273B]; InsertStandard[$guilsinglleft, 254B]; InsertStandard[$guilsinglright, 255B]; InsertStandard[$hungarumlaut,315B]; InsertStandard[$macron, 305B]; InsertStandard[$ogonek, 316B]; InsertStandard[$ordfeminine, 343B]; InsertStandard[$ordmasculine, 353B]; InsertStandard[$paragraph, 266B]; InsertStandard[$periodcentered,264B]; InsertStandard[$perthousand, 275B]; InsertStandard[$question, 077B]; InsertStandard[$questiondown, 277B]; InsertStandard[$quotedblbase, 271B]; InsertStandard[$quotedblleft, 252B]; InsertStandard[$a99, 252B]; InsertStandard[$quotedbllright, 272B]; InsertStandard[$a100, 272B]; InsertStandard[$quoteleft, 140B]; InsertStandard[$a97, 140B]; InsertStandard[$quotesinglbase,270B]; InsertStandard[$section, 247B]; InsertStandard[$space, 040B]; InsertStandard[$sterling, 243B]; InsertStandard[$tilde, 304B]; InsertStandard[$yen, 245B]; }; DoWithCode: PUBLIC PROC [name: ATOM, action: IPtoPS.DoWithCodeProc] ~ { val: REF ¬ RefTab.Fetch[table, name].val; IF val = NIL THEN [] ¬ action[0, standard] ELSE { entry: REF Entry ¬ NARROW[val]; [] ¬ action[entry.code, entry.encodingVector]; }; }; Initialize[]; END. f IPtoPCharCodesSImpl.mesa Copyright Σ 1990, 1992 by Xerox Corporation. All rights reserved. Jules Bloomenthal May 29, 1993 5:16 pm PDT Obtain PostScript Character Byte from Universal Name ListSpecialCharNames: PROC RETURNS [list: LIST OF ATOM _ NIL] ~ { FOR set: CARD IN [1..255] DO FOR code: CARD IN [0..255] DO xchar: ImagerFont.XChar _ [Basics.Byte3[set], Basics.Byte3[code]]; a: ATOM _ CharCodeConvert.NameFromXChar[xchar]; IF a # NIL THEN list _ CONS[a, list]; ENDLOOP; ENDLOOP; }; With thanks for his help to Jean-Marie deLaBeaujardiere Presently unsupported special characters (no PostScript equivalent found): Idot, Scedilla, dectab, down, format, graybox, indent, left, Ifraktur, lira, ll, notegraphic, overscore, prescription, return, scedilla, square, tab, up Also, some names have codes in more than one encoding vector, which is why DoWithCode uses a call-back; presently, however, these multiple possibilities are ignored and the action proc is called only once. ISO-Latin1 characters (PostScript appendix E.5): Symbol characters (PostScript appendix E.11) Standard characters (PostScript appendix E.5) Κ –(cedarcode) style•NewlineDelimiter ™™Jšœ Οeœ6™BJ™*—Ihead–0.0 24 .div 1 1 textColoršΟl4™4JšΟk œ˜J˜–0.320 0.931 0.362 textColoršΠlnœΠbkΟb‘˜"JšŸœ˜JšŸœ˜J™—šœŸ˜J˜J• CharProps'Postfix16.0 24 .div 1 1 textColor#š’œŸœ˜5–'Postfix16.0 24 .div 1 1 textColorFš’œŸœŸœŸœ&˜KJ˜—–'Postfix16.0 24 .div 1 1 textColorš’œŸœ˜J˜—–(Postfix0.320 0.931 0.362 textColor-šΟnœŸœŸœŸœŸœŸœŸœ™AšŸœŸœŸœ Ÿ™šŸœŸœŸœ Ÿ™JšœB™BJšœŸœ(™/JšŸœŸœŸœŸœ ™%JšŸœ™—JšŸœ™—J™J™—–( Postfix0.320 0.931 0.362 textColor š£ œŸœ˜–(Postfix0.320 0.931 0.362 textColor=š£œŸœŸœŸœ˜CJšœ Ÿœ˜;J˜—J–( Postfix0.320 0.931 0.362 textColorBš£ œŸœŸœŸœ$˜KJ–( Postfix0.320 0.931 0.362 textColor?š£ œŸœŸœŸœ!˜KJ–(Postfix0.320 0.931 0.362 textColorAš£œŸœŸœŸœ#˜OJ˜J–16.0 24 .div 1 1 textColor™7–0.0 24 .div 1 1 textColor™JJ–0.0 24 .div 1 1 textColor™PJ–0.0 24 .div 1 1 textColor™G—J–0.0 24 .div 1 1 textColor™JJ–0.0 24 .div 1 1 textColor™MJ–0.0 24 .div 1 1 textColor™4–'/Postfix16.0 24 .div 1 1 textColor™0J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜ J˜J˜J˜J˜J˜ J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜ J˜J˜JšœΟsœ˜J˜J˜J˜J˜J˜!J˜J˜J˜ J˜J˜J˜J˜J˜J˜J˜J˜J˜ J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜ J˜Jšœ€œ˜J˜J˜J˜J˜J˜ J˜J˜!J˜J˜ J˜J˜J˜—–%,Postfix16.0 24 .div 1 1 textColor™,J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜J˜!J˜J˜!J˜J˜"J˜ J˜J˜ J˜ J˜!J˜J˜J˜"J˜"J˜"J˜#J˜!J˜"J˜!J˜"J˜J˜"J˜J˜"J˜"J˜"J˜#J˜"J˜#J˜#J˜#J˜$J˜$J˜$J˜J˜$J˜$J˜#J˜$J˜!J˜J˜J˜ J˜$J˜J˜J˜J˜J˜ J˜J˜J˜!J˜Jšœ€œ˜"J˜ J˜J˜J˜"J˜J˜ J˜ J˜!J˜!J˜!J˜#J˜J˜J˜J˜ J˜!J˜!J˜ J˜J˜J˜!J˜J˜ J˜J˜J˜J˜J˜"J˜"J˜"J˜"J˜"J˜"J˜"J˜#J˜J˜J˜J˜J˜"J˜$J˜"J˜J˜J˜ J˜"J˜#J˜$J˜#J˜J˜J˜J˜J˜J˜J˜Jšœ€œ˜J˜ J˜Jšœ€œ˜ J˜J˜J˜ J˜#J˜$J˜Jšœ€œ˜!J˜J˜#J˜J˜—–%-Postfix16.0 24 .div 1 1 textColor™-J˜J˜J˜ J˜J˜!J˜J˜"J˜J˜ J˜"J˜!J˜ J˜"J˜J˜J˜"J˜J˜J˜ J˜J˜"J˜%J˜%J˜%J˜&J˜#J˜J˜J˜#J˜$J˜"J˜%J˜#J˜!J˜$J˜$J˜$J˜Jšœ€œ˜&Jšœ€œ ˜J˜"J˜J˜%J˜ J˜J˜!J˜J˜—J˜J˜—–( Postfix0.320 0.931 0.362 textColor=š£ œŸœŸœŸœ$˜GJšœŸœ!˜)šŸœŸ˜ JšŸœ˜šŸœ˜JšœŸœ Ÿœ˜J˜.J˜——J˜J˜—˜ J˜——JšŸœ˜—…—&j3κ