home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / banners-1.1 / part05 < prev    next >
Text File  |  1993-04-11  |  23KB  |  1,570 lines

  1. Newsgroups: comp.sources.unix
  2. From: fkk@stasys.sta.sub.org (Frank Kaefer)
  3. Subject: v26i145: banners - a collection of banner programs, V1.1, Part05/07
  4. Sender: unix-sources-moderator@vix.com
  5. Approved: paul@vix.com
  6.  
  7. Submitted-By: fkk@stasys.sta.sub.org (Frank Kaefer)
  8. Posting-Number: Volume 26, Issue 145
  9. Archive-Name: banners-1.1/part05
  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 5 (of 7)."
  18. # Contents:  banner-05/cursive.c
  19. # Wrapped by vixie@gw.home.vix.com on Sun Apr 11 23:19:21 1993
  20. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  21. if test -f 'banner-05/cursive.c' -a "${1}" != "-c" ; then 
  22.   echo shar: Will not clobber existing file \"'banner-05/cursive.c'\"
  23. else
  24. echo shar: Extracting \"'banner-05/cursive.c'\" \(19392 characters\)
  25. sed "s/^X//" >'banner-05/cursive.c' <<'END_OF_FILE'
  26. X/*        CURSIVE SIGNATURE PROGRAM        Version 0.10
  27. X *              (c) 1985 - Jan Wolter
  28. X *
  29. X *  Purpose:    This program translates text into crude cursive script.
  30. X *        It works on any terminal with a fairly normal character
  31. X *        set (must have backslashes and underscores and suchlike).
  32. X *        The font includes all upper and lower case letters, most
  33. X *        punctuation, and a few symbols.  No numbers are included
  34. X *        (It's difficult to make a nice italicized set of numbers).
  35. X *        Cursive was originally written to generate fancy signatures
  36. X *        for electronic mail messages, but other uses may occur to
  37. X *        you.  The attractiveness of the font varies greatly with
  38. X *        the display device.
  39. X *
  40. X *  Usage:    If no command line arguments are given, cursive reads the
  41. X *        text to translate from standard input.  Otherwise the args
  42. X *        are translated (e.g. "cursive Jan Wolter" prints my name).
  43. X *        Output is always to standard output.  A couple command line
  44. X *        arguments are recognized:
  45. X *
  46. X *          -in    Sets the amount of space to insert between letters.
  47. X *            The default is "-i1".  "-i0" gives interesting
  48. X *            results.
  49. X *          -tn    Sets the length of the trailing line off the end
  50. X *            of each word.  The default is "-t1".
  51. X *
  52. X *        One character in the text is treated in a special way:
  53. X *
  54. X *          '_'   Can be inserted in text to slightly lengthen the
  55. X *            the spacing between two letters, or add a longer
  56. X *            tail to the end of a word.
  57. X *
  58. X *  Internals:    Unfortunately, the program is a kludge and the font is
  59. X *        somewhat difficult to edit.  It should be easy to port
  60. X *        though.  Systems with short integers or unsigned characters
  61. X *        should be no problem.  You should probably run "xstr" on the
  62. X *        font.c file, but if you haven't got "xstr", just compiling it
  63. X *        the usual way works fine.
  64. X *
  65. X *  Copyright:    Both the cursive program and the font it generates are
  66. X *        copyrighted by yours truly.  However, both may be used
  67. X *        and distributed freely.  You even have my permission to
  68. X *        sell it, or include in it a system that you sell.  I only
  69. X *        ask that my name be retained on this program, or any direct
  70. X *        decendents of this program with approximately the same
  71. X *        visibility as in this posting.
  72. X *
  73. X *  Mail:    I'm interested in any comments you have on this program.
  74. X *        I can be mailed at "janc@crim.eecs.umich.edu".  Better yet,
  75. X *        if you are into teleconferencing, call M-Net at (313) 994-6333
  76. X *        and type "newuser" at the "login:" prompt to give yourself an
  77. X *        account.  Send mail to janc, or join the "ugames" conference.
  78. X *
  79. X *        Have fun,
  80. X *                  ___                _     __  _
  81. X *                 (   >              ' )   /   // _/_
  82. X *                  __/___.  ____      / / / __|/  /  _  __
  83. X *                 / / (_/|_/ / <__   (_(_/ (_) \_<__</_/ (__
  84. X *                <_/
  85. X */
  86. X
  87. X#include <stdio.h>
  88. X
  89. X
  90. X/*
  91. X#include "cursive.h"
  92. X*/
  93. X
  94. X/*****************************************************************************
  95. X * "cursive.h"                                                               *
  96. X *****************************************************************************/
  97. X
  98. struct letter {
  99. X    char *line[6];            /* What's on each of the six lines */
  100. X    char spcs[6];            /* Number of leading spaces for each */
  101. X    short tailin,tailout;        /* Where the lines in and out go */
  102. X    };
  103. X
  104. X/* Special Codes for Character Table */
  105. X
  106. X#define XX  -1        /* Ignore character */
  107. X#define SP  -2          /* Space */
  108. X#define ST  -3          /* Extend trailer */
  109. X#define SA  -4        /* Alternate font number */    /* Not used */
  110. X#define SN  -5        /* Numbers */            /* Not used */
  111. X
  112. X#define CHARWIDTH 10
  113. X
  114. extern struct letter list[];
  115. extern short code1[], code2[];
  116. X
  117. char *buffer[6];    /* memory buffers to build up line in */
  118. int c[6];        /* current index in each of the buffer lines */
  119. int tail[6];        /* which buffer lines have tails in them */
  120. int lasttail;        /* which line was the last letter's tail */
  121. int space;        /* how much white space before the next letter */
  122. int interspace = 1;    /* how much to spread adjacent letters out */
  123. int taillen = 1;    /* how long the tails on ends of words should be */
  124. char firstletter;    /* is this the first letter on the line? */
  125. char message[256] = "";    /* message to print */
  126. X
  127. X/*
  128. X * end of "cursive.h"
  129. X */
  130. X
  131. char *malloc();
  132. X
  133. main(argc,argv)
  134. int argc;
  135. char **argv;
  136. X{
  137. int i;
  138. char *s,*m;
  139. char ch;
  140. X
  141. X    m = message;
  142. X    for (i = 1; i < argc; i++)
  143. X    {
  144. X        if (*argv[i] == '-')
  145. X            switch(ch = argv[i][1])
  146. X            {
  147. X            case 'i':
  148. X            case 't':
  149. X                s = argv[i]+2;
  150. X                if (*s == '\000')
  151. X                    if (++i < argc)
  152. X                        s = argv[i];
  153. X                if (*s < '0' || *s > '9')
  154. X                {
  155. X                    printf("%s: Illegal value %s\n",
  156. X                        argv[0],s);
  157. X                    exit(1);
  158. X                }
  159. X                if (ch == 'i')
  160. X                    interspace = atoi(s);
  161. X                else
  162. X                    taillen = atoi(s);
  163. X                break;
  164. X            default:
  165. X                printf("usage: %s [-tn] [-in] message\n",
  166. X                    argv[0]);
  167. X                exit(1);
  168. X            }
  169. X        else
  170. X        {
  171. X            if (m != message)
  172. X                *(m++) = ' ';
  173. X            for (s=argv[i]; *s != '\000'; s++)
  174. X                *(m++) = *s;
  175. X        }
  176. X    }
  177. X    /* Do the deed */
  178. X    if (m != message)
  179. X    {
  180. X        /* Message from the arg list */
  181. X        *(m++) = 0;
  182. X        prline(message);
  183. X    }
  184. X    else
  185. X    {
  186. X        /* Message from standard input */
  187. X        while (gets(message) != NULL)
  188. X            prline(message);
  189. X    }
  190. X}
  191. X
  192. X
  193. X/* Add the given letter to the end of the current line */
  194. X
  195. place(let)
  196. struct letter *let;
  197. X{
  198. int i,j,n;
  199. int col;
  200. int max = -10000;
  201. char pad;
  202. char *l;
  203. X
  204. X    if (firstletter)
  205. X    {
  206. X        col = space;        /* Leading spaces */
  207. X        firstletter = 0;
  208. X    }
  209. X    else
  210. X    {
  211. X        /* Find the furthest left position we can place this letter */
  212. X        for(i=0; i<6; i++)
  213. X        {
  214. X            if (let->line[i][0] != '\000' &&
  215. X                (col = c[i] - let->spcs[i]) > max)
  216. X                max = col;
  217. X        }
  218. X
  219. X        /* Insert some spaces between letters */
  220. X        col = max + space + interspace;
  221. X    }
  222. X
  223. X    for(i=0; i<6; i++)
  224. X
  225. X        /* If Nothing on this Line, Skip It */
  226. X        if (let->line[i][0] != '\000')
  227. X        {
  228. X            /* Number of Spaces to Put on this Line? */
  229. X            n = col - c[i] + let->spcs[i];
  230. X
  231. X            /* Flyers off Ends of Letters */
  232. X            if (tail[i])
  233. X                for (j = 0;
  234. X                     j < 5 && n > space + 2; j++,n--)
  235. X                    buffer[i][c[i]++] = '_';
  236. X
  237. X            /* Connecting Lines Between Letters */
  238. X            pad = (lasttail == i && let->tailin == i) ? '_' : ' ';
  239. X
  240. X            /* In the middle of the intersection of South and */
  241. X            /* East University, someone is playing the piano. */
  242. X            for ( ; n > 0; n--)
  243. X                buffer[i][c[i]++] = pad;
  244. X
  245. X            /* Copy in the letter text */
  246. X            for (l = let->line[i]; *l != '\000'; l++)
  247. X                buffer[i][c[i]++] = *l;
  248. X
  249. X            tail[i] = (i == let->tailout);
  250. X        }
  251. X
  252. X    lasttail = let->tailout;
  253. X    space = 0;
  254. X}
  255. X
  256. X/* Lengthen the last trailer by n */
  257. tailer(n)
  258. int n;
  259. X{
  260. int j;
  261. X    if (lasttail >= 0)
  262. X        for (j = 0; j < n; j++)
  263. X            buffer[lasttail][c[lasttail]++] = '_';
  264. X}
  265. X
  266. X/* Handle a line */
  267. prline(s)
  268. char *s;
  269. X{
  270. int l,i;
  271. char *ch;
  272. short lcode;
  273. X
  274. X    lasttail = -1;
  275. X    firstletter = 1;
  276. X    space = 0;
  277. X    /* Get some memory to put the output into */
  278. X    l = strlen(s) * (CHARWIDTH + interspace);
  279. X    for (i=0;i<6;i++)
  280. X    {
  281. X        buffer[i] = malloc((unsigned)l);
  282. X        tail[i] = c[i] = 0;
  283. X    }
  284. X
  285. X    /* do each letter */
  286. X    for (ch=s; *ch != '\000'; ch++)
  287. X    {
  288. X
  289. X        *ch &= '\177';
  290. X        /* Find the letter */
  291. X        lcode = (lasttail != 2) ? code1[*ch] : code2[*ch];
  292. X        if (lcode >= 0)
  293. X            place(&list[lcode]);
  294. X        else
  295. X            /* Various Special characters */
  296. X            switch(lcode)
  297. X            {
  298. X            case SP:
  299. X                /* Insert white space before next letter */
  300. X                tailer(taillen);
  301. X                space += 3;
  302. X                lasttail = -1;
  303. X                break;
  304. X            case ST:
  305. X                /* Lengthen the last tail */
  306. X                if (lasttail >= 0)
  307. X                    buffer[lasttail][c[lasttail]++] = '_';
  308. X                break;
  309. X            }
  310. X    }
  311. X    tailer(taillen);
  312. X
  313. X    /* print the line and release the memory */
  314. X    for (i=0;i<6;i++)
  315. X    {
  316. X        buffer[i][c[i]++] = '\n';
  317. X        write(1,buffer[i],c[i]);
  318. X        free(buffer[i]);
  319. X    }
  320. X}
  321. X
  322. X
  323. X/*****************************************************************************
  324. X * "font.c"                                                                  *
  325. X *****************************************************************************/
  326. X
  327. X/* CURSIVE FONT FILE
  328. X *
  329. X * This font is copyrighted by Jan Wolter.  See notes in "cursive.c".
  330. X *
  331. X * Several of the letters are rather ugly, but the wonder is not how
  332. X * well it sings.  A few uppercase letters are a bit too tall.  The
  333. X * font has to some extent been chosen to make my name look good to me.
  334. X * Those of you with different names will have to take pot luck, or fix
  335. X * it to taste.  Editing this file must be done with some care.  The
  336. X * numbers on the defines must match the index numbers of the letter
  337. X * in the list[] structure.  The six numbers after the character are how
  338. X * many blank spaces must be added to the beginning of each of the six
  339. X * scan lines to make them line up.  The last two numbers are the scan
  340. X * line numbers in which the character is connected to the preceeding and
  341. X * succeeding characters.  -1 means it isn't.  There are two versions of
  342. X * each lower case letter, one with the line coming in on line 2, and one
  343. X * with the line coming in on line 3.
  344. X */
  345. X
  346. X/*
  347. X#include "cursive.h"
  348. X*/
  349. X
  350. struct letter list[] = {
  351. X
  352. X#define LA  0        /* a type 1 */ 
  353. X    { {
  354. X    "",
  355. X    "",
  356. X     "__.",
  357. X    "(_/|",
  358. X    "",
  359. X    ""
  360. X    },
  361. X    {0,0,1,0,0,0},
  362. X    3,3
  363. X    },
  364. X
  365. X#define LB  1        /* b type 1 */
  366. X    { {
  367. X    "",
  368. X      "/",
  369. X      "/_",
  370. X    "/_)",
  371. X    "",
  372. X    ""
  373. X    },
  374. X    {0,2,1,0,0,0},
  375. X    3,2
  376. X    },
  377. X
  378. X#define LC  2        /* c type 1 */
  379. X    { {
  380. X    "",
  381. X    "",
  382. X     "_.",
  383. X    "(_",
  384. X    "",
  385. X    ""}
  386. X    ,
  387. X    {0,0,1,0,0,0},
  388. X    3,3
  389. X    },
  390. X
  391. X#define LD  3        /* d type 1 */
  392. X    { {
  393. X    "",
  394. X        "/",
  395. X     "__/",
  396. X    "(_/",
  397. X    "",
  398. X    ""
  399. X    },
  400. X    {0,4,1,0,0,0},
  401. X    3,3
  402. X    },
  403. X
  404. X#define LE  4        /* e type 1 */
  405. X    { {
  406. X    "",
  407. X    "",
  408. X     "_",
  409. X    "</",
  410. X    "",
  411. X    ""
  412. X    },
  413. X    {0,0,1,0,0,0},
  414. X    3,3
  415. X    },
  416. X
  417. X#define LF  5        /* f type 1 */
  418. X    { {
  419. X    "",
  420. X        "/)",
  421. X       "// ",
  422. X      "//",
  423. X     "/>",
  424. X    "</ "
  425. X    },
  426. X    {0,4,3,2,1,0},
  427. X    3,3
  428. X    },
  429. X
  430. X#define LG  6        /* g type 1 */
  431. X    { {
  432. X    "",
  433. X    "",
  434. X     "_,",
  435. X    "(_)",
  436. X     "/|",
  437. X    "|/"
  438. X    },
  439. X    {0,0,1,0,1,0},
  440. X    3,3
  441. X    },
  442. X
  443. X#define LH  7        /* h type 1 */
  444. X    { {
  445. X    "",
  446. X      "/",
  447. X     "/_",
  448. X    "/ /",
  449. X    "",
  450. X    ""
  451. X    },
  452. X    {0,2,1,0,0,0},
  453. X    3,3
  454. X    },
  455. X
  456. X#define LI  8        /* i type 1 */
  457. X    { {
  458. X    "",
  459. X    "",
  460. X     "o",
  461. X    "<",
  462. X    "",
  463. X    ""
  464. X    },
  465. X    {0,0,1,0,0,0},
  466. X    3,3
  467. X    },
  468. X
  469. X#define LJ  9        /* j type 1 */
  470. X    { {
  471. X    "",
  472. X    "",
  473. X        "o",
  474. X       "/",
  475. X      "/",
  476. X    "-'"
  477. X    },
  478. X    {0,0,4,3,2,0},
  479. X    3,3
  480. X    },
  481. X
  482. X#define LK 10        /* k type 1 */
  483. X    { {
  484. X    "",
  485. X      "/",
  486. X     "/_ ",
  487. X    "/ <",
  488. X    "",
  489. X    ""
  490. X    },
  491. X    {0,2,1,0,0,0},
  492. X    3,3
  493. X    },
  494. X
  495. X#define LL 11        /* l type 1 */
  496. X    { {
  497. X       "_",
  498. X      "//",
  499. X     "//",
  500. X    "</",
  501. X    "",
  502. X    ""
  503. X    },
  504. X    {3,2,1,0,0,0},
  505. X    3,3
  506. X    },
  507. X
  508. X#define LM 12        /* m type 1 */
  509. X    { {
  510. X    "",
  511. X    "",
  512. X     "______",
  513. X    "/ / / <",
  514. X    "",
  515. X    ""
  516. X    },
  517. X    {0,0,1,0,0,0},
  518. X    3,3
  519. X    },
  520. X
  521. X#define LN 13        /* n type 1 */
  522. X    { {
  523. X    "",
  524. X    "",
  525. X     "____",
  526. X    "/ / <",
  527. X    "",
  528. X    ""
  529. X    },
  530. X    {0,0,1,0,0,0},
  531. X    3,3
  532. X    },
  533. X
  534. X#define LO 14        /* o type 1 */
  535. X    { {
  536. X    "",
  537. X    "",
  538. X     "_",
  539. X    "(_)",
  540. X    "",
  541. X    ""
  542. X    },
  543. X    {0,0,1,0,0,0},
  544. X    3,2
  545. X    },
  546. X
  547. X#define LP 15        /* p type 1 */
  548. X    { {
  549. X    "",
  550. X    "",
  551. X       "_",
  552. X      "/_)",
  553. X     "/",
  554. X    "'"
  555. X    },
  556. X    {0,0,3,2,1,0},
  557. X    3,3
  558. X    },
  559. X
  560. X#define LQ 16        /* q type 1 */
  561. X    { {
  562. X    "",
  563. X    "",
  564. X     "_,",
  565. X    "(_)",
  566. X     "/>",
  567. X    "|/"
  568. X    },
  569. X    {0,0,1,0,1,0},
  570. X    3,3
  571. X    },
  572. X
  573. X#define LR 17        /* r type 1 */
  574. X    { {
  575. X    "",
  576. X    "",
  577. X     "__",
  578. X    "/ (",
  579. X    "",
  580. X    ""
  581. X    },
  582. X    {0,0,1,0,0,0},
  583. X    3,3
  584. X    },
  585. X
  586. X#define LS 18        /* s type 1 */
  587. X    { {
  588. X    "",
  589. X    "",
  590. X     "_",
  591. X    "/_)",
  592. X    "",
  593. X    ""
  594. X    },
  595. X    {0,0,1,0,0,0},
  596. X    3,3
  597. X    },
  598. X
  599. X#define LT 19        /* t type 1 */
  600. X    { {
  601. X    "",
  602. X     "_/_",
  603. X     "/",
  604. X    "<_",
  605. X    "",
  606. X    ""
  607. X    },
  608. X    {0,1,1,0,0,0},
  609. X    3,3
  610. X    },
  611. X
  612. X#define LU 20        /* u type 1 */
  613. X    { {
  614. X    "",
  615. X    "",
  616. X     ". .",
  617. X    "(_/",
  618. X    "",
  619. X    ""
  620. X    },
  621. X    {0,0,1,0,0,0},
  622. X    3,3
  623. X    },
  624. X
  625. X#define LV 21        /* v type 1 */
  626. X    { {
  627. X    "",
  628. X    "",
  629. X    ", ",
  630. X    "\\/",
  631. X    "",
  632. X    ""
  633. X    },
  634. X    {0,0,0,0,0,0},
  635. X    3,2
  636. X    },
  637. X
  638. X#define LW 22        /* w type 1 */
  639. X    { {
  640. X    "",
  641. X    "",
  642. X     ", , ,",
  643. X    "(_(_/",
  644. X    "",
  645. X    ""
  646. X    },
  647. X    {0,0,1,0,0,0},
  648. X    3,3
  649. X    },
  650. X
  651. X#define LX 23        /* x type 1 */
  652. X    { {
  653. X    "",
  654. X    "",
  655. X     "_.,",
  656. X    "/ /\\",
  657. X    "",
  658. X    ""
  659. X    },
  660. X    {0,0,1,0,0,0},
  661. X    3,3
  662. X    },
  663. X
  664. X#define LY 24        /* y type 1 */
  665. X    { {
  666. X    "",
  667. X    "",
  668. X     "__  ,",
  669. X    "/ (_/",
  670. X       "/",
  671. X      "'"
  672. X     },
  673. X    {0,0,1,0,3,2},
  674. X    3,3
  675. X    },
  676. X
  677. X#define LZ 25        /* z type 1 */
  678. X    { {
  679. X    "",
  680. X    "",
  681. X     "__.",
  682. X    "/  |",
  683. X      "(|",
  684. X    ""
  685. X    },
  686. X    {0,0,1,0,2,0},
  687. X    3,3
  688. X    },
  689. X
  690. X#define NA 26        /* a type 2 */
  691. X    { {
  692. X    "",
  693. X    "",
  694. X     "__.",
  695. X    "(_/|",
  696. X    "",
  697. X    ""
  698. X    },
  699. X    {0,0,1,0,0,0},
  700. X    2,3
  701. X    },
  702. X
  703. X#define NB 27        /* b type 2 */
  704. X    { {
  705. X    "",
  706. X      "/",
  707. X     "/_",
  708. X    "/_)",
  709. X    "",
  710. X    ""
  711. X    },
  712. X    {0,2,1,0,0,0},
  713. X    2,2
  714. X    },
  715. X
  716. X#define NC 28        /* c type 2 */
  717. X    { {
  718. X    "",
  719. X    "",
  720. X    "__.",
  721. X    "(_",
  722. X    "",
  723. X    ""
  724. X    },
  725. X    {0,0,0,0,0,0},
  726. X    2,3
  727. X    },
  728. X
  729. X#define ND 29        /* d type 2 */
  730. X    { {
  731. X    "",
  732. X        "/",
  733. X    "___/",
  734. X    "(_/",
  735. X    "",
  736. X    ""
  737. X    },
  738. X    {0,4,0,0,0,0},
  739. X    2,3
  740. X    },
  741. X
  742. X#define NE 30        /* e type 2 */
  743. X    { {
  744. X    "",
  745. X    "",
  746. X     "/>",
  747. X    "(_",
  748. X    "",
  749. X    ""
  750. X    },
  751. X    {0,0,1,0,0,0},
  752. X    2,3
  753. X    },
  754. X
  755. X#define NF 31        /* f type 2 */
  756. X    { {
  757. X    "",
  758. X        "/)",
  759. X       "//",
  760. X      "/_",
  761. X     "/>",
  762. X    "</"
  763. X    },
  764. X    {0,4,3,2,1,0},
  765. X    2,3
  766. X    },
  767. X
  768. X#define NG 32        /* g type 2 */
  769. X    { {
  770. X    "",
  771. X    "",
  772. X    "__,",
  773. X    "(_)",
  774. X     "/|",
  775. X    "|/"
  776. X    },
  777. X    {0,0,0,0,1,0},
  778. X    2,3
  779. X    },
  780. X
  781. X#define NH 33        /* h type 2 */
  782. X    { {
  783. X    "",
  784. X      "/",
  785. X     "/_",
  786. X    "/ /",
  787. X    "",
  788. X    ""
  789. X    },
  790. X    {0,2,1,0,0,0},
  791. X    2,3
  792. X    },
  793. X
  794. X#define NI 34        /* i type 2 */
  795. X    { {
  796. X    "",
  797. X    "",
  798. X     "o",
  799. X    "<_",
  800. X    "",
  801. X    ""
  802. X    },
  803. X    {0,0,1,0,0,0},
  804. X    2,3
  805. X    },
  806. X
  807. X#define NJ 35        /* j type 2 */
  808. X    { {
  809. X    "",
  810. X    "",
  811. X       "_o",
  812. X       "/_",
  813. X      "/",
  814. X    "-'"
  815. X    },
  816. X    {0,0,3,3,2,0},
  817. X    2,3
  818. X    },
  819. X
  820. X#define NK 36        /* k type 2 */
  821. X    { {
  822. X    "",
  823. X      "/",
  824. X     "/_",
  825. X    "/ <",
  826. X    "",
  827. X    ""
  828. X    },
  829. X    {0,2,1,0,0,0},
  830. X    2,3
  831. X    },
  832. X
  833. X#define NL 37        /* l type 2 */
  834. X    { {
  835. X      "_",
  836. X     "//",
  837. X    "|/",
  838. X     "\\",
  839. X    "",
  840. X    ""
  841. X    },
  842. X    {2,1,0,1,0,0},
  843. X    2,3
  844. X    },
  845. X
  846. X#define NM 38        /* m type 2 */
  847. X    { {
  848. X    "",
  849. X    "",
  850. X    "_______",
  851. X    "/ / / <",
  852. X    "",
  853. X    ""
  854. X    },
  855. X    {0,0,0,0,0,0},
  856. X    2,3
  857. X    },
  858. X
  859. X#define NN 39        /* n type 2 */
  860. X    { {
  861. X    "",
  862. X    "",
  863. X    "_____",
  864. X    "/ / <",
  865. X    "",
  866. X    ""
  867. X    },
  868. X    {0,0,0,0,0,0},
  869. X    2,3
  870. X    },
  871. X
  872. X#define NO 40        /* o type 2 */
  873. X    { {
  874. X    "",
  875. X    "",
  876. X    "___",
  877. X    "(_)",
  878. X    "",
  879. X    ""
  880. X    },
  881. X    {0,0,0,0,0,0},
  882. X    2,2
  883. X    },
  884. X
  885. X#define NP 41        /* p type 2 */
  886. X    { {
  887. X    "",
  888. X    "",
  889. X      "__",
  890. X      "/_)",
  891. X     "/",
  892. X    "'"
  893. X    },
  894. X    {0,0,2,2,1,0},
  895. X    2,3
  896. X    },
  897. X
  898. X#define NQ 42        /* q type 2 */
  899. X    { {
  900. X    "",
  901. X    "",
  902. X    "__,",
  903. X    "(_)",
  904. X     "/>",
  905. X    "|/"
  906. X    },
  907. X    {0,0,0,0,1,0},
  908. X    2,3
  909. X    },
  910. X
  911. X#define NR 43        /* r type 2 */
  912. X    { {
  913. X    "",
  914. X    "",
  915. X    ",_",
  916. X     "(",
  917. X    "",
  918. X    ""
  919. X    },
  920. X    {0,0,0,1,0,0},
  921. X    2,3
  922. X    },
  923. X
  924. X#define NS 44        /* s type 2 */
  925. X    { {
  926. X    "",
  927. X    "",
  928. X    "___ ",
  929. X     "\\_)_",
  930. X    "",
  931. X    ""
  932. X    },
  933. X    {0,0,0,1,0,0},
  934. X    2,3
  935. X    },
  936. X
  937. X#define NT 45        /* t type 2 */
  938. X    { {
  939. X    "",
  940. X     "_/_",
  941. X    "_/",
  942. X    "(_",
  943. X    "",
  944. X    ""
  945. X    },
  946. X    {0,1,0,0,0,0},
  947. X    2,3
  948. X    },
  949. X
  950. X#define NU 46        /* u type 2 */
  951. X    { {
  952. X    "",
  953. X    "",
  954. X    "_. .",
  955. X    "(_/",
  956. X    "",
  957. X    ""
  958. X    },
  959. X    {0,0,0,0,0,0},
  960. X    2,3
  961. X    },
  962. X
  963. X#define NV 47        /* v type 2 */
  964. X    { {
  965. X    "",
  966. X    "",
  967. X    "  .",
  968. X    "\\/",
  969. X    "",
  970. X    ""
  971. X    },
  972. X    {0,0,0,0,0,0},
  973. X    2,3
  974. X    },
  975. X
  976. X#define NW 48        /* w type 2 */
  977. X    { {
  978. X    "",
  979. X    "",
  980. X    "_, , ,",
  981. X    "(_(_/",
  982. X    "",
  983. X    ""
  984. X    },
  985. X    {0,0,0,0,0,0},
  986. X    2,3
  987. X    },
  988. X
  989. X#define NX 49        /* x type 2 */
  990. X    { {
  991. X    "",
  992. X    "",
  993. X    "_.,",
  994. X     "/\\",
  995. X    "",
  996. X    ""
  997. X    },
  998. X    {0,0,0,1,0,0},
  999. X    2,3
  1000. X    },
  1001. X
  1002. X#define NY 50        /* y type 2 */
  1003. X    { {
  1004. X    "",
  1005. X    "",
  1006. X    "_  ,",
  1007. X    "(_/__",
  1008. X     "/",
  1009. X    "'"
  1010. X    },
  1011. X    {0,0,0,0,1,0},
  1012. X    2,3
  1013. X    },
  1014. X
  1015. X#define NZ 51        /* z type 2 */
  1016. X    { {
  1017. X    "",
  1018. X    "",
  1019. X    "__.",
  1020. X      "|",
  1021. X     "(|",
  1022. X    ""
  1023. X    },
  1024. X    {0,0,0,2,1,0},
  1025. X    2,3
  1026. X    },
  1027. X
  1028. X#define UA 52        /* A */
  1029. X    { {
  1030. X       "__",
  1031. X      "/  )",
  1032. X     "/--/",
  1033. X    "/  (",
  1034. X    "",
  1035. X    ""
  1036. X    },
  1037. X    {3,2,1,0,0,0},
  1038. X    3,3
  1039. X    },
  1040. X
  1041. X#define UB 53        /* B  */
  1042. X    { {
  1043. X       "__",
  1044. X      "/  )",
  1045. X     "/--<",
  1046. X    "/___/",
  1047. X    "",
  1048. X    ""
  1049. X    },
  1050. X    {3,2,1,0,0,0},
  1051. X    3,3
  1052. X    },
  1053. X
  1054. X#define UC 54        /* C */
  1055. X    { {
  1056. X       "__",
  1057. X      "/  )",
  1058. X     "/",
  1059. X    "(__/",
  1060. X    "",
  1061. X    ""
  1062. X    },
  1063. X    {3,2,1,0,0,0},
  1064. X    -1,-1
  1065. X    },
  1066. X
  1067. X#define UD 55        /* D  */
  1068. X    { {
  1069. X       "__",
  1070. X      "/  )",
  1071. X     "/  /",
  1072. X    "/__/",
  1073. X    "",
  1074. X    ""
  1075. X    },
  1076. X    {3,2,1,0,0,0},
  1077. X    3,3
  1078. X    },
  1079. X
  1080. X#define UE 56        /* E */
  1081. X    { {
  1082. X       "__",
  1083. X      "/  `",
  1084. X     "/--",
  1085. X    "(___,",
  1086. X    "",
  1087. X    ""
  1088. X    },
  1089. X    {3,2,1,0,0,0},
  1090. X    -1,-1
  1091. X    },
  1092. X
  1093. X#define UF 57        /* F */
  1094. X    { {
  1095. X       "_____",
  1096. X       " /  '",
  1097. X     ",-/-,",
  1098. X    "(_/",
  1099. X    "",
  1100. X    ""
  1101. X    },
  1102. X    {3,3,1,0,0,0},
  1103. X    -1,-1
  1104. X    },
  1105. X
  1106. X#define UG 58        /* G */
  1107. X    { {
  1108. X      "()  ,",
  1109. X      "/`-'|",
  1110. X     "/   /",
  1111. X    "/__-<",
  1112. X    "",
  1113. X    ""
  1114. X    },
  1115. X    {2,2,1,0,0,0},
  1116. X    -1,3
  1117. X    },
  1118. X
  1119. X#define UH 59        /* H */
  1120. X    { {
  1121. X     "_    ,",
  1122. X    "' )  /",
  1123. X     "/--/",
  1124. X    "/  (",
  1125. X    "",
  1126. X    ""
  1127. X    },
  1128. X    {1,0,1,0,0,0},
  1129. X    -1,3
  1130. X    },
  1131. X
  1132. X#define UI 60        /* I */
  1133. X    { {
  1134. X         "_",
  1135. X        "| )",
  1136. X    ",---|/",
  1137. X     "\\_/ \\",
  1138. X    "",
  1139. X    ""
  1140. X    },
  1141. X    {5,4,0,1,0,0},
  1142. X    -1,3
  1143. X    },
  1144. X
  1145. X#define UJ 61        /* J */
  1146. X    { {
  1147. X      "___",
  1148. X     "(   >",
  1149. X      "__/",
  1150. X     "/ /",
  1151. X    "<_/",
  1152. X    ""
  1153. X    },
  1154. X    {2,1,2,1,0,0},
  1155. X    -1,2
  1156. X    },
  1157. X
  1158. X#define UK 62        /* K */
  1159. X    { {
  1160. X     "_   ,",
  1161. X    "' ) /",
  1162. X     "/-<",
  1163. X    "/   )",
  1164. X    "",
  1165. X    ""
  1166. X    },
  1167. X    {1,0,1,0,0,0},
  1168. X    -1,-1
  1169. X    },
  1170. X
  1171. X#define UL 63        /* L */
  1172. X    { {
  1173. X       "_",
  1174. X     "_//",
  1175. X     "/",
  1176. X    "/___",
  1177. X    "",
  1178. X    ""
  1179. X    },
  1180. X    {3,1,1,0,0,0},
  1181. X    -1,-1
  1182. X    },
  1183. X
  1184. X#define UM 64        /* M */
  1185. X    { {
  1186. X     "_ _ _",
  1187. X    "' ) ) )",
  1188. X     "/ / /",
  1189. X    "/ ' (",
  1190. X    "",
  1191. X    ""
  1192. X    },
  1193. X    {1,0,1,0,0,0},
  1194. X    -1,3
  1195. X    },
  1196. X
  1197. X#define UN 65        /* N */
  1198. X    { {
  1199. X     "_ __",
  1200. X    "' )  )",
  1201. X     "/  /",
  1202. X    "/  (",
  1203. X    "",
  1204. X    ""
  1205. X    },
  1206. X    {1,0,1,0,0,0},
  1207. X    -1,3
  1208. X    },
  1209. X
  1210. X#define UO 66        /* O */
  1211. X    { {
  1212. X       "__",
  1213. X      "/ ')",
  1214. X     "/  /",
  1215. X    "(__/",
  1216. X    "",
  1217. X    ""
  1218. X    },
  1219. X    {3,2,1,0,0,0},
  1220. X    -1,-1
  1221. X    },
  1222. X
  1223. X#define UP 67        /* P */
  1224. X    { {
  1225. X     "_ __",
  1226. X    "' )  )",
  1227. X     "/--'",
  1228. X    "/",
  1229. X    "",
  1230. X    ""
  1231. X    },
  1232. X    {1,0,1,0,0,0},
  1233. X    -1,-1
  1234. X    },
  1235. X
  1236. X#define UQ 68        /* Q */
  1237. X    { {
  1238. X       "__",
  1239. X      "/  )",
  1240. X     "/  /",
  1241. X    "(_\\/",
  1242. X       "`",
  1243. X    ""
  1244. X    },
  1245. X    {3,2,1,0,3,0},
  1246. X    -1,-1
  1247. X    },
  1248. X
  1249. X#define UR 69        /* R */
  1250. X    { {
  1251. X     "_ __",
  1252. X    "' )  )",
  1253. X     "/--'",
  1254. X    "/  \\",
  1255. X    "",
  1256. X    ""
  1257. X    },
  1258. X    {1,0,1,0,0,0},
  1259. X    -1,3
  1260. X    },
  1261. X
  1262. X#define US 70        /* S */
  1263. X    { {
  1264. X      "()",
  1265. X      "/\\",
  1266. X     "/  )",
  1267. X    "/__/_",
  1268. X    "",
  1269. X    ""
  1270. X    },
  1271. X    {2,2,1,0,0,0},
  1272. X    -1,3
  1273. X    },
  1274. X
  1275. X#define UT 71        /* T */
  1276. X    { {
  1277. X      "______",
  1278. X        "/  ",
  1279. X     "--/",
  1280. X    "(_/",
  1281. X    "",
  1282. X    ""
  1283. X    },
  1284. X    {2,4,1,0,0,0},
  1285. X    -1,-1
  1286. X    },
  1287. X
  1288. X#define UU 72        /* U */
  1289. X    { {
  1290. X     "_    _",
  1291. X    "' )  /",
  1292. X     "/  /",
  1293. X    "(__/",
  1294. X    "",
  1295. X    ""
  1296. X    },
  1297. X    {1,0,1,0,0,0},
  1298. X    -1,0
  1299. X    },
  1300. X
  1301. X#define UV 73        /* V */
  1302. X    { {
  1303. X     "_    ",
  1304. X    "' )  /",
  1305. X     "(  /",
  1306. X      "\\/",
  1307. X    "",
  1308. X    ""
  1309. X    },
  1310. X    {1,0,1,2,0,0},
  1311. X    -1,0
  1312. X    },
  1313. X
  1314. X#define UW 74        /* W */
  1315. X    { {
  1316. X     "_     ",
  1317. X    "' )   /",
  1318. X     "/ / /",
  1319. X    "(_(_/",
  1320. X    "",
  1321. X    ""
  1322. X    },
  1323. X    {1,0,1,0,0,0},
  1324. X    -1,0
  1325. X    },
  1326. X
  1327. X#define UX 75        /* X */
  1328. X    { {
  1329. X     "_   ,",
  1330. X    "' \\ /",
  1331. X       "X",
  1332. X      "/ \\",
  1333. X    "",
  1334. X    ""
  1335. X    },
  1336. X    {1,0,3,2,0,0},
  1337. X    -1,3
  1338. X    },
  1339. X
  1340. X#define UY 76        /* Y */
  1341. X    { {
  1342. X     "_    ,",
  1343. X    "' )  /",
  1344. X     "/  /",
  1345. X    "(__/",
  1346. X     "//",
  1347. X    "(/"
  1348. X    },
  1349. X    {1,0,1,0,1,0},
  1350. X    -1,3
  1351. X    },
  1352. X
  1353. X#define UZ 77        /* Z */
  1354. X    { {
  1355. X    "___",
  1356. X      "/",
  1357. X     "/",
  1358. X    "/__",
  1359. X    "",
  1360. X    ""
  1361. X    },
  1362. X    {0,2,1,0,0,0},
  1363. X    -1,-1
  1364. X    },
  1365. X
  1366. X#define PE 78         /* ! */
  1367. X    { {
  1368. X       "/",
  1369. X      "/",
  1370. X     "'",
  1371. X    "o",
  1372. X    "",
  1373. X    ""
  1374. X    },
  1375. X    {3,2,1,0,0,0},
  1376. X    -1,-1
  1377. X    },
  1378. X
  1379. X#define PU 79        /* " */
  1380. X    { {
  1381. X    "o o",
  1382. X    "' '",
  1383. X    "",
  1384. X    "",
  1385. X    "",
  1386. X    ""
  1387. X    },
  1388. X    {0,0,0,0,0,0},
  1389. X    -1,-1
  1390. X    },
  1391. X
  1392. X#define PX 80        /* # */
  1393. X    { {
  1394. X       "/ /",
  1395. X     "-/-/-",
  1396. X    "-/-/-",
  1397. X    "/ /",
  1398. X    "",
  1399. X    ""
  1400. X    },
  1401. X    {3,1,0,0,0,0},
  1402. X    -1,-1
  1403. X    },
  1404. X
  1405. X#define PK 81        /* $ */
  1406. X    { {
  1407. X      ",-/-",
  1408. X     "(_/",
  1409. X      "/ )",
  1410. X    "-/-'",
  1411. X    "",
  1412. X    ""
  1413. X    },
  1414. X    {2,1,2,0,0,0},
  1415. X    -1,-1
  1416. X    },
  1417. X
  1418. X#define PF 82        /* ' */
  1419. X    { {
  1420. X    "o",
  1421. X    "'",
  1422. X    "",
  1423. X    "",
  1424. X    "",
  1425. X    ""
  1426. X    },
  1427. X    {0,0,0,0,0,0},
  1428. X    -1,-1
  1429. X    },
  1430. X
  1431. X#define PC 83        /* , */
  1432. X    { {
  1433. X    "",
  1434. X    "",
  1435. X    "",
  1436. X    "o",
  1437. X    "'",
  1438. X    ""
  1439. X    },
  1440. X    {0,0,0,0,0,0},
  1441. X    -1,-1
  1442. X    },
  1443. X
  1444. X#define PM 84        /* - */
  1445. X    { {
  1446. X    "",
  1447. X    "",
  1448. X    "---",
  1449. X    "",
  1450. X    "",
  1451. X    ""
  1452. X    },
  1453. X    {0,0,0,0,0,0},
  1454. X    -1,-1
  1455. X    },
  1456. X
  1457. X#define PP 85        /* . */
  1458. X    { {
  1459. X    "",
  1460. X    "",
  1461. X    "",
  1462. X    "o",
  1463. X    "",
  1464. X    ""
  1465. X    },
  1466. X    {0,0,0,0,0,0},
  1467. X    -1,-1
  1468. X    },
  1469. X
  1470. X#define PD 86        /* : */
  1471. X    { {
  1472. X    "",
  1473. X      "o",
  1474. X    "",
  1475. X    "o",
  1476. X    "",
  1477. X    ""
  1478. X    },
  1479. X    {0,2,0,0,0,0},
  1480. X    -1,-1
  1481. X    },
  1482. X
  1483. X#define PS 87        /* ; */
  1484. X    { {
  1485. X    "",
  1486. X      "o",
  1487. X    "",
  1488. X    "o",
  1489. X    "'",
  1490. X    ""
  1491. X    },
  1492. X    {0,2,0,0,0,0},
  1493. X    -1,-1
  1494. X    },
  1495. X
  1496. X#define PQ 88        /* ? */
  1497. X    { {
  1498. X      "__",
  1499. X      "__)",
  1500. X     "/",
  1501. X    "o",
  1502. X    "",
  1503. X    ""
  1504. X    },
  1505. X    {2,2,1,0,0,0},
  1506. X    -1,-1
  1507. X    },
  1508. X
  1509. X#define PB 89        /* ` */
  1510. X    { {
  1511. X    "o",
  1512. X    "`",
  1513. X    "",
  1514. X    "",
  1515. X    "",
  1516. X    ""
  1517. X    },
  1518. X    {0,0,0,0,0,0},
  1519. X    -1,-1
  1520. X    }
  1521. X    };
  1522. X
  1523. short code1[] = {
  1524. X     /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 */
  1525. X    XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
  1526. X    XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
  1527. X    SP, PE, PU, PX, PK, XX, XX, PF, XX, XX, XX, XX, PC, PM, PP, XX,
  1528. X    SN, SN, SN, SN, SN, SN, SN, SN, SN, SN, PD, PS, XX, XX, XX, PQ,
  1529. X    XX, UA, UB, UC, UD, UE, UF, UG, UH, UI, UJ, UK, UL, UM, UN, UO,
  1530. X    UP, UQ, UR, US, UT, UU, UV, UW, UX, UY, UZ, XX, XX, XX, XX, ST,
  1531. X    PB, LA, LB, LC, LD, LE, LF, LG, LH, LI, LJ, LK, LL, LM, LN, LO,
  1532. X    LP, LQ, LR, LS, LT, LU, LV, LW, LX, LY, LZ, XX, XX, XX, XX, XX };
  1533. X
  1534. short code2[] = {
  1535. X     /*  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 */
  1536. X    XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
  1537. X    XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX,
  1538. X    SP, PE, PU, PX, PK, XX, XX, PF, XX, XX, XX, XX, PC, PM, PP, XX,
  1539. X    SN, SN, SN, SN, SN, SN, SN, SN, SN, SN, PD, PS, XX, XX, XX, PQ,
  1540. X    XX, UA, UB, UC, UD, UE, UF, UG, UH, UI, UJ, UK, UL, UM, UN, UO,
  1541. X    UP, UQ, UR, US, UT, UU, UV, UW, UX, UY, UZ, XX, XX, XX, XX, ST,
  1542. X    PB, NA, NB, NC, ND, NE, NF, NG, NH, NI, NJ, NK, NL, NM, NN, NO,
  1543. X    NP, NQ, NR, NS, NT, NU, NV, NW, NX, NY, NZ, XX, XX, XX, XX, XX };
  1544. X/*
  1545. X * end of "font.c"
  1546. X */
  1547. END_OF_FILE
  1548. if test 19392 -ne `wc -c <'banner-05/cursive.c'`; then
  1549.     echo shar: \"'banner-05/cursive.c'\" unpacked with wrong size!
  1550. fi
  1551. # end of 'banner-05/cursive.c'
  1552. fi
  1553. echo shar: End of archive 5 \(of 7\).
  1554. cp /dev/null ark5isdone
  1555. MISSING=""
  1556. for I in 1 2 3 4 5 6 7 ; do
  1557.     if test ! -f ark${I}isdone ; then
  1558.     MISSING="${MISSING} ${I}"
  1559.     fi
  1560. done
  1561. if test "${MISSING}" = "" ; then
  1562.     echo You have unpacked all 7 archives.
  1563.     rm -f ark[1-9]isdone
  1564. else
  1565.     echo You still need to unpack the following archives:
  1566.     echo "        " ${MISSING}
  1567. fi
  1568. ##  End of shell archive.
  1569. exit 0
  1570.