home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / maths / plplot / plplot_2 / fonts / xtndfont.c < prev   
C/C++ Source or Header  |  1994-08-25  |  2KB  |  115 lines

  1. /* $Id: xtndfont.c,v 1.8 1994/08/25 04:02:58 mjl Exp $
  2.  * $Log: xtndfont.c,v $
  3.  * Revision 1.8  1994/08/25  04:02:58  mjl
  4.  * Cleaned up header file inclusion.
  5.  *
  6. */
  7.  
  8. /*    xtndfont.c
  9.  
  10.     Utility to generate extended font set.
  11. */
  12.  
  13. #include "plplotP.h"
  14.  
  15. extern short int *hersh[];
  16. extern short int *findex[];
  17. extern short int *buffer[];
  18.  
  19. int 
  20. main (void)
  21. {
  22.  
  23.     short j, k, ib, nindx, nchars, nleng, htab, zero;
  24.     short *hrshlst;
  25.     SCHAR ix, iy;
  26.     long fpos;
  27.     PDFstrm *pdfs;
  28.  
  29.     hrshlst = (short *) malloc(4 * 176 * sizeof(short));
  30.  
  31.     ib = 0;
  32.     for (j = 0; j < 4; j++)
  33.     for (k = 0; k < 176; k++)
  34.         hrshlst[ib++] = *(hersh[j] + k);
  35.  
  36.     pdfs = pdf_fopen(PL_XFONT, "wb+");
  37.     if ( ! pdfs) {
  38.     printf("Error opening extended font file.\n");
  39.     exit(1);
  40.     }
  41.  
  42.     htab = 4 * 256 + 176;
  43.  
  44.     pdf_wr_2bytes(pdfs, htab);
  45.     pdf_wr_2nbytes(pdfs, (U_SHORT *) hrshlst, 4 * 176);
  46.  
  47.     nleng = 1;
  48.     zero = 0;
  49.     nindx = 0;
  50.     fpos = ftell(pdfs->file);
  51.     pdf_wr_2bytes(pdfs, nindx);
  52.     for (j = 0; j < 30; j++) {
  53.     for (k = 0; k < 100; k++) {
  54.         ib = *(findex[j] + k);
  55.         if (ib == 0) {
  56.         pdf_wr_2bytes(pdfs, zero);
  57.         nindx++;
  58.         }
  59.         else {
  60.         pdf_wr_2bytes(pdfs, nleng);
  61.         nindx++;
  62.         for (;;) {
  63.             ix = *(buffer[ib / 100] + ib % 100) / 128 - 64;
  64.             iy = *(buffer[ib / 100] + ib % 100) % 128 - 64;
  65.             ib++;
  66.             if (ix == -64)
  67.             ix = 64;
  68.             if (iy == -64)
  69.             iy = 64;
  70.             nleng++;
  71.             if (ix == 64 && iy == 64)
  72.             break;
  73.         }
  74.         }
  75.     }
  76.     }
  77.     fseek(pdfs->file, fpos, 0);
  78.     pdf_wr_2bytes(pdfs, nindx);
  79.  
  80.     fseek(pdfs->file, 0, 2);
  81.     fpos = ftell(pdfs->file);
  82.     nleng = 1;
  83.     nchars = 0;
  84.     pdf_wr_2bytes(pdfs, nleng);
  85.     for (j = 0; j < 30; j++) {
  86.     for (k = 0; k < 100; k++) {
  87.         ib = *(findex[j] + k);
  88.         if (ib != 0) {
  89.         for (;;) {
  90.             ix = *(buffer[ib / 100] + ib % 100) / 128 - 64;
  91.             iy = *(buffer[ib / 100] + ib % 100) % 128 - 64;
  92.             ib++;
  93.             if (ix == -64)
  94.             ix = 64;
  95.             if (iy == -64)
  96.             iy = 64;
  97.             fputc(ix, pdfs->file);
  98.             fputc(iy, pdfs->file);
  99.             nleng++;
  100.             if (ix == 64 && iy == 64)
  101.             break;
  102.         }
  103.         nchars++;
  104.         }
  105.     }
  106.     }
  107.     nleng--;
  108.     fseek(pdfs->file, fpos, 0);
  109.     pdf_wr_2bytes(pdfs, nleng);
  110.     pdf_close(pdfs);
  111.  
  112.     printf("There are %d characters in font set.\n", nchars - 1);
  113.     exit(0);
  114. }
  115.