Spaces:
Runtime error
Runtime error
| # mkpsenc.tcl -- | |
| # | |
| # This file generates the postscript prolog used by Tk. | |
| namespace eval ::tk { | |
| # Creates Postscript encoding vector for ISO-8859-1 (could theoretically | |
| # handle any 8-bit encoding, but Tk never generates characters outside | |
| # ASCII). | |
| # | |
| proc CreatePostscriptEncoding {} { | |
| variable psglyphs | |
| # Now check for known. Even if it is known, it can be other than we | |
| # need. GhostScript seems to be happy with such approach | |
| set result "\[\n" | |
| for {set i 0} {$i<256} {incr i 8} { | |
| for {set j 0} {$j<8} {incr j} { | |
| set enc [encoding convertfrom "iso8859-1" \ | |
| [format %c [expr {$i+$j}]]] | |
| catch { | |
| set hexcode {} | |
| set hexcode [format %04X [scan $enc %c]] | |
| } | |
| if {[info exists psglyphs($hexcode)]} { | |
| append result "/$psglyphs($hexcode)" | |
| } else { | |
| append result "/space" | |
| } | |
| } | |
| append result "\n" | |
| } | |
| append result "\]" | |
| return $result | |
| } | |
| # List of adobe glyph names. Converted from glyphlist.txt, downloaded from | |
| # Adobe. | |
| variable psglyphs | |
| array set psglyphs { | |
| 0020 space | |
| 0021 exclam | |
| 0022 quotedbl | |
| 0023 numbersign | |
| 0024 dollar | |
| 0025 percent | |
| 0026 ampersand | |
| 0027 quotesingle | |
| 0028 parenleft | |
| 0029 parenright | |
| 002A asterisk | |
| 002B plus | |
| 002C comma | |
| 002D hyphen | |
| 002E period | |
| 002F slash | |
| 0030 zero | |
| 0031 one | |
| 0032 two | |
| 0033 three | |
| 0034 four | |
| 0035 five | |
| 0036 six | |
| 0037 seven | |
| 0038 eight | |
| 0039 nine | |
| 003A colon | |
| 003B semicolon | |
| 003C less | |
| 003D equal | |
| 003E greater | |
| 003F question | |
| 0040 at | |
| 0041 A | |
| 0042 B | |
| 0043 C | |
| 0044 D | |
| 0045 E | |
| 0046 F | |
| 0047 G | |
| 0048 H | |
| 0049 I | |
| 004A J | |
| 004B K | |
| 004C L | |
| 004D M | |
| 004E N | |
| 004F O | |
| 0050 P | |
| 0051 Q | |
| 0052 R | |
| 0053 S | |
| 0054 T | |
| 0055 U | |
| 0056 V | |
| 0057 W | |
| 0058 X | |
| 0059 Y | |
| 005A Z | |
| 005B bracketleft | |
| 005C backslash | |
| 005D bracketright | |
| 005E asciicircum | |
| 005F underscore | |
| 0060 grave | |
| 0061 a | |
| 0062 b | |
| 0063 c | |
| 0064 d | |
| 0065 e | |
| 0066 f | |
| 0067 g | |
| 0068 h | |
| 0069 i | |
| 006A j | |
| 006B k | |
| 006C l | |
| 006D m | |
| 006E n | |
| 006F o | |
| 0070 p | |
| 0071 q | |
| 0072 r | |
| 0073 s | |
| 0074 t | |
| 0075 u | |
| 0076 v | |
| 0077 w | |
| 0078 x | |
| 0079 y | |
| 007A z | |
| 007B braceleft | |
| 007C bar | |
| 007D braceright | |
| 007E asciitilde | |
| 00A0 space | |
| 00A1 exclamdown | |
| 00A2 cent | |
| 00A3 sterling | |
| 00A4 currency | |
| 00A5 yen | |
| 00A6 brokenbar | |
| 00A7 section | |
| 00A8 dieresis | |
| 00A9 copyright | |
| 00AA ordfeminine | |
| 00AB guillemotleft | |
| 00AC logicalnot | |
| 00AD hyphen | |
| 00AE registered | |
| 00AF macron | |
| 00B0 degree | |
| 00B1 plusminus | |
| 00B2 twosuperior | |
| 00B3 threesuperior | |
| 00B4 acute | |
| 00B5 mu | |
| 00B6 paragraph | |
| 00B7 periodcentered | |
| 00B8 cedilla | |
| 00B9 onesuperior | |
| 00BA ordmasculine | |
| 00BB guillemotright | |
| 00BC onequarter | |
| 00BD onehalf | |
| 00BE threequarters | |
| 00BF questiondown | |
| 00C0 Agrave | |
| 00C1 Aacute | |
| 00C2 Acircumflex | |
| 00C3 Atilde | |
| 00C4 Adieresis | |
| 00C5 Aring | |
| 00C6 AE | |
| 00C7 Ccedilla | |
| 00C8 Egrave | |
| 00C9 Eacute | |
| 00CA Ecircumflex | |
| 00CB Edieresis | |
| 00CC Igrave | |
| 00CD Iacute | |
| 00CE Icircumflex | |
| 00CF Idieresis | |
| 00D0 Eth | |
| 00D1 Ntilde | |
| 00D2 Ograve | |
| 00D3 Oacute | |
| 00D4 Ocircumflex | |
| 00D5 Otilde | |
| 00D6 Odieresis | |
| 00D7 multiply | |
| 00D8 Oslash | |
| 00D9 Ugrave | |
| 00DA Uacute | |
| 00DB Ucircumflex | |
| 00DC Udieresis | |
| 00DD Yacute | |
| 00DE Thorn | |
| 00DF germandbls | |
| 00E0 agrave | |
| 00E1 aacute | |
| 00E2 acircumflex | |
| 00E3 atilde | |
| 00E4 adieresis | |
| 00E5 aring | |
| 00E6 ae | |
| 00E7 ccedilla | |
| 00E8 egrave | |
| 00E9 eacute | |
| 00EA ecircumflex | |
| 00EB edieresis | |
| 00EC igrave | |
| 00ED iacute | |
| 00EE icircumflex | |
| 00EF idieresis | |
| 00F0 eth | |
| 00F1 ntilde | |
| 00F2 ograve | |
| 00F3 oacute | |
| 00F4 ocircumflex | |
| 00F5 otilde | |
| 00F6 odieresis | |
| 00F7 divide | |
| 00F8 oslash | |
| 00F9 ugrave | |
| 00FA uacute | |
| 00FB ucircumflex | |
| 00FC udieresis | |
| 00FD yacute | |
| 00FE thorn | |
| 00FF ydieresis | |
| 0100 Amacron | |
| 0101 amacron | |
| 0102 Abreve | |
| 0103 abreve | |
| 0104 Aogonek | |
| 0105 aogonek | |
| 0106 Cacute | |
| 0107 cacute | |
| 0108 Ccircumflex | |
| 0109 ccircumflex | |
| 010A Cdotaccent | |
| 010B cdotaccent | |
| 010C Ccaron | |
| 010D ccaron | |
| 010E Dcaron | |
| 010F dcaron | |
| 0110 Dcroat | |
| 0111 dcroat | |
| 0112 Emacron | |
| 0113 emacron | |
| 0114 Ebreve | |
| 0115 ebreve | |
| 0116 Edotaccent | |
| 0117 edotaccent | |
| 0118 Eogonek | |
| 0119 eogonek | |
| 011A Ecaron | |
| 011B ecaron | |
| 011C Gcircumflex | |
| 011D gcircumflex | |
| 011E Gbreve | |
| 011F gbreve | |
| 0120 Gdotaccent | |
| 0121 gdotaccent | |
| 0122 Gcommaaccent | |
| 0123 gcommaaccent | |
| 0124 Hcircumflex | |
| 0125 hcircumflex | |
| 0126 Hbar | |
| 0127 hbar | |
| 0128 Itilde | |
| 0129 itilde | |
| 012A Imacron | |
| 012B imacron | |
| 012C Ibreve | |
| 012D ibreve | |
| 012E Iogonek | |
| 012F iogonek | |
| 0130 Idotaccent | |
| 0131 dotlessi | |
| 0132 IJ | |
| 0133 ij | |
| 0134 Jcircumflex | |
| 0135 jcircumflex | |
| 0136 Kcommaaccent | |
| 0137 kcommaaccent | |
| 0138 kgreenlandic | |
| 0139 Lacute | |
| 013A lacute | |
| 013B Lcommaaccent | |
| 013C lcommaaccent | |
| 013D Lcaron | |
| 013E lcaron | |
| 013F Ldot | |
| 0140 ldot | |
| 0141 Lslash | |
| 0142 lslash | |
| 0143 Nacute | |
| 0144 nacute | |
| 0145 Ncommaaccent | |
| 0146 ncommaaccent | |
| 0147 Ncaron | |
| 0148 ncaron | |
| 0149 napostrophe | |
| 014A Eng | |
| 014B eng | |
| 014C Omacron | |
| 014D omacron | |
| 014E Obreve | |
| 014F obreve | |
| 0150 Ohungarumlaut | |
| 0151 ohungarumlaut | |
| 0152 OE | |
| 0153 oe | |
| 0154 Racute | |
| 0155 racute | |
| 0156 Rcommaaccent | |
| 0157 rcommaaccent | |
| 0158 Rcaron | |
| 0159 rcaron | |
| 015A Sacute | |
| 015B sacute | |
| 015C Scircumflex | |
| 015D scircumflex | |
| 015E Scedilla | |
| 015F scedilla | |
| 0160 Scaron | |
| 0161 scaron | |
| 0162 Tcommaaccent | |
| 0163 tcommaaccent | |
| 0164 Tcaron | |
| 0165 tcaron | |
| 0166 Tbar | |
| 0167 tbar | |
| 0168 Utilde | |
| 0169 utilde | |
| 016A Umacron | |
| 016B umacron | |
| 016C Ubreve | |
| 016D ubreve | |
| 016E Uring | |
| 016F uring | |
| 0170 Uhungarumlaut | |
| 0171 uhungarumlaut | |
| 0172 Uogonek | |
| 0173 uogonek | |
| 0174 Wcircumflex | |
| 0175 wcircumflex | |
| 0176 Ycircumflex | |
| 0177 ycircumflex | |
| 0178 Ydieresis | |
| 0179 Zacute | |
| 017A zacute | |
| 017B Zdotaccent | |
| 017C zdotaccent | |
| 017D Zcaron | |
| 017E zcaron | |
| 017F longs | |
| 0192 florin | |
| 01A0 Ohorn | |
| 01A1 ohorn | |
| 01AF Uhorn | |
| 01B0 uhorn | |
| 01E6 Gcaron | |
| 01E7 gcaron | |
| 01FA Aringacute | |
| 01FB aringacute | |
| 01FC AEacute | |
| 01FD aeacute | |
| 01FE Oslashacute | |
| 01FF oslashacute | |
| 0218 Scommaaccent | |
| 0219 scommaaccent | |
| 021A Tcommaaccent | |
| 021B tcommaaccent | |
| 02BC afii57929 | |
| 02BD afii64937 | |
| 02C6 circumflex | |
| 02C7 caron | |
| 02C9 macron | |
| 02D8 breve | |
| 02D9 dotaccent | |
| 02DA ring | |
| 02DB ogonek | |
| 02DC tilde | |
| 02DD hungarumlaut | |
| 0300 gravecomb | |
| 0301 acutecomb | |
| 0303 tildecomb | |
| 0309 hookabovecomb | |
| 0323 dotbelowcomb | |
| 0384 tonos | |
| 0385 dieresistonos | |
| 0386 Alphatonos | |
| 0387 anoteleia | |
| 0388 Epsilontonos | |
| 0389 Etatonos | |
| 038A Iotatonos | |
| 038C Omicrontonos | |
| 038E Upsilontonos | |
| 038F Omegatonos | |
| 0390 iotadieresistonos | |
| 0391 Alpha | |
| 0392 Beta | |
| 0393 Gamma | |
| 0394 Delta | |
| 0395 Epsilon | |
| 0396 Zeta | |
| 0397 Eta | |
| 0398 Theta | |
| 0399 Iota | |
| 039A Kappa | |
| 039B Lambda | |
| 039C Mu | |
| 039D Nu | |
| 039E Xi | |
| 039F Omicron | |
| 03A0 Pi | |
| 03A1 Rho | |
| 03A3 Sigma | |
| 03A4 Tau | |
| 03A5 Upsilon | |
| 03A6 Phi | |
| 03A7 Chi | |
| 03A8 Psi | |
| 03A9 Omega | |
| 03AA Iotadieresis | |
| 03AB Upsilondieresis | |
| 03AC alphatonos | |
| 03AD epsilontonos | |
| 03AE etatonos | |
| 03AF iotatonos | |
| 03B0 upsilondieresistonos | |
| 03B1 alpha | |
| 03B2 beta | |
| 03B3 gamma | |
| 03B4 delta | |
| 03B5 epsilon | |
| 03B6 zeta | |
| 03B7 eta | |
| 03B8 theta | |
| 03B9 iota | |
| 03BA kappa | |
| 03BB lambda | |
| 03BC mu | |
| 03BD nu | |
| 03BE xi | |
| 03BF omicron | |
| 03C0 pi | |
| 03C1 rho | |
| 03C2 sigma1 | |
| 03C3 sigma | |
| 03C4 tau | |
| 03C5 upsilon | |
| 03C6 phi | |
| 03C7 chi | |
| 03C8 psi | |
| 03C9 omega | |
| 03CA iotadieresis | |
| 03CB upsilondieresis | |
| 03CC omicrontonos | |
| 03CD upsilontonos | |
| 03CE omegatonos | |
| 03D1 theta1 | |
| 03D2 Upsilon1 | |
| 03D5 phi1 | |
| 03D6 omega1 | |
| 0401 afii10023 | |
| 0402 afii10051 | |
| 0403 afii10052 | |
| 0404 afii10053 | |
| 0405 afii10054 | |
| 0406 afii10055 | |
| 0407 afii10056 | |
| 0408 afii10057 | |
| 0409 afii10058 | |
| 040A afii10059 | |
| 040B afii10060 | |
| 040C afii10061 | |
| 040E afii10062 | |
| 040F afii10145 | |
| 0410 afii10017 | |
| 0411 afii10018 | |
| 0412 afii10019 | |
| 0413 afii10020 | |
| 0414 afii10021 | |
| 0415 afii10022 | |
| 0416 afii10024 | |
| 0417 afii10025 | |
| 0418 afii10026 | |
| 0419 afii10027 | |
| 041A afii10028 | |
| 041B afii10029 | |
| 041C afii10030 | |
| 041D afii10031 | |
| 041E afii10032 | |
| 041F afii10033 | |
| 0420 afii10034 | |
| 0421 afii10035 | |
| 0422 afii10036 | |
| 0423 afii10037 | |
| 0424 afii10038 | |
| 0425 afii10039 | |
| 0426 afii10040 | |
| 0427 afii10041 | |
| 0428 afii10042 | |
| 0429 afii10043 | |
| 042A afii10044 | |
| 042B afii10045 | |
| 042C afii10046 | |
| 042D afii10047 | |
| 042E afii10048 | |
| 042F afii10049 | |
| 0430 afii10065 | |
| 0431 afii10066 | |
| 0432 afii10067 | |
| 0433 afii10068 | |
| 0434 afii10069 | |
| 0435 afii10070 | |
| 0436 afii10072 | |
| 0437 afii10073 | |
| 0438 afii10074 | |
| 0439 afii10075 | |
| 043A afii10076 | |
| 043B afii10077 | |
| 043C afii10078 | |
| 043D afii10079 | |
| 043E afii10080 | |
| 043F afii10081 | |
| 0440 afii10082 | |
| 0441 afii10083 | |
| 0442 afii10084 | |
| 0443 afii10085 | |
| 0444 afii10086 | |
| 0445 afii10087 | |
| 0446 afii10088 | |
| 0447 afii10089 | |
| 0448 afii10090 | |
| 0449 afii10091 | |
| 044A afii10092 | |
| 044B afii10093 | |
| 044C afii10094 | |
| 044D afii10095 | |
| 044E afii10096 | |
| 044F afii10097 | |
| 0451 afii10071 | |
| 0452 afii10099 | |
| 0453 afii10100 | |
| 0454 afii10101 | |
| 0455 afii10102 | |
| 0456 afii10103 | |
| 0457 afii10104 | |
| 0458 afii10105 | |
| 0459 afii10106 | |
| 045A afii10107 | |
| 045B afii10108 | |
| 045C afii10109 | |
| 045E afii10110 | |
| 045F afii10193 | |
| 0462 afii10146 | |
| 0463 afii10194 | |
| 0472 afii10147 | |
| 0473 afii10195 | |
| 0474 afii10148 | |
| 0475 afii10196 | |
| 0490 afii10050 | |
| 0491 afii10098 | |
| 04D9 afii10846 | |
| 05B0 afii57799 | |
| 05B1 afii57801 | |
| 05B2 afii57800 | |
| 05B3 afii57802 | |
| 05B4 afii57793 | |
| 05B5 afii57794 | |
| 05B6 afii57795 | |
| 05B7 afii57798 | |
| 05B8 afii57797 | |
| 05B9 afii57806 | |
| 05BB afii57796 | |
| 05BC afii57807 | |
| 05BD afii57839 | |
| 05BE afii57645 | |
| 05BF afii57841 | |
| 05C0 afii57842 | |
| 05C1 afii57804 | |
| 05C2 afii57803 | |
| 05C3 afii57658 | |
| 05D0 afii57664 | |
| 05D1 afii57665 | |
| 05D2 afii57666 | |
| 05D3 afii57667 | |
| 05D4 afii57668 | |
| 05D5 afii57669 | |
| 05D6 afii57670 | |
| 05D7 afii57671 | |
| 05D8 afii57672 | |
| 05D9 afii57673 | |
| 05DA afii57674 | |
| 05DB afii57675 | |
| 05DC afii57676 | |
| 05DD afii57677 | |
| 05DE afii57678 | |
| 05DF afii57679 | |
| 05E0 afii57680 | |
| 05E1 afii57681 | |
| 05E2 afii57682 | |
| 05E3 afii57683 | |
| 05E4 afii57684 | |
| 05E5 afii57685 | |
| 05E6 afii57686 | |
| 05E7 afii57687 | |
| 05E8 afii57688 | |
| 05E9 afii57689 | |
| 05EA afii57690 | |
| 05F0 afii57716 | |
| 05F1 afii57717 | |
| 05F2 afii57718 | |
| 060C afii57388 | |
| 061B afii57403 | |
| 061F afii57407 | |
| 0621 afii57409 | |
| 0622 afii57410 | |
| 0623 afii57411 | |
| 0624 afii57412 | |
| 0625 afii57413 | |
| 0626 afii57414 | |
| 0627 afii57415 | |
| 0628 afii57416 | |
| 0629 afii57417 | |
| 062A afii57418 | |
| 062B afii57419 | |
| 062C afii57420 | |
| 062D afii57421 | |
| 062E afii57422 | |
| 062F afii57423 | |
| 0630 afii57424 | |
| 0631 afii57425 | |
| 0632 afii57426 | |
| 0633 afii57427 | |
| 0634 afii57428 | |
| 0635 afii57429 | |
| 0636 afii57430 | |
| 0637 afii57431 | |
| 0638 afii57432 | |
| 0639 afii57433 | |
| 063A afii57434 | |
| 0640 afii57440 | |
| 0641 afii57441 | |
| 0642 afii57442 | |
| 0643 afii57443 | |
| 0644 afii57444 | |
| 0645 afii57445 | |
| 0646 afii57446 | |
| 0647 afii57470 | |
| 0648 afii57448 | |
| 0649 afii57449 | |
| 064A afii57450 | |
| 064B afii57451 | |
| 064C afii57452 | |
| 064D afii57453 | |
| 064E afii57454 | |
| 064F afii57455 | |
| 0650 afii57456 | |
| 0651 afii57457 | |
| 0652 afii57458 | |
| 0660 afii57392 | |
| 0661 afii57393 | |
| 0662 afii57394 | |
| 0663 afii57395 | |
| 0664 afii57396 | |
| 0665 afii57397 | |
| 0666 afii57398 | |
| 0667 afii57399 | |
| 0668 afii57400 | |
| 0669 afii57401 | |
| 066A afii57381 | |
| 066D afii63167 | |
| 0679 afii57511 | |
| 067E afii57506 | |
| 0686 afii57507 | |
| 0688 afii57512 | |
| 0691 afii57513 | |
| 0698 afii57508 | |
| 06A4 afii57505 | |
| 06AF afii57509 | |
| 06BA afii57514 | |
| 06D2 afii57519 | |
| 06D5 afii57534 | |
| 1E80 Wgrave | |
| 1E81 wgrave | |
| 1E82 Wacute | |
| 1E83 wacute | |
| 1E84 Wdieresis | |
| 1E85 wdieresis | |
| 1EF2 Ygrave | |
| 1EF3 ygrave | |
| 200C afii61664 | |
| 200D afii301 | |
| 200E afii299 | |
| 200F afii300 | |
| 2012 figuredash | |
| 2013 endash | |
| 2014 emdash | |
| 2015 afii00208 | |
| 2017 underscoredbl | |
| 2018 quoteleft | |
| 2019 quoteright | |
| 201A quotesinglbase | |
| 201B quotereversed | |
| 201C quotedblleft | |
| 201D quotedblright | |
| 201E quotedblbase | |
| 2020 dagger | |
| 2021 daggerdbl | |
| 2022 bullet | |
| 2024 onedotenleader | |
| 2025 twodotenleader | |
| 2026 ellipsis | |
| 202C afii61573 | |
| 202D afii61574 | |
| 202E afii61575 | |
| 2030 perthousand | |
| 2032 minute | |
| 2033 second | |
| 2039 guilsinglleft | |
| 203A guilsinglright | |
| 203C exclamdbl | |
| 2044 fraction | |
| 2070 zerosuperior | |
| 2074 foursuperior | |
| 2075 fivesuperior | |
| 2076 sixsuperior | |
| 2077 sevensuperior | |
| 2078 eightsuperior | |
| 2079 ninesuperior | |
| 207D parenleftsuperior | |
| 207E parenrightsuperior | |
| 207F nsuperior | |
| 2080 zeroinferior | |
| 2081 oneinferior | |
| 2082 twoinferior | |
| 2083 threeinferior | |
| 2084 fourinferior | |
| 2085 fiveinferior | |
| 2086 sixinferior | |
| 2087 seveninferior | |
| 2088 eightinferior | |
| 2089 nineinferior | |
| 208D parenleftinferior | |
| 208E parenrightinferior | |
| 20A1 colonmonetary | |
| 20A3 franc | |
| 20A4 lira | |
| 20A7 peseta | |
| 20AA afii57636 | |
| 20AB dong | |
| 20AC Euro | |
| 2105 afii61248 | |
| 2111 Ifraktur | |
| 2113 afii61289 | |
| 2116 afii61352 | |
| 2118 weierstrass | |
| 211C Rfraktur | |
| 211E prescription | |
| 2122 trademark | |
| 2126 Omega | |
| 212E estimated | |
| 2135 aleph | |
| 2153 onethird | |
| 2154 twothirds | |
| 215B oneeighth | |
| 215C threeeighths | |
| 215D fiveeighths | |
| 215E seveneighths | |
| 2190 arrowleft | |
| 2191 arrowup | |
| 2192 arrowright | |
| 2193 arrowdown | |
| 2194 arrowboth | |
| 2195 arrowupdn | |
| 21A8 arrowupdnbse | |
| 21B5 carriagereturn | |
| 21D0 arrowdblleft | |
| 21D1 arrowdblup | |
| 21D2 arrowdblright | |
| 21D3 arrowdbldown | |
| 21D4 arrowdblboth | |
| 2200 universal | |
| 2202 partialdiff | |
| 2203 existential | |
| 2205 emptyset | |
| 2206 Delta | |
| 2207 gradient | |
| 2208 element | |
| 2209 notelement | |
| 220B suchthat | |
| 220F product | |
| 2211 summation | |
| 2212 minus | |
| 2215 fraction | |
| 2217 asteriskmath | |
| 2219 periodcentered | |
| 221A radical | |
| 221D proportional | |
| 221E infinity | |
| 221F orthogonal | |
| 2220 angle | |
| 2227 logicaland | |
| 2228 logicalor | |
| 2229 intersection | |
| 222A union | |
| 222B integral | |
| 2234 therefore | |
| 223C similar | |
| 2245 congruent | |
| 2248 approxequal | |
| 2260 notequal | |
| 2261 equivalence | |
| 2264 lessequal | |
| 2265 greaterequal | |
| 2282 propersubset | |
| 2283 propersuperset | |
| 2284 notsubset | |
| 2286 reflexsubset | |
| 2287 reflexsuperset | |
| 2295 circleplus | |
| 2297 circlemultiply | |
| 22A5 perpendicular | |
| 22C5 dotmath | |
| 2302 house | |
| 2310 revlogicalnot | |
| 2320 integraltp | |
| 2321 integralbt | |
| 2329 angleleft | |
| 232A angleright | |
| 2500 SF100000 | |
| 2502 SF110000 | |
| 250C SF010000 | |
| 2510 SF030000 | |
| 2514 SF020000 | |
| 2518 SF040000 | |
| 251C SF080000 | |
| 2524 SF090000 | |
| 252C SF060000 | |
| 2534 SF070000 | |
| 253C SF050000 | |
| 2550 SF430000 | |
| 2551 SF240000 | |
| 2552 SF510000 | |
| 2553 SF520000 | |
| 2554 SF390000 | |
| 2555 SF220000 | |
| 2556 SF210000 | |
| 2557 SF250000 | |
| 2558 SF500000 | |
| 2559 SF490000 | |
| 255A SF380000 | |
| 255B SF280000 | |
| 255C SF270000 | |
| 255D SF260000 | |
| 255E SF360000 | |
| 255F SF370000 | |
| 2560 SF420000 | |
| 2561 SF190000 | |
| 2562 SF200000 | |
| 2563 SF230000 | |
| 2564 SF470000 | |
| 2565 SF480000 | |
| 2566 SF410000 | |
| 2567 SF450000 | |
| 2568 SF460000 | |
| 2569 SF400000 | |
| 256A SF540000 | |
| 256B SF530000 | |
| 256C SF440000 | |
| 2580 upblock | |
| 2584 dnblock | |
| 2588 block | |
| 258C lfblock | |
| 2590 rtblock | |
| 2591 ltshade | |
| 2592 shade | |
| 2593 dkshade | |
| 25A0 filledbox | |
| 25A1 H22073 | |
| 25AA H18543 | |
| 25AB H18551 | |
| 25AC filledrect | |
| 25B2 triagup | |
| 25BA triagrt | |
| 25BC triagdn | |
| 25C4 triaglf | |
| 25CA lozenge | |
| 25CB circle | |
| 25CF H18533 | |
| 25D8 invbullet | |
| 25D9 invcircle | |
| 25E6 openbullet | |
| 263A smileface | |
| 263B invsmileface | |
| 263C sun | |
| 2640 female | |
| 2642 male | |
| 2660 spade | |
| 2663 club | |
| 2665 heart | |
| 2666 diamond | |
| 266A musicalnote | |
| 266B musicalnotedbl | |
| F6BE dotlessj | |
| F6BF LL | |
| F6C0 ll | |
| F6C1 Scedilla | |
| F6C2 scedilla | |
| F6C3 commaaccent | |
| F6C4 afii10063 | |
| F6C5 afii10064 | |
| F6C6 afii10192 | |
| F6C7 afii10831 | |
| F6C8 afii10832 | |
| F6C9 Acute | |
| F6CA Caron | |
| F6CB Dieresis | |
| F6CC DieresisAcute | |
| F6CD DieresisGrave | |
| F6CE Grave | |
| F6CF Hungarumlaut | |
| F6D0 Macron | |
| F6D1 cyrBreve | |
| F6D2 cyrFlex | |
| F6D3 dblGrave | |
| F6D4 cyrbreve | |
| F6D5 cyrflex | |
| F6D6 dblgrave | |
| F6D7 dieresisacute | |
| F6D8 dieresisgrave | |
| F6D9 copyrightserif | |
| F6DA registerserif | |
| F6DB trademarkserif | |
| F6DC onefitted | |
| F6DD rupiah | |
| F6DE threequartersemdash | |
| F6DF centinferior | |
| F6E0 centsuperior | |
| F6E1 commainferior | |
| F6E2 commasuperior | |
| F6E3 dollarinferior | |
| F6E4 dollarsuperior | |
| F6E5 hypheninferior | |
| F6E6 hyphensuperior | |
| F6E7 periodinferior | |
| F6E8 periodsuperior | |
| F6E9 asuperior | |
| F6EA bsuperior | |
| F6EB dsuperior | |
| F6EC esuperior | |
| F6ED isuperior | |
| F6EE lsuperior | |
| F6EF msuperior | |
| F6F0 osuperior | |
| F6F1 rsuperior | |
| F6F2 ssuperior | |
| F6F3 tsuperior | |
| F6F4 Brevesmall | |
| F6F5 Caronsmall | |
| F6F6 Circumflexsmall | |
| F6F7 Dotaccentsmall | |
| F6F8 Hungarumlautsmall | |
| F6F9 Lslashsmall | |
| F6FA OEsmall | |
| F6FB Ogoneksmall | |
| F6FC Ringsmall | |
| F6FD Scaronsmall | |
| F6FE Tildesmall | |
| F6FF Zcaronsmall | |
| F721 exclamsmall | |
| F724 dollaroldstyle | |
| F726 ampersandsmall | |
| F730 zerooldstyle | |
| F731 oneoldstyle | |
| F732 twooldstyle | |
| F733 threeoldstyle | |
| F734 fouroldstyle | |
| F735 fiveoldstyle | |
| F736 sixoldstyle | |
| F737 sevenoldstyle | |
| F738 eightoldstyle | |
| F739 nineoldstyle | |
| F73F questionsmall | |
| F760 Gravesmall | |
| F761 Asmall | |
| F762 Bsmall | |
| F763 Csmall | |
| F764 Dsmall | |
| F765 Esmall | |
| F766 Fsmall | |
| F767 Gsmall | |
| F768 Hsmall | |
| F769 Ismall | |
| F76A Jsmall | |
| F76B Ksmall | |
| F76C Lsmall | |
| F76D Msmall | |
| F76E Nsmall | |
| F76F Osmall | |
| F770 Psmall | |
| F771 Qsmall | |
| F772 Rsmall | |
| F773 Ssmall | |
| F774 Tsmall | |
| F775 Usmall | |
| F776 Vsmall | |
| F777 Wsmall | |
| F778 Xsmall | |
| F779 Ysmall | |
| F77A Zsmall | |
| F7A1 exclamdownsmall | |
| F7A2 centoldstyle | |
| F7A8 Dieresissmall | |
| F7AF Macronsmall | |
| F7B4 Acutesmall | |
| F7B8 Cedillasmall | |
| F7BF questiondownsmall | |
| F7E0 Agravesmall | |
| F7E1 Aacutesmall | |
| F7E2 Acircumflexsmall | |
| F7E3 Atildesmall | |
| F7E4 Adieresissmall | |
| F7E5 Aringsmall | |
| F7E6 AEsmall | |
| F7E7 Ccedillasmall | |
| F7E8 Egravesmall | |
| F7E9 Eacutesmall | |
| F7EA Ecircumflexsmall | |
| F7EB Edieresissmall | |
| F7EC Igravesmall | |
| F7ED Iacutesmall | |
| F7EE Icircumflexsmall | |
| F7EF Idieresissmall | |
| F7F0 Ethsmall | |
| F7F1 Ntildesmall | |
| F7F2 Ogravesmall | |
| F7F3 Oacutesmall | |
| F7F4 Ocircumflexsmall | |
| F7F5 Otildesmall | |
| F7F6 Odieresissmall | |
| F7F8 Oslashsmall | |
| F7F9 Ugravesmall | |
| F7FA Uacutesmall | |
| F7FB Ucircumflexsmall | |
| F7FC Udieresissmall | |
| F7FD Yacutesmall | |
| F7FE Thornsmall | |
| F7FF Ydieresissmall | |
| F8E5 radicalex | |
| F8E6 arrowvertex | |
| F8E7 arrowhorizex | |
| F8E8 registersans | |
| F8E9 copyrightsans | |
| F8EA trademarksans | |
| F8EB parenlefttp | |
| F8EC parenleftex | |
| F8ED parenleftbt | |
| F8EE bracketlefttp | |
| F8EF bracketleftex | |
| F8F0 bracketleftbt | |
| F8F1 bracelefttp | |
| F8F2 braceleftmid | |
| F8F3 braceleftbt | |
| F8F4 braceex | |
| F8F5 integralex | |
| F8F6 parenrighttp | |
| F8F7 parenrightex | |
| F8F8 parenrightbt | |
| F8F9 bracketrighttp | |
| F8FA bracketrightex | |
| F8FB bracketrightbt | |
| F8FC bracerighttp | |
| F8FD bracerightmid | |
| F8FE bracerightbt | |
| FB00 ff | |
| FB01 fi | |
| FB02 fl | |
| FB03 ffi | |
| FB04 ffl | |
| FB1F afii57705 | |
| FB2A afii57694 | |
| FB2B afii57695 | |
| FB35 afii57723 | |
| FB4B afii57700 | |
| } | |
| variable ps_preamble {} | |
| namespace eval ps { | |
| namespace ensemble create | |
| namespace export {[a-z]*} | |
| proc literal {string} { | |
| upvar 0 ::tk::ps_preamble preamble | |
| foreach line [split $string \n] { | |
| set line [string trim $line] | |
| if {$line eq ""} continue | |
| append preamble $line \n | |
| } | |
| return | |
| } | |
| proc variable {name value} { | |
| upvar 0 ::tk::ps_preamble preamble | |
| append preamble "/$name $value def\n" | |
| return | |
| } | |
| proc function {name body} { | |
| upvar 0 ::tk::ps_preamble preamble | |
| append preamble "/$name \{" | |
| foreach line [split $body \n] { | |
| set line [string trim $line] | |
| # Strip blank lines and comments from the bodies of functions | |
| if {$line eq "" } continue | |
| if {[string match {[%#]*} $line]} continue | |
| append preamble $line " " | |
| } | |
| append preamble "\} bind def\n" | |
| return | |
| } | |
| } | |
| ps literal { | |
| %%BeginProlog | |
| % This is a standard prolog for Postscript generated by Tk's canvas | |
| % widget. | |
| } | |
| ps variable CurrentEncoding [CreatePostscriptEncoding] | |
| ps literal {50 dict begin} | |
| # The definitions below just define all of the variables used in any of | |
| # the procedures here. This is needed for obscure reasons explained on | |
| # p. 716 of the Postscript manual (Section H.2.7, "Initializing | |
| # Variables," in the section on Encapsulated Postscript). | |
| ps variable baseline 0 | |
| ps variable stipimage 0 | |
| ps variable height 0 | |
| ps variable justify 0 | |
| ps variable lineLength 0 | |
| ps variable spacing 0 | |
| ps variable stipple 0 | |
| ps variable strings 0 | |
| ps variable xoffset 0 | |
| ps variable yoffset 0 | |
| ps variable tmpstip null | |
| ps variable baselineSampler "( TXygqPZ)" | |
| # Put an extra-tall character in; done this way to avoid encoding trouble | |
| ps literal {baselineSampler 0 196 put} | |
| ps function cstringshow { | |
| { | |
| dup type /stringtype eq | |
| { show } { glyphshow } | |
| ifelse | |
| } forall | |
| } | |
| ps function cstringwidth { | |
| 0 exch 0 exch | |
| { | |
| dup type /stringtype eq | |
| { stringwidth } { | |
| currentfont /Encoding get exch 1 exch put (\001) | |
| stringwidth | |
| } | |
| ifelse | |
| exch 3 1 roll add 3 1 roll add exch | |
| } forall | |
| } | |
| # font ISOEncode font | |
| # | |
| # This procedure changes the encoding of a font from the default | |
| # Postscript encoding to current system encoding. It's typically invoked | |
| # just before invoking "setfont". The body of this procedure comes from | |
| # Section 5.6.1 of the Postscript book. | |
| ps function ISOEncode { | |
| dup length dict begin | |
| {1 index /FID ne {def} {pop pop} ifelse} forall | |
| /Encoding CurrentEncoding def | |
| currentdict | |
| end | |
| % I'm not sure why it's necessary to use "definefont" on this new | |
| % font, but it seems to be important; just use the name "Temporary" | |
| % for the font. | |
| /Temporary exch definefont | |
| } | |
| # StrokeClip | |
| # | |
| # This procedure converts the current path into a clip area under the | |
| # assumption of stroking. It's a bit tricky because some Postscript | |
| # interpreters get errors during strokepath for dashed lines. If this | |
| # happens then turn off dashes and try again. | |
| ps function StrokeClip { | |
| {strokepath} stopped { | |
| (This Postscript printer gets limitcheck overflows when) = | |
| (stippling dashed lines; lines will be printed solid instead.) = | |
| [] 0 setdash strokepath} if | |
| clip | |
| } | |
| # desiredSize EvenPixels closestSize | |
| # | |
| # The procedure below is used for stippling. Given the optimal size of a | |
| # dot in a stipple pattern in the current user coordinate system, compute | |
| # the closest size that is an exact multiple of the device's pixel | |
| # size. This allows stipple patterns to be displayed without aliasing | |
| # effects. | |
| ps function EvenPixels { | |
| % Compute exact number of device pixels per stipple dot. | |
| dup 0 matrix currentmatrix dtransform | |
| dup mul exch dup mul add sqrt | |
| % Round to an integer, make sure the number is at least 1, and | |
| % compute user coord distance corresponding to this. | |
| dup round dup 1 lt {pop 1} if | |
| exch div mul | |
| } | |
| # width height string StippleFill -- | |
| # | |
| # Given a path already set up and a clipping region generated from it, | |
| # this procedure will fill the clipping region with a stipple pattern. | |
| # "String" contains a proper image description of the stipple pattern and | |
| # "width" and "height" give its dimensions. Each stipple dot is assumed to | |
| # be about one unit across in the current user coordinate system. This | |
| # procedure trashes the graphics state. | |
| ps function StippleFill { | |
| % The following code is needed to work around a NeWSprint bug. | |
| /tmpstip 1 index def | |
| % Change the scaling so that one user unit in user coordinates | |
| % corresponds to the size of one stipple dot. | |
| 1 EvenPixels dup scale | |
| % Compute the bounding box occupied by the path (which is now the | |
| % clipping region), and round the lower coordinates down to the | |
| % nearest starting point for the stipple pattern. Be careful about | |
| % negative numbers, since the rounding works differently on them. | |
| pathbbox | |
| 4 2 roll | |
| 5 index div dup 0 lt {1 sub} if cvi 5 index mul 4 1 roll | |
| 6 index div dup 0 lt {1 sub} if cvi 6 index mul 3 2 roll | |
| % Stack now: width height string y1 y2 x1 x2 | |
| % Below is a doubly-nested for loop to iterate across this area | |
| % in units of the stipple pattern size, going up columns then | |
| % across rows, blasting out a stipple-pattern-sized rectangle at | |
| % each position | |
| 6 index exch { | |
| 2 index 5 index 3 index { | |
| % Stack now: width height string y1 y2 x y | |
| gsave | |
| 1 index exch translate | |
| 5 index 5 index true matrix tmpstip imagemask | |
| grestore | |
| } for | |
| pop | |
| } for | |
| pop pop pop pop pop | |
| } | |
| # -- AdjustColor -- | |
| # | |
| # Given a color value already set for output by the caller, adjusts that | |
| # value to a grayscale or mono value if requested by the CL variable. | |
| ps function AdjustColor { | |
| CL 2 lt { | |
| currentgray | |
| CL 0 eq { | |
| .5 lt {0} {1} ifelse | |
| } if | |
| setgray | |
| } if | |
| } | |
| # x y strings spacing xoffset yoffset justify stipple DrawText -- | |
| # | |
| # This procedure does all of the real work of drawing text. The color and | |
| # font must already have been set by the caller, and the following | |
| # arguments must be on the stack: | |
| # | |
| # x, y - Coordinates at which to draw text. | |
| # strings - An array of strings, one for each line of the text item, in | |
| # order from top to bottom. | |
| # spacing - Spacing between lines. | |
| # xoffset - Horizontal offset for text bbox relative to x and y: 0 for | |
| # nw/w/sw anchor, -0.5 for n/center/s, and -1.0 for ne/e/se. | |
| # yoffset - Vertical offset for text bbox relative to x and y: 0 for | |
| # nw/n/ne anchor, +0.5 for w/center/e, and +1.0 for sw/s/se. | |
| # justify - 0 for left justification, 0.5 for center, 1 for right justify. | |
| # stipple - Boolean value indicating whether or not text is to be drawn in | |
| # stippled fashion. If text is stippled, function StippleText | |
| # must have been defined to call StippleFill in the right way. | |
| # | |
| # Also, when this procedure is invoked, the color and font must already | |
| # have been set for the text. | |
| ps function DrawText { | |
| /stipple exch def | |
| /justify exch def | |
| /yoffset exch def | |
| /xoffset exch def | |
| /spacing exch def | |
| /strings exch def | |
| % First scan through all of the text to find the widest line. | |
| /lineLength 0 def | |
| strings { | |
| cstringwidth pop | |
| dup lineLength gt {/lineLength exch def} {pop} ifelse | |
| newpath | |
| } forall | |
| % Compute the baseline offset and the actual font height. | |
| 0 0 moveto baselineSampler false charpath | |
| pathbbox dup /baseline exch def | |
| exch pop exch sub /height exch def pop | |
| newpath | |
| % Translate and rotate coordinates first so that the origin is at | |
| % the upper-left corner of the text's bounding box. Remember that | |
| % angle for rotating, and x and y for positioning are still on the | |
| % stack. | |
| translate | |
| rotate | |
| lineLength xoffset mul | |
| strings length 1 sub spacing mul height add yoffset mul translate | |
| % Now use the baseline and justification information to translate | |
| % so that the origin is at the baseline and positioning point for | |
| % the first line of text. | |
| justify lineLength mul baseline neg translate | |
| % Iterate over each of the lines to output it. For each line, | |
| % compute its width again so it can be properly justified, then | |
| % display it. | |
| strings { | |
| dup cstringwidth pop | |
| justify neg mul 0 moveto | |
| stipple { | |
| % The text is stippled, so turn it into a path and print | |
| % by calling StippledText, which in turn calls | |
| % StippleFill. Unfortunately, many Postscript interpreters | |
| % will get overflow errors if we try to do the whole | |
| % string at once, so do it a character at a time. | |
| gsave | |
| /char (X) def | |
| { | |
| dup type /stringtype eq { | |
| % This segment is a string. | |
| { | |
| char 0 3 -1 roll put | |
| currentpoint | |
| gsave | |
| char true charpath clip StippleText | |
| grestore | |
| char stringwidth translate | |
| moveto | |
| } forall | |
| } { | |
| % This segment is glyph name | |
| % Temporary override | |
| currentfont /Encoding get exch 1 exch put | |
| currentpoint | |
| gsave (\001) true charpath clip StippleText | |
| grestore | |
| (\001) stringwidth translate | |
| moveto | |
| } ifelse | |
| } forall | |
| grestore | |
| } {cstringshow} ifelse | |
| 0 spacing neg translate | |
| } forall | |
| } | |
| # Define the "TkPhoto" function variants, which are modified versions | |
| # of the original "transparentimage" function posted by [email protected] | |
| # (Ian Kemmish) to comp.lang.postscript. For a monochrome colorLevel | |
| # this is a slightly different version that uses the imagemask command | |
| # instead of image. | |
| ps function TkPhotoColor { | |
| gsave | |
| 32 dict begin | |
| /tinteger exch def | |
| /transparent 1 string def | |
| transparent 0 tinteger put | |
| /olddict exch def | |
| olddict /DataSource get dup type /filetype ne { | |
| olddict /DataSource 3 -1 roll | |
| 0 () /SubFileDecode filter put | |
| } { | |
| pop | |
| } ifelse | |
| /newdict olddict maxlength dict def | |
| olddict newdict copy pop | |
| /w newdict /Width get def | |
| /crpp newdict /Decode get length 2 idiv def | |
| /str w string def | |
| /pix w crpp mul string def | |
| /substrlen 2 w log 2 log div floor exp cvi def | |
| /substrs [ { | |
| substrlen string | |
| 0 1 substrlen 1 sub { | |
| 1 index exch tinteger put | |
| } for | |
| /substrlen substrlen 2 idiv def | |
| substrlen 0 eq {exit} if | |
| } loop ] def | |
| /h newdict /Height get def | |
| 1 w div 1 h div matrix scale | |
| olddict /ImageMatrix get exch matrix concatmatrix | |
| matrix invertmatrix concat | |
| newdict /Height 1 put | |
| newdict /DataSource pix put | |
| /mat [w 0 0 h 0 0] def | |
| newdict /ImageMatrix mat put | |
| 0 1 h 1 sub { | |
| mat 5 3 -1 roll neg put | |
| olddict /DataSource get str readstring pop pop | |
| /tail str def | |
| /x 0 def | |
| olddict /DataSource get pix readstring pop pop | |
| { | |
| tail transparent search dup /done exch not def | |
| {exch pop exch pop} if | |
| /w1 exch length def | |
| w1 0 ne { | |
| newdict /DataSource | |
| pix x crpp mul w1 crpp mul getinterval put | |
| newdict /Width w1 put | |
| mat 4 x neg put | |
| /x x w1 add def | |
| newdict image | |
| /tail tail w1 tail length w1 sub getinterval def | |
| } if | |
| done {exit} if | |
| tail substrs { | |
| anchorsearch {pop} if | |
| } forall | |
| /tail exch def | |
| tail length 0 eq {exit} if | |
| /x w tail length sub def | |
| } loop | |
| } for | |
| end | |
| grestore | |
| } | |
| ps function TkPhotoMono { | |
| gsave | |
| 32 dict begin | |
| /dummyInteger exch def | |
| /olddict exch def | |
| olddict /DataSource get dup type /filetype ne { | |
| olddict /DataSource 3 -1 roll | |
| 0 () /SubFileDecode filter put | |
| } { | |
| pop | |
| } ifelse | |
| /newdict olddict maxlength dict def | |
| olddict newdict copy pop | |
| /w newdict /Width get def | |
| /pix w 7 add 8 idiv string def | |
| /h newdict /Height get def | |
| 1 w div 1 h div matrix scale | |
| olddict /ImageMatrix get exch matrix concatmatrix | |
| matrix invertmatrix concat | |
| newdict /Height 1 put | |
| newdict /DataSource pix put | |
| /mat [w 0 0 h 0 0] def | |
| newdict /ImageMatrix mat put | |
| 0 1 h 1 sub { | |
| mat 5 3 -1 roll neg put | |
| 0.000 0.000 0.000 setrgbcolor | |
| olddict /DataSource get pix readstring pop pop | |
| newdict /DataSource pix put | |
| newdict imagemask | |
| 1.000 1.000 1.000 setrgbcolor | |
| olddict /DataSource get pix readstring pop pop | |
| newdict /DataSource pix put | |
| newdict imagemask | |
| } for | |
| end | |
| grestore | |
| } | |
| ps literal %%EndProlog | |
| } | |
| proc tk::ensure_psenc_is_loaded {} { | |
| } | |