home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / share / doc / smm / 20.termdesc / termdesc.me < prev    next >
Encoding:
Text File  |  1991-04-17  |  18.5 KB  |  709 lines

  1. .\" Copyright (c) 1986 The Regents of the University of California.
  2. .\" All rights reserved.
  3. .\"
  4. .\" Redistribution and use in source and binary forms, with or without
  5. .\" modification, are permitted provided that the following conditions
  6. .\" are met:
  7. .\" 1. Redistributions of source code must retain the above copyright
  8. .\"    notice, this list of conditions and the following disclaimer.
  9. .\" 2. Redistributions in binary form must reproduce the above copyright
  10. .\"    notice, this list of conditions and the following disclaimer in the
  11. .\"    documentation and/or other materials provided with the distribution.
  12. .\" 3. All advertising materials mentioning features or use of this software
  13. .\"    must display the following acknowledgement:
  14. .\"    This product includes software developed by the University of
  15. .\"    California, Berkeley and its contributors.
  16. .\" 4. Neither the name of the University nor the names of its contributors
  17. .\"    may be used to endorse or promote products derived from this software
  18. .\"    without specific prior written permission.
  19. .\"
  20. .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  21. .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22. .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23. .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  24. .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  25. .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  26. .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  27. .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  28. .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  29. .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  30. .\" SUCH DAMAGE.
  31. .\"
  32. .\"    @(#)termdesc.me    6.3 (Berkeley) 4/17/91
  33. .\"
  34. .+c
  35. .(l C
  36. .sz 14
  37. .b "Writing \s-2NROFF\s0 Terminal Descriptions"
  38. .sp
  39. .sz 10
  40. Eric Allman
  41. .i "Britton-Lee, Inc."
  42. .)l
  43. .sp 2
  44. .sh 1 "INTRODUCTION"
  45. .eh 'SMM:20-%''Writing NROFF Terminal Descriptions'
  46. .oh 'Writing NROFF Terminal Descriptions''SMM:20-%'
  47. .pp
  48. As of the Version 7 Phototypesetter release of \s-2UNIX\s0,*
  49. .(f
  50. *\s-2UNIX\s0 is a trademark of Bell Laboratories.
  51. .)f
  52. \s-2NROFF\s0 has supported terminal description files.
  53. These files describe the characteristics of available hard-copy printers.
  54. This document describes some of the details of how to write
  55. terminal description files.
  56. .pp
  57. .ul
  58. Disclaimer.
  59. This document describes the results of my personal experience.
  60. The effects of changing some of the fields from the norms
  61. may not be well defined,
  62. even if it seems like it
  63. .q ought
  64. to work given the descriptions herein.
  65. These tables are known to vary slightly
  66. for different versions of \s-2UNIX\s0.
  67. I have not seen \s-2UNIX\s0 3.0 at this time,
  68. so this may be irrelevant in that context.
  69. .sh 1 "GENERAL"
  70. .pp
  71. When \s-2NROFF\s0 starts up,
  72. it looks for a
  73. .b \-T
  74. flag describing the terminal type.
  75. For example,
  76. if the command line is given as
  77. .(b
  78. nroff \-T300s
  79. .)b
  80. \s-2NROFF\s0 prepares output for a
  81. .i DTC300S
  82. terminal.
  83. This terminal is described in the file
  84. /usr/lib/term/tab300s
  85. on most systems.
  86. .pp
  87. If no
  88. .b \-T
  89. flag is given,
  90. the terminal type
  91. .b 37
  92. (ASR 37 \*- a relic assumed for historical humor only)
  93. is assumed.
  94. .pp
  95. The terminal description table is a stripped
  96. .q \&.o
  97. file generated from a data structure,
  98. shown in figure one.
  99. .(z
  100. .hl
  101. .ta 8n 24n
  102. #define INCH 240    /* one inch in units */
  103. struct
  104. {
  105.     int bset;    /* stty bits to set */
  106.     int breset;    /* stty bits to reset */
  107.     int Hor;    /* horizontal resolution in units */
  108.     int Vert;    /* vertical resolution in units */
  109.     int Newline;    /* the distance a newline moves */
  110.     int Char;    /* the distance one char moves */
  111.     int Em;    /* size of an Em */
  112.     int Halfline;    /* the distance a halfline up/down moves */
  113.     int Adj;    /* default adjustment width */
  114.     char *twinit;    /* string to init the terminal */
  115.     char *twrest;    /* string to reset the terminal */
  116.     char *twnl;    /* string to send a newline (CR-LF) */
  117.     char *hlr;    /* half line reverse string */
  118.     char *hlf;    /* half line forward string */
  119.     char *flr;    /* full line reverse string */
  120.     char *bdon;    /* string to turn boldface on */
  121.     char *bdoff;    /* string to turn boldface off */
  122.     char *ploton;    /* string to turn plot on */
  123.     char *plotoff;    /* string to turn plot off */
  124.     char *up;    /* move up in plot mode */
  125.     char *down;    /* move down in plot mode */
  126.     char *right;    /* move right in plot mode */
  127.     char *left;    /* move left in plot mode */
  128.     char *codetab[256-32];  /* the codes to send for characters */
  129.     int zzz;    /* padding */
  130. };
  131. .sp
  132. .ce
  133. Figure 1 \*- the terminal descriptor data structure
  134. .hl
  135. .)z
  136. This structure can be dealt with in two sections:
  137. the terminal capability descriptor (everything to codetab),
  138. and the output descriptor.
  139. .sh 1 "TERMINAL CAPABILITIES"
  140. .pp
  141. The section of the data structure up to but excluding
  142. .i codetab
  143. describes the basic functions and setup requirements of the terminal.
  144. Distances are measured in
  145. .q units,
  146. which are 1/240 of an inch in \s-2NROFF\s0.
  147. In general, \s-2NROFF\s0 assumes that there is a
  148. .q "plot mode"
  149. on the terminal that allows you to move in small increments.
  150. A terminal has a resolution when in plot mode
  151. that is measured in units.
  152. This limits how well the terminal can simulate
  153. printing Greek and special characters.
  154. .sh 2 "bset, breset"
  155. .pp
  156. These fields define bits in a vanilla stty(2) word
  157. (sg_flags) to
  158. set and clear respectively when
  159. \s-2NROFF\s0 starts.
  160. They are normally represented in octal,
  161. although you could include <sgtty.h>.
  162. [Note:
  163. these fields are presumably different
  164. in \s-2UNIX\s0 3.0.]
  165. .sh 2 "Hor, Vert"
  166. .pp
  167. These represent the horizontal and vertical resolution respectively
  168. of the terminal when it is in plot mode.
  169. They are given in units.
  170. .sh 2 "Newline"
  171. .pp
  172. This field describes the distance that the
  173. .i twnl
  174. field (below) will move the paper;
  175. it is literally the size of a newline.
  176. .sh 2 "Char"
  177. .pp
  178. This is the distance that a regular character
  179. will move the print head to the right.
  180. .sh 2 "Em"
  181. .pp
  182. The
  183. .q em
  184. is a typesetting unit,
  185. approximately equal to the width of the letter
  186. .q m .
  187. In \s-2NROFF\s0 driver tables,
  188. this must be the distance a space or backspace character will move
  189. the carriage.
  190. .sh 2 "Halfline"
  191. .pp
  192. This is the distance that the
  193. .i hlr
  194. or
  195. .i hlf
  196. strings move the print head
  197. (reverse or forward respectively).
  198. .sh 2 "Adj"
  199. .pp
  200. This is the resolution that \s-2NROFF\s0 will normally adjust
  201. your lines to horizontally.
  202. Typically this is the same as Char.
  203. If the
  204. .b \-e
  205. flag is given to \s-2NROFF\s0,
  206. output resolution will be to the full device resolution.
  207. .sh 2 "twinit, twrest"
  208. .pp
  209. These strings are output when \s-2NROFF\s0 starts and finishes
  210. respectively.
  211. .sh 2 "twnl"
  212. .pp
  213. This string is output when \s-2NROFF\s0 wants to do a carriage return.
  214. Typically it will be
  215. .q "\er\en" .
  216. Remember,
  217. the terminal will normally have CRMOD turned off
  218. when this is set.
  219. .sh 2 "hlr, hlf"
  220. .pp
  221. These strings are sent to move the carriage back or forward
  222. one half line respectively.
  223. The actual amount that they moved is defined by
  224. Halfline.
  225. The carriage should be left in the same column.
  226. .sh 2 "flr"
  227. .pp
  228. The string to send to move a full line backwards.
  229. This should leave the carriage in the same column.
  230. .sh 2 "bdon, bdoff"
  231. .pp
  232. These strings are sent to turn boldface mode on and off
  233. respectively.
  234. Normally this will set the terminal into overstrike mode.
  235. If they are not given,
  236. some newer versions of \s-2NROFF\s0 will output the characters
  237. four times to force overstriking.
  238. .sh 2 "ploton, plotoff"
  239. .pp
  240. These strings turn plot mode on and off respectively.
  241. In plot mode,
  242. the carriage moves a very small amount,
  243. and only under specific control;
  244. i.e., characters do not automatically cause any carriage motion.
  245. .sh 2 "up, down, right, left"
  246. .pp
  247. These strings are only output in plot mode.
  248. They should move the carriage up, down, left, and right
  249. respectively;
  250. they will move the carriage a distance of Hor or Vert
  251. as appropriate.
  252. .sh 2 "An Example"
  253. .pp
  254. Consider the following table describing a
  255. DTC300S:
  256. .(b
  257. .ta 1.5i
  258. /*bset*/    0,
  259. /*breset*/    0177420,
  260. /*Hor*/    INCH/60,
  261. /*Vert*/    INCH/48,
  262. /*Newline*/    INCH/6,
  263. /*Char*/    INCH/10,
  264. /*Em*/    INCH/10,
  265. /*Halfline*/    INCH/12,
  266. /*Adj*/    INCH/10,
  267. /*twinit*/    "\e033\e006",
  268. /*twrest*/    "\e033\e006",
  269. /*twnl*/    "\e015\en",
  270. /*hlr*/    "\e033H",
  271. /*hlf*/    "\e033h",
  272. /*flr*/    "\e032",
  273. /*bdon*/    "",
  274. /*bdoff*/    "",
  275. /*ploton*/    "\e006",
  276. /*plotoff*/    "\e033\e006",
  277. /*up*/    "\e032",
  278. /*down*/    "\en",
  279. /*right*/    " ",
  280. /*left*/    "\eb",
  281. .)b
  282. This describes a terminal that should have the
  283. ALLDELAY and CRMOD bits turned off,
  284. 1/60" horizontal and 1/48" vertical resolution,
  285. six lines per inch and ten characters per inch, including space,
  286. halfline takes 1/12" (one half of a full line),
  287. should send ESC-control-F to initialize and reset the terminal
  288. (to insure that it is in a normal state),
  289. takes <CR><LF> to give a newline,
  290. <ESC>H to move back one half line,
  291. <ESC>h to move forward one half line,
  292. control-Z to move back one full line,
  293. has no bold mode,
  294. takes control-F to enter plot mode
  295. and escape-control-F to exit plot mode,
  296. and uses control-Z, linefeed, space, and backspace
  297. to move up, down, right, and left respectively
  298. when in plot mode.
  299. .sh 1 "CHARACTER DESCRIPTIONS"
  300. .pp
  301. There is one character description
  302. for each possible character to be output.
  303. The easiest way to find what character corresponds to what position
  304. is to edit an existing character table;
  305. one is given in the appendix as an example.
  306. Character representations are represented as a string per
  307. character.
  308. .pp
  309. The first character of the string
  310. is interpreted as a binary number
  311. giving the number of character spaces taken up
  312. by this character.
  313. For regular characters
  314. this will always be
  315. .q "\e001" ,
  316. but Greek and special characters can take more.
  317. If the 0200 bit is set in this character,
  318. it indicates that the character should be underlined
  319. if we are in italic (underline) mode.
  320. Thus,
  321. alphabetic and numeric descriptions
  322. will begin
  323. .q "\e201" .
  324. .pp
  325. The remainder of the string is output to represent the character.
  326. If the first output character
  327. (i.e.,
  328. the second character in the total string)
  329. has the 0200 bit set,
  330. the character will be output in plot mode
  331. so that fancy characters can be built up from existing characters.
  332. If necessary,
  333. the
  334. .q "\e200"
  335. character can be used as a null character
  336. to force \s-2NROFF\s0 to set the terminal into plot mode.
  337. All characters without the 0200 bit are output literally;
  338. characters with the 0200 bit are not output,
  339. but are used to indicate local carriage movement.
  340. The next two bits (0140 bits) represent direction:
  341. .(b
  342. .ta \w'0200  'u
  343. 0200    right
  344. 0240    left
  345. 0300    down
  346. 0340    up
  347. .)b
  348. The bottom five bits represent a distance in terminal resolution units.
  349. This is rather confusing,
  350. but the examples should make this much more clear.
  351. .sh 2 "Some Examples"
  352. .pp
  353. The following examples are from the DTC300S table:
  354. .(b
  355. .ta 2i
  356. "\e001 ",    /*space*/
  357. "\e001=",    /*=*/
  358. "\e201A",    /*A*/
  359. .)b
  360. These entries show that all of these characters
  361. take one character width when output.
  362. The letter A is underlined in italic mode,
  363. but neither space nor equal sign is.
  364. .(b
  365. .ta 2i
  366. "\e001o\eb+",    /*bullet*/
  367. "\e002[]",    /*square*/
  368. "\e202f\^i",    /*f\^i*/
  369. .)b
  370. The bullet character takes only one character position,
  371. but is created by outputing the letter
  372. .q o
  373. and overstriking it with a plus sign.
  374. The square character is approximated
  375. with two brackets;
  376. it takes two full character positions
  377. when output.
  378. The
  379. .q fi
  380. ligature
  381. is produced using the letters
  382. .q f
  383. and
  384. .q i
  385. (surprise!);
  386. it is underlined in italic mode.
  387. .(b
  388. "\e001\e241c\e202(\e241", /*alpha*/
  389. "\e001\e200B\e242\e302|\e202\e342", /*beta*/
  390. .)b
  391. The letters alpha and beta both take a single character position.
  392. The alpha is output by entering plot mode,
  393. moving left 1 terminal unit (1/60" if you recall),
  394. outputing the letter
  395. .q c ,
  396. moving right 2/60",
  397. outputing a left parenthesis,
  398. and finally moving left 1/60";
  399. it is critical that the net space moved
  400. be zero both horizontally and vertically.
  401. The beta first has a dummy 0200 character
  402. to enter plot mode but not output anything.
  403. It then outputs a
  404. .q B ,
  405. moves left 2/60",
  406. moves down 2/48",
  407. outputs a vertical bar
  408. (which is designed to partically overstrike the left edge of the
  409. .q B ,
  410. and finally move right 2/60" and up 2/48"
  411. to set us back to the right place.
  412. .sh 1 "INSTALLATION"
  413. .pp
  414. To install a terminal descriptor,
  415. make it up by editing an existing terminal descriptor.
  416. Assuming your terminal name is
  417. .i term ,
  418. call your new descriptor
  419. .b tab \c
  420. .i term \c
  421. .b .c .
  422. Then, execute the following commands:
  423. .(b
  424. cc -c tabterm.c
  425. strip tabterm.c
  426. cp tabterm.o /usr/lib/term/tabterm
  427. .)b
  428. The directory /usr/src/cmd/troff/term
  429. typically has a shell file to do this.
  430. .+c
  431. .ce 2
  432. APPENDIX
  433. .sp
  434. A Sample Table
  435. .sp 3
  436. This table describes the DTC 300S.
  437. .(l
  438. .re
  439. #define INCH 240
  440. /*
  441. DASI300S
  442. nroff driving tables
  443. width and code tables
  444. */
  445.  
  446. struct {
  447.     int bset;
  448.     int breset;
  449.     int Hor;
  450.     int Vert;
  451.     int Newline;
  452.     int Char;
  453.     int Em;
  454.     int Halfline;
  455.     int Adj;
  456.     char *twinit;
  457.     char *twrest;
  458.     char *twnl;
  459.     char *hlr;
  460.     char *hlf;
  461.     char *flr;
  462.     char *bdon;
  463.     char *bdoff;
  464.     char *ploton;
  465.     char *plotoff;
  466.     char *up;
  467.     char *down;
  468.     char *right;
  469.     char *left;
  470.     char *codetab[256-32];
  471.     int zzz;
  472.     } t = {
  473. /*bset*/    0,
  474. /*breset*/    0177420,
  475. /*Hor*/        INCH/60,
  476. /*Vert*/    INCH/48,
  477. /*Newline*/    INCH/6,
  478. /*Char*/    INCH/10,
  479. /*Em*/        INCH/10,
  480. /*Halfline*/    INCH/12,
  481. /*Adj*/        INCH/10,
  482. /*twinit*/    "\e033\e006",
  483. /*twrest*/    "\e033\e006",
  484. /*twnl*/    "\e015\en",
  485. /*hlr*/        "\e033H",
  486. /*hlf*/        "\e033h",
  487. /*flr*/        "\e032",
  488. /*bdon*/    "",
  489. /*bdoff*/    "",
  490. /*ploton*/    "\e006",
  491. /*plotoff*/    "\e033\e006",
  492. /*up*/        "\e032",
  493. /*down*/    "\en",
  494. /*right*/    " ",
  495. /*left*/    "\eb",
  496.     /*codetab*/
  497. "\e001 ",    /*space*/
  498. "\e001!",    /*!*/
  499. "\e001\e"",    /*"*/
  500. "\e001#",    /*#*/
  501. "\e001$",    /*$*/
  502. "\e001%",    /*%*/
  503. "\e001&",    /*&*/
  504. "\e001'",    /*' close*/
  505. "\e001(",    /*(*/
  506. "\e001)",    /*)*/
  507. "\e001*",    /***/
  508. "\e001+",    /*+*/
  509. "\e001,",    /*,*/
  510. "\e001-",    /*- hyphen*/
  511. "\e001.",    /*.*/
  512. "\e001/",    /*/*/
  513. "\e2010",    /*0*/
  514. "\e2011",    /*1*/
  515. "\e2012",    /*2*/
  516. "\e2013",    /*3*/
  517. "\e2014",    /*4*/
  518. "\e2015",    /*5*/
  519. "\e2016",    /*6*/
  520. "\e2017",    /*7*/
  521. "\e2018",    /*8*/
  522. "\e2019",    /*9*/
  523. "\e001:",    /*:*/
  524. "\e001;",    /*;*/
  525. "\e001<",    /*<*/
  526. "\e001=",    /*=*/
  527. "\e001>",    /*>*/
  528. "\e001?",    /*?*/
  529. "\e001@",    /*@*/
  530. "\e201A",    /*A*/
  531. "\e201B",    /*B*/
  532. "\e201C",    /*C*/
  533. "\e201D",    /*D*/
  534. "\e201E",    /*E*/
  535. "\e201F",    /*F*/
  536. "\e201G",    /*G*/
  537. "\e201H",    /*H*/
  538. "\e201I",    /*I*/
  539. "\e201J",    /*J*/
  540. "\e201K",    /*K*/
  541. "\e201L",    /*L*/
  542. "\e201M",    /*M*/
  543. "\e201N",    /*N*/
  544. "\e201O",    /*O*/
  545. "\e201P",    /*P*/
  546. "\e201Q",    /*Q*/
  547. "\e201R",    /*R*/
  548. "\e201S",    /*S*/
  549. "\e201T",    /*T*/
  550. "\e201U",    /*U*/
  551. "\e201V",    /*V*/
  552. "\e201W",    /*W*/
  553. "\e201X",    /*X*/
  554. "\e201Y",    /*Y*/
  555. "\e201Z",    /*Z*/
  556. "\e001[",    /*[*/
  557. "\e001\e\e",    /*\e*/
  558. "\e001]",    /*]*/
  559. "\e001^",    /*^*/
  560. "\e001_",    /*_ dash*/
  561. "\e001`",    /*` open*/
  562. "\e201a",    /*a*/
  563. "\e201b",    /*b*/
  564. "\e201c",    /*c*/
  565. "\e201d",    /*d*/
  566. "\e201e",    /*e*/
  567. "\e201f",    /*f*/
  568. "\e201g",    /*g*/
  569. "\e201h",    /*h*/
  570. "\e201i",    /*i*/
  571. "\e201j",    /*j*/
  572. "\e201k",    /*k*/
  573. "\e201l",    /*l*/
  574. "\e201m",    /*m*/
  575. "\e201n",    /*n*/
  576. "\e201o",    /*o*/
  577. "\e201p",    /*p*/
  578. "\e201q",    /*q*/
  579. "\e201r",    /*r*/
  580. "\e201s",    /*s*/
  581. "\e201t",    /*t*/
  582. "\e201u",    /*u*/
  583. "\e201v",    /*v*/
  584. "\e201w",    /*w*/
  585. "\e201x",    /*x*/
  586. "\e201y",    /*y*/
  587. "\e201z",    /*z*/
  588. "\e001{",    /*{*/
  589. "\e001|",    /*|*/
  590. "\e001}",    /*}*/
  591. "\e001~",    /*~*/
  592. "\e000\e0",    /*narrow sp*/
  593. "\e001-",     /*hyphen*/
  594. "\e001o\eb+",     /*bullet*/
  595. "\e002[]",     /*square*/
  596. "\e001-",     /*3/4 em*/
  597. "\e001_",     /*rule*/
  598. "\e000\e0",     /*1/4*/
  599. "\e000\e0",     /*1/2*/
  600. "\e000\e0",     /*3/4*/
  601. "\e001-",     /*minus*/
  602. "\e202f\^i",     /*fi*/
  603. "\e202f\^l",     /*fl*/
  604. "\e202f\^f",     /*ff*/
  605. "\e203f\^f\^i",     /*ffi*/
  606. "\e203f\^f\^l",     /*ffl*/
  607. "\e000\e0",     /*degree*/
  608. "\e000\e0",     /*dagger*/
  609. "\e000\e0",     /*section*/
  610. "\e001'",     /*foot mark*/
  611. "\e001'",     /*acute accent*/
  612. "\e001`",     /*grave accent*/
  613. "\e001_",     /*underrule*/
  614. "\e001/",     /*slash (longer)*/
  615. "\e000\e0",    /*half narrow space*/
  616. "\e001 ",    /*unpaddable space*/
  617. "\e001\e241c\e202(\e241", /*alpha*/
  618. "\e001\e200B\e242\e302|\e202\e342", /*beta*/
  619. "\e001\e200)\e201/\e241", /*gamma*/
  620. "\e001\e200o\e342<\e302", /*delta*/
  621. "\e001<\eb-", /*epsilon*/
  622. "\e001\e200c\e201\e301,\e241\e343<\e302", /*zeta*/
  623. "\e001\e200n\e202\e302|\e242\e342", /*eta*/
  624. "\e001O\eb-", /*theta*/
  625. "\e001i",     /*iota*/
  626. "\e001k",     /*kappa*/
  627. "\e001\e200\e\e\e304\e241'\e301\e241'\e345\e202", /*lambda*/
  628. "\e001\e200u\e242,\e202", /*mu*/
  629. "\e001\e241(\e203/\e242", /*nu*/
  630. "\e001\e200c\e201\e301,\e241\e343c\e241\e301`\e201\e301", /*xi*/
  631. "\e001o",     /*omicron*/
  632. "\e001\e341-\e303\e"\e301\e"\e343", /*pi*/
  633. "\e001\e200o\e242\e302|\e342\e202", /*rho*/
  634. "\e001\e200o\e301\e202~\e341\e242", /*sigma*/
  635. "\e001\e200t\e301\e202~\e243~\e201\e341", /*tau*/
  636. "\e001v",     /*upsilon*/
  637. "\e001o\eb/", /*phi*/
  638. "\e001x",     /*chi*/
  639. "\e001\e200/-\e302\e202'\e244'\e202\e342", /*psi*/
  640. "\e001\e241u\e203u\e242", /*omega*/
  641. "\e001\e242|\e202\e343-\e303\e202`\e242", /*Gamma*/
  642. "\e001\e242/\e303-\e204-\e343\e\e\e242", /*Delta*/
  643. "\e001O\eb=", /*Theta*/
  644. "\e001\e242/\e204\e\e\e242", /*Lambda*/
  645. "\e000\e0",     /*Xi*/
  646. "\e001\e242[]\e204[]\e242\e343-\e303", /*Pi*/
  647. "\e001\e200>\e302-\e345-\e303", /*Sigma*/
  648. "\e000\e0",     /**/
  649. "\e001Y",     /*Upsilon*/
  650. "\e001o\eb[\eb]", /*Phi*/
  651. "\e001\e200[]-\e302\e202'\e244`\e202\e342", /*Psi*/
  652. "\e001\e200O\e302\e241-\e202-\e241\e342", /*Omega*/
  653. "\e000\e0",     /*square root*/
  654. "\e000\e0",     /*terminal sigma*/
  655. "\e000\e0",     /*root en*/
  656. "\e001>\eb_",     /*>=*/
  657. "\e001<\eb_",     /*<=*/
  658. "\e001=\eb_",     /*identically equal*/
  659. "\e001-",     /*equation minus*/
  660. "\e001=\eb~",     /*approx =*/
  661. "\e000\e0",     /*approximates*/
  662. "\e001=\eb/",     /*not equal*/
  663. "\e002->",     /*right arrow*/
  664. "\e002<-",     /*left arrow*/
  665. "\e001|\eb^",     /*up arrow*/
  666. "\e000\e0",     /*down arrow*/
  667. "\e001=",     /*equation equal*/
  668. "\e001x",     /*multiply*/
  669. "\e001/",     /*divide*/
  670. "\e001+\eb_",     /*plus-minus*/
  671. "\e001U",     /*cup (union)*/
  672. "\e000\e0",     /*cap (intersection)*/
  673. "\e000\e0",     /*subset of*/
  674. "\e000\e0",     /*superset of*/
  675. "\e000\e0",     /*improper subset*/
  676. "\e000\e0",     /* improper superset*/
  677. "\e002oo",     /*infinity*/
  678. "\e001\e200o\e201\e301`\e241\e341`\e241\e341`\e201\e301", /*partial derivative*/
  679. "\e001\e242\e\e\e343-\e204-\e303/\e242", /*gradient*/
  680. "\e001\e200-\e202\e341,\e301\e242", /*not*/
  681. "\e001\e200|'\e202`\e243\e306'\e241`\e202\e346",    /*integral sign*/
  682. "\e000\e0",     /*proportional to*/
  683. "\e000\e0",     /*empty set*/
  684. "\e000\e0",     /*member of*/
  685. "\e001+",     /*equation plus*/
  686. "\e001r\ebO",     /*registered*/
  687. "\e001c\ebO",     /*copyright*/
  688. "\e001|",     /*box rule */
  689. "\e001c\eb/",     /*cent sign*/
  690. "\e000\e0",     /*dbl dagger*/
  691. "\e000\e0",     /*right hand*/
  692. "\e001*",     /*left hand*/
  693. "\e001*",     /*math * */
  694. "\e000\e0",     /*bell system sign*/
  695. "\e001|",     /*or (was star)*/
  696. "\e001O",     /*circle*/
  697. "\e001|",     /*left top (of big curly)*/
  698. "\e001|",     /*left bottom*/
  699. "\e001|",     /*right top*/
  700. "\e001|",     /*right bot*/
  701. "\e001|",     /*left center of big curly bracket*/
  702. "\e001|",     /*right center of big curly bracket*/
  703. "\e001|",    /*bold vertical*/
  704. "\e001|",    /*left floor (left bot of big sq bract)*/
  705. "\e001|",    /*right floor (rb of ")*/
  706. "\e001|",    /*left ceiling (lt of ")*/
  707. "\e001|"};    /*right ceiling (rt of ")*/
  708. .)l
  709.