w32tex
About: TeX Live provides a comprehensive TeX system including all the major TeX-related programs, macro packages, and fonts that are free software. Windows sources.
  Fossies Dox: w32tex-src.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

aftopl.c
Go to the documentation of this file.
1 static char rcsid[] = "$Header: /u/jjc/dvitops/RCS/aftopl.c,v 1.3 89/02/22 11:40:31 jjc Rel $";
2 
3 #include "util.h"
4 
5 #define MAXNAMES 500
6 #define NOT_DEFINED 100000.0
7 #ifndef PI
8 #define PI 3.14159265358979324
9 #endif
10 
11 struct ligatures {
12  char *ch;
13  char *succ;
14  char *lig;
15 };
16 
17 char *program_name = "aftopl";
18 
19 static int lineno = 0;
20 
23 #ifdef PROTO
24 int lookup(const char *);
25 char *getkeyvalue(char *, char);
26 void scan_char_metric(char *);
27 void compute_font_dimens(void);
28 void do_kern_pairs(int);
29 void do_char_metrics(int);
30 void do_afms(void);
31 void print_font_dimens(void);
32 void do_encoding(char *);
33 void print_char_metrics(void);
34 void print_lig_kerns(void);
35 void do_ligatures(struct ligatures *);
36 #endif
37 
38 #define bad_afm_file() {fprintf(stderr, "bad afm file, line %d\n", lineno);\
39  exit(100);}
40 
41 struct lig_kern_list {
43  int succ;
44  int lig; /* -1 if its a kern */
45  double x;
46 };
47 
48 
49 struct {
50  struct lig_kern_list *p;
51  char *name;
52  int code;
53  double llx;
54  double lly;
55  double urx;
56  double ury;
57  double wx;
59 
60 struct {
62  double italic_angle;
63  double x_height;
64  /* we use max(urx - wx + italic_correction_space, 0)
65  as the italic correction for each character */
67  double normal_space;
69  double normal_shrink;
70  double extra_space;
71  double quad;
72  double slant;
75 
76 
77 
78 int lookup(s)
79 const char *s;
80 {
81  int i;
82  for (i = 0; i < MAXNAMES; i++)
83  if (table[i].name == NULL)
84  break;
85  else if (strcmp(table[i].name, s) == 0)
86  return i;
87  if (i == MAXNAMES) {
88  fprintf(stderr, "too many names\n");
89  exit(100);
90  }
91  if ((table[i].name = malloc(strlen(s) + 1)) == NULL) {
92  fprintf(stderr, "out of memory\n");
93  exit(100);
94  }
95  strcpy(table[i].name, s);
96  table[i].code = -2;
97  table[i].llx = table[i].lly = 0.0;
98  table[i].urx = table[i].ury = 0.0;
99  table[i].wx = 0.0;
100  table[i].p = NULL;
101  return i;
102 }
103 
104 
105 char *getkeyvalue(char *s, char c)
106 {
107  while (*s != '\0') {
108  while (isspace(*s))
109  s++;
110  if (*s == c)
111  return s + 1;
112  while (*s != '\0')
113  if (*s++ == ';')
114  break;
115  }
116  return NULL;
117 }
118 
120 char *s;
121 {
122  char name[128];
123  int code, n;
124  double llx, lly, urx, ury;
125  double wx, wy;
126  char *p;
127  while (isspace(*s))
128  s++;
129  if (*s == '\0') /* ignore blank line */
130  return;
131  p = getkeyvalue(s, 'N');
132  if (p == NULL)
133  bad_afm_file();
134  /* sscanf(p, " %[A-Za-z0-9]", name); */
135  /* Microsoft C scanf doesn't understand %[ */
136  sscanf(p, "%s", name);
137  if ((p = strchr(name, ';')) != NULL)
138  *p = '\0';
139  if ((p = getkeyvalue(s, 'C')) == NULL)
140  bad_afm_file();
141  if (sscanf(p, "%d", &code) != 1)
142  bad_afm_file();
143  p = getkeyvalue(s, 'B');
144  if (p == NULL)
145  bad_afm_file();
146  if (sscanf(p, "%lg %lg %lg %lg", &llx, &lly, &urx, &ury) != 4)
147  bad_afm_file();
148  p = getkeyvalue(s, 'W');
149  if (p == NULL)
150  bad_afm_file();
151  if (*p == 'X') {
152  if (sscanf(p+1, "%lg", &wx) != 1)
153  bad_afm_file();
154  wy = 0.0;
155  }
156  else if (sscanf(p, "%lg %lg", &wx, &wy) != 2)
157  bad_afm_file();
158  n = lookup(name);
159  table[n].code = code;
160  table[n].wx = wx;
161  table[n].llx = llx;
162  table[n].lly = lly;
163  table[n].urx = urx;
164  table[n].ury = ury;
165  while ((p = getkeyvalue(s, 'L')) != NULL) {
166  char successor[128];
167  char ligature[128];
168  struct lig_kern_list *ptr;
169  if (sscanf(p, " %s %s", successor, ligature) != 2) {
170  bad_afm_file();
171  }
172  else {
173  if ((s = strchr(ligature, ';')) != NULL)
174  *s = '\0';
175  }
176  if ((s = strchr(p, ';')) == NULL)
177  bad_afm_file();
178  s++;
179  if ((ptr = (struct lig_kern_list *)malloc(sizeof(struct lig_kern_list))) == NULL) {
180  fprintf(stderr, "out of memory\n");
181  exit(100);
182  }
183  ptr->succ = lookup(successor);
184  ptr->lig = lookup(ligature);
185  ptr->next = table[n].p;
186  table[n].p = ptr;
187  }
188 }
189 
190 
192 {
193  if (font.normal_space == NOT_DEFINED) {
194  int n = lookup("space");
195  if (table[n].code == -2) {
196  fprintf(stderr, "no char metric for space character\n");
197  exit(100);
198  }
199  else
200  font.normal_space = table[n].wx;
201  }
202  if (font.quad == NOT_DEFINED)
203  font.quad = (font.is_fixed_pitch?2.0:3.0)*font.normal_space;
204  if (font.italic_correction_space == NOT_DEFINED)
205  font.italic_correction_space = font.normal_space/12.0;
206  if (font.normal_shrink == NOT_DEFINED)
207  font.normal_shrink = font.is_fixed_pitch ? 0.0 :
208  font.normal_space/3.0;
209  if (font.normal_stretch == NOT_DEFINED)
210  font.normal_stretch = font.is_fixed_pitch ? 0.0 :
211  font.normal_space/2.0;
212  if (font.extra_space == NOT_DEFINED)
213  font.extra_space = (font.is_fixed_pitch ? 1.0 :0.5)
214  *font.normal_space;
215  if (font.slant == NOT_DEFINED)
216  if (font.italic_angle == 0.0)
217  font.slant = 0.0;
218  else
219  font.slant = sin(-font.italic_angle*PI/180.0);
220  if (font.x_height == NOT_DEFINED)
221  font.x_height = table[lookup("x")].ury;
222 }
223 
225 int n;
226 {
227  char buf[512];
228  char name1[128];
229  char name2[128];
230  double x, y;
231  for (;;) {
232  int i;
233  struct lig_kern_list *ptr;
234  lineno++;
235  if (fgets(buf, 512, infp) == NULL)
236  bad_afm_file();
237  if (buf[0] == '\n')
238  continue;
239  if (strcmp(buf, "EndKernPairs\n") == 0)
240  break;
241  if (sscanf(buf, "KPX %s %s %lg", name1, name2, &x) != 3) {
242  if (sscanf(buf, "KP %s %s %lg %lg", name1, name2,
243  &x, &y) != 4)
244  bad_afm_file();
245  }
246  else
247  y = 0.0;
248  i = lookup(name1);
249  if ((ptr = (struct lig_kern_list *)malloc(sizeof(struct lig_kern_list))) == NULL) {
250  fprintf(stderr, "out of memory\n");
251  exit(100);
252  }
253  ptr->succ = lookup(name2);
254  ptr->lig = -1;
255  ptr->x = x;
256  ptr->next = table[i].p;
257  table[i].p = ptr;
258  n--;
259  }
260  if (n != 0)
261  fprintf(stderr, "warning: wrong number of kern pairs\n");
262 }
263 
264 
266 int n;
267 {
268  char buf[512];
269  for (;;) {
270  char *ptr = buf;
271  lineno++;
272  if (fgets(buf, 512, infp) == NULL)
273  bad_afm_file();
274  if (strcmp(buf, "EndCharMetrics\n") == 0)
275  break;
276  while (isspace(*ptr))
277  ptr++;
278  if (*ptr == '\0')
279  continue;
281  n--;
282  }
283  if (n != 0)
284  fprintf(stderr, "warning: wrong number of char metrics\n");
285 }
286 
287 void do_afms()
288 {
289  char buf[512];
290  lineno = 0;
291 
292  while (fgets(buf, 512, infp) != NULL) {
293  char *key, *value;
294  key = buf;
295  lineno++;
296  while (isspace(*key))
297  key++;
298  value = key;
299  while (*value != '\0' && !isspace(*value))
300  value++;
301  if (*value != '\0') {
302  /* strip trailing white space */
303  char *p;
304  *value++ = '\0';
305  while (isspace(*value))
306  value++;
307  p = value;
308  while (*p != '\0')
309  p++;
310  while (p > value && isspace(*(p-1)))
311  p--;
312  *p = '\0';
313  }
314  if (strcmp(key, "IsFixedPitch") == 0)
315  font.is_fixed_pitch = (strcmp(value, "true") == 0);
316  else if (strcmp(key, "XHeight") == 0)
317  font.x_height = atof(value);
318  else if (strcmp(key, "StartCharMetrics") == 0)
320  else if (strcmp(key, "ItalicAngle") == 0)
321  font.italic_angle = atof(value);
322  else if (strcmp(key, "StartKernPairs") == 0)
324  else if (strcmp(key, "italicCorrectionSpace") == 0)
325  font.italic_correction_space = atof(value);
326  }
327 
328 }
329 
330 
332 {
333  fprintf(outfp, "(FONTDIMEN\n");
334  fprintf(outfp, " (SLANT R %f)\n", font.slant);
335  fprintf(outfp, " (SPACE R %f)\n", font.normal_space/1000.0);
336  fprintf(outfp, " (SHRINK R %f)\n", font.normal_shrink/1000.0);
337  fprintf(outfp, " (STRETCH R %f)\n", font.normal_stretch/1000.0);
338  fprintf(outfp, " (EXTRASPACE R %f)\n", font.extra_space/1000.0);
339  fprintf(outfp, " (QUAD R %f)\n", font.quad/1000.0);
340  fprintf(outfp, " (XHEIGHT R %f)\n", font.x_height/1000.0);
341  fprintf(outfp, " )\n");
342 }
343 
344 
346 char *encoding;
347 {
348  char buff[2048];
349  char *p, *q;
350  int i, n;
351  char name[256];
352  char encname[128];
353  FILE *fp;
354  char *texfonts, *ff;
355  fprintf(outfp, "(CODINGSCHEME %s)\n", encoding);
356  strcpy(encname, encoding);
357  ff = strrchr(encname, '.');
358  if(!ff) strcat(encname, ".enc");
359  else if(stricmp(ff, ".enc"))
360  strcat(encname, ".enc");
361  texfonts = kpse_find_file(encname, kpse_enc_format, 1);
362  if (texfonts == NULL) {
363  fprintf(stderr, "can't find %s\n", encname);
364  exit(100);
365  }
366  fp = fopen(texfonts, "r");
367  free(texfonts);
368  for (i = 0; i < MAXNAMES; i++)
369  if (table[i].code >= -1)
370  table[i].code = -1;
371  i = 0;
372  while(fgets(buff, 2000, fp) && i < 256) {
373  if(buff[0] == '%' || buff[0] == '\n')
374  continue;
375  if(p = strrchr(buff, '['))
376  p++;
377  else
378  p = buff;
379  while(*p && *p <= ' ')
380  p++;
381  if(*p == '\0' || *p == '%' || *p == '\n')
382  continue;
383  while(*p && *p != '\n' && *p != '%') {
384  q = name;
385  if(*p == '/')
386  p++;
387  while(*p > ' ' && *p != '%')
388  *q++ = *p++;
389  *q = '\0';
390  if (strcmp(".notdef", name) == 0) {
391  while(*p && *p <= ' ')
392  p++;
393  i++;
394  continue;
395  }
396  n = lookup(name);
397  if (table[n].code == -2)
398  fprintf(stderr, "warning: %s in encoding but not in font\n", name);
399  else if (table[n].code == -1)
400  table[n].code = i;
401  else
402  fprintf(stderr, "error: %s appears more than once in encoding\n", name);
403  while(*p && *p <= ' ')
404  p++;
405  i++;
406  }
407  }
408 }
409 
411 {
412  int i;
413  for (i = 0; i < MAXNAMES; i++)
414  if (table[i].name != NULL && table[i].code > 0) {
415  double charic;
416  fprintf(outfp, "(CHARACTER O %03o\n", table[i].code);
417  fprintf(outfp, " (COMMENT %s)\n", table[i].name);
418  fprintf(outfp, " (CHARWD R %f)\n",
419  table[i].wx/1000.0);
420  /* negative heights and depths mess up \mathaccent */
421  if (table[i].ury > 0.0)
422  fprintf(outfp, " (CHARHT R %f)\n",
423  table[i].ury/1000.0);
424  if (table[i].lly < 0.0)
425  fprintf(outfp, " (CHARDP R %f)\n",
426  -table[i].lly/1000.0);
427  charic = table[i].urx - table[i].wx + font.italic_correction_space;
428  if (charic > 0.0)
429  fprintf(outfp, " (CHARIC R %f)\n",
430  charic/1000.0);
431  fputs(" )\n", outfp);
432  }
433 }
434 
435 
436 
438 {
439  int i;
440  fputs("(LIGTABLE\n", outfp);
441  for (i = 0; i < MAXNAMES; i++) {
442  struct lig_kern_list *p;
443  char label_line[128];
444  if (table[i].name == NULL || table[i].code < 0)
445  continue;
446  sprintf(label_line, " (LABEL O %03o)\n", table[i].code);
447  /* print the ligatures */
448  for (p = table[i].p; p != NULL; p = p->next)
449  if (p->lig != -1 && table[p->lig].code > 0
450  && table[p->succ].code > 0) {
451  fputs(label_line, outfp);
452  label_line[0]= '\0';
453  fprintf(outfp," (LIG O %03o O %03o)\n",
454  table[p->succ].code,
455  table[p->lig].code);
456  }
457  for (p = table[i].p; p != NULL; p = p->next)
458  if (p->lig == -1 && table[p->succ].code > 0) {
459  fputs(label_line, outfp);
460  label_line[0] = '\0';
461  fprintf(outfp, " (KRN O %03o R %f)\n",
462  table[p->succ].code,
463  p->x/1000.0);
464  }
465  if (label_line[0] == '\0')
466  fputs(" (STOP)\n", outfp);
467  }
468  fputs(" )\n", outfp);
469 }
470 
471 
472 struct ligatures standard_ligatures[] = {
473  "hyphen", "hyphen", "endash",
474  "endash", "hyphen", "emdash",
475  "quoteleft", "quoteleft", "quotedblleft",
476  "quoteright", "quoteright", "quotedblright",
477  "exclam", "quoteleft", "exclamdown",
478  "question", "quoteleft", "questiondown",
479  NULL, NULL, NULL
480  };
481 
482 struct ligatures tt_ligatures[] = {
483  "exclam", "quoteleft", "exclamdown",
484  "question", "quoteleft", "questiondown",
485  NULL, NULL, NULL
486  };
487 
488 
490 struct ligatures *lig;
491 {
492  int i;
493  for (i = 0; lig[i].lig != NULL; i++) {
494  int n;
495  struct lig_kern_list *p;
496  n = lookup(lig[i].ch);
497  if ((p = (struct lig_kern_list *)malloc(sizeof(struct lig_kern_list))) == NULL) {
498  fprintf(stderr, "out_of_memory\n");
499  exit(100);
500  }
501  p->succ = lookup(lig[i].succ);
502  p->lig = lookup(lig[i].lig);
503  p->next = table[n].p;
504  table[n].p = p;
505  }
506 }
507 
508 
509 
511 int argc;
512 char **argv;
513 {
514  char filename[128];
515  int c;
516  char *efile = NULL;
517  char *ff = NULL;
518 
519  kpse_set_program_name(argv[0], NULL);
520 
521  while ((c = getopt(argc, argv, "e:")) != EOF)
522  switch(c) {
523  case 'e':
524  efile = optarg;
525  break;
526  case '?':
527  goto usage;
528  }
529  if (argc - optind < 1)
530  goto usage;
532  if (strchr(filename, '.') == NULL)
533  strcat(filename, ".afm");
534  ff = kpse_find_file(filename, kpse_afm_format, 0);
535  if(!ff) {
536  fprintf(stderr,"%s not found\n", filename);
537  exit(100);
538  }
539  if ((infp = fopen(ff, "r")) == NULL) {
540  fprintf(stderr, "can't open %s\n", filename);
541  exit(100);
542  }
543  free(ff);
544  if (argc - optind == 1)
545  strcpy(strchr(filename, '.'), ".pl");
546  else if (argc - optind == 2) {
547  strcpy(filename, argv[optind+1]);
548  if (strchr(filename, '.') == NULL)
549  strcat(filename, ".pl");
550  }
551  else
552  goto usage;
553  if ((outfp = fopen(filename, "wb")) == NULL) {
554  fprintf(stderr, "can't open %s\n", filename);
555  exit(100);
556  }
557  do_afms();
558  if (efile != NULL)
559  do_encoding(efile);
560  if (font.is_fixed_pitch)
562  else
567  print_lig_kerns();
568  exit(history);
569 usage:
570  fprintf(stderr, "usage: aftopl [-e encoding] afmfile [plfile]\n");
571  exit(0);
572 }
q
Definition: afm2pl.c:2287
@ kpse_enc_format
Definition: afm2pl.c:372
@ kpse_afm_format
Definition: afm2pl.c:372
char * getkeyvalue(char *, char)
Definition: aftopl.c:105
int is_fixed_pitch
Definition: aftopl.c:61
void print_lig_kerns(void)
Definition: aftopl.c:437
double normal_space
Definition: aftopl.c:67
double slant
Definition: aftopl.c:72
void compute_font_dimens(void)
Definition: aftopl.c:191
char * program_name
Definition: aftopl.c:17
FILE * infp
Definition: aftopl.c:21
struct ligatures tt_ligatures[]
Definition: aftopl.c:482
double ury
Definition: aftopl.c:56
int main(int argc, char **argv)
Definition: aftopl.c:510
double italic_angle
Definition: aftopl.c:62
struct lig_kern_list * p
Definition: aftopl.c:50
void do_afms(void)
Definition: aftopl.c:287
int code
Definition: aftopl.c:52
double extra_space
Definition: aftopl.c:70
double urx
Definition: aftopl.c:55
#define NOT_DEFINED
Definition: aftopl.c:6
static int lineno
Definition: aftopl.c:19
void scan_char_metric(char *)
Definition: aftopl.c:119
#define PI
Definition: aftopl.c:8
char * name
Definition: aftopl.c:51
void print_font_dimens(void)
Definition: aftopl.c:331
double lly
Definition: aftopl.c:54
double wx
Definition: aftopl.c:57
double normal_stretch
Definition: aftopl.c:68
FILE * outfp
Definition: aftopl.c:22
void do_ligatures(struct ligatures *)
Definition: aftopl.c:489
#define bad_afm_file()
Definition: aftopl.c:38
void do_kern_pairs(int)
Definition: aftopl.c:224
double quad
Definition: aftopl.c:71
double italic_correction_space
Definition: aftopl.c:66
void print_char_metrics(void)
Definition: aftopl.c:410
void do_encoding(char *)
Definition: aftopl.c:345
#define MAXNAMES
Definition: aftopl.c:5
double x_height
Definition: aftopl.c:63
int lookup(const char *)
double normal_shrink
Definition: aftopl.c:69
double llx
Definition: aftopl.c:53
void do_char_metrics(int)
Definition: aftopl.c:265
struct ligatures standard_ligatures[]
Definition: aftopl.c:472
static char rcsid[]
Definition: aftopl.c:1
#define n
Definition: t4ht.c:1290
#define free(a)
Definition: decNumber.cpp:310
#define strrchr
Definition: detex.c:67
#define fopen
Definition: xxstdio.h:21
#define fgets
Definition: xxstdio.h:29
double sin()
int strcmp()
Definition: coll.cpp:143
int sscanf()
char * strcpy()
#define s
Definition: afcover.h:80
static char buff[2 *10240]
Definition: genind.c:46
static char usage[]
Definition: giftopnm.c:59
#define c(n)
Definition: gpos-common.c:150
#define strchr
Definition: gsftopk.c:59
#define NULL
Definition: ftobjs.h:61
small capitals from c petite p scientific i
Definition: afcover.h:80
void exit()
#define EOF
Definition: afmparse.c:59
kerning y
Definition: ttdriver.c:212
int getopt(int nargc, char *const nargv[], const char *ostr)
Definition: getopt.c:53
int optind
Definition: getopt.c:39
char * optarg
Definition: getopt.c:42
int atoi(const char *)
double atof(const char *)
#define history
Definition: util.h:90
#define buf
#define stricmp
Definition: win32lib.h:93
#define fputs
Definition: mendex.h:67
#define fprintf
Definition: mendex.h:64
#define malloc
Definition: alloca.c:91
#define sprintf
Definition: snprintf.c:44
float x
Definition: cordic.py:15
union value value
Definition: obx.h:44
char * filename[256]
Definition: pbmtopk.c:46
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro pixld1_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl else error unsupported endif endm macro pixld2_s mem_operand if mov asr add asl add asl mov asr sub UNIT_X add asl mov asr add asl add asl mov asr add UNIT_X add asl else pixld1_s mem_operand pixld1_s mem_operand endif endm macro pixld0_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl endif endm macro pixld_s_internal mem_operand if mem_operand pixld2_s mem_operand pixdeinterleave basereg elseif mem_operand elseif mem_operand elseif mem_operand elseif mem_operand pixld0_s mem_operand else pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else error unsupported mem_operand if bpp mem_operand endif endm macro vuzp8 reg2 vuzp d d &reg2 endm macro vzip8 reg2 vzip d d &reg2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld[DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld if[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro fetch_mask_pixblock pixld mask_basereg pixblock_size MASK endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp skip1(dst_w_bpp<=(lowbit *8)) &&((lowbit *8)<(pixblock_size *dst_w_bpp)) .if lowbit< 16 tst DST_R
set set set set set set set set set set set set set set set set set set set set *set set set macro pixldst op &r &cond WK op &r &cond WK op &r &cond WK else op &m &cond &ia op &r &cond WK else op &m &cond &ia elseif elseif else error unsupported base if elseif elseif else error unsupported unaligned pixldst unaligned endm macro pixst base base else pixldst base endif endm macro PF ptr
#define fp
#define isspace(ch)
Definition: utype.h:87
Definition: inftrees.h:24
Definition: pbmfont.h:11
double x
Definition: aftopl.c:45
struct lig_kern_list * next
Definition: aftopl.c:42
int succ
Definition: aftopl.c:43
Definition: afm2pl.c:139
char * ch
Definition: aftopl.c:12
char * lig
Definition: aftopl.c:14
char * succ
Definition: aftopl.c:13
Definition: table.h:30
#define FILE
Definition: t1stdio.h:34
ch
Definition: t4ht.c:1443
*job_name strlen((char *) job_name) - 4)
#define key
Definition: tex2xindy.c:753
struct _lig lig
Definition: ttf2tfm.h:48
Definition: obx.h:51
#define argv
Definition: xmain.c:270
#define argc
Definition: xmain.c:269
#define encoding
Definition: xmlparse.c:588