home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume31 / gothic / part01 < prev    next >
Encoding:
Text File  |  1992-08-13  |  19.9 KB  |  1,461 lines

  1. Newsgroups: comp.sources.misc
  2. From: hyc@hanauma.jpl.nasa.gov (Howard Chu)
  3. Subject:  v31i079:  gothic - Print gothic text v1.6, Part01/01
  4. Message-ID: <1992Aug14.200818.4920@sparky.imd.sterling.com>
  5. X-Md4-Signature: 2e882a4b3425ea249613053a6ee312cc
  6. Date: Fri, 14 Aug 1992 20:08:18 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: hyc@hanauma.jpl.nasa.gov (Howard Chu)
  10. Posting-number: Volume 31, Issue 79
  11. Archive-name: gothic/part01
  12. Environment: UNIX
  13.  
  14. This is gothic version 1.6.  Better yet...
  15.     __ ,
  16.   ,-| ~           ,  ,,               /|       ,/
  17.  ('||/__,        ||  ||     '        /||      //
  18. (( |||  |  /'\\ =||= ||/\\ \\  _-_    ||     ((_-
  19. (( |||==| || ||  ||  || || || ||      ||     || ))
  20.  ( / |  , || ||  ||  || || || ||      ||     (( ||
  21.   -____/  \\,/   \\, \\ |/ \\ \\,/   ,/-' <>  \//
  22.                        _/
  23.  
  24. This is an updated version of the program I posted last December. At that 
  25. time I had only created descriptions of the alpha characters, plus one or 
  26. two punctuation characters. This version has a full 96 characters defined, 
  27. and also does automatic word-wrap for printing out longer messages.  
  28.  
  29. The output width defaults to 79, and can be changed by the first argument 
  30. of the program. E.g.,
  31.     gothic -132
  32. will run with the width set to 132 characters. (For real perversity, try
  33. an Xterm with the tiny font selected. Set your window to about 480 columns 
  34. by 400 rows, and feed some C source code in...)
  35.  
  36. If you have the xstr program you may want to use it to process this
  37. file before compiling, that should save around 2K. Of course, the entire
  38. program is smaller than 8K already, so it's probably no big deal.
  39.  
  40. Compile and run. With no arguments (or just a width argument) the program
  41. reads text from stdin, otherwise it processes its arguments.
  42.  
  43.   -- Howard Chu @ Jet Propulsion Laboratory, Pasadena, CA
  44. #--------------------------------CUT HERE-------------------------------------
  45. #! /bin/sh
  46. #
  47. # This is a shell archive.  Save this into a file, edit it
  48. # and delete all lines above this comment.  Then give this
  49. # file to sh by executing the command "sh file".  The files
  50. # will be extracted into the current directory owned by
  51. # you with default permissions.
  52. #
  53. # The files contained herein are:
  54. #
  55. # -rw-r--r--  1 hyc         15980 Aug 14 00:11 gothic.c
  56. #
  57. echo 'x - gothic.c'
  58. if test -f gothic.c; then echo 'shar: not overwriting gothic.c'; else
  59. sed 's/^X//' << '________This_Is_The_END________' > gothic.c
  60. X/*
  61. X * Print a line of text in Gothic (Black) Script. Very simple routine,
  62. X * just a lot of data to worry about...
  63. X * 
  64. X * Remember to escape all backslashes when editing characters...
  65. X *  -- hyc, 12-29-91
  66. X *
  67. X * $Log: gothic.c,v $
  68. X * Revision 1.6  1992/08/14  07:11:20  hyc
  69. X * Fix typos in back-slash and right bracket.
  70. X *
  71. X * Revision 1.5  1992/08/14  05:06:45  hyc
  72. X * Streamlined MTS support.
  73. X *
  74. X * Revision 1.4  1992/08/14  04:26:49  hyc
  75. X * Implement word-wrap in addition to previous character/line wrap.
  76. X * Full 96 character printable ASCII set implemented.
  77. X *
  78. X */
  79. X
  80. X#ifdef _MTS
  81. X#define _ADD 1
  82. X#include <stdlib.h>
  83. X#include <ctype.h>
  84. X#else
  85. X#include <stdio.h>
  86. X#include <ctype.h>
  87. X#undef toascii
  88. X#define toascii(x) x
  89. X#endif
  90. X
  91. X#ifndef __STDC__
  92. X#define    const
  93. X#endif
  94. X
  95. X#ifndef DEFWIDTH
  96. X#define DEFWIDTH 79
  97. X#endif
  98. X
  99. Xconst struct letter {
  100. X    const char     *lines[9];
  101. X}               glyphs[96] = {
  102. X    {
  103. X    "  ",            /* space */
  104. X    "  ",
  105. X    "  ",
  106. X    "  ",
  107. X    "  ",
  108. X    "  ",
  109. X    "  ",
  110. X    "  ",
  111. X    "  "
  112. X    },
  113. X
  114. X    {
  115. X    "   ",            /* ! bang */
  116. X    "/\\ ",
  117. X    "\\/ ",
  118. X    "}{ ",
  119. X    "\\/ ",
  120. X    "   ",
  121. X    "<> ",
  122. X    "   ",
  123. X    "   "
  124. X    },
  125. X
  126. X    {
  127. X    "      ",        /* " double-quote */
  128. X    "<> <> ",
  129. X    " )  ) ",
  130. X    "      ",
  131. X    "      ",
  132. X    "      ",
  133. X    "      ",
  134. X    "      ",
  135. X    "      "
  136. X    },
  137. X
  138. X    {
  139. X    "          ",        /* # sharp */
  140. X    "  <> <>   ",
  141. X    "  }{ }{   ",
  142. X    "<>++=++<> ",
  143. X    "  }{ }{   ",
  144. X    "<>++=++<> ",
  145. X    "  }{ }{   ",
  146. X    "  <> <>   ",
  147. X    "          "
  148. X    },
  149. X
  150. X    {
  151. X    "       ",        /* $ dollar */
  152. X    " _++_, ",
  153. X    "||||   ",
  154. X    "||--.  ",
  155. X    " ~|||| ",
  156. X    "  |||| ",
  157. X    ",-__-  ",
  158. X    "  ||   ",
  159. X    "       "
  160. X    },
  161. X
  162. X    {
  163. X    "      ",        /* % per-cent */
  164. X    "    , ",
  165. X    "<>  / ",
  166. X    "   /  ",
  167. X    "  /   ",
  168. X    " /    ",
  169. X    "/  <> ",
  170. X    "`     ",
  171. X    "      "
  172. X    },
  173. X
  174. X    {
  175. X    "      ",        /* & ampersand */
  176. X    " /\\   ",
  177. X    " \\/   ",
  178. X    " /\\ , ",
  179. X    "/'\\\\, ",
  180. X    "|  \\\\ ",
  181. X    "\\\\-/\\ ",
  182. X    "      ",
  183. X    "      "
  184. X    },
  185. X
  186. X    {
  187. X    "   ",            /* ' single quote */
  188. X    "<> ",
  189. X    " ) ",
  190. X    "   ",
  191. X    "   ",
  192. X    "   ",
  193. X    "   ",
  194. X    "   ",
  195. X    "   "
  196. X    },
  197. X
  198. X    {
  199. X    "   ",            /* ( left paren */
  200. X    " / ",
  201. X    "// ",
  202. X    "|| ",
  203. X    "|| ",
  204. X    "|| ",
  205. X    "\\\\ ",
  206. X    " \\ ",
  207. X    "   "
  208. X    },
  209. X
  210. X    {
  211. X    "   ",            /* ) right paren */
  212. X    "\\  ",
  213. X    "\\\\ ",
  214. X    "|| ",
  215. X    "|| ",
  216. X    "|| ",
  217. X    "// ",
  218. X    "/  ",
  219. X    "   "
  220. X    },
  221. X
  222. X    {
  223. X    "        ",        /* * asterisk */
  224. X    "        ",
  225. X    " <> <>  ",
  226. X    "  \\ /   ",
  227. X    "<>-*-<> ",
  228. X    "  / \\   ",
  229. X    " <> <>  ",
  230. X    "        ",
  231. X    "        "
  232. X    },
  233. X
  234. X    {
  235. X    "       ",        /* + plus */
  236. X    "       ",
  237. X    "  <>   ",
  238. X    "  }{   ",
  239. X    "<>--<> ",
  240. X    "  }{   ",
  241. X    "  <>   ",
  242. X    "       ",
  243. X    "       "
  244. X    },
  245. X
  246. X    {
  247. X    "   ",            /* , comma */
  248. X    "   ",
  249. X    "   ",
  250. X    "   ",
  251. X    "   ",
  252. X    "   ",
  253. X    "<> ",
  254. X    " ) ",
  255. X    "   "
  256. X    },
  257. X
  258. X    {
  259. X    "      ",        /* - hyphen */
  260. X    "      ",
  261. X    "      ",
  262. X    "      ",
  263. X    "<>-<> ",
  264. X    "      ",
  265. X    "      ",
  266. X    "      ",
  267. X    "      "
  268. X    },
  269. X
  270. X    {
  271. X    "   ",            /* . period */
  272. X    "   ",
  273. X    "   ",
  274. X    "   ",
  275. X    "   ",
  276. X    "   ",
  277. X    "<> ",
  278. X    "   ",
  279. X    "   "
  280. X    },
  281. X
  282. X    {
  283. X    "      ",        /* / slash */
  284. X    "    / ",
  285. X    "   /  ",
  286. X    "  //  ",
  287. X    "  /   ",
  288. X    " //   ",
  289. X    " /    ",
  290. X    "/     ",
  291. X    "      "
  292. X    },
  293. X
  294. X    {
  295. X    "      ",        /* 0 */
  296. X    " /\\\\  ",
  297. X    "|| || ",
  298. X    "|| || ",
  299. X    "|| || ",
  300. X    "|| || ",
  301. X    " \\\\/  ",
  302. X    "      ",
  303. X    "      "
  304. X    },
  305. X
  306. X    {
  307. X    "     ",        /* 1 */
  308. X    " /|  ",
  309. X    "/||  ",
  310. X    " ||  ",
  311. X    " ||  ",
  312. X    " ||  ",
  313. X    ",/-' ",
  314. X    "     ",
  315. X    "     "
  316. X    },
  317. X
  318. X    {
  319. X    "     ",        /* 2 */
  320. X    " /\\  ",
  321. X    "(  ) ",
  322. X    "  // ",
  323. X    " //  ",
  324. X    "/(   ",
  325. X    "{___ ",
  326. X    "     ",
  327. X    "     "
  328. X    },
  329. X
  330. X    {
  331. X    "____ ",        /* 3 */
  332. X    "` // ",
  333. X    " //  ",
  334. X    " \\\\  ",
  335. X    "  )) ",
  336. X    " //  ",
  337. X    "/'   ",
  338. X    "     ",
  339. X    "     "
  340. X    },
  341. X
  342. X    {
  343. X    "  ,  ",        /* 4 */
  344. X    " /|  ",
  345. X    "/ |  ",
  346. X    "__|_ ",
  347. X    "---- ",
  348. X    "  |  ",
  349. X    " ,_, ",
  350. X    "     ",
  351. X    "     "
  352. X    },
  353. X
  354. X    {
  355. X    "____  ",        /* 5 */
  356. X    "||  ` ",
  357. X    "||_   ",
  358. X    "|/ \\  ",
  359. X    "   )) ",
  360. X    "  //  ",
  361. X    " /'   ",
  362. X    "      ",
  363. X    "      "
  364. X    },
  365. X
  366. X    {
  367. X    "      ",        /* 6 */
  368. X    "  ,/  ",
  369. X    " //   ",
  370. X    "((_-  ",
  371. X    "|| )) ",
  372. X    "(( || ",
  373. X    " \\//  ",
  374. X    "      ",
  375. X    "      "
  376. X    },
  377. X
  378. X    {
  379. X    "____  ",        /* 7 */
  380. X    "`  || ",
  381. X    "   /, ",
  382. X    "  //  ",
  383. X    " ((   ",
  384. X    " ||   ",
  385. X    " |'   ",
  386. X    "      ",
  387. X    "      "
  388. X    },
  389. X
  390. X    {
  391. X    "      ",        /* 8 */
  392. X    " /\\\\  ",
  393. X    "|| || ",
  394. X    " \\ /  ",
  395. X    " /\\\\  ",
  396. X    "// \\\\ ",
  397. X    "|| || ",
  398. X    " \\\\/  ",
  399. X    "      "
  400. X    },
  401. X
  402. X    {
  403. X    "      ",        /* 9 */
  404. X    " /\\\\  ",
  405. X    "|| || ",
  406. X    "|| || ",
  407. X    " \\/|| ",
  408. X    "   || ",
  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#ifdef ITALIC
  500. X    {
  501. X    "           ",
  502. X    " _--_,     ",
  503. X    "   ,\\\\     ",
  504. X    "  ~' \\\\    ",
  505. X    "   |==\\\\   ",
  506. X    "   |   \\\\. ",
  507. X    " _---_  \\/ ",
  508. X    "(          ",
  509. X    "           "
  510. X    },
  511. X#else
  512. X    {
  513. X    "  ___    ",
  514. X    " -   -_, ",
  515. X    "(  ~/||  ",
  516. X    "(  / ||  ",
  517. X    " \\/==||  ",
  518. X    " /_ _||  ",
  519. X    "(  - \\\\, ",
  520. X    "         ",
  521. X    "         "
  522. X    },
  523. X#endif
  524. X
  525. X    {
  526. X    "          ",
  527. X    "_-_ _,,   ",
  528. X    "   -/  )  ",
  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#ifdef ITALIC
  574. X    {
  575. X    "  __    ",
  576. X    "_// --_/",
  577. X    "  ||    ",
  578. X    " ~+|-/  ",
  579. X    "  ||    ",
  580. X    "  ||    ",
  581. X    " ,/     ",
  582. X    "        ",
  583. X    "        "
  584. X    },
  585. X#else
  586. X    {
  587. X    "    _ ,",
  588. X    "  ,- - ",
  589. X    " _||_  ",
  590. X    "' ||   ",
  591. X    "  ||   ",
  592. X    "  |,   ",
  593. X    "_-/    ",
  594. X    "       ",
  595. X    "       "
  596. X    },
  597. X#endif
  598. X
  599. X    {
  600. X    "    __ ,  ",
  601. X    "  ,-| ~   ",
  602. X    " ('||/__, ",
  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    "  __ ",        /* [ left bracket */
  841. X    "||   ",
  842. X    "||   ",
  843. X    "||   ",
  844. X    "||   ",
  845. X    "||   ",
  846. X    "||   ",
  847. X    "||__ ",
  848. X    "     "
  849. X    },
  850. X
  851. X    {
  852. X    "      ",        /* \ back-slash */
  853. X    "\\     ",
  854. X    " \\    ",
  855. X    " \\\\   ",
  856. X    "  \\   ",
  857. X    "  \\\\  ",
  858. X    "   \\  ",
  859. X    "    \\ ",
  860. X    "      "
  861. X    },
  862. X
  863. X    {
  864. X    "__   ",        /* ] right bracket */
  865. X    "  || ",
  866. X    "  || ",
  867. X    "  || ",
  868. X    "  || ",
  869. X    "  || ",
  870. X    "  || ",
  871. X    "__|| ",
  872. X    "     "
  873. X    },
  874. X
  875. X    {
  876. X    "  x   ",        /* ^ caret */
  877. X    " / \\  ",
  878. X    "/   \\ ",
  879. X    "      ",
  880. X    "      ",
  881. X    "      ",
  882. X    "      ",
  883. X    "      ",
  884. X    "      "
  885. X    },
  886. X
  887. X    {
  888. X    "      ",        /* _ underscore */
  889. X    "      ",
  890. X    "      ",
  891. X    "      ",
  892. X    "      ",
  893. X    "      ",
  894. X    "      ",
  895. X    "_____ ",
  896. X    "      "
  897. X    },
  898. X
  899. X    {
  900. X    "   ",            /* ` back-quote */
  901. X    "<> ",
  902. X    "(  ",
  903. X    "   ",
  904. X    "   ",
  905. X    "   ",
  906. X    "   ",
  907. X    "   ",
  908. X    "   "
  909. X    },
  910. X#ifdef ITALIC
  911. X    {
  912. X    "       ",
  913. X    "       ",
  914. X    "       ",
  915. X    " _-_   ",
  916. X    "|| \\\\, ",
  917. X    "|| ||  ",
  918. X    "\\\\/\\\\, ",
  919. X    "       ",
  920. X    "       "
  921. X    },
  922. X#else
  923. X    {
  924. X    "      ",
  925. X    "      ",
  926. X    "  _   ",
  927. X    " < \\, ",
  928. X    " /-|| ",
  929. X    "(( || ",
  930. X    " \\/\\\\ ",
  931. X    "      ",
  932. X    "      "
  933. X    },
  934. X#endif
  935. X
  936. X    {
  937. X    "      ",
  938. X    ",,    ",
  939. X    "||    ",
  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#ifdef ITALIC
  960. X    {
  961. X    "        ",
  962. X    "     ,  ",
  963. X    "    ||  ",
  964. X    " _-_||  ",
  965. X    "|| \\\\|  ",
  966. X    "||  ||  ",
  967. X    " \\\\/\\\\, ",
  968. X    "        ",
  969. X    "        "
  970. X    },
  971. X#else
  972. X    {
  973. X    "      ",
  974. X    " |\\   ",
  975. X    "  \\\\  ",
  976. X    " / \\\\ ",
  977. X    "|| || ",
  978. X    "|| || ",
  979. X    " \\\\/  ",
  980. X    "      ",
  981. X    "      "
  982. X    },
  983. X#endif
  984. X    {
  985. X    "      ",
  986. X    "      ",
  987. X    "      ",
  988. X    " _-_  ",
  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#ifdef ITALIC
  1020. X    {
  1021. X    "      ",
  1022. X    " ,    ",
  1023. X    "||    ",
  1024. X    "||,<> ",
  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#else
  1044. X    {
  1045. X    "      ",
  1046. X    ",,    ",
  1047. X    "||    ",
  1048. X    "||/\\\\ ",
  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#endif
  1068. X    {
  1069. X    "   ",
  1070. X    "   ",
  1071. X    " ' ",
  1072. X    "\\\\ ",
  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#ifdef ITALIC
  1248. X    {
  1249. X    "      ",
  1250. X    "      ",
  1251. X    "      ",
  1252. X    "-_ -_ ",
  1253. X    "|| || ",
  1254. X    "|| || ",
  1255. X    "\\\\,|| ",
  1256. X    "   |/ ",
  1257. X    "  ./  "
  1258. X    },
  1259. X#else
  1260. X    {
  1261. X    "       ",
  1262. X    "       ",
  1263. X    "       ",
  1264. X    "'\\\\/\\\\ ",
  1265. X    " || ;' ",
  1266. X    " ||/   ",
  1267. X    " |/    ",
  1268. X    "(      ",
  1269. X    " -_-   "
  1270. X    },
  1271. X
  1272. X#endif
  1273. X    {
  1274. X    "    ",
  1275. X    "    ",
  1276. X    "    ",
  1277. X    "/\\\\ ",
  1278. X    " /  ",
  1279. X    "/\\\\ ",
  1280. X    " || ",
  1281. X    " /  ",
  1282. X    "(,  "
  1283. X    },
  1284. X
  1285. X    {
  1286. X    "   _ ",        /* { left curly bracket */
  1287. X    "  (  ",
  1288. X    "  )  ",
  1289. X    "  )  ",
  1290. X    "-{   ",
  1291. X    "  )  ",
  1292. X    "  )  ",
  1293. X    "  (_ ",
  1294. X    "     "
  1295. X    },
  1296. X
  1297. X    {
  1298. X    "   ",            /* | vertical bar */
  1299. X    "|| ",
  1300. X    "|| ",
  1301. X    "|| ",
  1302. X    "|| ",
  1303. X    "|| ",
  1304. X    "|| ",
  1305. X    "|| ",
  1306. X    "   "
  1307. X    },
  1308. X
  1309. X    {
  1310. X    "_    ",        /* } right curly bracket */
  1311. X    " )   ",
  1312. X    " (   ",
  1313. X    " (   ",
  1314. X    "  }- ",
  1315. X    " (   ",
  1316. X    " (   ",
  1317. X    "_)   ",
  1318. X    "     "
  1319. X    },
  1320. X
  1321. X    {
  1322. X    " _    ",        /* ~ tilde */
  1323. X    "/ \\_/ ",
  1324. X    "      ",
  1325. X    "      ",
  1326. X    "      ",
  1327. X    "      ",
  1328. X    "      ",
  1329. X    "      ",
  1330. X    "      "
  1331. X    }
  1332. X};
  1333. X
  1334. Xchar           *outbuf;
  1335. Xvoid            print();
  1336. Xint             width = DEFWIDTH;
  1337. X#ifdef _MTS
  1338. X__fortran void  scards(), sprint();
  1339. Xshort           len;
  1340. Xint             lnum, mods = 0, _noopen, rc;
  1341. X#define gets(buffer) \
  1342. X    scards(buffer,&len,&mods,&lnum, __retcode rc), \
  1343. X    buffer[len]='\0', \
  1344. X    rc == 0 ? 1 : 0
  1345. X#define puts(outbuf)    \
  1346. X    len = outptr - outbuf;    \
  1347. X    sprint(outbuf,&len,&mods,&lnum)
  1348. X#define NewLine \
  1349. X    len=1;    \
  1350. X    sprint(outbuf,&len,&mods,&lnum)
  1351. X#define BufAdj    1
  1352. X#define GE    >
  1353. X#else
  1354. X#define NewLine    putchar('\n')
  1355. X#define BufAdj    0
  1356. X#define GE    >=
  1357. X#endif
  1358. X
  1359. X
  1360. Xmain(argc, argv)
  1361. X    int             argc;
  1362. X    char          **argv;
  1363. X{
  1364. X    char            buffer[256], *malloc();
  1365. X
  1366. X    if (argc > 1) {
  1367. X    if (argv[1][0] == '-') {
  1368. X        width = atoi(&argv[1][1]);
  1369. X        argc--;
  1370. X        argv++;
  1371. X    }
  1372. X    }
  1373. X    outbuf = malloc(width + 20);
  1374. X#ifdef _MTS
  1375. X    *outbuf = ' ';
  1376. X#endif
  1377. X
  1378. X    if (argc < 2) {        /* read message from stdin */
  1379. X    while (gets(buffer) != NULL)
  1380. X        print(buffer);
  1381. X    } else {
  1382. X    for (--argc; argc != 1; argc--) {
  1383. X        argv[argc]--;
  1384. X        *argv[argc] = ' ';
  1385. X    }
  1386. X    print(argv[1]);
  1387. X    }
  1388. X}
  1389. X
  1390. Xvoid
  1391. Xprint(buf)
  1392. X    char           *buf;
  1393. X{
  1394. X    register int    i;
  1395. X    register char  *inptr, *outptr, *prevptr, *spinptr, *spptr;
  1396. X    register char const *dataptr;
  1397. X    int             wrapped;
  1398. X    char        oldc;
  1399. X
  1400. X    do {
  1401. X    wrapped = 0;
  1402. X    spinptr = buf;
  1403. X    for (i = 0; i < 9; i++) {
  1404. X        outptr = outbuf + BufAdj;
  1405. X        *outptr = '\0';
  1406. X        for (inptr = buf; *inptr; inptr++) {
  1407. X        prevptr = outptr;
  1408. X        if (isprint(*inptr))
  1409. X            dataptr = glyphs[toascii(*inptr) - toascii(' ')].lines[i];
  1410. X        else
  1411. X            dataptr = glyphs[0].lines[i];
  1412. X        if (dataptr == glyphs[0].lines[i]) {
  1413. X            spinptr = inptr+1;
  1414. X            spptr = outptr;
  1415. X        }
  1416. X        for (; *dataptr;)
  1417. X            *outptr++ = *dataptr++;
  1418. X        if (outptr - outbuf > width) {
  1419. X            wrapped = 1;
  1420. X            if (spinptr == buf) {
  1421. X                outptr = prevptr;
  1422. X            } else {
  1423. X            outptr = spptr;
  1424. X            inptr = spinptr;
  1425. X            if (spptr == prevptr)
  1426. X                inptr--;
  1427. X            }
  1428. X            oldc = *inptr;
  1429. X            *inptr = '\0';
  1430. X            break;
  1431. X        }
  1432. X        }
  1433. X        for (outptr--; outptr GE outbuf; outptr--)
  1434. X        if (*outptr != ' ')
  1435. X            break;
  1436. X        *++outptr = '\0';
  1437. X        puts(outbuf);
  1438. X    }
  1439. X    NewLine;
  1440. X    if (wrapped) {
  1441. X        buf = inptr;
  1442. X        *inptr = oldc;
  1443. X        if (oldc == ' ')
  1444. X        buf++;
  1445. X    }
  1446. X    } while (wrapped);
  1447. X}
  1448. ________This_Is_The_END________
  1449. if test `wc -c < gothic.c` -ne    15980; then
  1450.     echo 'shar: gothic.c was damaged during transit (should have been    15980 bytes)'
  1451. fi
  1452. fi        ; : end of overwriting check
  1453. exit 0
  1454. -- 
  1455.   -- Howard Chu @ Jet Propulsion Laboratory, Pasadena, CA
  1456.  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1457.  ::To the owner of the blue Mazda, license 742-XLT, your headlights are on...::
  1458.  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1459.  
  1460. exit 0 # Just in case...
  1461.