home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume8 / dca2troff / do_mbd1.c < prev    next >
C/C++ Source or Header  |  1987-02-18  |  3KB  |  132 lines

  1. #include "dca2troff.h"
  2.  
  3. struct fnts {
  4.     int gfid;        /* GFID i.e. font number */
  5.     char *dfnt;        /* use this troff font for now */
  6.     char *fntname;        /* font name */
  7. } fnttab[] = {
  8.     1,    "1",    "Advocate",
  9.     2,    "1",    "Delegate",
  10.     3,    "1",    "OCR-B",
  11.     4,    "1",    "Polygo Pica",
  12.     5,    "1",    "Orator",
  13.     6,    "2",    "Light Italic 10",
  14.     7,    "1",    "OCR-M",
  15.     8,    "1",    "Scribe 10",
  16.     9,    "1",    "Large Pica",
  17.     10,    "1",    "Cyrillic 22",
  18.     11,    "1",    "Courier 10",
  19.     12,    "1",    "Prestige Pica",
  20.     13,    "1",    "Artisan 10",
  21.     14,    "1",    "Manifold",
  22.     15,    "1",    "Bookface Academic",
  23.     16,    "1",    "Latin 10 High Speed",
  24.     17,    "1",    "1403 OCR",
  25.     18,    "2",    "Courier Italic 10",
  26.     19,    "1",    "OCR-A",
  27.     20,    "1",    "PICA",
  28.     21,    "1",    "Katakana Light",
  29.     22,    "1",    "Printing & Publishing 12 Number 3",
  30.     23,    "2",    "Light Italic 10 Mod",
  31.     24,    "1",    "Presentor",
  32.     80,    "1",    "Scribe",
  33.     81,    "1",    "Artisan 12",
  34.     82,    "1",    "Auto Elite",
  35.     83,    "1",    "Elite",
  36.     84,    "1",    "Script",
  37.     85,    "1",    "Courier 12",
  38.     86,    "1",    "Prestige Elite",
  39.     87,    "1",    "Letter Gothic",
  40.     88,    "1",    "High Speed Latin 12",
  41.     89,    "1",    "Large Elite",
  42.     90,    "1",    "Dual Gothic",
  43.     91,    "2",    "Light Italic 12",
  44.     92,    "2",    "Courier 12 Italic",
  45.     93,    "1",    "Polygo Elite",
  46.     94,    "1",    "Diplomat",
  47.     95,    "1",    "Adjutant",
  48.     96,    "1",    "Olde World",
  49.     97,    "2",    "Light Italic 12 Mod",
  50.     155,    "2",    "Boldface Italic",
  51.     156,    "1",    "Thesis",
  52.     157,    "1",    "Title",
  53.     158,    "1",    "Modern",
  54.     159,    "1",    "Boldface",
  55.     160,    "1",    "Essay",
  56.     161,    "1",    "Arcadia",
  57.     162,    "2",    "Essay Italic",
  58.     163,    "3",    "Essay Bold",
  59.     165,    "1",    "High Speed Latin PSM",
  60.     221,    "1",    "Prestige 15",
  61.     222,    "1",    "Gothic 15",
  62.     223,    "1",    "Courier 15",
  63.     224,    "1",    "Rotated Data 1 15",
  64.     225,    "1",    "Scribe 15",
  65.     0,    "",    ""
  66. };
  67.  
  68. /* multi byte class d1 */
  69. do_mbd1()
  70. {
  71. /* the "???????" entries were found in some dw3 files but are not
  72.     documented */
  73.  
  74.     switch (mb_type)
  75.     {
  76.     case 0x8a:            /* ???????? */
  77.     case 0x8e:            /* ???????? */
  78.         do_flush(mb_count);
  79.         return;
  80.     case 0x01:            /* SCG   - Set GCGID thru GCID */
  81.         itemp = get1num();            /* get GCID1 */
  82.         jtemp = get1num();            /* get GCID2 */
  83.         mb_count = mb_count -4;
  84.         sprintf(tline, "\\\" graphic character set request: GCID1=%d, GCID2=%d\n", itemp, jtemp);
  85.         do_flush(mb_count);
  86.         return;
  87.     case 0x05:            /* SFG   - Set CFID thru GFID */
  88.         itemp = get1num();            /* get GFID */
  89.         jtemp = get1num();            /* get font width */
  90.         ctemp = get1ch();            /* get font attribute */
  91.         mb_count = mb_count - 5;
  92.         for(ltemp=0;fnttab[ltemp].gfid != itemp; ltemp++)
  93.         {
  94.         if(fnttab[ltemp].gfid == 0)
  95.             {
  96.                 sprintf(tline, "\\\" font request: GFID=%d, width=%d, ",itemp, jtemp);
  97.             }
  98.         }
  99.         if(fnttab[ltemp].gfid == itemp)
  100.             {
  101.                 sprintf(tline, "\\\" font request: font='%s', width=%d, ",fnttab[ltemp].fntname, jtemp);
  102.             }
  103.         outstr(tline);
  104.         if(ctemp == 1)
  105.         outstr("monospace\n");
  106.         else
  107.         outstr("proportionally spaced\n");
  108.         if(fnttab[ltemp].gfid == itemp)
  109.             {
  110.             sprintf(tline, "\\f%s", fnttab[ltemp].dfnt);
  111.                 outstr(tline);
  112.             }
  113.         do_flush(mb_count);
  114.         return;
  115.     case 0x15:            /* IEG   - Insert Escaped Graphic */
  116.         if(mb_count >= 3)
  117.         {
  118.         itemp = get1num();        /* get code page */
  119.         ctemp = get1ch();        /* get character code */
  120.         mb_count = mb_count - 3;
  121.         sprintf(tline, "\\\" special character request: code page=%d, character code=x%02x\n", itemp, ctemp);
  122.         outstr(tline);
  123.         }
  124.         do_flush(mb_count);
  125.         return;
  126.     default:
  127.         fprintf(stderr, "unknown mb d1 type (%02x)\n", mb_type);
  128.         do_flush(mb_count);
  129.         return;
  130.     }
  131. }
  132.