home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
maths
/
plplot
/
plplot_2
/
fonts
/
xtndfont.c
< prev
Wrap
C/C++ Source or Header
|
1994-08-25
|
2KB
|
115 lines
/* $Id: xtndfont.c,v 1.8 1994/08/25 04:02:58 mjl Exp $
* $Log: xtndfont.c,v $
* Revision 1.8 1994/08/25 04:02:58 mjl
* Cleaned up header file inclusion.
*
*/
/* xtndfont.c
Utility to generate extended font set.
*/
#include "plplotP.h"
extern short int *hersh[];
extern short int *findex[];
extern short int *buffer[];
int
main (void)
{
short j, k, ib, nindx, nchars, nleng, htab, zero;
short *hrshlst;
SCHAR ix, iy;
long fpos;
PDFstrm *pdfs;
hrshlst = (short *) malloc(4 * 176 * sizeof(short));
ib = 0;
for (j = 0; j < 4; j++)
for (k = 0; k < 176; k++)
hrshlst[ib++] = *(hersh[j] + k);
pdfs = pdf_fopen(PL_XFONT, "wb+");
if ( ! pdfs) {
printf("Error opening extended font file.\n");
exit(1);
}
htab = 4 * 256 + 176;
pdf_wr_2bytes(pdfs, htab);
pdf_wr_2nbytes(pdfs, (U_SHORT *) hrshlst, 4 * 176);
nleng = 1;
zero = 0;
nindx = 0;
fpos = ftell(pdfs->file);
pdf_wr_2bytes(pdfs, nindx);
for (j = 0; j < 30; j++) {
for (k = 0; k < 100; k++) {
ib = *(findex[j] + k);
if (ib == 0) {
pdf_wr_2bytes(pdfs, zero);
nindx++;
}
else {
pdf_wr_2bytes(pdfs, nleng);
nindx++;
for (;;) {
ix = *(buffer[ib / 100] + ib % 100) / 128 - 64;
iy = *(buffer[ib / 100] + ib % 100) % 128 - 64;
ib++;
if (ix == -64)
ix = 64;
if (iy == -64)
iy = 64;
nleng++;
if (ix == 64 && iy == 64)
break;
}
}
}
}
fseek(pdfs->file, fpos, 0);
pdf_wr_2bytes(pdfs, nindx);
fseek(pdfs->file, 0, 2);
fpos = ftell(pdfs->file);
nleng = 1;
nchars = 0;
pdf_wr_2bytes(pdfs, nleng);
for (j = 0; j < 30; j++) {
for (k = 0; k < 100; k++) {
ib = *(findex[j] + k);
if (ib != 0) {
for (;;) {
ix = *(buffer[ib / 100] + ib % 100) / 128 - 64;
iy = *(buffer[ib / 100] + ib % 100) % 128 - 64;
ib++;
if (ix == -64)
ix = 64;
if (iy == -64)
iy = 64;
fputc(ix, pdfs->file);
fputc(iy, pdfs->file);
nleng++;
if (ix == 64 && iy == 64)
break;
}
nchars++;
}
}
}
nleng--;
fseek(pdfs->file, fpos, 0);
pdf_wr_2bytes(pdfs, nleng);
pdf_close(pdfs);
printf("There are %d characters in font set.\n", nchars - 1);
exit(0);
}