home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume12 / postscript / part03 < prev    next >
Encoding:
Internet Message Format  |  1987-11-01  |  52.9 KB

  1. Subject:  v12i052:  A PostScript interpreter, Part03/18
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rs@uunet.UU.NET
  5.  
  6. Submitted-by: Crispin Goswell <caag@vd.rl.ac.uk>
  7. Posting-number: Volume 12, Issue 52
  8. Archive-name: postscript/part03
  9.  
  10.  
  11. #! /bin/sh
  12. # This is a shell archive.  Remove anything before this line, then unpack
  13. # it by saving it into a file and typing "sh file".  To overwrite existing
  14. # files, type "sh file -c".  You can also feed this as standard input via
  15. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  16. # will see the following message at the end:
  17. #        "End of archive 3 (of 18)."
  18. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  19. if test -f 'doc/postscript.1' -a "${1}" != "-c" ; then 
  20.   echo shar: Will not clobber existing file \"'doc/postscript.1'\"
  21. else
  22. echo shar: Extracting \"'doc/postscript.1'\" \(6501 characters\)
  23. sed "s/^X//" >'doc/postscript.1' <<'END_OF_FILE'
  24. X.na
  25. X.TH POSTSCRIPT 1 Rutherford
  26. X.SH NAME
  27. Xpostscript \- PostScript interpreter
  28. X.SH SYNOPSIS
  29. X.B
  30. XPS [ -isc - ] files . . .
  31. X.br
  32. Xpostscript [ -isc - ] files . . .
  33. X.br
  34. Xviewer
  35. X.SH DESCRIPTION
  36. X.I PS
  37. Xis an interpreter for the PostScript language.
  38. XThe language is intended for driving laser printers, but this
  39. Ximplementation is for previewing graphics on a suitable device or
  40. Xfor more general programming.
  41. X.PP
  42. XThe implementation conforms to the PostScript Language Manual as
  43. Xclosely as possible.
  44. X.PP
  45. X.I Postscript
  46. Xis a version of the interpreter which will talk through a pair of pipes to
  47. Xa viewer program, possibly running on a different machine.
  48. X.PP
  49. X.I Postscript looks for the environment variable POSTSCRIPTDEVICE, which may contain
  50. Xthe name of
  51. Xa two-way device or a command with a vertical bar at the front.
  52. XThis is ``|viewer'' by default, and may be something like ``|rsh workstation viewer''.
  53. X.I Postscript
  54. Xmay be run on a compute server with no display, and
  55. X.I viewer
  56. Xon a workstation.
  57. X.PP
  58. XTo create a window of A4 size, the A4 command may be used.
  59. XIf this is specified on the command line (e.g. ``PS -c A4''), postscript will not bother to
  60. Xread its standard input unless told to do so with ``-''.
  61. X.SH INVOCATION
  62. XWhen
  63. X.I postscript
  64. Xstarts up it performs the following actions:
  65. X.PP
  66. XIt reads a number of definitions from a standard library file.
  67. XThis file is
  68. X.I psrc
  69. Xin the directory given as the environment variable
  70. X.I POSTSCRIPTLIB
  71. X(defaults to
  72. X.IR /usr/lib/postscript ).
  73. XThis contains definitions which are part of the PostScript language
  74. Xand can be defined in PostScript.
  75. XIn particular, it reads a procedure called
  76. X.B executive
  77. Xwhich is the top level interpreter used when
  78. X.I postscript
  79. Xis running interactively.
  80. X.PP
  81. XNext it reads a file called
  82. X.I .postscript
  83. Xfrom the users HOME directory.
  84. XThis may contain any useful startup routines that are always wanted.
  85. X.PP
  86. XNext any arguments are processed off the command line.
  87. XThese can be a mixture of options and files, and are executed in order.
  88. XThe options are as follows:
  89. X.IP -c
  90. XCauses the next argument to be treated as an executable postscript string.
  91. X.IP -i
  92. XCauses postscript to behave as if its standard input is a terminal,
  93. Xeven if it isn't.
  94. XThis involves executing the
  95. X.B executive
  96. Xdefinition from the library.
  97. XIf this is absent and the standard input is not a terminal and there are
  98. Xno files or
  99. X-c options on the command line, the standard input will be treated as an
  100. Xordinary file.
  101. X.IP -s
  102. XCauses the standard input to be read, even if there are files or commands
  103. Xon the command line.
  104. X.IP -
  105. XSame as -s.
  106. X.SH CACHING
  107. X.PP
  108. XThis implementation does caching of fonts to disk.
  109. XOnce a font has been selected and used,
  110. X.B savecurrentfont
  111. Xmay be used (without any arguments) to save the current font into the
  112. Xdisk cache.
  113. XIt saves only those glyphs which have been cached so far, and will fail
  114. Xif the
  115. X.I cache
  116. Xdirectory does not contain sub-directories matching the relevant
  117. Xfiles in the
  118. X.I font
  119. Xdirectory.
  120. X.PP
  121. XLoading from the disk cache is automatic - the system is tolerant about
  122. Xabsent cached fonts, and simply reads the whole font specification instead.
  123. XThe intention is that the system should be lazy, so that it doesn't do work
  124. Xunnecessarily.
  125. X.SH FONT MAPPING
  126. X.PP
  127. XMost installations will have a number of fonts which they may wish to use.
  128. XMost
  129. X.Ps
  130. Xfiles will contain font names such as ``Times-Roman'' which are
  131. Xinconvenient to change.
  132. X.Ps
  133. Xthus contains a dictionary in which name pairs can be placed.
  134. XThis dictionary called
  135. X.B FontMap
  136. Xis searched when a font is chosen and the font name is replaced by the value
  137. Xassociated with its dictionary entry if one is present;
  138. Xotherwise the name is not changed.
  139. XThe reason for this is that a previewer gives only an approximation, so it is sometimes useful
  140. Xto use differing fonts, even if the widths are slightly wrong.
  141. X.PP
  142. XAlso, during startup, a file called
  143. X.B font-map
  144. Xin the
  145. X.Ps
  146. Xlibrary gets
  147. X.B run.
  148. XThis is assumed to contain default mappings, and may typically be empty.
  149. X.SH NEW OPERATORS
  150. X.PP
  151. XA number of non-standard operators have been added to this version of
  152. Xthe interpreter.
  153. X.PP
  154. X.B savecurrentfont
  155. Xhas been described already.
  156. X.PP
  157. X.B setstrokemethod
  158. Xand
  159. X.B currentstrokemethod
  160. Xallow thin strokes to be done with line drawing rather than the area fill used for
  161. Xother lines.
  162. XThe option is an integer.
  163. X.B 0
  164. Xturns off this feature,
  165. X.B 1
  166. Xturns it on and is the default.
  167. X.PP
  168. X.B A4
  169. Xand
  170. X.B A5
  171. Xgenerate new windows of the suggested sizes.
  172. XThe old window is deleted unless it is being held in a gsave context.
  173. X.SH ASSUMPTIONS
  174. XThere are a number of Assumptions that have been made in the
  175. Xabsence of more specific documentation.
  176. X.IP
  177. XThat Integer and Real values are only equivalent mathematically,
  178. Xand are normally
  179. Xdistinct except where specified in the manual.
  180. XThe manual requires equivalence in the following places:
  181. X.RS
  182. X.IP
  183. XThe arguments of the arithmetic and mathematical operators.
  184. X.IP
  185. XThe arguments of the relational operators (including
  186. X.B eq
  187. Xand
  188. X.BR ne ).
  189. X.RE
  190. X.IP    
  191. XIn particular integers and reals are distinguished as dictionary keys.
  192. X.IP
  193. XThat
  194. X.B cvrs
  195. Xis not expected to convert reals to any base.
  196. X.IP
  197. XThat the output from
  198. X.B ==
  199. Xand
  200. X.B pstack
  201. Xcan look however we want them to.
  202. X.IP
  203. XThat %stdout and %stderr should not ever be closed - the manual is specific
  204. Xabout %stdin, but not the other two.
  205. X.IP
  206. XThat
  207. X.B stop
  208. Xcan exit a
  209. X.B run
  210. Xcontext.
  211. X.IP
  212. XThat 
  213. X.B flushfile
  214. Xshould close an input stream.
  215. X.B Read
  216. Xwill close its file if it reads nothing,
  217. Xbut the manual doesn't say whether other operators should.
  218. XIt is assumed so.
  219. X.IP
  220. XThat access restrictions on files are implemented using the
  221. Xaccess restrictions on objects.
  222. X.SH FILES
  223. X\&~/.postscript \- profile command source
  224. X.br
  225. X$POSTSCRIPTLIB/psrc \- library of postscript material.
  226. X$POSTSCRIPTLIB/font-map \- library of postscript material.
  227. X.PP
  228. XThe
  229. X.I POSTSCRIPTLIB
  230. Xdirectory may contain:
  231. X.IP psrc
  232. XThe POSTSCRIPT initialisation library.
  233. X.IP font
  234. Xa directory containing font headers, which are executable POSTSCRIPT describing how to load
  235. Xfonts.
  236. X.IP fonts
  237. Xa directory containing font information.
  238. X.IP font-map
  239. Xa file containing default font name mappings.
  240. X.IP cache
  241. Xa directory containing a corresponding set of cached fonts.
  242. X.SH SEE ALSO
  243. X.I The PostScript Language Manual,
  244. X.I Adobe Systems Incorporated, 1984.
  245. X.SH AUTHOR
  246. XCrispin Goswell.
  247. XTony Williams provided important guidance.
  248. X.SH BUGS
  249. XNo ``virtual memory'' \- dummy operators which do a gsave and grestore and provided.
  250. X.PP
  251. XNo access protection, the operators are there, but they don't protect anything.
  252. END_OF_FILE
  253. if test 6501 -ne `wc -c <'doc/postscript.1'`; then
  254.     echo shar: \"'doc/postscript.1'\" unpacked with wrong size!
  255. fi
  256. # end of 'doc/postscript.1'
  257. fi
  258. if test -f 'postscript/demos/mooreform.ps' -a "${1}" != "-c" ; then 
  259.   echo shar: Will not clobber existing file \"'postscript/demos/mooreform.ps'\"
  260. else
  261. echo shar: Extracting \"'postscript/demos/mooreform.ps'\" \(6182 characters\)
  262. sed "s/^X//" >'postscript/demos/mooreform.ps' <<'END_OF_FILE'
  263. X%!
  264. X% moore business forms -- synthetic "image" and complex clipping
  265. X
  266. X/tms /Times-Roman findfont def
  267. X/tmb /Times-Bold findfont def
  268. X/sws /Helvetica findfont def
  269. X/t22 tmb 22 scalefont def
  270. X/s24 sws 24 scalefont def
  271. X/s10 sws 10 scalefont def
  272. X/s12 sws 12 scalefont def
  273. X/s6 sws 6 scalefont def
  274. X
  275. X/lightorange {.9 setgray}def
  276. X/medorange {.5 setgray}def
  277. X/darkbrown {0 setgray}def
  278. X/white {1 setgray}def
  279. X/inch {72 mul}def
  280. X
  281. X%do rounded borders
  282. X/borders
  283. X  {medorange
  284. X   12 194 moveto 0 194 0 750 8 arcto
  285. X   0 750 450 750 8 arcto
  286. X   450 750 450 606 8 arcto
  287. X   450 606 862 606 4 arcto
  288. X   862 606 862 194 8 arcto
  289. X   862 194 428 194 8 arcto
  290. X   428 194 428 88 4 arcto
  291. X   428 88 716 88 4 arcto
  292. X   716 88 716 0 8 arcto
  293. X   716 0 0 0 8 arcto
  294. X   0 0 0 72 8 arcto
  295. X   0 72 lineto
  296. X   0 194 12 194 8 arcto
  297. X   12 194 lineto
  298. X   4 setlinewidth stroke
  299. X   716 44 moveto
  300. X   716 88 862 88 8 arcto
  301. X   862 88 862 0 8 arcto
  302. X   862 0 716 0 8 arcto
  303. X   716 0 716 43 8 arcto
  304. X   closepath
  305. X   4 setlinewidth stroke
  306. X
  307. X %Start the inner border
  308. X   darkbrown
  309. X   /dx 6 def /dy 6 def
  310. X   12 194 dy add moveto 0 dx add 194 dy add 0 dx add 750 dy sub 4 arcto
  311. X   0 dx add 750 dy sub 450 dx sub 750 dy sub 4 arcto
  312. X   450 dx sub 750 dy sub 450 dx sub 606 dy sub 4 arcto
  313. X   450 dx sub 606 dy sub 862 dx sub 606 dy sub 8 arcto
  314. X   862 dx sub 606 dy sub 862 dx sub 194 dy add 4 arcto
  315. X   862 dx sub 194 dy add  428 dx sub 194 dy add 4 arcto
  316. X   428 dx sub 194 dy add  428 dx sub 88 dy sub 8 arcto
  317. X   428 dx sub 88 dy sub 716 dx sub  88 dy sub 8 arcto
  318. X   716 dx sub 88 dy sub 716 dx sub 0 dy add 4 arcto
  319. X   716 dx sub 0 dy add  0 dx add 0 dy add 4 arcto
  320. X   0 dx add 0 dy add 0 dx add 72  4 arcto
  321. X   0 dx add 72 lineto
  322. X   0 dx add 194 dy sub 12 194 dy sub 4 arcto
  323. X   12 194 dy sub lineto
  324. X   4 setlinewidth stroke
  325. X }def
  326. X
  327. X/bx                % make a box
  328. X {/ury exch def /urx exch def /lly exch def /llx exch def
  329. X  llx lly moveto llx ury lineto urx ury lineto urx lly lineto closepath
  330. X }def
  331. X
  332. X/labelbox
  333. X {/pts exch def
  334. X  /tary exch def
  335. X  /lcnt tary length def
  336. X  /ury exch def /urx exch def /lly exch def /llx exch def
  337. X  darkbrown
  338. X  llx lly moveto llx ury lineto urx ury lineto urx lly lineto closepath
  339. X  fill
  340. X  white
  341. X  /st ury ury lly sub lcnt pts mul sub 2 div sub pts .75 mul sub def
  342. X  tary
  343. X   {dup stringwidth pop 2 div urx llx add 2 div exch sub st moveto show
  344. X    /st st pts sub def
  345. X   }forall
  346. X  }def
  347. X
  348. X%given cx y array of strings, then center text.
  349. X/ctext
  350. X {/pts exch def
  351. X  /tary exch def
  352. X  /lcnt tary length def
  353. X  /ty exch def /ctx exch def
  354. X  darkbrown
  355. X  tary
  356. X   {dup stringwidth pop 2 div ctx exch sub ty moveto show
  357. X    /ty ty pts sub def
  358. X   }forall
  359. X  }def
  360. X
  361. X%Build the procedures necessary to implement the fountain.
  362. X/fountainstring 256 string def
  363. X0 1 255 
  364. X  {fountainstring exch dup
  365. X   255 div 180 mul cos neg 2 div .5 add 128 mul 127 add cvi
  366. X   put
  367. X  } for
  368. X
  369. X/rfountainstring 256 string def
  370. X0 1 255
  371. X  {rfountainstring exch dup
  372. X   255 div 180 mul cos neg 2 div .5 add 128 mul 128 exch sub 127 add cvi put
  373. X  }for
  374. X
  375. X/fount %take string llx lly urx ury
  376. X {/fnt exch def
  377. X  /ury exch def /urx exch def
  378. X  /lly exch def /llx exch def
  379. X  gsave llx lly translate 
  380. X  urx llx sub ury lly sub scale
  381. X  1 256 8 [1 0 0 -256 0 256] {fnt} image
  382. X  grestore
  383. X  }def
  384. X
  385. X/fountain
  386. X {fountainstring fount}def
  387. X
  388. X/rfountain
  389. X {rfountainstring fount}def
  390. X
  391. X%This is the logo for the moore business form example.
  392. X/slogo
  393. X {18 18 scale
  394. X  slogo1 slogo2
  395. X  1 18 div dup scale
  396. X }def
  397. X
  398. X/slogo2
  399. X  {0 .3 moveto
  400. X  2 1 3 2.3 3 5 curveto
  401. X  3 10.5 lineto
  402. X  5.1 10.5 lineto
  403. X  5.1 5 lineto
  404. X  5.1 2.5 2 .3 0 .3 curveto closepath
  405. X  2 0 moveto
  406. X  5 .5 6 1 7 3 curveto
  407. X  8 5 9 6 11 6 curveto
  408. X  11 1 7 0 4 0 curveto closepath
  409. X }def
  410. X
  411. X/slogo1
  412. X {0 .3 moveto
  413. X  0 10.5 lineto
  414. X  2.3 10.5 lineto
  415. X  2.3 5 lineto
  416. X  2.3 2.3 1 1 0 .3 curveto closepath
  417. X  0 .2 moveto
  418. X  3 .2 5.5 2.5 5.6 5 curveto
  419. X  5.7 7.5 7 10.5 11 10.5 curveto
  420. X  11 7 lineto
  421. X  9 7 8 6 7 4 curveto
  422. X  6 2 5 0 0 0 curveto closepath
  423. X }def
  424. X
  425. X
  426. X% now do it
  427. X
  428. X8.5 inch 1 inch  translate 90 rotate
  429. X36 40 translate
  430. X.7 .7 scale
  431. X
  432. Xborders
  433. X
  434. Xs6 setfont
  435. Xlightorange
  436. X10 630 442 742 bx fill
  437. X10 600 66 624 bx fill
  438. X67 600 124 624 bx fill
  439. X124 600 168 624 [(Date)]6 labelbox
  440. Xlightorange
  441. X168 600 232 624 bx fill
  442. X232 600 340 624 [(Customer's Order No.)]6 labelbox
  443. Xlightorange
  444. X341 600 442 624 bx fill
  445. X%new set
  446. Xdarkbrown
  447. X10 568 102 592 [(PART)(NUMBER)] 6 labelbox
  448. X103 568 441 592 [(DESCRIPTION)] 6 labelbox
  449. X442 568 513 580 [(ORDERED)] 6 labelbox
  450. X514 568 585 580 [(SHIPPED)] 6 labelbox
  451. X586 568 657 580 [(BALANCE DUE)] 6 labelbox
  452. X442 581 657 592 [(QUANTITY)] 6 labelbox
  453. X658 568 729 592 [(UNIT)(PRICE)] 6 labelbox
  454. X730 568 772 592 [(%)(DISCOUNT)] 6 labelbox
  455. X773 568 852 592 [(AMOUNT)] 6 labelbox
  456. X%new set (main body)
  457. Xgsave
  458. X103 208 441 568 bx 
  459. X514 208 585 568 bx 
  460. X658 208 729 568 bx 
  461. X773 208 852 568 bx 
  462. Xclip
  463. X103 208 852 568 rfountain
  464. Xgrestore
  465. Xgsave
  466. X10 208 102 568 bx 
  467. X2.5 inch 4 inch translate slogo -2.5 inch -4 inch translate
  468. X442 208 513 568 bx 
  469. X586 208 657 568 bx 
  470. X730 208 772 568 bx 
  471. Xclip
  472. X10 208 772 568 fountain
  473. Xgrestore
  474. Xgsave
  475. X10 14 translate
  476. Xlightorange 0 0 100 143 bx fill  0 143 100 167 [(SUB TOTAL)] 6 labelbox
  477. X102 0 translate
  478. Xlightorange 0 0 100 143 bx fill  0 143 100 167 [(TAX)] 6 labelbox
  479. X102 0 translate
  480. Xlightorange 0 0 100 143 bx fill  0 143 100 167 [(FREIGHT)] 6 labelbox
  481. X102 0 translate
  482. Xlightorange 0 0 100 143 bx fill  0 143 100 167 [(TOTAL)] 6 labelbox
  483. Xgrestore
  484. Xgsave
  485. X10 14 translate
  486. X5{0 24 moveto 403 24 lineto 1 setlinewidth stroke 0 24 translate}repeat
  487. Xgrestore
  488. Xgsave
  489. X44 672 translate
  490. X5.4 5.4 scale
  491. Xdarkbrown slogo1 fill
  492. Xmedorange slogo2 fill
  493. Xgrestore
  494. Xdarkbrown
  495. Xt22 setfont
  496. X124 698 moveto
  497. X(J. Sinclair Electronics Inc.)show
  498. Xs10 setfont
  499. X124 680 moveto
  500. X(2972 CONEY ISLAND DRIVE SO.)show
  501. X124 670 moveto
  502. X(SAN RAPHAEL, CALIFORNIA 98568)show
  503. X124 650 moveto
  504. X(Telephone (609) 992-4293)show
  505. X445 65 moveto
  506. X(Received in good condition by:)show
  507. X445 20 moveto
  508. Xs24 setfont 
  509. X(X)show 3.25 72 mul 0 rlineto 1 setlinewidth stroke
  510. Xlightorange
  511. X722 16 856 50 bx fill
  512. Xs12 setfont
  513. X722 50 856 72 [(TOTAL DUE)] 12 labelbox
  514. X789 140 [(PAY THIS)(AMOUNT)] 12 ctext
  515. Xlightorange
  516. X742 124 moveto 836 124 lineto 789 100 lineto closepath fill
  517. X8.6 inch 10.25 inch
  518. X[(This business form)
  519. X(was composed and set)
  520. X(by PostScript(TM))
  521. X(from a master provided by)
  522. X(Moore Business Forms.)]
  523. X12 ctext
  524. X
  525. Xshowpage
  526. X
  527. END_OF_FILE
  528. if test 6182 -ne `wc -c <'postscript/demos/mooreform.ps'`; then
  529.     echo shar: \"'postscript/demos/mooreform.ps'\" unpacked with wrong size!
  530. fi
  531. # end of 'postscript/demos/mooreform.ps'
  532. fi
  533. if test -f 'postscript/fonts/Sans/greek.r' -a "${1}" != "-c" ; then 
  534.   echo shar: Will not clobber existing file \"'postscript/fonts/Sans/greek.r'\"
  535. else
  536. echo shar: Extracting \"'postscript/fonts/Sans/greek.r'\" \(5539 characters\)
  537. sed "s/^X//" >'postscript/fonts/Sans/greek.r' <<'END_OF_FILE'
  538. XCharStrings
  539. X/627
  540. X<C93B
  541. X473C
  542. X453E
  543. X4440
  544. X4343
  545. X4346
  546. X4448
  547. X4649
  548. X4849
  549. X4A48
  550. X4D45
  551. X4F42
  552. X513E
  553. X523B
  554. XC93B
  555. X4B3B
  556. X4C3C
  557. X4D3E
  558. X4F46
  559. X5048
  560. X5149
  561. X5249
  562. X>
  563. Xput
  564. XMetrics
  565. X/627
  566. X[-3
  567. X21]
  568. Xput
  569. XCharStrings
  570. X/628
  571. X<CC34
  572. X4A35
  573. X4837
  574. X463B
  575. X453E
  576. X4442
  577. X4348
  578. X4250
  579. XCC34
  580. X4E34
  581. X5036
  582. X5039
  583. X4F3B
  584. X4E3C
  585. X4C3D
  586. X493D
  587. XC93D
  588. X4B3E
  589. X4D40
  590. X4E42
  591. X4E45
  592. X4D47
  593. X4C48
  594. X4A49
  595. X4849
  596. X4648
  597. X4547
  598. X4444
  599. X>
  600. Xput
  601. XMetrics
  602. X/628
  603. X[3
  604. X19]
  605. Xput
  606. XCharStrings
  607. X/629
  608. X<C13E
  609. X433C
  610. X453B
  611. X463B
  612. X483C
  613. X493D
  614. X4A40
  615. X4A44
  616. X4949
  617. XD13B
  618. X503E
  619. X4F40
  620. X4949
  621. X474D
  622. X4650
  623. X>
  624. Xput
  625. XMetrics
  626. X/629
  627. X[-1
  628. X19]
  629. Xput
  630. XCharStrings
  631. X/630
  632. X<CB3B
  633. X483B
  634. X463C
  635. X443E
  636. X4341
  637. X4344
  638. X4447
  639. X4548
  640. X4749
  641. X4949
  642. X4B48
  643. X4D46
  644. X4E43
  645. X4E40
  646. X4D3D
  647. X4B3B
  648. X4939
  649. X4837
  650. X4835
  651. X4934
  652. X4B34
  653. X4D35
  654. X4F37
  655. X>
  656. Xput
  657. XMetrics
  658. X/630
  659. X[3
  660. X18]
  661. Xput
  662. XCharStrings
  663. X/631
  664. X<CD3D
  665. X4C3C
  666. X4A3B
  667. X473B
  668. X453C
  669. X453E
  670. X4640
  671. X4941
  672. XC941
  673. X4542
  674. X4344
  675. X4346
  676. X4448
  677. X4649
  678. X4949
  679. X4B48
  680. X4D46
  681. X>
  682. Xput
  683. XMetrics
  684. X/631
  685. X[-3
  686. X16]
  687. Xput
  688. XCharStrings
  689. X/632
  690. X<CA34
  691. X4835
  692. X4736
  693. X4737
  694. X4838
  695. X4B39
  696. X4E39
  697. XCE39
  698. X4A3B
  699. X473D
  700. X4440
  701. X4343
  702. X4345
  703. X4447
  704. X4649
  705. X494B
  706. X4A4D
  707. X4A4F
  708. X4950
  709. X4750
  710. X464E
  711. X>
  712. Xput
  713. XMetrics
  714. X/632
  715. X[4
  716. X15]
  717. Xput
  718. XCharStrings
  719. X/633
  720. X<C13F
  721. X423D
  722. X443B
  723. X463B
  724. X473C
  725. X473E
  726. X4642
  727. X4449
  728. XC642
  729. X483E
  730. X4A3C
  731. X4C3B
  732. X4E3B
  733. X503D
  734. X5040
  735. X4F45
  736. X4C50
  737. X>
  738. Xput
  739. XMetrics
  740. X/633
  741. X[-1
  742. X20]
  743. Xput
  744. XCharStrings
  745. X/634
  746. X<C13F
  747. X423D
  748. X443B
  749. X463B
  750. X473C
  751. X473E
  752. X4643
  753. X4646
  754. X4748
  755. X4849
  756. X4A49
  757. X4C48
  758. X4E45
  759. X4F43
  760. X5040
  761. X513B
  762. X5138
  763. X5035
  764. X4E34
  765. X4C34
  766. X4B36
  767. X4B38
  768. X4C3B
  769. X4E3E
  770. X5040
  771. X5342
  772. X>
  773. Xput
  774. XMetrics
  775. X/634
  776. X[1
  777. X21]
  778. Xput
  779. XCharStrings
  780. X/635
  781. X<C63B
  782. X4442
  783. X4346
  784. X4348
  785. X4449
  786. X4649
  787. X4847
  788. X4945
  789. X>
  790. Xput
  791. XMetrics
  792. X/635
  793. X[-1
  794. X11]
  795. Xput
  796. XCharStrings
  797. X/636
  798. X<C63B
  799. X4249
  800. XD03C
  801. X4F3B
  802. X4E3B
  803. X4C3C
  804. X4840
  805. X4641
  806. X4541
  807. XC541
  808. X4742
  809. X4843
  810. X4A48
  811. X4B49
  812. X4C49
  813. X4D48
  814. X>
  815. Xput
  816. XMetrics
  817. X/636
  818. X[-2
  819. X18]
  820. Xput
  821. XCharStrings
  822. X/637
  823. X<C134
  824. X4334
  825. X4535
  826. X4636
  827. X4E49
  828. XC83B
  829. X4249
  830. X>
  831. Xput
  832. XMetrics
  833. X/637
  834. X[4
  835. X16]
  836. Xput
  837. XCharStrings
  838. X/638
  839. X<C73B
  840. X4150
  841. XC63F
  842. X4544
  843. X4547
  844. X4749
  845. X4949
  846. X4B48
  847. X4D46
  848. X4F42
  849. XD13B
  850. X4F42
  851. X4E46
  852. X4E48
  853. X4F49
  854. X5149
  855. X5347
  856. X5445
  857. X>
  858. Xput
  859. XMetrics
  860. X/638
  861. X[-1
  862. X21]
  863. Xput
  864. XCharStrings
  865. X/639
  866. X<C33B
  867. X463B
  868. X4541
  869. X4446
  870. X4349
  871. XD03B
  872. X4F3E
  873. X4E40
  874. X4C43
  875. X4946
  876. X4648
  877. X4349
  878. X>
  879. Xput
  880. XMetrics
  881. X/639
  882. X[-3
  883. X18]
  884. Xput
  885. XCharStrings
  886. X/640
  887. X<CA34
  888. X4835
  889. X4736
  890. X4737
  891. X4838
  892. X4B39
  893. X4E39
  894. XCB39
  895. X483A
  896. X463B
  897. X453D
  898. X453F
  899. X4741
  900. X4A42
  901. X4C42
  902. XCA42
  903. X4643
  904. X4444
  905. X4346
  906. X4348
  907. X454A
  908. X494C
  909. X4A4D
  910. X4A4F
  911. X4850
  912. X4650
  913. X>
  914. Xput
  915. XMetrics
  916. X/640
  917. X[4
  918. X16]
  919. Xput
  920. XCharStrings
  921. X/641
  922. X<C83B
  923. X463C
  924. X443E
  925. X4341
  926. X4344
  927. X4447
  928. X4548
  929. X4749
  930. X4949
  931. X4B48
  932. X4D46
  933. X4E43
  934. X4E40
  935. X4D3D
  936. X4C3C
  937. X4A3B
  938. X483B
  939. X>
  940. Xput
  941. XMetrics
  942. X/641
  943. X[-3
  944. X17]
  945. Xput
  946. XCharStrings
  947. X/642
  948. X<C93B
  949. X4549
  950. XCE3B
  951. X4F41
  952. X5046
  953. X5149
  954. XC23E
  955. X443C
  956. X473B
  957. X543B
  958. X>
  959. Xput
  960. XMetrics
  961. X/642
  962. X[-2
  963. X22]
  964. Xput
  965. XCharStrings
  966. X/643
  967. X<C441
  968. X4444
  969. X4547
  970. X4648
  971. X4849
  972. X4A49
  973. X4C48
  974. X4E46
  975. X4F43
  976. X4F40
  977. X4E3D
  978. X4D3C
  979. X4B3B
  980. X493B
  981. X473C
  982. X453E
  983. X4441
  984. X4050
  985. X>
  986. Xput
  987. XMetrics
  988. X/643
  989. X[0
  990. X18]
  991. Xput
  992. XCharStrings
  993. X/644
  994. X<D23B
  995. X483B
  996. X463C
  997. X443E
  998. X4341
  999. X4344
  1000. X4447
  1001. X4548
  1002. X4749
  1003. X4949
  1004. X4B48
  1005. X4D46
  1006. X4E43
  1007. X4E40
  1008. X4D3D
  1009. X4C3C
  1010. X4A3B
  1011. X>
  1012. Xput
  1013. XMetrics
  1014. X/644
  1015. X[-3
  1016. X20]
  1017. Xput
  1018. XCharStrings
  1019. X/645
  1020. X<CB3B
  1021. X4849
  1022. XC23E
  1023. X443C
  1024. X473B
  1025. X523B
  1026. X>
  1027. Xput
  1028. XMetrics
  1029. X/645
  1030. X[-2
  1031. X20]
  1032. Xput
  1033. XCharStrings
  1034. X/646
  1035. X<C13F
  1036. X423D
  1037. X443B
  1038. X463B
  1039. X473C
  1040. X473E
  1041. X4544
  1042. X4547
  1043. X4749
  1044. X4949
  1045. X4C48
  1046. X4E46
  1047. X5042
  1048. X513E
  1049. X513B
  1050. X>
  1051. Xput
  1052. XMetrics
  1053. X/646
  1054. X[-1
  1055. X20]
  1056. Xput
  1057. XCharStrings
  1058. X/647
  1059. X<C83C
  1060. X463D
  1061. X443F
  1062. X4342
  1063. X4345
  1064. X4447
  1065. X4548
  1066. X4749
  1067. X4A49
  1068. X4D48
  1069. X5046
  1070. X5243
  1071. X5340
  1072. X533D
  1073. X513B
  1074. X4F3B
  1075. X4D3D
  1076. X4B41
  1077. X4946
  1078. X4650
  1079. X>
  1080. Xput
  1081. XMetrics
  1082. X/647
  1083. X[-3
  1084. X22]
  1085. Xput
  1086. XCharStrings
  1087. X/648
  1088. X<C23B
  1089. X443B
  1090. X463D
  1091. X4C4E
  1092. X4E50
  1093. X5050
  1094. XD13B
  1095. X503D
  1096. X4E40
  1097. X444B
  1098. X424E
  1099. X4150
  1100. X>
  1101. Xput
  1102. XMetrics
  1103. X/648
  1104. X[-1
  1105. X18]
  1106. Xput
  1107. XCharStrings
  1108. X/649
  1109. X<D034
  1110. X4850
  1111. XC13F
  1112. X423D
  1113. X443B
  1114. X463B
  1115. X473C
  1116. X473E
  1117. X4643
  1118. X4646
  1119. X4748
  1120. X4949
  1121. X4B49
  1122. X4E48
  1123. X5046
  1124. X5243
  1125. X543E
  1126. X553B
  1127. X>
  1128. Xput
  1129. XMetrics
  1130. X/649
  1131. X[0
  1132. X23]
  1133. Xput
  1134. XCharStrings
  1135. X/650
  1136. X<C83B
  1137. X463C
  1138. X443F
  1139. X4342
  1140. X4345
  1141. X4448
  1142. X4549
  1143. X4749
  1144. X4948
  1145. X4B45
  1146. XCC41
  1147. X4B45
  1148. X4C48
  1149. X4D49
  1150. X4F49
  1151. X5148
  1152. X5345
  1153. X5442
  1154. X543F
  1155. X533C
  1156. X523B
  1157. X>
  1158. Xput
  1159. XMetrics
  1160. X/650
  1161. X[-3
  1162. X23]
  1163. Xput
  1164. XCharStrings
  1165. X/527
  1166. X<C934
  1167. X4149
  1168. XC934
  1169. X5149
  1170. XC442
  1171. X4E42
  1172. X>
  1173. Xput
  1174. XMetrics
  1175. X/527
  1176. X[3
  1177. X18]
  1178. Xput
  1179. XCharStrings
  1180. X/528
  1181. X<C434
  1182. X4449
  1183. XC434
  1184. X4D34
  1185. X5035
  1186. X5136
  1187. X5238
  1188. X523A
  1189. X513C
  1190. X503D
  1191. X4D3E
  1192. XC43E
  1193. X4D3E
  1194. X503F
  1195. X5140
  1196. X5242
  1197. X5245
  1198. X5147
  1199. X5048
  1200. X4D49
  1201. X4449
  1202. X>
  1203. Xput
  1204. XMetrics
  1205. X/528
  1206. X[1
  1207. X21]
  1208. Xput
  1209. XCharStrings
  1210. X/529
  1211. X<C434
  1212. X4449
  1213. XC434
  1214. X5034
  1215. X>
  1216. Xput
  1217. XMetrics
  1218. X/529
  1219. X[2
  1220. X17]
  1221. Xput
  1222. XCharStrings
  1223. X/530
  1224. X<C934
  1225. X4149
  1226. XC934
  1227. X5149
  1228. XC149
  1229. X5149
  1230. X>
  1231. Xput
  1232. XMetrics
  1233. X/530
  1234. X[3
  1235. X18]
  1236. Xput
  1237. XCharStrings
  1238. X/531
  1239. X<C434
  1240. X4449
  1241. XC434
  1242. X5134
  1243. XC43E
  1244. X4C3E
  1245. XC449
  1246. X5149
  1247. X>
  1248. Xput
  1249. XMetrics
  1250. X/531
  1251. X[2
  1252. X19]
  1253. Xput
  1254. XCharStrings
  1255. X/532
  1256. X<D134
  1257. X4349
  1258. XC334
  1259. X5134
  1260. XC349
  1261. X5149
  1262. X>
  1263. Xput
  1264. XMetrics
  1265. X/532
  1266. X[2
  1267. X20]
  1268. Xput
  1269. XCharStrings
  1270. X/533
  1271. X<C434
  1272. X4449
  1273. XD234
  1274. X5249
  1275. XC43E
  1276. X523E
  1277. X>
  1278. Xput
  1279. XMetrics
  1280. X/533
  1281. X[1
  1282. X22]
  1283. Xput
  1284. XCharStrings
  1285. X/534
  1286. X<C934
  1287. X4735
  1288. X4537
  1289. X4439
  1290. X433C
  1291. X4341
  1292. X4444
  1293. X4546
  1294. X4748
  1295. X4949
  1296. X4D49
  1297. X4F48
  1298. X5146
  1299. X5244
  1300. X5341
  1301. X533C
  1302. X5239
  1303. X5137
  1304. X4F35
  1305. X4D34
  1306. X4934
  1307. XC83E
  1308. X4E3E
  1309. X>
  1310. Xput
  1311. XMetrics
  1312. X/534
  1313. X[1
  1314. X22]
  1315. Xput
  1316. XCharStrings
  1317. X/535
  1318. X<C434
  1319. X4449
  1320. X>
  1321. Xput
  1322. XMetrics
  1323. X/535
  1324. X[8
  1325. X8]
  1326. Xput
  1327. XCharStrings
  1328. X/536
  1329. X<C434
  1330. X4449
  1331. XD234
  1332. X4442
  1333. XC93D
  1334. X5249
  1335. X>
  1336. Xput
  1337. XMetrics
  1338. X/536
  1339. X[1
  1340. X21]
  1341. Xput
  1342. XCharStrings
  1343. X/537
  1344. X<C934
  1345. X4149
  1346. XC934
  1347. X5149
  1348. X>
  1349. Xput
  1350. XMetrics
  1351. X/537
  1352. X[3
  1353. X18]
  1354. Xput
  1355. XCharStrings
  1356. X/538
  1357. X<C434
  1358. X4449
  1359. XC434
  1360. X4C49
  1361. XD434
  1362. X4C49
  1363. XD434
  1364. X5449
  1365. X>
  1366. Xput
  1367. XMetrics
  1368. X/538
  1369. X[0
  1370. X24]
  1371. Xput
  1372. XCharStrings
  1373. X/539
  1374. X<C434
  1375. X4449
  1376. XC434
  1377. X5249
  1378. XD234
  1379. X5249
  1380. X>
  1381. Xput
  1382. XMetrics
  1383. X/539
  1384. X[1
  1385. X22]
  1386. Xput
  1387. XCharStrings
  1388. X/540
  1389. X<C234
  1390. X5034
  1391. XC63E
  1392. X4C3E
  1393. XC249
  1394. X5049
  1395. X>
  1396. Xput
  1397. XMetrics
  1398. X/540
  1399. X[3
  1400. X18]
  1401. Xput
  1402. XCharStrings
  1403. X/541
  1404. X<C934
  1405. X4735
  1406. X4537
  1407. X4439
  1408. X433C
  1409. X4341
  1410. X4444
  1411. X4546
  1412. X4748
  1413. X4949
  1414. X4D49
  1415. X4F48
  1416. X5146
  1417. X5244
  1418. X5341
  1419. X533C
  1420. X5239
  1421. X5137
  1422. X4F35
  1423. X4D34
  1424. X4934
  1425. X>
  1426. Xput
  1427. XMetrics
  1428. X/541
  1429. X[1
  1430. X22]
  1431. Xput
  1432. XCharStrings
  1433. X/542
  1434. X<C434
  1435. X4449
  1436. XD234
  1437. X5249
  1438. XC434
  1439. X5234
  1440. X>
  1441. Xput
  1442. XMetrics
  1443. X/542
  1444. X[1
  1445. X22]
  1446. Xput
  1447. XCharStrings
  1448. X/543
  1449. X<C434
  1450. X4449
  1451. XC434
  1452. X4D34
  1453. X5035
  1454. X5136
  1455. X5238
  1456. X523B
  1457. X513D
  1458. X503E
  1459. X4D3F
  1460. X443F
  1461. X>
  1462. Xput
  1463. XMetrics
  1464. X/543
  1465. X[1
  1466. X21]
  1467. Xput
  1468. XCharStrings
  1469. X/544
  1470. X<C234
  1471. X493E
  1472. X4249
  1473. XC234
  1474. X5034
  1475. XC249
  1476. X5049
  1477. X>
  1478. Xput
  1479. XMetrics
  1480. X/544
  1481. X[3
  1482. X18]
  1483. Xput
  1484. XCharStrings
  1485. X/545
  1486. X<C834
  1487. X4849
  1488. XC134
  1489. X4F34
  1490. X>
  1491. Xput
  1492. XMetrics
  1493. X/545
  1494. X[4
  1495. X16]
  1496. Xput
  1497. XCharStrings
  1498. X/546
  1499. X<C239
  1500. X4237
  1501. X4335
  1502. X4434
  1503. X4634
  1504. X4735
  1505. X4837
  1506. X493B
  1507. X4949
  1508. XD039
  1509. X5037
  1510. X4F35
  1511. X4E34
  1512. X4C34
  1513. X4B35
  1514. X4A37
  1515. X493B
  1516. X>
  1517. Xput
  1518. XMetrics
  1519. X/546
  1520. X[3
  1521. X18]
  1522. Xput
  1523. XCharStrings
  1524. X/547
  1525. X<CA34
  1526. X4A49
  1527. XC839
  1528. X453A
  1529. X443B
  1530. X433D
  1531. X4340
  1532. X4442
  1533. X4543
  1534. X4844
  1535. X4C44
  1536. X4F43
  1537. X5042
  1538. X5140
  1539. X513D
  1540. X503B
  1541. X4F3A
  1542. X4C39
  1543. X4839
  1544. X>
  1545. Xput
  1546. XMetrics
  1547. X/547
  1548. X[2
  1549. X20]
  1550. Xput
  1551. XCharStrings
  1552. X/548
  1553. X<C334
  1554. X5149
  1555. XC349
  1556. X5134
  1557. X>
  1558. Xput
  1559. XMetrics
  1560. X/548
  1561. X[2
  1562. X20]
  1563. Xput
  1564. XCharStrings
  1565. X/549
  1566. X<CB34
  1567. X4B49
  1568. XC23A
  1569. X433A
  1570. X443B
  1571. X453F
  1572. X4641
  1573. X4742
  1574. X4A43
  1575. X4C43
  1576. X4F42
  1577. X5041
  1578. X513F
  1579. X523B
  1580. X533A
  1581. X543A
  1582. X>
  1583. Xput
  1584. XMetrics
  1585. X/549
  1586. X[1
  1587. X22]
  1588. Xput
  1589. XCharStrings
  1590. X/550
  1591. X<C349
  1592. X4749
  1593. X4442
  1594. X433E
  1595. X433A
  1596. X4437
  1597. X4635
  1598. X4934
  1599. X4B34
  1600. X4E35
  1601. X5037
  1602. X513A
  1603. X513E
  1604. X5042
  1605. X4D49
  1606. X5149
  1607. X>
  1608. Xput
  1609. XMetrics
  1610. X/550
  1611. X[2
  1612. X20]
  1613. Xput
  1614. END_OF_FILE
  1615. if test 5539 -ne `wc -c <'postscript/fonts/Sans/greek.r'`; then
  1616.     echo shar: \"'postscript/fonts/Sans/greek.r'\" unpacked with wrong size!
  1617. fi
  1618. # end of 'postscript/fonts/Sans/greek.r'
  1619. fi
  1620. if test -f 'postscript/fonts/sans/roman.r' -a "${1}" != "-c" ; then 
  1621.   echo shar: Will not clobber existing file \"'postscript/fonts/sans/roman.r'\"
  1622. else
  1623. echo shar: Extracting \"'postscript/fonts/sans/roman.r'\" \(5642 characters\)
  1624. sed "s/^X//" >'postscript/fonts/sans/roman.r' <<'END_OF_FILE'
  1625. XCharStrings
  1626. X/1
  1627. X<C53B
  1628. X4144
  1629. XC53B
  1630. X4944
  1631. XC341
  1632. X4741
  1633. X>
  1634. Xput
  1635. XMetrics
  1636. X/1
  1637. X[0
  1638. X10]
  1639. Xput
  1640. XCharStrings
  1641. X/2
  1642. X<C23B
  1643. X4244
  1644. XC23B
  1645. X463B
  1646. X483C
  1647. X483E
  1648. X463F
  1649. XC23F
  1650. X463F
  1651. X4840
  1652. X4843
  1653. X4644
  1654. X4244
  1655. X>
  1656. Xput
  1657. XMetrics
  1658. X/2
  1659. X[0
  1660. X10]
  1661. Xput
  1662. XCharStrings
  1663. X/3
  1664. X<C93C
  1665. X473B
  1666. X453B
  1667. X433C
  1668. X423E
  1669. X4241
  1670. X4343
  1671. X4544
  1672. X4744
  1673. X4943
  1674. X>
  1675. Xput
  1676. XMetrics
  1677. X/3
  1678. X[0
  1679. X11]
  1680. Xput
  1681. XCharStrings
  1682. X/4
  1683. X<C23B
  1684. X4244
  1685. XC23B
  1686. X453B
  1687. X473C
  1688. X483E
  1689. X4841
  1690. X4743
  1691. X4544
  1692. X4244
  1693. X>
  1694. Xput
  1695. XMetrics
  1696. X/4
  1697. X[0
  1698. X10]
  1699. Xput
  1700. XCharStrings
  1701. X/5
  1702. X<C23B
  1703. X4244
  1704. XC23B
  1705. X483B
  1706. XC23F
  1707. X463F
  1708. XC244
  1709. X4844
  1710. X>
  1711. Xput
  1712. XMetrics
  1713. X/5
  1714. X[0
  1715. X10]
  1716. Xput
  1717. XCharStrings
  1718. X/6
  1719. X<C23B
  1720. X4244
  1721. XC23B
  1722. X483B
  1723. XC23F
  1724. X463F
  1725. X>
  1726. Xput
  1727. XMetrics
  1728. X/6
  1729. X[0
  1730. X9]
  1731. Xput
  1732. XCharStrings
  1733. X/7
  1734. X<C93C
  1735. X473B
  1736. X453B
  1737. X433C
  1738. X423E
  1739. X4241
  1740. X4343
  1741. X4544
  1742. X4744
  1743. X4943
  1744. X4940
  1745. XC640
  1746. X4940
  1747. X>
  1748. Xput
  1749. XMetrics
  1750. X/7
  1751. X[0
  1752. X11]
  1753. Xput
  1754. XCharStrings
  1755. X/8
  1756. X<C23B
  1757. X4244
  1758. XC83B
  1759. X4844
  1760. XC23F
  1761. X483F
  1762. X>
  1763. Xput
  1764. XMetrics
  1765. X/8
  1766. X[0
  1767. X10]
  1768. Xput
  1769. XCharStrings
  1770. X/9
  1771. X<C23B
  1772. X4244
  1773. X>
  1774. Xput
  1775. XMetrics
  1776. X/9
  1777. X[3
  1778. X4]
  1779. Xput
  1780. XCharStrings
  1781. X/10
  1782. X<C53B
  1783. X4542
  1784. X4444
  1785. X4244
  1786. X4142
  1787. X4141
  1788. X>
  1789. Xput
  1790. XMetrics
  1791. X/10
  1792. X[1
  1793. X7]
  1794. Xput
  1795. XCharStrings
  1796. X/11
  1797. X<C23B
  1798. X4244
  1799. XC83B
  1800. X4241
  1801. XC43F
  1802. X4844
  1803. X>
  1804. Xput
  1805. XMetrics
  1806. X/11
  1807. X[0
  1808. X10]
  1809. Xput
  1810. XCharStrings
  1811. X/12
  1812. X<C23B
  1813. X4244
  1814. XC244
  1815. X4844
  1816. X>
  1817. Xput
  1818. XMetrics
  1819. X/12
  1820. X[0
  1821. X9]
  1822. Xput
  1823. XCharStrings
  1824. X/13
  1825. X<C23B
  1826. X4244
  1827. XC23B
  1828. X4644
  1829. XCA3B
  1830. X4644
  1831. XCA3B
  1832. X4A44
  1833. X>
  1834. Xput
  1835. XMetrics
  1836. X/13
  1837. X[-1
  1838. X12]
  1839. Xput
  1840. XCharStrings
  1841. X/14
  1842. X<C23B
  1843. X4244
  1844. XC23B
  1845. X4844
  1846. XC83B
  1847. X4844
  1848. X>
  1849. Xput
  1850. XMetrics
  1851. X/14
  1852. X[0
  1853. X10]
  1854. Xput
  1855. XCharStrings
  1856. X/15
  1857. X<C53B
  1858. X433C
  1859. X423E
  1860. X4241
  1861. X4343
  1862. X4544
  1863. X4644
  1864. X4843
  1865. X4941
  1866. X493E
  1867. X483C
  1868. X463B
  1869. X453B
  1870. X>
  1871. Xput
  1872. XMetrics
  1873. X/15
  1874. X[0
  1875. X11]
  1876. Xput
  1877. XCharStrings
  1878. X/16
  1879. X<C23B
  1880. X4244
  1881. XC23B
  1882. X463B
  1883. X483C
  1884. X483F
  1885. X4640
  1886. X4240
  1887. X>
  1888. Xput
  1889. XMetrics
  1890. X/16
  1891. X[0
  1892. X10]
  1893. Xput
  1894. XCharStrings
  1895. X/17
  1896. X<C53B
  1897. X433C
  1898. X423E
  1899. X4241
  1900. X4343
  1901. X4544
  1902. X4644
  1903. X4843
  1904. X4941
  1905. X493E
  1906. X483C
  1907. X463B
  1908. X453B
  1909. XC642
  1910. X4945
  1911. X>
  1912. Xput
  1913. XMetrics
  1914. X/17
  1915. X[0
  1916. X11]
  1917. Xput
  1918. XCharStrings
  1919. X/18
  1920. X<C23B
  1921. X4244
  1922. XC23B
  1923. X463B
  1924. X483C
  1925. X483F
  1926. X4640
  1927. X4240
  1928. XC540
  1929. X4844
  1930. X>
  1931. Xput
  1932. XMetrics
  1933. X/18
  1934. X[0
  1935. X10]
  1936. Xput
  1937. XCharStrings
  1938. X/19
  1939. X<C83C
  1940. X463B
  1941. X443B
  1942. X423C
  1943. X423D
  1944. X433E
  1945. X4740
  1946. X4841
  1947. X4843
  1948. X4644
  1949. X4444
  1950. X4243
  1951. X>
  1952. Xput
  1953. XMetrics
  1954. X/19
  1955. X[0
  1956. X10]
  1957. Xput
  1958. XCharStrings
  1959. X/20
  1960. X<C53B
  1961. X4544
  1962. XC13B
  1963. X493B
  1964. X>
  1965. Xput
  1966. XMetrics
  1967. X/20
  1968. X[0
  1969. X10]
  1970. Xput
  1971. XCharStrings
  1972. X/21
  1973. X<C23B
  1974. X4241
  1975. X4343
  1976. X4544
  1977. X4644
  1978. X4843
  1979. X4941
  1980. X493B
  1981. X>
  1982. Xput
  1983. XMetrics
  1984. X/21
  1985. X[0
  1986. X11]
  1987. Xput
  1988. XCharStrings
  1989. X/22
  1990. X<C13B
  1991. X4544
  1992. XC93B
  1993. X4544
  1994. X>
  1995. Xput
  1996. XMetrics
  1997. X/22
  1998. X[0
  1999. X10]
  2000. Xput
  2001. XCharStrings
  2002. X/23
  2003. X<C23B
  2004. X4444
  2005. XC63B
  2006. X4444
  2007. XC63B
  2008. X4844
  2009. XCA3B
  2010. X4844
  2011. X>
  2012. Xput
  2013. XMetrics
  2014. X/23
  2015. X[-1
  2016. X12]
  2017. Xput
  2018. XCharStrings
  2019. X/24
  2020. X<C23B
  2021. X4844
  2022. XC83B
  2023. X4244
  2024. X>
  2025. Xput
  2026. XMetrics
  2027. X/24
  2028. X[0
  2029. X10]
  2030. Xput
  2031. XCharStrings
  2032. X/25
  2033. X<C13B
  2034. X453F
  2035. X4544
  2036. XC93B
  2037. X453F
  2038. X>
  2039. Xput
  2040. XMetrics
  2041. X/25
  2042. X[0
  2043. X10]
  2044. Xput
  2045. XCharStrings
  2046. X/26
  2047. X<C83B
  2048. X4244
  2049. XC23B
  2050. X483B
  2051. XC244
  2052. X4844
  2053. X>
  2054. Xput
  2055. XMetrics
  2056. X/26
  2057. X[0
  2058. X10]
  2059. Xput
  2060. XCharStrings
  2061. X/space
  2062. X<8000
  2063. X1063E
  2064. X4200
  2065. X00107
  2066. X3C44
  2067. X>
  2068. Xput
  2069. XMetrics
  2070. X/space
  2071. X[64
  2072. X0]
  2073. Xput
  2074. XCharStrings
  2075. X/zero
  2076. X<C53B
  2077. X433C
  2078. X423E
  2079. X4241
  2080. X4343
  2081. X4544
  2082. X4743
  2083. X4841
  2084. X483E
  2085. X473C
  2086. X453B
  2087. X>
  2088. Xput
  2089. XMetrics
  2090. X/zero
  2091. X[0
  2092. X10]
  2093. Xput
  2094. XCharStrings
  2095. X/one
  2096. X<C33D
  2097. X453B
  2098. X4544
  2099. X>
  2100. Xput
  2101. XMetrics
  2102. X/one
  2103. X[0
  2104. X10]
  2105. Xput
  2106. XCharStrings
  2107. X/two
  2108. X<C23C
  2109. X443B
  2110. X463B
  2111. X483C
  2112. X483E
  2113. X4740
  2114. X4244
  2115. X4844
  2116. X>
  2117. Xput
  2118. XMetrics
  2119. X/two
  2120. X[0
  2121. X10]
  2122. Xput
  2123. XCharStrings
  2124. X/three
  2125. X<C23C
  2126. X443B
  2127. X463B
  2128. X483C
  2129. X483E
  2130. X463F
  2131. XC53F
  2132. X463F
  2133. X4840
  2134. X4843
  2135. X4644
  2136. X4444
  2137. X4243
  2138. X>
  2139. Xput
  2140. XMetrics
  2141. X/three
  2142. X[0
  2143. X10]
  2144. Xput
  2145. XCharStrings
  2146. X/four
  2147. X<C63B
  2148. X4644
  2149. XC63B
  2150. X4141
  2151. X4941
  2152. X>
  2153. Xput
  2154. XMetrics
  2155. X/four
  2156. X[0
  2157. X10]
  2158. Xput
  2159. XCharStrings
  2160. X/five
  2161. X<C33B
  2162. X423F
  2163. X443E
  2164. X453E
  2165. X473F
  2166. X4841
  2167. X4743
  2168. X4544
  2169. X4444
  2170. X4243
  2171. XC33B
  2172. X473B
  2173. X>
  2174. Xput
  2175. XMetrics
  2176. X/five
  2177. X[0
  2178. X10]
  2179. Xput
  2180. XCharStrings
  2181. X/six
  2182. X<C73B
  2183. X453B
  2184. X433C
  2185. X423E
  2186. X4241
  2187. X4343
  2188. X4544
  2189. X4743
  2190. X4841
  2191. X473F
  2192. X453E
  2193. X433F
  2194. X4241
  2195. X>
  2196. Xput
  2197. XMetrics
  2198. X/six
  2199. X[0
  2200. X10]
  2201. Xput
  2202. XCharStrings
  2203. X/seven
  2204. X<C83B
  2205. X4444
  2206. XC23B
  2207. X483B
  2208. X>
  2209. Xput
  2210. XMetrics
  2211. X/seven
  2212. X[0
  2213. X10]
  2214. Xput
  2215. XCharStrings
  2216. X/eight
  2217. X<C43B
  2218. X423C
  2219. X423E
  2220. X443F
  2221. X463F
  2222. X483E
  2223. X483C
  2224. X463B
  2225. X443B
  2226. XC43F
  2227. X4240
  2228. X4243
  2229. X4444
  2230. X4644
  2231. X4843
  2232. X4840
  2233. X463F
  2234. X>
  2235. Xput
  2236. XMetrics
  2237. X/eight
  2238. X[0
  2239. X10]
  2240. Xput
  2241. XCharStrings
  2242. X/nine
  2243. X<C83E
  2244. X4740
  2245. X4541
  2246. X4340
  2247. X423E
  2248. X433C
  2249. X453B
  2250. X473C
  2251. X483E
  2252. X4841
  2253. X4743
  2254. X4544
  2255. X4344
  2256. X>
  2257. Xput
  2258. XMetrics
  2259. X/nine
  2260. X[0
  2261. X10]
  2262. Xput
  2263. XCharStrings
  2264. X/period
  2265. X<C243
  2266. X4244
  2267. X4344
  2268. X4343
  2269. X4243
  2270. X>
  2271. Xput
  2272. XMetrics
  2273. X/period
  2274. X[-2
  2275. X5]
  2276. Xput
  2277. XCharStrings
  2278. X/comma
  2279. X<C344
  2280. X4244
  2281. X4243
  2282. X4343
  2283. X4345
  2284. X4247
  2285. X>
  2286. Xput
  2287. XMetrics
  2288. X/comma
  2289. X[-2
  2290. X5]
  2291. Xput
  2292. XCharStrings
  2293. X/colon
  2294. X<C23E
  2295. X423F
  2296. X433F
  2297. X433E
  2298. X423E
  2299. XC243
  2300. X4244
  2301. X4344
  2302. X4343
  2303. X4243
  2304. X>
  2305. Xput
  2306. XMetrics
  2307. X/colon
  2308. X[0
  2309. X5]
  2310. Xput
  2311. XCharStrings
  2312. X/semicolon
  2313. X<C23E
  2314. X423F
  2315. X433F
  2316. X433E
  2317. X423E
  2318. XC344
  2319. X4244
  2320. X4243
  2321. X4343
  2322. X4345
  2323. X4247
  2324. X>
  2325. Xput
  2326. XMetrics
  2327. X/semicolon
  2328. X[0
  2329. X5]
  2330. Xput
  2331. XCharStrings
  2332. X/exclam
  2333. X<C23B
  2334. X4240
  2335. XC33B
  2336. X4340
  2337. XC243
  2338. X4244
  2339. X4344
  2340. X4343
  2341. X4243
  2342. X>
  2343. Xput
  2344. XMetrics
  2345. X/exclam
  2346. X[3
  2347. X5]
  2348. Xput
  2349. XCharStrings
  2350. X/question
  2351. X<C23C
  2352. X443B
  2353. X453B
  2354. X473C
  2355. X473E
  2356. X443F
  2357. X4440
  2358. X4540
  2359. X453F
  2360. X473E
  2361. XC443
  2362. X4444
  2363. X4544
  2364. X4543
  2365. X4443
  2366. X>
  2367. Xput
  2368. XMetrics
  2369. X/question
  2370. X[1
  2371. X9]
  2372. Xput
  2373. XCharStrings
  2374. X/quotesingle
  2375. X<C23B
  2376. X423F
  2377. X>
  2378. Xput
  2379. XMetrics
  2380. X/quotesingle
  2381. X[3
  2382. X4]
  2383. Xput
  2384. XCharStrings
  2385. X/quotedbl
  2386. X<C23B
  2387. X423F
  2388. XC63B
  2389. X463F
  2390. X>
  2391. Xput
  2392. XMetrics
  2393. X/quotedbl
  2394. X[1
  2395. X8]
  2396. Xput
  2397. XCharStrings
  2398. X/ring
  2399. X<C33B
  2400. X423C
  2401. X423E
  2402. X433F
  2403. X453F
  2404. X463E
  2405. X463C
  2406. X453B
  2407. X433B
  2408. X>
  2409. Xput
  2410. XMetrics
  2411. X/ring
  2412. X[1
  2413. X8]
  2414. Xput
  2415. XCharStrings
  2416. X/dollar
  2417. X<C83C
  2418. X463B
  2419. X443B
  2420. X423C
  2421. X423E
  2422. X443F
  2423. X4740
  2424. X4841
  2425. X4843
  2426. X4644
  2427. X4444
  2428. X4243
  2429. XC53A
  2430. X4545
  2431. X>
  2432. Xput
  2433. XMetrics
  2434. X/dollar
  2435. X[1
  2436. X10]
  2437. Xput
  2438. XCharStrings
  2439. X/slash
  2440. X<C93A
  2441. X4145
  2442. X>
  2443. Xput
  2444. XMetrics
  2445. X/slash
  2446. X[1
  2447. X10]
  2448. Xput
  2449. XCharStrings
  2450. X/parenleft
  2451. X<C53A
  2452. X433C
  2453. X423E
  2454. X4241
  2455. X4343
  2456. X4545
  2457. X>
  2458. Xput
  2459. XMetrics
  2460. X/parenleft
  2461. X[3
  2462. X7]
  2463. Xput
  2464. XCharStrings
  2465. X/parenright
  2466. X<C23A
  2467. X443C
  2468. X453E
  2469. X4541
  2470. X4443
  2471. X4245
  2472. X>
  2473. Xput
  2474. XMetrics
  2475. X/parenright
  2476. X[2
  2477. X7]
  2478. Xput
  2479. XCharStrings
  2480. X/bar
  2481. X<C23A
  2482. X4245
  2483. X>
  2484. Xput
  2485. XMetrics
  2486. X/bar
  2487. X[4
  2488. X4]
  2489. Xput
  2490. XCharStrings
  2491. X/minus
  2492. X<C240
  2493. X4A40
  2494. X>
  2495. Xput
  2496. XMetrics
  2497. X/minus
  2498. X[-2
  2499. X12]
  2500. Xput
  2501. XCharStrings
  2502. X/plus
  2503. X<C63C
  2504. X4644
  2505. XC240
  2506. X4A40
  2507. X>
  2508. Xput
  2509. XMetrics
  2510. X/plus
  2511. X[-2
  2512. X12]
  2513. Xput
  2514. XCharStrings
  2515. X/equal
  2516. X<C23E
  2517. X4A3E
  2518. XC242
  2519. X4A42
  2520. X>
  2521. Xput
  2522. XMetrics
  2523. X/equal
  2524. X[-2
  2525. X12]
  2526. Xput
  2527. XCharStrings
  2528. X/multiply
  2529. X<C23D
  2530. X4843
  2531. XC83D
  2532. X4243
  2533. X>
  2534. Xput
  2535. XMetrics
  2536. X/multiply
  2537. X[-2
  2538. X10]
  2539. Xput
  2540. XCharStrings
  2541. X/asterisk
  2542. X<C53D
  2543. X4543
  2544. XC23E
  2545. X4842
  2546. XC83E
  2547. X4242
  2548. X>
  2549. Xput
  2550. XMetrics
  2551. X/asterisk
  2552. X[-2
  2553. X10]
  2554. Xput
  2555. XCharStrings
  2556. X/dotmath
  2557. X<C23F
  2558. X4240
  2559. X4340
  2560. X433F
  2561. X423F
  2562. X>
  2563. Xput
  2564. XMetrics
  2565. X/dotmath
  2566. X[-1
  2567. X5]
  2568. Xput
  2569. XCharStrings
  2570. X/quoteleft
  2571. X<C33B
  2572. X423D
  2573. X423F
  2574. X433F
  2575. X433E
  2576. X423E
  2577. X>
  2578. Xput
  2579. XMetrics
  2580. X/quoteleft
  2581. X[3
  2582. X5]
  2583. Xput
  2584. XCharStrings
  2585. X/quoteright
  2586. X<C33C
  2587. X423C
  2588. X423B
  2589. X433B
  2590. X433D
  2591. X423F
  2592. X>
  2593. Xput
  2594. XMetrics
  2595. X/quoteright
  2596. X[3
  2597. X5]
  2598. Xput
  2599. XCharStrings
  2600. X/arrowright
  2601. X<C73D
  2602. X4A40
  2603. X4743
  2604. XC240
  2605. X4A40
  2606. X>
  2607. Xput
  2608. XMetrics
  2609. X/arrowright
  2610. X[-2
  2611. X12]
  2612. Xput
  2613. XCharStrings
  2614. X/numbersign
  2615. X<C53A
  2616. X4345
  2617. XC83A
  2618. X4645
  2619. XC23E
  2620. X493E
  2621. XC241
  2622. X4941
  2623. X>
  2624. Xput
  2625. XMetrics
  2626. X/numbersign
  2627. X[1
  2628. X11]
  2629. Xput
  2630. XCharStrings
  2631. X/currency
  2632. X<CA40
  2633. X4940
  2634. X4841
  2635. X4743
  2636. X4644
  2637. X4344
  2638. X4243
  2639. X4241
  2640. X4340
  2641. X463F
  2642. X473E
  2643. X473C
  2644. X463B
  2645. X443B
  2646. X433C
  2647. X433E
  2648. X4541
  2649. X4743
  2650. X4944
  2651. X4A44
  2652. X>
  2653. Xput
  2654. XMetrics
  2655. X/234
  2656. X[-1
  2657. X12]
  2658. Xput
  2659. XCharStrings
  2660. X/235
  2661. X<C23C
  2662. X433F
  2663. X4341
  2664. X4244
  2665. XCA3C
  2666. X493F
  2667. X4941
  2668. X4A44
  2669. XC23C
  2670. X453D
  2671. X473D
  2672. X4A3C
  2673. XC244
  2674. X4543
  2675. X4743
  2676. X4A44
  2677. X>
  2678. Xput
  2679. XMetrics
  2680. X/currency
  2681. X[-2
  2682. X12]
  2683. Xput
  2684. END_OF_FILE
  2685. if test 5642 -ne `wc -c <'postscript/fonts/sans/roman.r'`; then
  2686.     echo shar: \"'postscript/fonts/sans/roman.r'\" unpacked with wrong size!
  2687. fi
  2688. # end of 'postscript/fonts/sans/roman.r'
  2689. fi
  2690. if test -f 'postscript/widths/Adobe/Times-Roman' -a "${1}" != "-c" ; then 
  2691.   echo shar: Will not clobber existing file \"'postscript/widths/Adobe/Times-Roman'\"
  2692. else
  2693. echo shar: Extracting \"'postscript/widths/Adobe/Times-Roman'\" \(5333 characters\)
  2694. sed "s/^X//" >'postscript/widths/Adobe/Times-Roman' <<'END_OF_FILE'
  2695. X(fonts/Times/roman) lib run
  2696. Xuserdict /factor 22 put
  2697. XFontDirectory /Times-Roman-Adobe get begin
  2698. XMetrics /space 250 factor idiv put
  2699. XMetrics /exclam 333 factor idiv put
  2700. XMetrics /quotedbl 408 factor idiv put
  2701. XMetrics /numbersign 500 factor idiv put
  2702. XMetrics /dollar 500 factor idiv put
  2703. XMetrics /percent 833 factor idiv put
  2704. XMetrics /ampersand 778 factor idiv put
  2705. XMetrics /quoteright 333 factor idiv put
  2706. XMetrics /parenleft 333 factor idiv put
  2707. XMetrics /parenright 333 factor idiv put
  2708. XMetrics /asterisk 500 factor idiv put
  2709. XMetrics /plus 564 factor idiv put
  2710. XMetrics /comma 250 factor idiv put
  2711. XMetrics /hyphen 333 factor idiv put
  2712. XMetrics /period 250 factor idiv put
  2713. XMetrics /slash 278 factor idiv put
  2714. XMetrics /zero 500 factor idiv put
  2715. XMetrics /one 500 factor idiv put
  2716. XMetrics /two 500 factor idiv put
  2717. XMetrics /three 500 factor idiv put
  2718. XMetrics /four 500 factor idiv put
  2719. XMetrics /five 500 factor idiv put
  2720. XMetrics /six 500 factor idiv put
  2721. XMetrics /seven 500 factor idiv put
  2722. XMetrics /eight 500 factor idiv put
  2723. XMetrics /nine 500 factor idiv put
  2724. XMetrics /colon 278 factor idiv put
  2725. XMetrics /semicolon 278 factor idiv put
  2726. XMetrics /less 564 factor idiv put
  2727. XMetrics /equal 564 factor idiv put
  2728. XMetrics /greater 564 factor idiv put
  2729. XMetrics /question 444 factor idiv put
  2730. XMetrics /at 921 factor idiv put
  2731. XMetrics /A 722 factor idiv put
  2732. XMetrics /B 667 factor idiv put
  2733. XMetrics /C 667 factor idiv put
  2734. XMetrics /D 722 factor idiv put
  2735. XMetrics /E 611 factor idiv put
  2736. XMetrics /F 556 factor idiv put
  2737. XMetrics /G 722 factor idiv put
  2738. XMetrics /H 722 factor idiv put
  2739. XMetrics /I 333 factor idiv put
  2740. XMetrics /J 389 factor idiv put
  2741. XMetrics /K 722 factor idiv put
  2742. XMetrics /L 611 factor idiv put
  2743. XMetrics /M 889 factor idiv put
  2744. XMetrics /N 722 factor idiv put
  2745. XMetrics /O 722 factor idiv put
  2746. XMetrics /P 556 factor idiv put
  2747. XMetrics /Q 722 factor idiv put
  2748. XMetrics /R 667 factor idiv put
  2749. XMetrics /S 556 factor idiv put
  2750. XMetrics /T 611 factor idiv put
  2751. XMetrics /U 722 factor idiv put
  2752. XMetrics /V 722 factor idiv put
  2753. XMetrics /W 944 factor idiv put
  2754. XMetrics /X 722 factor idiv put
  2755. XMetrics /Y 722 factor idiv put
  2756. XMetrics /Z 611 factor idiv put
  2757. XMetrics /bracketleft 333 factor idiv put
  2758. XMetrics /backslash 278 factor idiv put
  2759. XMetrics /bracketright 333 factor idiv put
  2760. XMetrics /asciicircum 469 factor idiv put
  2761. XMetrics /underscore 500 factor idiv put
  2762. XMetrics /quoteleft 333 factor idiv put
  2763. XMetrics /a 444 factor idiv put
  2764. XMetrics /b 500 factor idiv put
  2765. XMetrics /c 444 factor idiv put
  2766. XMetrics /d 500 factor idiv put
  2767. XMetrics /e 444 factor idiv put
  2768. XMetrics /f 333 factor idiv put
  2769. XMetrics /g 500 factor idiv put
  2770. XMetrics /h 500 factor idiv put
  2771. XMetrics /i 278 factor idiv put
  2772. XMetrics /j 278 factor idiv put
  2773. XMetrics /k 500 factor idiv put
  2774. XMetrics /l 278 factor idiv put
  2775. XMetrics /m 778 factor idiv put
  2776. XMetrics /n 500 factor idiv put
  2777. XMetrics /o 500 factor idiv put
  2778. XMetrics /p 500 factor idiv put
  2779. XMetrics /q 500 factor idiv put
  2780. XMetrics /r 333 factor idiv put
  2781. XMetrics /s 389 factor idiv put
  2782. XMetrics /t 278 factor idiv put
  2783. XMetrics /u 500 factor idiv put
  2784. XMetrics /v 500 factor idiv put
  2785. XMetrics /w 722 factor idiv put
  2786. XMetrics /x 500 factor idiv put
  2787. XMetrics /y 500 factor idiv put
  2788. XMetrics /z 444 factor idiv put
  2789. XMetrics /braceleft 480 factor idiv put
  2790. XMetrics /bar 200 factor idiv put
  2791. XMetrics /braceright 480 factor idiv put
  2792. XMetrics /asciitilde 541 factor idiv put
  2793. XMetrics /exclamdown 333 factor idiv put
  2794. XMetrics /cent 500 factor idiv put
  2795. XMetrics /sterling 500 factor idiv put
  2796. XMetrics /fraction 167 factor idiv put
  2797. XMetrics /yen 500 factor idiv put
  2798. XMetrics /florin 500 factor idiv put
  2799. XMetrics /section 500 factor idiv put
  2800. XMetrics /currency 500 factor idiv put
  2801. XMetrics /quotesingle 180 factor idiv put
  2802. XMetrics /quotedblleft 444 factor idiv put
  2803. XMetrics /guillemotleft 500 factor idiv put
  2804. XMetrics /guilsinglleft 333 factor idiv put
  2805. XMetrics /guilsinglright 333 factor idiv put
  2806. XMetrics /fi 556 factor idiv put
  2807. XMetrics /fl 556 factor idiv put
  2808. XMetrics /endash 500 factor idiv put
  2809. XMetrics /dagger 500 factor idiv put
  2810. XMetrics /daggerdbl 500 factor idiv put
  2811. XMetrics /periodcentered 250 factor idiv put
  2812. XMetrics /paragraph 453 factor idiv put
  2813. XMetrics /bullet 350 factor idiv put
  2814. XMetrics /quotesinglbase 333 factor idiv put
  2815. XMetrics /quotedblbase 444 factor idiv put
  2816. XMetrics /quotedblright 444 factor idiv put
  2817. XMetrics /guillemotright 500 factor idiv put
  2818. XMetrics /ellipsis 1000 factor idiv put
  2819. XMetrics /perthousand 1000 factor idiv put
  2820. XMetrics /questiondown 444 factor idiv put
  2821. XMetrics /grave 333 factor idiv put
  2822. XMetrics /acute 333 factor idiv put
  2823. XMetrics /circumflex 333 factor idiv put
  2824. XMetrics /tilde 333 factor idiv put
  2825. XMetrics /macron 333 factor idiv put
  2826. XMetrics /breve 333 factor idiv put
  2827. XMetrics /dotaccent 333 factor idiv put
  2828. XMetrics /dieresis 333 factor idiv put
  2829. XMetrics /ring 333 factor idiv put
  2830. XMetrics /cedilla 333 factor idiv put
  2831. XMetrics /hungarumlaut 333 factor idiv put
  2832. XMetrics /ogonek 333 factor idiv put
  2833. XMetrics /caron 333 factor idiv put
  2834. XMetrics /emdash 1000 factor idiv put
  2835. XMetrics /AE 889 factor idiv put
  2836. XMetrics /ordfeminine 276 factor idiv put
  2837. XMetrics /Lslash 611 factor idiv put
  2838. XMetrics /Oslash 722 factor idiv put
  2839. XMetrics /OE 889 factor idiv put
  2840. XMetrics /ordmasculine 310 factor idiv put
  2841. XMetrics /ae 667 factor idiv put
  2842. XMetrics /dotlessi 278 factor idiv put
  2843. XMetrics /lslash 278 factor idiv put
  2844. XMetrics /oslash 500 factor idiv put
  2845. XMetrics /oe 722 factor idiv put
  2846. XMetrics /germandbls 500 factor idiv put
  2847. Xend
  2848. END_OF_FILE
  2849. if test 5333 -ne `wc -c <'postscript/widths/Adobe/Times-Roman'`; then
  2850.     echo shar: \"'postscript/widths/Adobe/Times-Roman'\" unpacked with wrong size!
  2851. fi
  2852. # end of 'postscript/widths/Adobe/Times-Roman'
  2853. fi
  2854. if test -f 'source/math.c' -a "${1}" != "-c" ; then 
  2855.   echo shar: Will not clobber existing file \"'source/math.c'\"
  2856. else
  2857. echo shar: Extracting \"'source/math.c'\" \(5148 characters\)
  2858. sed "s/^X//" >'source/math.c' <<'END_OF_FILE'
  2859. X/*
  2860. X * Copyright (C) Rutherford Appleton Laboratory 1987
  2861. X * 
  2862. X * This source may be copied, distributed, altered or used, but not sold for profit
  2863. X * or incorporated into a product except under licence from the author.
  2864. X * It is not in the public domain.
  2865. X * This notice should remain in the source unaltered, and any changes to the source
  2866. X * made by persons other than the author should be marked as such.
  2867. X * 
  2868. X *    Crispin Goswell @ Rutherford Appleton Laboratory caag@uk.ac.rl.vd
  2869. X */
  2870. X#include <signal.h>
  2871. X
  2872. X#include "main.h"
  2873. X
  2874. X#define PI 3.14159265358979
  2875. X
  2876. Xstatic int PRand (), PSrand (), PRrand (), Idiv ();
  2877. X
  2878. Xstatic catchmath ();
  2879. Xextern int errno;
  2880. Xjmp_buf env;
  2881. X
  2882. XInitMath ()
  2883. X {
  2884. X    InstallOp ("abs",    PolyFirst,    1, 1, 0, 0, Poly);
  2885. X    InstallOp ("add",    PolyPair,    2, 1, 0, 0, Poly, Poly);
  2886. X    InstallOp ("div",    PolyPair,    2, 1, 0, 0, Poly, Poly);
  2887. X    InstallOp ("mod",    PolyPair,    2, 1, 0, 0, Poly, Poly);
  2888. X    InstallOp ("mul",    PolyPair,    2, 1, 0, 0, Poly, Poly);
  2889. X    InstallOp ("neg",    PolyFirst,    1, 1, 0, 0, Poly);
  2890. X    InstallOp ("sub",    PolyPair,    2, 1, 0, 0, Poly, Poly);
  2891. X    InstallOp ("sqrt",    PolyFirst,    1, 1, 0, 0, Poly);
  2892. X    InstallOp ("exp",    PolyPair,    2, 1, 0, 0, Poly, Poly);
  2893. X    InstallOp ("ceiling",    PolyFirst,    1, 1, 0, 0, Poly);
  2894. X    InstallOp ("floor",    PolyFirst,    1, 1, 0, 0, Poly);
  2895. X    InstallOp ("round",    PolyFirst,    1, 1, 0, 0, Poly);
  2896. X    InstallOp ("truncate",    PolyFirst,    1, 1, 0, 0, Poly);
  2897. X    InstallOp ("atan",    PolyPair,    2, 1, 0, 0, Poly, Poly);
  2898. X    InstallOp ("cos",    PolyFirst,    1, 1, 0, 0, Poly);
  2899. X    InstallOp ("sin",    PolyFirst,    1, 1, 0, 0, Poly);
  2900. X    InstallOp ("ln",    PolyFirst,    1, 1, 0, 0, Poly);
  2901. X    InstallOp ("log",    PolyFirst,    1, 1, 0, 0, Poly);
  2902. X    InstallOp ("rand",    PRand,        0, 1, 0, 0);
  2903. X    InstallOp ("srand",    PSrand,        1, 0, 0, 0, Integer);
  2904. X    InstallOp ("rrand",    PRrand,        0, 1, 0, 0);
  2905. X     InstallOp ("idiv",     Idiv,        2, 1, 0, 0, Float, Float);
  2906. X    
  2907. X/*    PanicIf (setjmp (env), "Unexpected floating point error");
  2908. X    VOID signal (SIGFPE, catchmath);
  2909. X*/ }
  2910. X
  2911. Xstatic catchmath ()
  2912. X {
  2913. X    VOID signal (SIGFPE, catchmath);
  2914. X     longjmp (env, TRUE);
  2915. X }
  2916. X
  2917. Xfloat Deg (r) float r;
  2918. X {
  2919. X    float res = 360 * r / (2 * PI);
  2920. X    return res < 0 ? res + 360 : res;
  2921. X }
  2922. X
  2923. Xfloat Rad (d) float d;
  2924. X {
  2925. X    return 2 * PI * d / 360;
  2926. X }
  2927. X
  2928. Xfloat BodyFloat (ob) Object ob;
  2929. X {
  2930. X    if (TypeOf (ob) == Integer)
  2931. X        return (float) BodyInteger (ob);
  2932. X    else if (TypeOf (ob) == Real)
  2933. X        return BodyReal (ob);
  2934. X    else
  2935. X        Panic ("BodyFloat passed arg of bad type");
  2936. X    return 0.0;
  2937. X }
  2938. X
  2939. XObject ParseNumber (s, length) char *s; int length;
  2940. X {
  2941. X     int c, sign, ival;
  2942. X     float fval;
  2943. X     
  2944. X     /*if (setjmp (env))
  2945. X         return Absent;*/
  2946. X     if (length == 0)
  2947. X         return Nil;
  2948. X     sign = ParseSign (&s, &length);
  2949. X     if (*s == '.')
  2950. X      {
  2951. X          c = *s++;
  2952. X          --length;
  2953. X          ival = 0;
  2954. X      }
  2955. X     else
  2956. X      {
  2957. X          ival = ParseInteger (&s, &length, 10);
  2958. X         if (length < 0)
  2959. X             return Nil;
  2960. X         else if (length == 0)
  2961. X             return MakeInteger (ival * sign);
  2962. X         
  2963. X         c = *s++; --length;
  2964. X      }
  2965. X     if (c == '.')
  2966. X      {
  2967. X          int olength = length, dval;
  2968. X          
  2969. X        fval = ival;
  2970. X         dval = ParseInteger (&s, &length, 10);
  2971. X         fval += dval * pow (10.0, (float)(length - olength));
  2972. X         if (length < 0)
  2973. X             return Nil;
  2974. X         else if (length == 0)
  2975. X             return MakeReal (sign * fval);
  2976. X      }
  2977. X     else if (c == '#')
  2978. X       {
  2979. X           int base = ival;
  2980. X           
  2981. X           if (base < 2 || base > 36)
  2982. X               return Nil;
  2983. X           ival = ParseInteger (&s, &length, base);
  2984. X          if (length >= 0)
  2985. X              return MakeInteger (ival * sign);
  2986. X          return Nil;
  2987. X     }
  2988. X    else
  2989. X     {
  2990. X        --s;
  2991. X        ++length;
  2992. X        fval = ival;
  2993. X     }
  2994. X    
  2995. X    fval *= sign;
  2996. X    c = *s++; --length;
  2997. X    if (c == 'e' || c == 'E')
  2998. X     {
  2999. X          Object res;
  3000. X          int sign = ParseSign (&s, &length), power = ParseInteger (&s, &length, 10);
  3001. X         
  3002. X         if (length < 0)
  3003. X             return Nil;
  3004. X         res = MakeReal (fval * pow (10.0, (double) power * sign));
  3005. X         return res;
  3006. X      }
  3007. X     else
  3008. X         return Nil;
  3009. X }
  3010. X
  3011. Xstatic int ParseSign (s, length) char **s; int *length;
  3012. X {
  3013. X     int c;
  3014. X     
  3015. X     if (*length == 0)
  3016. X         return 1;
  3017. X     c = *(*s)++;
  3018. X     --*length;
  3019. X    if (c == '+')
  3020. X         return 1;
  3021. X     else if (c == '-')
  3022. X         return -1;
  3023. X    ++*length;
  3024. X    --*s;
  3025. X    return 1;
  3026. X }
  3027. X
  3028. Xstatic int ParseInteger (p, length, base) char **p; int *length, base;
  3029. X {
  3030. X     int present = FALSE, ival = 0, digit;
  3031. X     if (*length == 0)
  3032. X      {
  3033. X         *length = -1;
  3034. X         return 0;
  3035. X      }
  3036. X     for (;;)
  3037. X      {
  3038. X          int c = *(*p)++;
  3039. X          
  3040. X          if (c >= '0' && c <= '9')
  3041. X              digit = c - '0';
  3042. X          else if (c >= 'a' && c <= 'z')
  3043. X              digit = c - 'a' + 10;
  3044. X          else if (c >= 'A' && c <= 'Z')
  3045. X              digit = c - 'A' + 10;
  3046. X          else
  3047. X              break;
  3048. X          if (digit < base)
  3049. X              /*ival = StrictAdd (StrictMul (ival, base), digit);*/
  3050. X              ival = ival * base + digit;
  3051. X          else
  3052. X              break;
  3053. X         ++present;
  3054. X          if (--*length == 0)
  3055. X              return ival;
  3056. X      }
  3057. X     --*p;
  3058. X     if (!present)
  3059. X         *length = -1;
  3060. X     return ival;
  3061. X }
  3062. X
  3063. Xstatic int seed = 1;
  3064. X
  3065. Xstatic int random ()
  3066. X {
  3067. X    return seed = ((seed * 1103515245 + 12345) & 0x7fffffff);
  3068. X }
  3069. X
  3070. Xstatic int PRand ()        /* --- integer */
  3071. X {
  3072. X     VOID random ();
  3073. X     return Push (OpStack, MakeInteger (seed));
  3074. X }
  3075. X
  3076. Xstatic int PSrand (see) Object see;
  3077. X {
  3078. X    srand ((unsigned) (seed = BodyInteger (see)));
  3079. X     return TRUE;
  3080. X }
  3081. X
  3082. Xstatic int PRrand ()
  3083. X {
  3084. X     return Push (OpStack, MakeInteger (seed));
  3085. X }
  3086. X
  3087. Xstatic int Idiv (a, b) Object a, b;
  3088. X {
  3089. X      if (BodyReal (b) == 0)
  3090. X         return Error (PUnResult);
  3091. X    return Push (OpStack, MakeInteger ((int) BodyReal (a) / (int) BodyReal (b)));
  3092. X }
  3093. END_OF_FILE
  3094. if test 5148 -ne `wc -c <'source/math.c'`; then
  3095.     echo shar: \"'source/math.c'\" unpacked with wrong size!
  3096. fi
  3097. # end of 'source/math.c'
  3098. fi
  3099. if test -f 'source/paint.c' -a "${1}" != "-c" ; then 
  3100.   echo shar: Will not clobber existing file \"'source/paint.c'\"
  3101. else
  3102. echo shar: Extracting \"'source/paint.c'\" \(5867 characters\)
  3103. sed "s/^X//" >'source/paint.c' <<'END_OF_FILE'
  3104. X/*
  3105. X * Copyright (C) Rutherford Appleton Laboratory 1987
  3106. X * 
  3107. X * This source may be copied, distributed, altered or used, but not sold for profit
  3108. X * or incorporated into a product except under licence from the author.
  3109. X * It is not in the public domain.
  3110. X * This notice should remain in the source unaltered, and any changes to the source
  3111. X * made by persons other than the author should be marked as such.
  3112. X * 
  3113. X *    Crispin Goswell @ Rutherford Appleton Laboratory caag@uk.ac.rl.vd
  3114. X */
  3115. X#include "main.h"
  3116. X#include "graphics.h"
  3117. X#include "canon.h"
  3118. X
  3119. Xstatic NeedAux (h) struct hardware *h;
  3120. X {
  3121. X     DevicePoint extent;
  3122. X     
  3123. X     if (h->aux)
  3124. X         return;
  3125. X     extent = HardwareExtent (h);
  3126. X     h->aux = NewBitmapHardware (extent.dx, extent.dy);
  3127. X }
  3128. X
  3129. Xstatic void RasterThreeAdd (from, aux, to, fromPoint, toPoint, extent, rop)    /* depends on aux */
  3130. X    struct hardware *from, *aux, *to;
  3131. X    DevicePoint fromPoint, toPoint, extent;
  3132. X    int rop;
  3133. X {
  3134. X     BitBlt (from, aux, fromPoint, toPoint, extent, ROP_AND);
  3135. X     BitBlt (aux, to, toPoint, toPoint, extent, rop);
  3136. X }
  3137. X
  3138. Xstatic void RasterFour (from, mask, aux, to, fromPoint, toPoint, extent, rop)
  3139. X    struct hardware *from, *mask, *aux, *to;
  3140. X    DevicePoint fromPoint, toPoint, extent;
  3141. X    int rop;
  3142. X {
  3143. X     if (mask == NULL)
  3144. X         BitBlt (from, to, fromPoint, toPoint, extent, rop);
  3145. X     else if (from == NULL)
  3146. X         BitBlt (mask, to, toPoint, toPoint, extent, rop);
  3147. X     else
  3148. X      {
  3149. X          BitBlt (from, aux, fromPoint, toPoint, extent, ROP_SOURCE);
  3150. X          RasterThreeAdd (mask, aux, to, toPoint, toPoint, extent, rop);
  3151. X      }
  3152. X }
  3153. X
  3154. Xvoid Paint  (from, to, fromPoint, toPoint, extent, colour)
  3155. X    struct hardware *from, *to;
  3156. X    DevicePoint fromPoint, toPoint, extent;
  3157. X    Colour colour;
  3158. X {
  3159. X      int col;
  3160. X      
  3161. X     if (to == NULL)
  3162. X         return;
  3163. X     
  3164. X     UpdateControl (to, FALSE);
  3165. X     
  3166. X     col = IsWindowHardware (to) ? HardColour (colour) : 0;
  3167. X     
  3168. X     if (to->clip )
  3169. X         NeedAux (to);    
  3170. X     if (col == 0)
  3171. X         if (to->clip == NULL && from != NULL)
  3172. X              BitBlt (from, to, fromPoint, toPoint, extent, ROP_OR);
  3173. X         else
  3174. X            RasterFour (from, to->clip, to->aux, to, fromPoint, toPoint, extent, ROP_OR);
  3175. X    else if (col == TransferSize () - 1)
  3176. X        RasterFour (from, to->clip, to->aux, to, fromPoint, toPoint, extent, ROP_NOTAND);
  3177. X     else
  3178. X      { 
  3179. X          struct hardware *gray = GraySync (col);
  3180. X          NeedAux (to);
  3181. X         if (from)
  3182. X          {
  3183. X             BitBlt (from, to->aux, fromPoint, toPoint, extent, ROP_SOURCE);
  3184. X             if (to->clip)
  3185. X                 BitBlt (to->clip, to->aux, toPoint, toPoint, extent, ROP_AND);
  3186. X             BitBlt (to->aux, to, toPoint, toPoint, extent, ROP_NOTAND);
  3187. X             RasterTile (gray, to->aux, toPoint, extent, ROP_AND);
  3188. X             BitBlt (to->aux, to, toPoint, toPoint, extent, ROP_OR);
  3189. X          }
  3190. X         else
  3191. X          {
  3192. X              if (to->clip)
  3193. X               {
  3194. X                  BitBlt (to->clip, to->aux, toPoint, toPoint, extent, ROP_SOURCE);
  3195. X                 BitBlt (to->aux, to, toPoint, toPoint, extent, ROP_NOTAND);
  3196. X                 RasterTile (gray, to->aux, toPoint, extent, ROP_AND);
  3197. X                 BitBlt (to->aux, to, toPoint, toPoint, extent, ROP_OR);
  3198. X              }
  3199. X             else
  3200. X                  RasterTile (gray, to, toPoint, extent, ROP_SOURCE);
  3201. X              
  3202. X          }
  3203. X      }
  3204. X     UpdateControl (to, TRUE);
  3205. X }
  3206. X
  3207. Xvoid PaintLine (h, fromPoint, toPoint, colour)
  3208. X    struct hardware *h;
  3209. X    DevicePoint fromPoint, toPoint;
  3210. X    Colour colour;
  3211. X {
  3212. X     int col;
  3213. X     
  3214. X     if (h == NULL)
  3215. X         return;
  3216. X     
  3217. X     col = IsWindowHardware (h) ? HardColour (colour) : 0;
  3218. X     
  3219. X     UpdateControl (h, FALSE);
  3220. X     
  3221. X     if (h->clip == NULL && (col == 0 || col == TransferSize () - 1))
  3222. X         BitBltLine (h, fromPoint, toPoint, (col == 0 ? ROP_TRUE : ROP_FALSE));
  3223. X    else
  3224. X      {
  3225. X        int mx = Min (fromPoint.dx, toPoint.dx), my = Min (fromPoint.dy, toPoint.dy),
  3226. X            Mx = Max (fromPoint.dx, toPoint.dx), My = Max (fromPoint.dy, toPoint.dy);
  3227. X          DevicePoint orig, ex;
  3228. X          
  3229. X          orig = NewDevicePoint (mx, my);
  3230. X          ex = NewDevicePoint (Mx - mx + 1, My - my + 1);
  3231. X          
  3232. X        NeedAux (h);
  3233. X         BitBlt ((struct hardware *) NULL, h->aux, orig, orig, ex, ROP_FALSE);
  3234. X         
  3235. X         BitBltLine (h->aux, fromPoint, toPoint, ROP_TRUE);
  3236. X        
  3237. X        BitBlt (h->clip, h->aux, orig, orig, ex, ROP_AND);
  3238. X        BitBlt (h->aux, h, orig, orig, ex, ROP_NOTAND);
  3239. X        
  3240. X        if (col != 0 && col != TransferSize () - 1)
  3241. X         {
  3242. X             struct hardware *gray = GraySync (col);
  3243. X             RasterTile (gray, h->aux, orig, ex, ROP_AND);
  3244. X         }
  3245. X        BitBlt (h->aux, h, orig, orig, ex, ROP_OR);
  3246. X     }
  3247. X    UpdateControl (h, TRUE);
  3248. X }
  3249. X
  3250. Xvoid PaintTrapezoid (to, lefttop, leftbottom, righttop, rightbottom, top, bottom, colour)
  3251. X    struct hardware *to;
  3252. X    DevicePoint lefttop, leftbottom, righttop, rightbottom;
  3253. X    int top, bottom;
  3254. X    Colour colour;
  3255. X {
  3256. X      int col;
  3257. X      
  3258. X     if (to == NULL)
  3259. X         return;
  3260. X     
  3261. X     col = IsWindowHardware (to) ? HardColour (colour) : 0;
  3262. X     
  3263. X     UpdateControl (to, FALSE);
  3264. X     
  3265. X     if (to->clip)
  3266. X         NeedAux (to);    
  3267. X     if (col == 0)
  3268. X        BitBltTrapezoid (to, lefttop, leftbottom, righttop, rightbottom, top, bottom, ROP_TRUE);
  3269. X    else if (col == TransferSize () - 1)
  3270. X        BitBltTrapezoid (to, lefttop, leftbottom, righttop, rightbottom, top, bottom, ROP_FALSE);
  3271. X     else
  3272. X      {
  3273. X          DevicePoint origin, extent;
  3274. X          struct hardware *gray;
  3275. X          
  3276. X          int left = lefttop.dx < leftbottom.dx ? lefttop.dx : leftbottom.dx,
  3277. X              right = righttop.dx > rightbottom.dx ? righttop.dx : rightbottom.dx;
  3278. X          
  3279. X          if (righttop.dx < left)
  3280. X              left = righttop.dx;
  3281. X          if (rightbottom.dx < left)
  3282. X              left = rightbottom.dx;
  3283. X          if (lefttop.dx > right)
  3284. X              right = lefttop.dx;
  3285. X          if (leftbottom.dx > right)
  3286. X              right = leftbottom.dx;
  3287. X          origin = NewDevicePoint (left, top);
  3288. X          extent = NewDevicePoint (right - left, bottom - top);
  3289. X          
  3290. X          gray = GraySync (col);
  3291. X          NeedAux (to);
  3292. X         BitBlt ((struct hardware *) NULL, to->aux, origin, origin, extent, ROP_FALSE);
  3293. X        BitBltTrapezoid (to->aux, lefttop, leftbottom, righttop, rightbottom, top, bottom, ROP_TRUE);
  3294. X         if (to->clip)
  3295. X             BitBlt (to->clip, to->aux, origin, origin, extent, ROP_AND);
  3296. X         BitBlt (to->aux, to, origin, origin, extent, ROP_NOTAND);
  3297. X         RasterTile (gray, to->aux, origin, extent, ROP_AND);
  3298. X         BitBlt (to->aux, to, origin, origin, extent, ROP_OR);
  3299. X      }
  3300. X      UpdateControl (to, TRUE);
  3301. X }
  3302. END_OF_FILE
  3303. if test 5867 -ne `wc -c <'source/paint.c'`; then
  3304.     echo shar: \"'source/paint.c'\" unpacked with wrong size!
  3305. fi
  3306. # end of 'source/paint.c'
  3307. fi
  3308. if test -f 'source/pixrect.c' -a "${1}" != "-c" ; then 
  3309.   echo shar: Will not clobber existing file \"'source/pixrect.c'\"
  3310. else
  3311. echo shar: Extracting \"'source/pixrect.c'\" \(5728 characters\)
  3312. sed "s/^X//" >'source/pixrect.c' <<'END_OF_FILE'
  3313. X/*
  3314. X * Copyright (C) Rutherford Appleton Laboratory 1987, All Rights Reserved.
  3315. X * 
  3316. X * This source may be copied, distributed, altered or used, but not sold for profit
  3317. X * or incorporated into a product except under licence from the author.
  3318. X * It is not in the public domain.
  3319. X * This notice should remain in the source unaltered, and any changes to the source
  3320. X * made by persons other than the author should be marked as such.
  3321. X * 
  3322. X *    Crispin Goswell @ Rutherford Appleton Laboratory caag@uk.ac.rl.vd
  3323. X */
  3324. X
  3325. X#include "main.h"
  3326. X#include "graphics.h"
  3327. X#include "canon.h"
  3328. X#include <pixrect/pixrect_hs.h>
  3329. X
  3330. Xint rop_map [] =
  3331. X {
  3332. X     PIX_SRC & PIX_NOT (PIX_SRC),
  3333. X     PIX_SRC & PIX_DST,
  3334. X     PIX_SRC & PIX_NOT (PIX_DST),
  3335. X     PIX_SRC,
  3336. X     PIX_NOT (PIX_SRC) & PIX_DST,
  3337. X     PIX_DST,
  3338. X     PIX_SRC ^ PIX_DST,
  3339. X     PIX_SRC | PIX_DST,
  3340. X     PIX_NOT (PIX_SRC | PIX_DST),
  3341. X     PIX_NOT (PIX_SRC ^ PIX_DST),
  3342. X     PIX_NOT (PIX_DST),
  3343. X     PIX_SRC | PIX_NOT (PIX_DST),
  3344. X     PIX_NOT (PIX_SRC),
  3345. X     PIX_NOT (PIX_SRC) | PIX_DST,
  3346. X     PIX_NOT (PIX_SRC & PIX_DST),
  3347. X     PIX_SRC | PIX_NOT (PIX_SRC)
  3348. X };
  3349. X
  3350. Xstatic struct hardware *NewHardware ();
  3351. X
  3352. Xstatic struct pixrect *screen;
  3353. X
  3354. Xchar *malloc ();
  3355. X
  3356. Xstruct hardware *InitHardware ()
  3357. X {
  3358. X    screen = pr_open ("/dev/fb");
  3359. X    PanicIf (screen == NULL, "could not open display");
  3360. X    
  3361. X    InitTransfer (82);    /* XXX */
  3362. X    
  3363. X    return NULL;
  3364. X }
  3365. X
  3366. Xstruct hardware *NewWindowHardware (width, height) int width, height;
  3367. X {
  3368. X     DevicePoint real_extent;
  3369. X     struct pixrect *w;
  3370. X     
  3371. X     real_extent = NewDevicePoint (width, height);
  3372. X     
  3373. X     if ((w = pr_region (screen, 0, 0, width, height)) == NULL)
  3374. X         return NULL;
  3375. X     return NewHardware (w, real_extent, ISWIN);
  3376. X }
  3377. X
  3378. Xstruct hardware *NewBitmapHardware (width, height) int width, height;
  3379. X {
  3380. X     DevicePoint real_extent;
  3381. X     struct pixrect *bm;
  3382. X     
  3383. X     real_extent = NewDevicePoint (width, height);
  3384. X     
  3385. X     if ((bm = mem_create (width, height, 1)) == NULL)
  3386. X      {
  3387. X          fprintf (stderr, "mem_create (%d, %d, 1)\n", width, height);
  3388. X         Panic ("failed to create bitmap");
  3389. X      }
  3390. X     
  3391. X     return NewHardware (bm, real_extent, 0);
  3392. X }
  3393. X
  3394. X#define DeviceBitmap(h) ((struct pixrect *) ((h)->hard.addr))
  3395. X
  3396. Xstatic void DestroyHard (dev) struct hardware *dev;
  3397. X {
  3398. X     struct pixrect *bm = DeviceBitmap (dev);
  3399. X     
  3400. X     if (bm)
  3401. X         pr_destroy (bm);
  3402. X }
  3403. X
  3404. Xvoid DestroyHardware (dev) struct hardware *dev;
  3405. X {
  3406. X     if (dev == NULL)
  3407. X         return;
  3408. X     DestroyHard (dev);
  3409. X     if (dev->aux)
  3410. X         DestroyHardware (dev->aux);
  3411. X     Free ((char *) dev);
  3412. X }
  3413. X
  3414. Xstatic struct hardware *NewHardware (bm, extent, flags) struct pixrect *bm; DevicePoint extent; int flags;
  3415. X {
  3416. X     struct hardware *d = (struct hardware *) Malloc (sizeof (struct hardware));
  3417. X     
  3418. X     d->flags = flags;
  3419. X     d->hard.addr = (char *) bm;
  3420. X     d->aux = d->clip = NULL;
  3421. X     d->extent = extent;
  3422. X     
  3423. X     return d;
  3424. X }
  3425. X
  3426. Xstruct hardware *HardwareFromString (s, width, height) unsigned char *s; int width, height;
  3427. X {
  3428. X    int words = (width + 15) / 16;
  3429. X    struct pixrect *pr = mem_create (width, height, 1);
  3430. X    short *d = mpr_d (pr)->md_image;
  3431. X    int odd = ((width + 7) / 8) & 1;
  3432. X    int i, j;
  3433. X
  3434. X    for (i = 0; i < height; i++)
  3435. X     {
  3436. X        for (j = 0; j < words - odd; j++)
  3437. X         {
  3438. X            short word = *s++;
  3439. X
  3440. X            *d++ = (word << 8) | *s++;
  3441. X         }
  3442. X        if (odd)
  3443. X            *d++ = *s++ << 8;
  3444. X     }
  3445. X    return NewHardware (pr, NewDevicePoint (width, height), 0);
  3446. X }
  3447. X
  3448. Xchar *StringFromHardware (h) struct hardware *h;
  3449. X {
  3450. X    int words = (h->extent.dx + 15) / 16;
  3451. X    char *string = malloc ((h->extent.dx + 7) / 8 * h->extent.dy), *s = string;
  3452. X    int i, j, odd = ((h->extent.dx + 7) / 8) & 1;
  3453. X    short *d = mpr_d (DeviceBitmap (h))->md_image;
  3454. X
  3455. X    for (i = 0; i < h->extent.dy; i++)
  3456. X     {
  3457. X        for (j = 0; j < words - odd; j++)
  3458. X         {
  3459. X            short word = *d++;
  3460. X
  3461. X            *s++ = (word >> 8) & 0xFF;
  3462. X            *s++ = word & 0xFF;
  3463. X         }
  3464. X        if (odd)
  3465. X            *s++ = (*d++ >> 8) & 0xFF;
  3466. X     }
  3467. X    return string;
  3468. X }
  3469. X
  3470. Xvoid UpdateControl (h, flag) struct hardware *h; int flag;
  3471. X {
  3472. X }
  3473. X
  3474. Xvoid RasterTile (from, to, toPoint, extent, rop)
  3475. X    struct hardware *from, *to;
  3476. X    DevicePoint toPoint, extent;
  3477. X    int rop;
  3478. X {
  3479. X    struct pixrect *fr;
  3480. X    
  3481. X     if (to == NULL || extent.dx == 0 || extent.dy == 0)
  3482. X         return;
  3483. X     if (from)
  3484. X         fr = DeviceBitmap (from);
  3485. X     else
  3486. X         fr = NULL;
  3487. X    
  3488. X     pr_replrop (DeviceBitmap (to), toPoint.dx, toPoint.dy, extent.dx, extent.dy, rop_map [rop], fr, toPoint.dx, toPoint.dy);
  3489. X }
  3490. X
  3491. Xvoid BitBlt (from, to, fromPoint, toPoint, extent, rop)
  3492. X    struct hardware *from, *to;
  3493. X    DevicePoint fromPoint, toPoint, extent;
  3494. X    int rop;
  3495. X {
  3496. X    struct pixrect *fr;
  3497. X    
  3498. X    if (to == NULL || extent.dx == 0 || extent.dy == 0)
  3499. X         return;
  3500. X         
  3501. X     if (from)
  3502. X         fr = DeviceBitmap (from);
  3503. X     else
  3504. X      {
  3505. X         fr = NULL;
  3506. X         rop = single_rop [rop];
  3507. X      }
  3508. X    
  3509. X    pr_rop (DeviceBitmap (to), toPoint.dx, toPoint.dy, extent.dx, extent.dy, rop_map [rop], fr, fromPoint.dx, fromPoint.dy);
  3510. X }
  3511. X
  3512. Xvoid BitBltLine (h, fromPoint, toPoint, rop) 
  3513. X      struct hardware *h;
  3514. X    DevicePoint fromPoint, toPoint;
  3515. X    int rop;
  3516. X {
  3517. X     if (h == NULL)
  3518. X         return;
  3519. X     
  3520. X    switch (single_rop [rop])
  3521. X     {
  3522. X         case ROP_FALSE:     rop = PIX_NOT (PIX_SET);     break;
  3523. X         case ROP_TRUE:      rop = PIX_SET;      break;
  3524. X         case ROP_NOTDEST:     rop = PIX_NOT (PIX_SRC);     break;
  3525. X         case ROP_DEST:         return;     break;
  3526. X         
  3527. X         default:
  3528. X             fprintf (stderr, "illegal rasterop\n");
  3529. X             exit (1);
  3530. X     }
  3531. X    
  3532. X    pr_vector (DeviceBitmap (h), fromPoint.dx, fromPoint.dy, toPoint.dx, toPoint.dy, rop, ~0);
  3533. X }
  3534. X
  3535. Xvoid BitBltBlob (to, top, height, left, right, rop) struct hardware *to; int top, height, *left, *right, rop;
  3536. X {
  3537. X     int i, op, offset = top;
  3538. X     struct pixrect *bm;
  3539. X     height += top;
  3540. X     switch (rop)
  3541. X      {
  3542. X          case ROP_FALSE:     op = PIX_NOT (PIX_SET); break;
  3543. X          case ROP_DEST:         return;
  3544. X          case ROP_NOTDEST:     op = PIX_NOT (PIX_SRC); break;
  3545. X          case ROP_TRUE:         op = PIX_SET; break;
  3546. X      }
  3547. X     bm = DeviceBitmap (to);
  3548. X     rop = rop_map [rop];
  3549. X     UpdateControl (to, FALSE);
  3550. X     for (i = top; i < height; i++)
  3551. X         pr_rop (bm, left[i - offset], i, right[i - offset] - left[i - offset], 1, op, bm, 0, 0);
  3552. X     UpdateControl (to, TRUE);
  3553. X }
  3554. END_OF_FILE
  3555. if test 5728 -ne `wc -c <'source/pixrect.c'`; then
  3556.     echo shar: \"'source/pixrect.c'\" unpacked with wrong size!
  3557. fi
  3558. # end of 'source/pixrect.c'
  3559. fi
  3560. echo shar: End of archive 3 \(of 18\).
  3561. cp /dev/null ark3isdone
  3562. MISSING=""
  3563. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
  3564.     if test ! -f ark${I}isdone ; then
  3565.     MISSING="${MISSING} ${I}"
  3566.     fi
  3567. done
  3568. if test "${MISSING}" = "" ; then
  3569.     echo You have unpacked all 18 archives.
  3570.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  3571. else
  3572.     echo You still need to unpack the following archives:
  3573.     echo "        " ${MISSING}
  3574. fi
  3575. ##  End of shell archive.
  3576. exit 0
  3577.