home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / sources / misc / 3808 < prev    next >
Encoding:
Text File  |  1992-08-14  |  20.0 KB  |  1,466 lines

  1. Newsgroups: comp.sources.misc
  2. Path: sparky!kent
  3. From: hyc@hanauma.jpl.nasa.gov (Howard Chu)
  4. Subject:  v31i079:  gothic - Print gothic text v1.6, Part01/01
  5. Message-ID: <1992Aug14.200818.4920@sparky.imd.sterling.com>
  6. Followup-To: comp.sources.d
  7. X-Md4-Signature: 2e882a4b3425ea249613053a6ee312cc
  8. Sender: kent@sparky.imd.sterling.com (Kent Landfield)
  9. Organization: SAR Systems Development & Processing, JPL
  10. Date: Fri, 14 Aug 1992 20:08:18 GMT
  11. Approved: kent@sparky.imd.sterling.com
  12. Lines: 1452
  13.  
  14. Submitted-by: hyc@hanauma.jpl.nasa.gov (Howard Chu)
  15. Posting-number: Volume 31, Issue 79
  16. Archive-name: gothic/part01
  17. Environment: UNIX
  18.  
  19. This is gothic version 1.6.  Better yet...
  20.     __ ,
  21.   ,-| ~           ,  ,,               /|       ,/
  22.  ('||/__,        ||  ||     '        /||      //
  23. (( |||  |  /'\\ =||= ||/\\ \\  _-_    ||     ((_-
  24. (( |||==| || ||  ||  || || || ||      ||     || ))
  25.  ( / |  , || ||  ||  || || || ||      ||     (( ||
  26.   -____/  \\,/   \\, \\ |/ \\ \\,/   ,/-' <>  \//
  27.                        _/
  28.  
  29. This is an updated version of the program I posted last December. At that 
  30. time I had only created descriptions of the alpha characters, plus one or 
  31. two punctuation characters. This version has a full 96 characters defined, 
  32. and also does automatic word-wrap for printing out longer messages.  
  33.  
  34. The output width defaults to 79, and can be changed by the first argument 
  35. of the program. E.g.,
  36.     gothic -132
  37. will run with the width set to 132 characters. (For real perversity, try
  38. an Xterm with the tiny font selected. Set your window to about 480 columns 
  39. by 400 rows, and feed some C source code in...)
  40.  
  41. If you have the xstr program you may want to use it to process this
  42. file before compiling, that should save around 2K. Of course, the entire
  43. program is smaller than 8K already, so it's probably no big deal.
  44.  
  45. Compile and run. With no arguments (or just a width argument) the program
  46. reads text from stdin, otherwise it processes its arguments.
  47.  
  48.   -- Howard Chu @ Jet Propulsion Laboratory, Pasadena, CA
  49. #--------------------------------CUT HERE-------------------------------------
  50. #! /bin/sh
  51. #
  52. # This is a shell archive.  Save this into a file, edit it
  53. # and delete all lines above this comment.  Then give this
  54. # file to sh by executing the command "sh file".  The files
  55. # will be extracted into the current directory owned by
  56. # you with default permissions.
  57. #
  58. # The files contained herein are:
  59. #
  60. # -rw-r--r--  1 hyc         15980 Aug 14 00:11 gothic.c
  61. #
  62. echo 'x - gothic.c'
  63. if test -f gothic.c; then echo 'shar: not overwriting gothic.c'; else
  64. sed 's/^X//' << '________This_Is_The_END________' > gothic.c
  65. X/*
  66. X * Print a line of text in Gothic (Black) Script. Very simple routine,
  67. X * just a lot of data to worry about...
  68. X * 
  69. X * Remember to escape all backslashes when editing characters...
  70. X *  -- hyc, 12-29-91
  71. X *
  72. X * $Log: gothic.c,v $
  73. X * Revision 1.6  1992/08/14  07:11:20  hyc
  74. X * Fix typos in back-slash and right bracket.
  75. X *
  76. X * Revision 1.5  1992/08/14  05:06:45  hyc
  77. X * Streamlined MTS support.
  78. X *
  79. X * Revision 1.4  1992/08/14  04:26:49  hyc
  80. X * Implement word-wrap in addition to previous character/line wrap.
  81. X * Full 96 character printable ASCII set implemented.
  82. X *
  83. X */
  84. X
  85. X#ifdef _MTS
  86. X#define _ADD 1
  87. X#include <stdlib.h>
  88. X#include <ctype.h>
  89. X#else
  90. X#include <stdio.h>
  91. X#include <ctype.h>
  92. X#undef toascii
  93. X#define toascii(x) x
  94. X#endif
  95. X
  96. X#ifndef __STDC__
  97. X#define    const
  98. X#endif
  99. X
  100. X#ifndef DEFWIDTH
  101. X#define DEFWIDTH 79
  102. X#endif
  103. X
  104. Xconst struct letter {
  105. X    const char     *lines[9];
  106. X}               glyphs[96] = {
  107. X    {
  108. X    "  ",            /* space */
  109. X    "  ",
  110. X    "  ",
  111. X    "  ",
  112. X    "  ",
  113. X    "  ",
  114. X    "  ",
  115. X    "  ",
  116. X    "  "
  117. X    },
  118. X
  119. X    {
  120. X    "   ",            /* ! bang */
  121. X    "/\\ ",
  122. X    "\\/ ",
  123. X    "}{ ",
  124. X    "\\/ ",
  125. X    "   ",
  126. X    "<> ",
  127. X    "   ",
  128. X    "   "
  129. X    },
  130. X
  131. X    {
  132. X    "      ",        /* " double-quote */
  133. X    "<> <> ",
  134. X    " )  ) ",
  135. X    "      ",
  136. X    "      ",
  137. X    "      ",
  138. X    "      ",
  139. X    "      ",
  140. X    "      "
  141. X    },
  142. X
  143. X    {
  144. X    "          ",        /* # sharp */
  145. X    "  <> <>   ",
  146. X    "  }{ }{   ",
  147. X    "<>++=++<> ",
  148. X    "  }{ }{   ",
  149. X    "<>++=++<> ",
  150. X    "  }{ }{   ",
  151. X    "  <> <>   ",
  152. X    "          "
  153. X    },
  154. X
  155. X    {
  156. X    "       ",        /* $ dollar */
  157. X    " _++_, ",
  158. X    "||||   ",
  159. X    "||--.  ",
  160. X    " ~|||| ",
  161. X    "  |||| ",
  162. X    ",-__-  ",
  163. X    "  ||   ",
  164. X    "       "
  165. X    },
  166. X
  167. X    {
  168. X    "      ",        /* % per-cent */
  169. X    "    , ",
  170. X    "<>  / ",
  171. X    "   /  ",
  172. X    "  /   ",
  173. X    " /    ",
  174. X    "/  <> ",
  175. X    "`     ",
  176. X    "      "
  177. X    },
  178. X
  179. X    {
  180. X    "      ",        /* & ampersand */
  181. X    " /\\   ",
  182. X    " \\/   ",
  183. X    " /\\ , ",
  184. X    "/'\\\\, ",
  185. X    "|  \\\\ ",
  186. X    "\\\\-/\\ ",
  187. X    "      ",
  188. X    "      "
  189. X    },
  190. X
  191. X    {
  192. X    "   ",            /* ' single quote */
  193. X    "<> ",
  194. X    " ) ",
  195. X    "   ",
  196. X    "   ",
  197. X    "   ",
  198. X    "   ",
  199. X    "   ",
  200. X    "   "
  201. X    },
  202. X
  203. X    {
  204. X    "   ",            /* ( left paren */
  205. X    " / ",
  206. X    "// ",
  207. X    "|| ",
  208. X    "|| ",
  209. X    "|| ",
  210. X    "\\\\ ",
  211. X    " \\ ",
  212. X    "   "
  213. X    },
  214. X
  215. X    {
  216. X    "   ",            /* ) right paren */
  217. X    "\\  ",
  218. X    "\\\\ ",
  219. X    "|| ",
  220. X    "|| ",
  221. X    "|| ",
  222. X    "// ",
  223. X    "/  ",
  224. X    "   "
  225. X    },
  226. X
  227. X    {
  228. X    "        ",        /* * asterisk */
  229. X    "        ",
  230. X    " <> <>  ",
  231. X    "  \\ /   ",
  232. X    "<>-*-<> ",
  233. X    "  / \\   ",
  234. X    " <> <>  ",
  235. X    "        ",
  236. X    "        "
  237. X    },
  238. X
  239. X    {
  240. X    "       ",        /* + plus */
  241. X    "       ",
  242. X    "  <>   ",
  243. X    "  }{   ",
  244. X    "<>--<> ",
  245. X    "  }{   ",
  246. X    "  <>   ",
  247. X    "       ",
  248. X    "       "
  249. X    },
  250. X
  251. X    {
  252. X    "   ",            /* , comma */
  253. X    "   ",
  254. X    "   ",
  255. X    "   ",
  256. X    "   ",
  257. X    "   ",
  258. X    "<> ",
  259. X    " ) ",
  260. X    "   "
  261. X    },
  262. X
  263. X    {
  264. X    "      ",        /* - hyphen */
  265. X    "      ",
  266. X    "      ",
  267. X    "      ",
  268. X    "<>-<> ",
  269. X    "      ",
  270. X    "      ",
  271. X    "      ",
  272. X    "      "
  273. X    },
  274. X
  275. X    {
  276. X    "   ",            /* . period */
  277. X    "   ",
  278. X    "   ",
  279. X    "   ",
  280. X    "   ",
  281. X    "   ",
  282. X    "<> ",
  283. X    "   ",
  284. X    "   "
  285. X    },
  286. X
  287. X    {
  288. X    "      ",        /* / slash */
  289. X    "    / ",
  290. X    "   /  ",
  291. X    "  //  ",
  292. X    "  /   ",
  293. X    " //   ",
  294. X    " /    ",
  295. X    "/     ",
  296. X    "      "
  297. X    },
  298. X
  299. X    {
  300. X    "      ",        /* 0 */
  301. X    " /\\\\  ",
  302. X    "|| || ",
  303. X    "|| || ",
  304. X    "|| || ",
  305. X    "|| || ",
  306. X    " \\\\/  ",
  307. X    "      ",
  308. X    "      "
  309. X    },
  310. X
  311. X    {
  312. X    "     ",        /* 1 */
  313. X    " /|  ",
  314. X    "/||  ",
  315. X    " ||  ",
  316. X    " ||  ",
  317. X    " ||  ",
  318. X    ",/-' ",
  319. X    "     ",
  320. X    "     "
  321. X    },
  322. X
  323. X    {
  324. X    "     ",        /* 2 */
  325. X    " /\\  ",
  326. X    "(  ) ",
  327. X    "  // ",
  328. X    " //  ",
  329. X    "/(   ",
  330. X    "{___ ",
  331. X    "     ",
  332. X    "     "
  333. X    },
  334. X
  335. X    {
  336. X    "____ ",        /* 3 */
  337. X    "` // ",
  338. X    " //  ",
  339. X    " \\\\  ",
  340. X    "  )) ",
  341. X    " //  ",
  342. X    "/'   ",
  343. X    "     ",
  344. X    "     "
  345. X    },
  346. X
  347. X    {
  348. X    "  ,  ",        /* 4 */
  349. X    " /|  ",
  350. X    "/ |  ",
  351. X    "__|_ ",
  352. X    "---- ",
  353. X    "  |  ",
  354. X    " ,_, ",
  355. X    "     ",
  356. X    "     "
  357. X    },
  358. X
  359. X    {
  360. X    "____  ",        /* 5 */
  361. X    "||  ` ",
  362. X    "||_   ",
  363. X    "|/ \\  ",
  364. X    "   )) ",
  365. X    "  //  ",
  366. X    " /'   ",
  367. X    "      ",
  368. X    "      "
  369. X    },
  370. X
  371. X    {
  372. X    "      ",        /* 6 */
  373. X    "  ,/  ",
  374. X    " //   ",
  375. X    "((_-  ",
  376. X    "|| )) ",
  377. X    "(( || ",
  378. X    " \\//  ",
  379. X    "      ",
  380. X    "      "
  381. X    },
  382. X
  383. X    {
  384. X    "____  ",        /* 7 */
  385. X    "`  || ",
  386. X    "   /, ",
  387. X    "  //  ",
  388. X    " ((   ",
  389. X    " ||   ",
  390. X    " |'   ",
  391. X    "      ",
  392. X    "      "
  393. X    },
  394. X
  395. X    {
  396. X    "      ",        /* 8 */
  397. X    " /\\\\  ",
  398. X    "|| || ",
  399. X    " \\ /  ",
  400. X    " /\\\\  ",
  401. X    "// \\\\ ",
  402. X    "|| || ",
  403. X    " \\\\/  ",
  404. X    "      "
  405. X    },
  406. X
  407. X    {
  408. X    "      ",        /* 9 */
  409. X    " /\\\\  ",
  410. X    "|| || ",
  411. X    "|| || ",
  412. X    " \\/|| ",
  413. X    "   || ",
  414. X    " \\_/  ",
  415. X    "      ",
  416. X    "      "
  417. X    },
  418. X
  419. X    {
  420. X    "   ",            /* : */
  421. X    "   ",
  422. X    "   ",
  423. X    "<> ",
  424. X    "   ",
  425. X    "   ",
  426. X    "<> ",
  427. X    "   ",
  428. X    "   "
  429. X    },
  430. X
  431. X    {
  432. X    "   ",            /* ; */
  433. X    "   ",
  434. X    "   ",
  435. X    "<> ",
  436. X    "   ",
  437. X    "   ",
  438. X    "<> ",
  439. X    " ) ",
  440. X    "   "
  441. X    },
  442. X
  443. X    {
  444. X    "      ",        /* < */
  445. X    "    / ",
  446. X    "   /  ",
  447. X    " //   ",
  448. X    "<<    ",
  449. X    " \\\\   ",
  450. X    "   \\  ",
  451. X    "    \\ ",
  452. X    "      "
  453. X    },
  454. X
  455. X    {
  456. X    "      ",        /* = */
  457. X    "      ",
  458. X    "      ",
  459. X    "<>-<> ",
  460. X    "      ",
  461. X    "<>-<> ",
  462. X    "      ",
  463. X    "      ",
  464. X    "      "
  465. X    },
  466. X
  467. X    {
  468. X    "      ",        /* > */
  469. X    "\\     ",
  470. X    " \\    ",
  471. X    "  \\\\  ",
  472. X    "   >> ",
  473. X    "  //  ",
  474. X    " /    ",
  475. X    "/     ",
  476. X    "      "
  477. X    },
  478. X
  479. X    {
  480. X    " -_  ",        /* ? */
  481. X    "/ \\\\ ",
  482. X    "` || ",
  483. X    "  |, ",
  484. X    " ((  ",
  485. X    "     ",
  486. X    " <>  ",
  487. X    "     ",
  488. X    "     "
  489. X    },
  490. X
  491. X    {
  492. X    "      ",        /* @ */
  493. X    " /\\\\  ",
  494. X    "|| || ",
  495. X    "||/|| ",
  496. X    "||\\|  ",
  497. X    "||    ",
  498. X    " \\\\_, ",
  499. X    "      ",
  500. X    "      "
  501. X    },
  502. X
  503. X
  504. X#ifdef ITALIC
  505. X    {
  506. X    "           ",
  507. X    " _--_,     ",
  508. X    "   ,\\\\     ",
  509. X    "  ~' \\\\    ",
  510. X    "   |==\\\\   ",
  511. X    "   |   \\\\. ",
  512. X    " _---_  \\/ ",
  513. X    "(          ",
  514. X    "           "
  515. X    },
  516. X#else
  517. X    {
  518. X    "  ___    ",
  519. X    " -   -_, ",
  520. X    "(  ~/||  ",
  521. X    "(  / ||  ",
  522. X    " \\/==||  ",
  523. X    " /_ _||  ",
  524. X    "(  - \\\\, ",
  525. X    "         ",
  526. X    "         "
  527. X    },
  528. X#endif
  529. X
  530. X    {
  531. X    "          ",
  532. X    "_-_ _,,   ",
  533. X    "   -/  )  ",
  534. X    "  ~||_<   ",
  535. X    "   || \\\\  ",
  536. X    "   ,/--|| ",
  537. X    "  _--_-'  ",
  538. X    " (        ",
  539. X    "          "
  540. X    },
  541. X
  542. X    {
  543. X    "         ",
  544. X    "  ,- _~. ",
  545. X    " (' /|   ",
  546. X    "((  ||   ",
  547. X    "((  ||   ",
  548. X    " ( / |   ",
  549. X    "  -____- ",
  550. X    "         ",
  551. X    "         "
  552. X    },
  553. X
  554. X    {
  555. X    "          ",
  556. X    "-_____    ",
  557. X    "  ' | -,  ",
  558. X    " /| |  |` ",
  559. X    " || |==|| ",
  560. X    "~|| |  |, ",
  561. X    " ~-____,  ",
  562. X    "(         ",
  563. X    "          "
  564. X    },
  565. X
  566. X    {
  567. X    "         ",
  568. X    "  ,- _~, ",
  569. X    " (' /| / ",
  570. X    "((  ||/= ",
  571. X    "((  ||   ",
  572. X    " ( / |   ",
  573. X    "  -____- ",
  574. X    "         ",
  575. X    "         "
  576. X    },
  577. X
  578. X#ifdef ITALIC
  579. X    {
  580. X    "  __    ",
  581. X    "_// --_/",
  582. X    "  ||    ",
  583. X    " ~+|-/  ",
  584. X    "  ||    ",
  585. X    "  ||    ",
  586. X    " ,/     ",
  587. X    "        ",
  588. X    "        "
  589. X    },
  590. X#else
  591. X    {
  592. X    "    _ ,",
  593. X    "  ,- - ",
  594. X    " _||_  ",
  595. X    "' ||   ",
  596. X    "  ||   ",
  597. X    "  |,   ",
  598. X    "_-/    ",
  599. X    "       ",
  600. X    "       "
  601. X    },
  602. X#endif
  603. X
  604. X    {
  605. X    "    __ ,  ",
  606. X    "  ,-| ~   ",
  607. X    " ('||/__, ",
  608. X    "(( |||  | ",
  609. X    "(( |||==| ",
  610. X    " ( / |  , ",
  611. X    "  -____/  ",
  612. X    "          ",
  613. X    "          "
  614. X    },
  615. X
  616. X    {
  617. X    "          ",
  618. X    "_-_-      ",
  619. X    "  /,      ",
  620. X    "  || __   ",
  621. X    " ~||-  -  ",
  622. X    "  ||===|| ",
  623. X    " ( \\_, |  ",
  624. X    "       `  ",
  625. X    "          "
  626. X    },
  627. X
  628. X    {
  629. X    "     ",
  630. X    "_-_, ",
  631. X    "  // ",
  632. X    "  || ",
  633. X    " ~|| ",
  634. X    "  || ",
  635. X    "_-_, ",
  636. X    "     ",
  637. X    "     "
  638. X    },
  639. X
  640. X    {
  641. X    "      ",
  642. X    " _-_,,",
  643. X    "(  // ",
  644. X    "  _|| ",
  645. X    "  _|| ",
  646. X    "   || ",
  647. X    "-__-, ",
  648. X    "      ",
  649. X    "      "
  650. X    },
  651. X
  652. X    {
  653. X    "         ",
  654. X    "_-_-,    ",
  655. X    "  // ,   ",
  656. X    "  ||/\\\\  ",
  657. X    " ~|| <   ",
  658. X    "  ||/\\\\  ",
  659. X    " _-__,\\\\,",
  660. X    "         ",
  661. X    "         "
  662. X    },
  663. X
  664. X    {
  665. X    "        ",
  666. X    "_-_-    ",
  667. X    " /,     ",
  668. X    " ||     ",
  669. X    "~||     ",
  670. X    " ||     ",
  671. X    "(  -__, ",
  672. X    "        ",
  673. X    "        "
  674. X    },
  675. X
  676. X    {
  677. X    "          ",
  678. X    "  /\\\\,/\\\\,",
  679. X    " /| || || ",
  680. X    " || || || ",
  681. X    " ||=|= || ",
  682. X    "~|| || || ",
  683. X    " |, \\\\,\\\\,",
  684. X    "_-        ",
  685. X    "          "
  686. X    },
  687. X
  688. X    {
  689. X    "    __   ",
  690. X    "   /  -, ",
  691. X    "  ||   ) ",
  692. X    " ~||---) ",
  693. X    " ~||---, ",
  694. X    " ~||  /  ",
  695. X    "  |, /   ",
  696. X    "-_-  --~ ",
  697. X    "         "
  698. X    },
  699. X
  700. X    {
  701. X    "    __     ",
  702. X    "  ,-||-,   ",
  703. X    " ('|||  )  ",
  704. X    "(( |||--)) ",
  705. X    "(( |||--)) ",
  706. X    " ( / |  )  ",
  707. X    "  -____-   ",
  708. X    "           ",
  709. X    "           "
  710. X    },
  711. X
  712. X    {
  713. X    "         ",
  714. X    "-__ /\\\\  ",
  715. X    "  ||  \\\\ ",
  716. X    " /||__|| ",
  717. X    " \\||__|| ",
  718. X    "  ||  |, ",
  719. X    "_-||-_/  ",
  720. X    "  ||     ",
  721. X    "         "
  722. X    },
  723. X
  724. X    {
  725. X    "    __     ",
  726. X    "  ,-||-,   ",
  727. X    " ('|||  )  ",
  728. X    "(( |||--)) ",
  729. X    "(( |||--)) ",
  730. X    " ( / |  )  ",
  731. X    "  -____-\\\\ ",
  732. X    "           ",
  733. X    "           "
  734. X    },
  735. X
  736. X    {
  737. X    "        ",
  738. X    "-__ /\\  ",
  739. X    "  || \\, ",
  740. X    " /|| /  ",
  741. X    " \\||/-  ",
  742. X    "  ||  \\ ",
  743. X    "_---_-|,",
  744. X    "        ",
  745. X    "        "
  746. X    },
  747. X
  748. X    {
  749. X    "        ",
  750. X    "  -_-/  ",
  751. X    " (_ /   ",
  752. X    "(_ --_  ",
  753. X    "  --_ ) ",
  754. X    " _/  )) ",
  755. X    "(_-_-   ",
  756. X    "        ",
  757. X    "        "
  758. X    },
  759. X
  760. X    {
  761. X    " ___        ",
  762. X    "-   ---___- ",
  763. X    "   (' ||    ",
  764. X    "  ((  ||    ",
  765. X    " ((   ||    ",
  766. X    "  (( //     ",
  767. X    "    -____-  ",
  768. X    "            ",
  769. X    "            "
  770. X    },
  771. X
  772. X    {
  773. X    " _ _    _ ,",
  774. X    "- - /  - - ",
  775. X    "  ('||  || ",
  776. X    " (( ||--|| ",
  777. X    " (( ||--|| ",
  778. X    " (( /   || ",
  779. X    "   -___-\\\\,",
  780. X    "           ",
  781. X    "           "
  782. X    },
  783. X
  784. X    {
  785. X    " _      ",
  786. X    "- - _-  ",
  787. X    "  )-  ) ",
  788. X    "  )___) ",
  789. X    " ~)___) ",
  790. X    "  )  )  ",
  791. X    " /-_/   ",
  792. X    "        ",
  793. X    "        "
  794. X    },
  795. X
  796. X    {
  797. X    " _        ",
  798. X    "- - /, /, ",
  799. X    "  )/ )/ ) ",
  800. X    "  )__)__) ",
  801. X    " ~)__)__) ",
  802. X    "  )  )  ) ",
  803. X    " /-_/-_/  ",
  804. X    "          ",
  805. X    "          "
  806. X    },
  807. X
  808. X    {
  809. X    " _       ",
  810. X    "- -    /`",
  811. X    "  \\\\  /  ",
  812. X    "   \\\\/   ",
  813. X    "  ==/\\== ",
  814. X    "   / \\\\  ",
  815. X    "\\\\/   \\\\,",
  816. X    "         ",
  817. X    "         "
  818. X    },
  819. X
  820. X    {
  821. X    "         ",
  822. X    "-_   _   ",
  823. X    "  |,- `  ",
  824. X    " ~||__)) ",
  825. X    " ~||__)) ",
  826. X    "  |_ _,  ",
  827. X    " -' -    ",
  828. X    "( _-_    ",
  829. X    " -   '   "
  830. X    },
  831. X
  832. X    {
  833. X    "      ",
  834. X    "_-___ ",
  835. X    "    / ",
  836. X    "   /  ",
  837. X    " =/=  ",
  838. X    " /    ",
  839. X    "/-__- ",
  840. X    "      ",
  841. X    "      "
  842. X    },
  843. X
  844. X    {
  845. X    "  __ ",        /* [ left bracket */
  846. X    "||   ",
  847. X    "||   ",
  848. X    "||   ",
  849. X    "||   ",
  850. X    "||   ",
  851. X    "||   ",
  852. X    "||__ ",
  853. X    "     "
  854. X    },
  855. X
  856. X    {
  857. X    "      ",        /* \ back-slash */
  858. X    "\\     ",
  859. X    " \\    ",
  860. X    " \\\\   ",
  861. X    "  \\   ",
  862. X    "  \\\\  ",
  863. X    "   \\  ",
  864. X    "    \\ ",
  865. X    "      "
  866. X    },
  867. X
  868. X    {
  869. X    "__   ",        /* ] right bracket */
  870. X    "  || ",
  871. X    "  || ",
  872. X    "  || ",
  873. X    "  || ",
  874. X    "  || ",
  875. X    "  || ",
  876. X    "__|| ",
  877. X    "     "
  878. X    },
  879. X
  880. X    {
  881. X    "  x   ",        /* ^ caret */
  882. X    " / \\  ",
  883. X    "/   \\ ",
  884. X    "      ",
  885. X    "      ",
  886. X    "      ",
  887. X    "      ",
  888. X    "      ",
  889. X    "      "
  890. X    },
  891. X
  892. X    {
  893. X    "      ",        /* _ underscore */
  894. X    "      ",
  895. X    "      ",
  896. X    "      ",
  897. X    "      ",
  898. X    "      ",
  899. X    "      ",
  900. X    "_____ ",
  901. X    "      "
  902. X    },
  903. X
  904. X    {
  905. X    "   ",            /* ` back-quote */
  906. X    "<> ",
  907. X    "(  ",
  908. X    "   ",
  909. X    "   ",
  910. X    "   ",
  911. X    "   ",
  912. X    "   ",
  913. X    "   "
  914. X    },
  915. X#ifdef ITALIC
  916. X    {
  917. X    "       ",
  918. X    "       ",
  919. X    "       ",
  920. X    " _-_   ",
  921. X    "|| \\\\, ",
  922. X    "|| ||  ",
  923. X    "\\\\/\\\\, ",
  924. X    "       ",
  925. X    "       "
  926. X    },
  927. X#else
  928. X    {
  929. X    "      ",
  930. X    "      ",
  931. X    "  _   ",
  932. X    " < \\, ",
  933. X    " /-|| ",
  934. X    "(( || ",
  935. X    " \\/\\\\ ",
  936. X    "      ",
  937. X    "      "
  938. X    },
  939. X#endif
  940. X
  941. X    {
  942. X    "      ",
  943. X    ",,    ",
  944. X    "||    ",
  945. X    "||/|, ",
  946. X    "|| || ",
  947. X    "|| |' ",
  948. X    "\\\\/   ",
  949. X    "      ",
  950. X    "      "
  951. X    },
  952. X
  953. X    {
  954. X    "     ",
  955. X    "     ",
  956. X    "     ",
  957. X    " _-_ ",
  958. X    "||   ",
  959. X    "||   ",
  960. X    "\\\\,/ ",
  961. X    "     ",
  962. X    "     "
  963. X    },
  964. X#ifdef ITALIC
  965. X    {
  966. X    "        ",
  967. X    "     ,  ",
  968. X    "    ||  ",
  969. X    " _-_||  ",
  970. X    "|| \\\\|  ",
  971. X    "||  ||  ",
  972. X    " \\\\/\\\\, ",
  973. X    "        ",
  974. X    "        "
  975. X    },
  976. X#else
  977. X    {
  978. X    "      ",
  979. X    " |\\   ",
  980. X    "  \\\\  ",
  981. X    " / \\\\ ",
  982. X    "|| || ",
  983. X    "|| || ",
  984. X    " \\\\/  ",
  985. X    "      ",
  986. X    "      "
  987. X    },
  988. X#endif
  989. X    {
  990. X    "      ",
  991. X    "      ",
  992. X    "      ",
  993. X    " _-_  ",
  994. X    "|| \\\\ ",
  995. X    "||/   ",
  996. X    "\\\\,/  ",
  997. X    "      ",
  998. X    "      "
  999. X    },
  1000. X
  1001. X    {
  1002. X    "     ",
  1003. X    "  /\\ ",
  1004. X    " ||  ",
  1005. X    "=||= ",
  1006. X    " ||  ",
  1007. X    " ||  ",
  1008. X    " \\\\, ",
  1009. X    "     ",
  1010. X    "     "
  1011. X    },
  1012. X
  1013. X    {
  1014. X    "      ",
  1015. X    "      ",
  1016. X    "  _   ",
  1017. X    " / \\\\ ",
  1018. X    "|| || ",
  1019. X    "|| || ",
  1020. X    "\\\\_-| ",
  1021. X    " /  \\ ",
  1022. X    "'----`"
  1023. X    },
  1024. X#ifdef ITALIC
  1025. X    {
  1026. X    "      ",
  1027. X    " ,    ",
  1028. X    "||    ",
  1029. X    "||,<> ",
  1030. X    "|| || ",
  1031. X    "|| || ",
  1032. X    "<>,|| ",
  1033. X    "   |/ ",
  1034. X    "  ./  "
  1035. X    },
  1036. X
  1037. X    {
  1038. X    "   ",
  1039. X    "   ",
  1040. X    "<> ",
  1041. X    "-_ ",
  1042. X    "|| ",
  1043. X    "|| ",
  1044. X    "\\\\,",
  1045. X    "   ",
  1046. X    "   "
  1047. X    },
  1048. X#else
  1049. X    {
  1050. X    "      ",
  1051. X    ",,    ",
  1052. X    "||    ",
  1053. X    "||/\\\\ ",
  1054. X    "|| || ",
  1055. X    "|| || ",
  1056. X    "\\\\ |/ ",
  1057. X    "  _/  ",
  1058. X    "      "
  1059. X    },
  1060. X
  1061. X    {
  1062. X    "   ",
  1063. X    "   ",
  1064. X    " ' ",
  1065. X    "\\\\ ",
  1066. X    "|| ",
  1067. X    "|| ",
  1068. X    "\\\\ ",
  1069. X    "   ",
  1070. X    "   "
  1071. X    },
  1072. X#endif
  1073. X    {
  1074. X    "   ",
  1075. X    "   ",
  1076. X    " ' ",
  1077. X    "\\\\ ",
  1078. X    "|| ",
  1079. X    "|| ",
  1080. X    "|| ",
  1081. X    "|; ",
  1082. X    "/  "
  1083. X    },
  1084. X
  1085. X    {
  1086. X    "     ",
  1087. X    ",,   ",
  1088. X    "||   ",
  1089. X    "||/\\ ",
  1090. X    "||_< ",
  1091. X    "|| | ",
  1092. X    "\\\\,\\ ",
  1093. X    "     ",
  1094. X    "     "
  1095. X    },
  1096. X
  1097. X    {
  1098. X    "   ",
  1099. X    ",, ",
  1100. X    "|| ",
  1101. X    "|| ",
  1102. X    "|| ",
  1103. X    "|| ",
  1104. X    "\\\\ ",
  1105. X    "   ",
  1106. X    "   "
  1107. X    },
  1108. X
  1109. X    {
  1110. X    "         ",
  1111. X    "         ",
  1112. X    "         ",
  1113. X    "\\\\/\\\\/\\\\ ",
  1114. X    "|| || || ",
  1115. X    "|| || || ",
  1116. X    "\\\\ \\\\ \\\\ ",
  1117. X    "         ",
  1118. X    "         "
  1119. X    },
  1120. X
  1121. X    {
  1122. X    "      ",
  1123. X    "      ",
  1124. X    "      ",
  1125. X    "\\\\/\\\\ ",
  1126. X    "|| || ",
  1127. X    "|| || ",
  1128. X    "\\\\ \\\\ ",
  1129. X    "      ",
  1130. X    "      "
  1131. X    },
  1132. X
  1133. X    {
  1134. X    "      ",
  1135. X    "      ",
  1136. X    "      ",
  1137. X    " /'\\\\ ",
  1138. X    "|| || ",
  1139. X    "|| || ",
  1140. X    "\\\\,/  ",
  1141. X    "      ",
  1142. X    "      "
  1143. X    },
  1144. X
  1145. X    {
  1146. X    "      ",
  1147. X    "      ",
  1148. X    "      ",
  1149. X    "-_-_  ",
  1150. X    "|| \\\\ ",
  1151. X    "|| || ",
  1152. X    "||-'  ",
  1153. X    "|/    ",
  1154. X    "'     "
  1155. X    },
  1156. X
  1157. X    {
  1158. X    "      ",
  1159. X    "      ",
  1160. X    "      ",
  1161. X    " /'\\\\ ",
  1162. X    "|| || ",
  1163. X    "|| || ",
  1164. X    "\\\\,|| ",
  1165. X    "   || ",
  1166. X    "   '` "
  1167. X    },
  1168. X
  1169. X    {
  1170. X    "      ",
  1171. X    "      ",
  1172. X    "      ",
  1173. X    ",._-_ ",
  1174. X    " ||   ",
  1175. X    " ||   ",
  1176. X    " \\\\,  ",
  1177. X    "      ",
  1178. X    "      "
  1179. X    },
  1180. X
  1181. X    {
  1182. X    "      ",
  1183. X    "      ",
  1184. X    "      ",
  1185. X    " _-_, ",
  1186. X    "||_.  ",
  1187. X    " ~ || ",
  1188. X    ",-_-  ",
  1189. X    "      ",
  1190. X    "      "
  1191. X    },
  1192. X
  1193. X    {
  1194. X    "     ",
  1195. X    "  ,  ",
  1196. X    " ||  ",
  1197. X    "=||= ",
  1198. X    " ||  ",
  1199. X    " ||  ",
  1200. X    " \\\\, ",
  1201. X    "     ",
  1202. X    "     "
  1203. X    },
  1204. X
  1205. X    {
  1206. X    "      ",
  1207. X    "      ",
  1208. X    "      ",
  1209. X    "\\\\ \\\\ ",
  1210. X    "|| || ",
  1211. X    "|| || ",
  1212. X    "\\\\/\\\\ ",
  1213. X    "      ",
  1214. X    "      "
  1215. X    },
  1216. X
  1217. X    {
  1218. X    "     ",
  1219. X    "     ",
  1220. X    ";    ",
  1221. X    "\\\\/\\ ",
  1222. X    "|| | ",
  1223. X    "|| | ",
  1224. X    "\\\\/  ",
  1225. X    "     ",
  1226. X    "     "
  1227. X    },
  1228. X
  1229. X    {
  1230. X    "       ",
  1231. X    "       ",
  1232. X    ";      ",
  1233. X    "\\\\/\\/\\ ",
  1234. X    "|| | | ",
  1235. X    "|| | | ",
  1236. X    "\\\\/\\\\/ ",
  1237. X    "       ",
  1238. X    "       "
  1239. X    },
  1240. X
  1241. X    {
  1242. X    "      ",
  1243. X    "      ",
  1244. X    ",     ",
  1245. X    "\\\\ /` ",
  1246. X    " \\\\   ",
  1247. X    " /\\\\  ",
  1248. X    "/  \\; ",
  1249. X    "      ",
  1250. X    "      "
  1251. X    },
  1252. X#ifdef ITALIC
  1253. X    {
  1254. X    "      ",
  1255. X    "      ",
  1256. X    "      ",
  1257. X    "-_ -_ ",
  1258. X    "|| || ",
  1259. X    "|| || ",
  1260. X    "\\\\,|| ",
  1261. X    "   |/ ",
  1262. X    "  ./  "
  1263. X    },
  1264. X#else
  1265. X    {
  1266. X    "       ",
  1267. X    "       ",
  1268. X    "       ",
  1269. X    "'\\\\/\\\\ ",
  1270. X    " || ;' ",
  1271. X    " ||/   ",
  1272. X    " |/    ",
  1273. X    "(      ",
  1274. X    " -_-   "
  1275. X    },
  1276. X
  1277. X#endif
  1278. X    {
  1279. X    "    ",
  1280. X    "    ",
  1281. X    "    ",
  1282. X    "/\\\\ ",
  1283. X    " /  ",
  1284. X    "/\\\\ ",
  1285. X    " || ",
  1286. X    " /  ",
  1287. X    "(,  "
  1288. X    },
  1289. X
  1290. X    {
  1291. X    "   _ ",        /* { left curly bracket */
  1292. X    "  (  ",
  1293. X    "  )  ",
  1294. X    "  )  ",
  1295. X    "-{   ",
  1296. X    "  )  ",
  1297. X    "  )  ",
  1298. X    "  (_ ",
  1299. X    "     "
  1300. X    },
  1301. X
  1302. X    {
  1303. X    "   ",            /* | vertical bar */
  1304. X    "|| ",
  1305. X    "|| ",
  1306. X    "|| ",
  1307. X    "|| ",
  1308. X    "|| ",
  1309. X    "|| ",
  1310. X    "|| ",
  1311. X    "   "
  1312. X    },
  1313. X
  1314. X    {
  1315. X    "_    ",        /* } right curly bracket */
  1316. X    " )   ",
  1317. X    " (   ",
  1318. X    " (   ",
  1319. X    "  }- ",
  1320. X    " (   ",
  1321. X    " (   ",
  1322. X    "_)   ",
  1323. X    "     "
  1324. X    },
  1325. X
  1326. X    {
  1327. X    " _    ",        /* ~ tilde */
  1328. X    "/ \\_/ ",
  1329. X    "      ",
  1330. X    "      ",
  1331. X    "      ",
  1332. X    "      ",
  1333. X    "      ",
  1334. X    "      ",
  1335. X    "      "
  1336. X    }
  1337. X};
  1338. X
  1339. Xchar           *outbuf;
  1340. Xvoid            print();
  1341. Xint             width = DEFWIDTH;
  1342. X#ifdef _MTS
  1343. X__fortran void  scards(), sprint();
  1344. Xshort           len;
  1345. Xint             lnum, mods = 0, _noopen, rc;
  1346. X#define gets(buffer) \
  1347. X    scards(buffer,&len,&mods,&lnum, __retcode rc), \
  1348. X    buffer[len]='\0', \
  1349. X    rc == 0 ? 1 : 0
  1350. X#define puts(outbuf)    \
  1351. X    len = outptr - outbuf;    \
  1352. X    sprint(outbuf,&len,&mods,&lnum)
  1353. X#define NewLine \
  1354. X    len=1;    \
  1355. X    sprint(outbuf,&len,&mods,&lnum)
  1356. X#define BufAdj    1
  1357. X#define GE    >
  1358. X#else
  1359. X#define NewLine    putchar('\n')
  1360. X#define BufAdj    0
  1361. X#define GE    >=
  1362. X#endif
  1363. X
  1364. X
  1365. Xmain(argc, argv)
  1366. X    int             argc;
  1367. X    char          **argv;
  1368. X{
  1369. X    char            buffer[256], *malloc();
  1370. X
  1371. X    if (argc > 1) {
  1372. X    if (argv[1][0] == '-') {
  1373. X        width = atoi(&argv[1][1]);
  1374. X        argc--;
  1375. X        argv++;
  1376. X    }
  1377. X    }
  1378. X    outbuf = malloc(width + 20);
  1379. X#ifdef _MTS
  1380. X    *outbuf = ' ';
  1381. X#endif
  1382. X
  1383. X    if (argc < 2) {        /* read message from stdin */
  1384. X    while (gets(buffer) != NULL)
  1385. X        print(buffer);
  1386. X    } else {
  1387. X    for (--argc; argc != 1; argc--) {
  1388. X        argv[argc]--;
  1389. X        *argv[argc] = ' ';
  1390. X    }
  1391. X    print(argv[1]);
  1392. X    }
  1393. X}
  1394. X
  1395. Xvoid
  1396. Xprint(buf)
  1397. X    char           *buf;
  1398. X{
  1399. X    register int    i;
  1400. X    register char  *inptr, *outptr, *prevptr, *spinptr, *spptr;
  1401. X    register char const *dataptr;
  1402. X    int             wrapped;
  1403. X    char        oldc;
  1404. X
  1405. X    do {
  1406. X    wrapped = 0;
  1407. X    spinptr = buf;
  1408. X    for (i = 0; i < 9; i++) {
  1409. X        outptr = outbuf + BufAdj;
  1410. X        *outptr = '\0';
  1411. X        for (inptr = buf; *inptr; inptr++) {
  1412. X        prevptr = outptr;
  1413. X        if (isprint(*inptr))
  1414. X            dataptr = glyphs[toascii(*inptr) - toascii(' ')].lines[i];
  1415. X        else
  1416. X            dataptr = glyphs[0].lines[i];
  1417. X        if (dataptr == glyphs[0].lines[i]) {
  1418. X            spinptr = inptr+1;
  1419. X            spptr = outptr;
  1420. X        }
  1421. X        for (; *dataptr;)
  1422. X            *outptr++ = *dataptr++;
  1423. X        if (outptr - outbuf > width) {
  1424. X            wrapped = 1;
  1425. X            if (spinptr == buf) {
  1426. X                outptr = prevptr;
  1427. X            } else {
  1428. X            outptr = spptr;
  1429. X            inptr = spinptr;
  1430. X            if (spptr == prevptr)
  1431. X                inptr--;
  1432. X            }
  1433. X            oldc = *inptr;
  1434. X            *inptr = '\0';
  1435. X            break;
  1436. X        }
  1437. X        }
  1438. X        for (outptr--; outptr GE outbuf; outptr--)
  1439. X        if (*outptr != ' ')
  1440. X            break;
  1441. X        *++outptr = '\0';
  1442. X        puts(outbuf);
  1443. X    }
  1444. X    NewLine;
  1445. X    if (wrapped) {
  1446. X        buf = inptr;
  1447. X        *inptr = oldc;
  1448. X        if (oldc == ' ')
  1449. X        buf++;
  1450. X    }
  1451. X    } while (wrapped);
  1452. X}
  1453. ________This_Is_The_END________
  1454. if test `wc -c < gothic.c` -ne    15980; then
  1455.     echo 'shar: gothic.c was damaged during transit (should have been    15980 bytes)'
  1456. fi
  1457. fi        ; : end of overwriting check
  1458. exit 0
  1459. -- 
  1460.   -- Howard Chu @ Jet Propulsion Laboratory, Pasadena, CA
  1461.  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1462.  ::To the owner of the blue Mazda, license 742-XLT, your headlights are on...::
  1463.  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1464.  
  1465. exit 0 # Just in case...
  1466.