166
166
extern char *font_embedding_strings[];
169
#define font_checksum(a) font_tables[a]->_font_checksum
170
#define set_font_checksum(a,b) font_checksum(a) = b
172
#define font_check_0(a) ((font_tables[a]->_font_checksum&0xFF000000)>>24)
173
#define font_check_1(a) ((font_tables[a]->_font_checksum&0x00FF0000)>>16)
174
#define font_check_2(a) ((font_tables[a]->_font_checksum&0x0000FF00)>>8)
175
#define font_check_3(a) (font_tables[a]->_font_checksum&0x000000FF)
177
#define font_size(a) font_tables[a]->_font_size
178
#define set_font_size(a,b) font_size(a) = b
179
#define font_dsize(a) font_tables[a]->_font_dsize
180
#define set_font_dsize(a,b) font_dsize(a) = b
182
#define font_name(a) font_tables[a]->_font_name
183
#define get_font_name(a) (unsigned char *)font_name(a)
184
#define set_font_name(f,b) font_name(f) = b
185
#define tex_font_name(a) maketexstring(font_name(a))
187
boolean cmp_font_name (integer, strnumber);
189
#define font_area(a) font_tables[a]->_font_area
190
#define get_font_area(a) (unsigned char *)font_area(a)
191
#define set_font_area(f,b) font_area(f) = b
192
#define tex_font_area(a) maketexstring(font_area(a))
194
boolean cmp_font_area (integer, strnumber);
196
#define font_reassign(a,b) { if (a!=NULL) free(a); a = b; }
198
#define font_filename(a) font_tables[a]->_font_filename
199
#define set_font_filename(f,b) font_reassign(font_filename(f),b)
201
#define font_fullname(a) font_tables[a]->_font_fullname
202
#define set_font_fullname(f,b) font_reassign(font_fullname(f),b)
204
#define font_encodingname(a) font_tables[a]->_font_encodingname
205
#define set_font_encodingname(f,b) font_reassign(font_encodingname(f),b)
207
boolean font_shareable(internal_font_number,internal_font_number);
209
#define cmp_font_filename(a,b) (!(font_filename(a)!=NULL || font_filename(b)!=NULL || \
169
# define font_checksum(a) font_tables[a]->_font_checksum
170
# define set_font_checksum(a,b) font_checksum(a) = b
172
# define font_check_0(a) ((font_tables[a]->_font_checksum&0xFF000000)>>24)
173
# define font_check_1(a) ((font_tables[a]->_font_checksum&0x00FF0000)>>16)
174
# define font_check_2(a) ((font_tables[a]->_font_checksum&0x0000FF00)>>8)
175
# define font_check_3(a) (font_tables[a]->_font_checksum&0x000000FF)
177
# define font_size(a) font_tables[a]->_font_size
178
# define set_font_size(a,b) font_size(a) = b
179
# define font_dsize(a) font_tables[a]->_font_dsize
180
# define set_font_dsize(a,b) font_dsize(a) = b
182
# define font_name(a) font_tables[a]->_font_name
183
# define get_font_name(a) (unsigned char *)font_name(a)
184
# define set_font_name(f,b) font_name(f) = b
185
# define tex_font_name(a) maketexstring(font_name(a))
187
boolean cmp_font_name(integer, strnumber);
189
# define font_area(a) font_tables[a]->_font_area
190
# define get_font_area(a) (unsigned char *)font_area(a)
191
# define set_font_area(f,b) font_area(f) = b
192
# define tex_font_area(a) maketexstring(font_area(a))
194
boolean cmp_font_area(integer, strnumber);
196
# define font_reassign(a,b) { if (a!=NULL) free(a); a = b; }
198
# define font_filename(a) font_tables[a]->_font_filename
199
# define set_font_filename(f,b) font_reassign(font_filename(f),b)
201
# define font_fullname(a) font_tables[a]->_font_fullname
202
# define set_font_fullname(f,b) font_reassign(font_fullname(f),b)
204
# define font_encodingname(a) font_tables[a]->_font_encodingname
205
# define set_font_encodingname(f,b) font_reassign(font_encodingname(f),b)
207
boolean font_shareable(internal_font_number, internal_font_number);
209
# define cmp_font_filename(a,b) (!(font_filename(a)!=NULL || font_filename(b)!=NULL || \
210
210
strcmp(font_filename(a),font_filename(b))))
211
#define cmp_font_fullname(a,b) (!(font_fullname(a)!=NULL || font_fullname(b)!=NULL || \
211
# define cmp_font_fullname(a,b) (!(font_fullname(a)!=NULL || font_fullname(b)!=NULL || \
212
212
strcmp(font_fullname(a),font_fullname(b))))
213
#define cmp_font_encodingname(a,b) (!(font_encoding(a)!=NULL || font_encodingname(b)!=NULL || \
213
# define cmp_font_encodingname(a,b) (!(font_encoding(a)!=NULL || font_encodingname(b)!=NULL || \
214
214
strcmp(font_encodingname(a),font_encodingname(b))))
216
#define font_bc(a) font_tables[a]->_font_bc
217
#define set_font_bc(f,b) font_bc(f) = b
219
#define font_ec(a) font_tables[a]->_font_ec
220
#define set_font_ec(f,b) font_ec(f) = b
222
#define font_used(a) (font_tables[a]!=NULL && font_tables[a]->_font_used)
223
#define set_font_used(a,b) font_tables[a]->_font_used = b
225
#define font_touched(a) font_tables[a]->_font_touched
226
#define set_font_touched(a,b) font_touched(a) = b
228
#define font_type(a) font_tables[a]->_font_type
229
#define set_font_type(a,b) { /* fprintf(stdout,"set font type of %s to %i: %s\n",font_name(a),b,__FILE__); */ \
216
# define font_bc(a) font_tables[a]->_font_bc
217
# define set_font_bc(f,b) font_bc(f) = b
219
# define font_ec(a) font_tables[a]->_font_ec
220
# define set_font_ec(f,b) font_ec(f) = b
222
# define font_used(a) (font_tables[a]!=NULL && font_tables[a]->_font_used)
223
# define set_font_used(a,b) font_tables[a]->_font_used = b
225
# define font_touched(a) font_tables[a]->_font_touched
226
# define set_font_touched(a,b) font_touched(a) = b
228
# define font_type(a) font_tables[a]->_font_type
229
# define set_font_type(a,b) { /* fprintf(stdout,"set font type of %s to %i: %s\n",font_name(a),b,__FILE__); */ \
230
230
font_type(a) = b; }
232
#define font_format(a) font_tables[a]->_font_format
233
#define font_format_name(a) font_format_strings[font_tables[a]->_font_format]
234
#define set_font_format(a,b) font_format(a) = b
236
#define font_embedding(a) font_tables[a]->_font_embedding
237
#define set_font_embedding(a,b) font_embedding(a) = b
239
#define font_cidversion(a) font_tables[a]->_font_cidversion
240
#define set_font_cidversion(a,b) font_cidversion(a) = b
242
#define font_cidsupplement(a) font_tables[a]->_font_cidsupplement
243
#define set_font_cidsupplement(a,b) font_cidsupplement(a) = b
245
#define font_cidordering(a) font_tables[a]->_font_cidordering
246
#define set_font_cidordering(f,b) font_reassign(font_cidordering(f),b)
248
#define font_cidregistry(a) font_tables[a]->_font_cidregistry
249
#define set_font_cidregistry(f,b) font_reassign(font_cidregistry(f),b)
251
#define font_map(a) font_tables[a]->_font_map
252
#define set_font_map(a,b) font_map(a) = b
254
#define font_cache_id(a) font_tables[a]->_font_cache_id
255
#define set_font_cache_id(a,b) font_cache_id(a) = b
257
#define font_encodingbytes(a) font_tables[a]->_font_encodingbytes
258
#define set_font_encodingbytes(a,b) font_encodingbytes(a) = b
260
#define font_slant(a) font_tables[a]->_font_slant
261
#define set_font_slant(a,b) font_slant(a) = b
263
#define font_extend(a) font_tables[a]->_font_extend
264
#define set_font_extend(a,b) font_extend(a) = b
266
#define font_tounicode(a) font_tables[a]->_font_tounicode
267
#define set_font_tounicode(a,b) font_tounicode(a) = b
269
#define hyphen_char(a) font_tables[a]->_hyphen_char
270
#define set_hyphen_char(a,b) hyphen_char(a) = b
272
#define skew_char(a) font_tables[a]->_skew_char
273
#define set_skew_char(a,b) skew_char(a) = b
275
#define font_natural_dir(a) font_tables[a]->_font_natural_dir
276
#define set_font_natural_dir(a,b) font_natural_dir(a) = b
278
#define pdf_font_size(a) font_tables[a]->_pdf_font_size
279
#define set_pdf_font_size(a,b) pdf_font_size(a) = b
281
#define pdf_font_num(a) font_tables[a]->_pdf_font_num
282
#define set_pdf_font_num(a,b) pdf_font_num(a) = b
284
#define pdf_font_blink(a) font_tables[a]->_pdf_font_blink
285
#define set_pdf_font_blink(a,b) pdf_font_blink(a) = b
287
#define pdf_font_elink(a) font_tables[a]->_pdf_font_elink
288
#define set_pdf_font_elink(a,b) pdf_font_elink(a) = b
290
#define pdf_font_expand_ratio(a) font_tables[a]->_pdf_font_expand_ratio
291
#define set_pdf_font_expand_ratio(a,b) pdf_font_expand_ratio(a) = b
293
#define pdf_font_shrink(a) font_tables[a]->_pdf_font_shrink
294
#define set_pdf_font_shrink(a,b) pdf_font_shrink(a) = b
296
#define pdf_font_stretch(a) font_tables[a]->_pdf_font_stretch
297
#define set_pdf_font_stretch(a,b) pdf_font_stretch(a) = b
299
#define pdf_font_step(a) font_tables[a]->_pdf_font_step
300
#define set_pdf_font_step(a,b) pdf_font_step(a) = b
302
#define pdf_font_auto_expand(a) font_tables[a]->_pdf_font_auto_expand
303
#define set_pdf_font_auto_expand(a,b) pdf_font_auto_expand(a) = b
305
#define pdf_font_attr(a) font_tables[a]->_pdf_font_attr
306
#define set_pdf_font_attr(a,b) pdf_font_attr(a) = b
309
#define left_boundarychar -1
310
#define right_boundarychar -2
311
#define non_boundarychar -3
313
#define left_boundary(a) font_tables[a]->_left_boundary
314
#define has_left_boundary(a) (left_boundary(a)!=NULL)
315
#define set_left_boundary(a,b) font_reassign(left_boundary(a),b)
317
#define right_boundary(a) font_tables[a]->_right_boundary
318
#define has_right_boundary(a) (right_boundary(a)!=NULL)
319
#define set_right_boundary(a,b) font_reassign(right_boundary(a),b)
321
#define font_bchar(a) (right_boundary(a)!=NULL ? right_boundarychar : non_boundarychar)
232
# define font_format(a) font_tables[a]->_font_format
233
# define font_format_name(a) font_format_strings[font_tables[a]->_font_format]
234
# define set_font_format(a,b) font_format(a) = b
236
# define font_embedding(a) font_tables[a]->_font_embedding
237
# define set_font_embedding(a,b) font_embedding(a) = b
239
# define font_cidversion(a) font_tables[a]->_font_cidversion
240
# define set_font_cidversion(a,b) font_cidversion(a) = b
242
# define font_cidsupplement(a) font_tables[a]->_font_cidsupplement
243
# define set_font_cidsupplement(a,b) font_cidsupplement(a) = b
245
# define font_cidordering(a) font_tables[a]->_font_cidordering
246
# define set_font_cidordering(f,b) font_reassign(font_cidordering(f),b)
248
# define font_cidregistry(a) font_tables[a]->_font_cidregistry
249
# define set_font_cidregistry(f,b) font_reassign(font_cidregistry(f),b)
251
# define font_map(a) font_tables[a]->_font_map
252
# define set_font_map(a,b) font_map(a) = b
254
# define font_cache_id(a) font_tables[a]->_font_cache_id
255
# define set_font_cache_id(a,b) font_cache_id(a) = b
257
# define font_encodingbytes(a) font_tables[a]->_font_encodingbytes
258
# define set_font_encodingbytes(a,b) font_encodingbytes(a) = b
260
# define font_slant(a) font_tables[a]->_font_slant
261
# define set_font_slant(a,b) font_slant(a) = b
263
# define font_extend(a) font_tables[a]->_font_extend
264
# define set_font_extend(a,b) font_extend(a) = b
266
# define font_tounicode(a) font_tables[a]->_font_tounicode
267
# define set_font_tounicode(a,b) font_tounicode(a) = b
269
# define hyphen_char(a) font_tables[a]->_hyphen_char
270
# define set_hyphen_char(a,b) hyphen_char(a) = b
272
# define skew_char(a) font_tables[a]->_skew_char
273
# define set_skew_char(a,b) skew_char(a) = b
275
# define font_natural_dir(a) font_tables[a]->_font_natural_dir
276
# define set_font_natural_dir(a,b) font_natural_dir(a) = b
278
# define pdf_font_size(a) font_tables[a]->_pdf_font_size
279
# define set_pdf_font_size(a,b) pdf_font_size(a) = b
281
# define pdf_font_num(a) font_tables[a]->_pdf_font_num
282
# define set_pdf_font_num(a,b) pdf_font_num(a) = b
284
# define pdf_font_blink(a) font_tables[a]->_pdf_font_blink
285
# define set_pdf_font_blink(a,b) pdf_font_blink(a) = b
287
# define pdf_font_elink(a) font_tables[a]->_pdf_font_elink
288
# define set_pdf_font_elink(a,b) pdf_font_elink(a) = b
290
# define pdf_font_expand_ratio(a) font_tables[a]->_pdf_font_expand_ratio
291
# define set_pdf_font_expand_ratio(a,b) pdf_font_expand_ratio(a) = b
293
# define pdf_font_shrink(a) font_tables[a]->_pdf_font_shrink
294
# define set_pdf_font_shrink(a,b) pdf_font_shrink(a) = b
296
# define pdf_font_stretch(a) font_tables[a]->_pdf_font_stretch
297
# define set_pdf_font_stretch(a,b) pdf_font_stretch(a) = b
299
# define pdf_font_step(a) font_tables[a]->_pdf_font_step
300
# define set_pdf_font_step(a,b) pdf_font_step(a) = b
302
# define pdf_font_auto_expand(a) font_tables[a]->_pdf_font_auto_expand
303
# define set_pdf_font_auto_expand(a,b) pdf_font_auto_expand(a) = b
305
# define pdf_font_attr(a) font_tables[a]->_pdf_font_attr
306
# define set_pdf_font_attr(a,b) pdf_font_attr(a) = b
309
# define left_boundarychar -1
310
# define right_boundarychar -2
311
# define non_boundarychar -3
313
# define left_boundary(a) font_tables[a]->_left_boundary
314
# define has_left_boundary(a) (left_boundary(a)!=NULL)
315
# define set_left_boundary(a,b) font_reassign(left_boundary(a),b)
317
# define right_boundary(a) font_tables[a]->_right_boundary
318
# define has_right_boundary(a) (right_boundary(a)!=NULL)
319
# define set_right_boundary(a,b) font_reassign(right_boundary(a),b)
321
# define font_bchar(a) (right_boundary(a)!=NULL ? right_boundarychar : non_boundarychar)
323
323
/* font parameters */
325
#define font_params(a) font_tables[a]->_font_params
326
#define param_base(a) font_tables[a]->_param_base
327
#define font_param(a,b) font_tables[a]->_param_base[b]
325
# define font_params(a) font_tables[a]->_font_params
326
# define param_base(a) font_tables[a]->_param_base
327
# define font_param(a,b) font_tables[a]->_param_base[b]
329
329
extern void set_font_params(internal_font_number f, int b);
331
#define set_font_param(f,n,b) \
331
# define set_font_param(f,n,b) \
332
332
{ if (font_params(f)<n) set_font_params(f,n); \
333
333
font_param(f,n) = b; }
335
335
/* Font parameters are sometimes referred to as |slant(f)|, |space(f)|, etc.*/
340
space_stretch_code = 3,
341
space_shrink_code = 4,
344
extra_space_code = 7 } font_parameter_codes ;
340
space_stretch_code = 3,
341
space_shrink_code = 4,
345
} font_parameter_codes;
346
#define slant(f) font_param(f,slant_code)
347
#define space(f) font_param(f,space_code)
348
#define space_stretch(f) font_param(f,space_stretch_code)
349
#define space_shrink(f) font_param(f,space_shrink_code)
350
#define x_height(f) font_param(f,x_height_code)
351
#define quad(f) font_param(f,quad_code)
352
#define extra_space(f) font_param(f,extra_space_code)
347
# define slant(f) font_param(f,slant_code)
348
# define space(f) font_param(f,space_code)
349
# define space_stretch(f) font_param(f,space_stretch_code)
350
# define space_shrink(f) font_param(f,space_shrink_code)
351
# define x_height(f) font_param(f,x_height_code)
352
# define quad(f) font_param(f,quad_code)
353
# define extra_space(f) font_param(f,extra_space_code)
354
355
/* now for characters */
356
extern charinfo *get_charinfo (internal_font_number f, integer c) ;
357
extern integer char_exists (internal_font_number f, integer c);
358
extern charinfo *char_info (internal_font_number f, integer c);
361
extern void set_charinfo_width (charinfo *ci, scaled val);
362
extern void set_charinfo_height (charinfo *ci, scaled val);
363
extern void set_charinfo_depth (charinfo *ci, scaled val);
364
extern void set_charinfo_italic (charinfo *ci, scaled val);
365
extern void set_charinfo_tag (charinfo *ci, scaled val);
366
extern void set_charinfo_remainder (charinfo *ci, scaled val);
367
extern void set_charinfo_used (charinfo *ci, scaled val);
368
extern void set_charinfo_index (charinfo *ci, scaled val);
369
extern void set_charinfo_name (charinfo *ci, char *val) ;
370
extern void set_charinfo_tounicode (charinfo *ci, char *val) ;
371
extern void set_charinfo_ligatures (charinfo *ci, liginfo *val);
372
extern void set_charinfo_kerns (charinfo *ci, kerninfo *val);
373
extern void set_charinfo_packets (charinfo *ci, real_eight_bits *val);
374
extern void set_charinfo_extensible (charinfo *ci, int a, int b, int c, int d);
376
#define set_char_used(f,a,b) set_charinfo_used(get_charinfo(f,a),b)
378
extern scaled get_charinfo_width (charinfo *ci);
379
extern scaled get_charinfo_height (charinfo *ci);
380
extern scaled get_charinfo_depth (charinfo *ci);
381
extern scaled get_charinfo_italic (charinfo *ci);
382
extern char get_charinfo_tag (charinfo *ci);
383
extern integer get_charinfo_remainder (charinfo *ci);
384
extern char get_charinfo_used (charinfo *ci);
385
extern integer get_charinfo_index (charinfo *ci);
386
extern char * get_charinfo_name (charinfo *ci) ;
387
extern char * get_charinfo_tounicode (charinfo *ci) ;
388
extern liginfo * get_charinfo_ligatures (charinfo *ci);
389
extern kerninfo *get_charinfo_kerns (charinfo *ci);
390
extern real_eight_bits *get_charinfo_packets (charinfo *ci);
391
extern integer get_charinfo_extensible (charinfo *ci, int which);
393
extern integer ext_top (internal_font_number f, integer c);
394
extern integer ext_bot (internal_font_number f, integer c);
395
extern integer ext_rep (internal_font_number f, integer c);
396
extern integer ext_mid (internal_font_number f, integer c);
398
#define set_ligature_item(f,b,c,d) { f.type = b; f.adj = c; f.lig = d; }
400
#define set_kern_item(f,b,c) { f.adj = b; f.sc = c; }
357
extern charinfo *get_charinfo(internal_font_number f, integer c);
358
extern integer char_exists(internal_font_number f, integer c);
359
extern charinfo *char_info(internal_font_number f, integer c);
362
extern void set_charinfo_width(charinfo * ci, scaled val);
363
extern void set_charinfo_height(charinfo * ci, scaled val);
364
extern void set_charinfo_depth(charinfo * ci, scaled val);
365
extern void set_charinfo_italic(charinfo * ci, scaled val);
366
extern void set_charinfo_tag(charinfo * ci, scaled val);
367
extern void set_charinfo_remainder(charinfo * ci, scaled val);
368
extern void set_charinfo_used(charinfo * ci, scaled val);
369
extern void set_charinfo_index(charinfo * ci, scaled val);
370
extern void set_charinfo_name(charinfo * ci, char *val);
371
extern void set_charinfo_tounicode(charinfo * ci, char *val);
372
extern void set_charinfo_ligatures(charinfo * ci, liginfo * val);
373
extern void set_charinfo_kerns(charinfo * ci, kerninfo * val);
374
extern void set_charinfo_packets(charinfo * ci, real_eight_bits * val);
375
extern void set_charinfo_extensible(charinfo * ci, int a, int b, int c, int d);
376
extern void set_charinfo_ef(charinfo * ci, scaled val);
377
extern void set_charinfo_lp(charinfo * ci, scaled val);
378
extern void set_charinfo_rp(charinfo * ci, scaled val);
380
# define set_char_used(f,a,b) set_charinfo_used(get_charinfo(f,a),b)
382
extern scaled get_charinfo_width(charinfo * ci);
383
extern scaled get_charinfo_height(charinfo * ci);
384
extern scaled get_charinfo_depth(charinfo * ci);
385
extern scaled get_charinfo_italic(charinfo * ci);
386
extern char get_charinfo_tag(charinfo * ci);
387
extern integer get_charinfo_remainder(charinfo * ci);
388
extern char get_charinfo_used(charinfo * ci);
389
extern integer get_charinfo_index(charinfo * ci);
390
extern char *get_charinfo_name(charinfo * ci);
391
extern char *get_charinfo_tounicode(charinfo * ci);
392
extern liginfo *get_charinfo_ligatures(charinfo * ci);
393
extern kerninfo *get_charinfo_kerns(charinfo * ci);
394
extern real_eight_bits *get_charinfo_packets(charinfo * ci);
395
extern integer get_charinfo_ef(charinfo * ci);
396
extern integer get_charinfo_rp(charinfo * ci);
397
extern integer get_charinfo_lp(charinfo * ci);
398
extern integer get_charinfo_extensible(charinfo * ci, int which);
400
extern integer ext_top(internal_font_number f, integer c);
401
extern integer ext_bot(internal_font_number f, integer c);
402
extern integer ext_rep(internal_font_number f, integer c);
403
extern integer ext_mid(internal_font_number f, integer c);
405
# define set_ligature_item(f,b,c,d) { f.type = b; f.adj = c; f.lig = d; }
407
# define set_kern_item(f,b,c) { f.adj = b; f.sc = c; }
403
410
/* character information */
405
#define non_char 65536 /* a code that can't match a real character */
406
#define non_address 0 /* a spurious |bchar_label| */
412
# define non_char 65536 /* a code that can't match a real character */
413
# define non_address 0 /* a spurious |bchar_label| */
409
416
/* character kerns and ligatures */
411
#define end_kern 0x7FFFFF /* otherchar value meaning "stop" */
412
#define ignored_kern 0x800000 /* otherchar value meaning "disabled" */
414
#define charinfo_kern(b,c) b->kerns[c]
416
#define kern_char(b) (b).adj
417
#define kern_kern(b) (b).sc
418
#define kern_end(b) ((b).adj == end_kern)
419
#define kern_disabled(b) ((b).adj > end_kern)
418
# define end_kern 0x7FFFFF
419
/* otherchar value meaning "stop" */
420
# define ignored_kern 0x800000
421
/* otherchar value meaning "disabled" */
423
# define charinfo_kern(b,c) b->kerns[c]
425
# define kern_char(b) (b).adj
426
# define kern_kern(b) (b).sc
427
# define kern_end(b) ((b).adj == end_kern)
428
# define kern_disabled(b) ((b).adj > end_kern)
421
430
/* character ligatures */
423
#define end_ligature 0x7FFFFF /* otherchar value meaning "stop" */
424
#define ignored_ligature 0x800000 /* otherchar value meaning "disabled" */
426
#define charinfo_ligature(b,c) b->ligatures[c]
428
#define is_valid_ligature(a) ((a).type!=0)
429
#define lig_type(a) ((a).type>>1)
430
#define lig_char(a) (a).adj
431
#define lig_replacement(a) (a).lig
432
#define lig_end(a) (lig_char(a) == end_ligature)
433
#define lig_disabled(a) (lig_char(a) > end_ligature)
435
#define no_tag 0 /* vanilla character */
436
#define lig_tag 1 /* character has a ligature/kerning program */
437
#define list_tag 2 /* character has a successor in a charlist */
438
#define ext_tag 3 /* character is extensible */
440
extern scaled char_height (internal_font_number f, integer c);
441
extern scaled char_width (internal_font_number f, integer c);
442
extern scaled char_depth (internal_font_number f, integer c);
443
extern scaled char_italic (internal_font_number f, integer c);
445
extern liginfo * char_ligatures (internal_font_number f, integer c);
446
extern kerninfo * char_kerns (internal_font_number f, integer c);
447
extern real_eight_bits * char_packets (internal_font_number f, integer c);
449
#define has_lig(f,b) (char_exists(f,b) &&( char_ligatures(f,b) != NULL))
450
#define has_kern(f,b) (char_exists(f,b) && (char_kerns(f,b) != NULL))
451
#define has_packet(f,b) (char_exists(f,b) && (char_packets(f,b) != NULL))
453
extern integer char_remainder (internal_font_number f, integer c);
454
extern char char_tag (internal_font_number f, integer c);
455
extern char char_used (internal_font_number f, integer c);
456
extern char * char_name (internal_font_number f, integer c);
457
extern integer char_index (internal_font_number f, integer c);
432
# define end_ligature 0x7FFFFF/* otherchar value meaning "stop" */
433
# define ignored_ligature 0x800000/* otherchar value meaning "disabled" */
435
# define charinfo_ligature(b,c) b->ligatures[c]
437
# define is_valid_ligature(a) ((a).type!=0)
438
# define lig_type(a) ((a).type>>1)
439
# define lig_char(a) (a).adj
440
# define lig_replacement(a) (a).lig
441
# define lig_end(a) (lig_char(a) == end_ligature)
442
# define lig_disabled(a) (lig_char(a) > end_ligature)
444
# define no_tag 0 /* vanilla character */
445
# define lig_tag 1 /* character has a ligature/kerning program */
446
# define list_tag 2 /* character has a successor in a charlist */
447
# define ext_tag 3 /* character is extensible */
449
extern scaled char_height(internal_font_number f, integer c);
450
extern scaled char_width(internal_font_number f, integer c);
451
extern scaled char_depth(internal_font_number f, integer c);
452
extern scaled char_italic(internal_font_number f, integer c);
454
extern liginfo *char_ligatures(internal_font_number f, integer c);
455
extern kerninfo *char_kerns(internal_font_number f, integer c);
456
extern real_eight_bits *char_packets(internal_font_number f, integer c);
458
# define has_lig(f,b) (char_exists(f,b) &&( char_ligatures(f,b) != NULL))
459
# define has_kern(f,b) (char_exists(f,b) && (char_kerns(f,b) != NULL))
460
# define has_packet(f,b) (char_exists(f,b) && (char_packets(f,b) != NULL))
462
extern integer char_remainder(internal_font_number f, integer c);
463
extern char char_tag(internal_font_number f, integer c);
464
extern char char_used(internal_font_number f, integer c);
465
extern char *char_name(internal_font_number f, integer c);
466
extern integer char_index(internal_font_number f, integer c);
459
468
scaled get_kern(internalfontnumber f, integer lc, integer rc);
460
469
liginfo get_ligature(internalfontnumber f, integer lc, integer rc);
467
476
extern texfont **font_tables;
469
integer new_font (void) ;
470
integer copy_font (integer id) ;
471
integer scale_font (integer id, integer atsize) ;
472
integer max_font_id (void);
473
void set_max_font_id (integer id);
474
integer new_font_id (void);
475
void create_null_font (void);
478
integer new_font(void);
479
integer copy_font(integer id);
480
integer scale_font(integer id, integer atsize);
481
integer max_font_id(void);
482
void set_max_font_id(integer id);
483
integer new_font_id(void);
484
void create_null_font(void);
476
485
void delete_font(integer id);
477
boolean is_valid_font (integer id);
479
void dump_font (int font_number);
480
void undump_font (int font_number);
482
integer test_no_ligatures (internal_font_number f) ;
483
void set_no_ligatures (internal_font_number f) ;
485
extern integer get_tag_code (internal_font_number f, integer c);
486
extern integer get_lp_code (internal_font_number f, integer c);
487
extern integer get_rp_code (internal_font_number f, integer c);
488
extern integer get_ef_code (internal_font_number f, integer c);
490
extern void set_tag_code (internal_font_number f, integer c, integer i) ;
491
extern void set_lp_code(internal_font_number f, integer c, integer i) ;
492
extern void set_rp_code(internal_font_number f, integer c, integer i) ;
493
extern void set_ef_code(internal_font_number f, integer c, integer i) ;
486
boolean is_valid_font(integer id);
488
void dump_font(int font_number);
489
void undump_font(int font_number);
491
integer test_no_ligatures(internal_font_number f);
492
void set_no_ligatures(internal_font_number f);
494
extern integer get_tag_code(internal_font_number f, integer c);
495
extern integer get_lp_code(internal_font_number f, integer c);
496
extern integer get_rp_code(internal_font_number f, integer c);
497
extern integer get_ef_code(internal_font_number f, integer c);
499
extern void set_tag_code(internal_font_number f, integer c, integer i);
500
extern void set_lp_code(internal_font_number f, integer c, integer i);
501
extern void set_rp_code(internal_font_number f, integer c, integer i);
502
extern void set_ef_code(internal_font_number f, integer c, integer i);
495
504
int read_tfm_info(internal_font_number f, char *nom, char *aire, scaled s);
498
507
/* from dofont.c */
500
extern int read_font_info (pointer u, strnumber nom, strnumber aire, scaled s, integer ndir);
501
extern int find_font_id (char *nom, char *aire, scaled s);
509
extern int read_font_info(pointer u, strnumber nom, strnumber aire, scaled s,
511
extern int find_font_id(char *nom, char *aire, scaled s);
503
513
/* for and from vfpacket.c */
505
#define scan_special 3 /* look into special text */ /* this is a hack */
507
typedef enum { packet_char_code,
517
packet_end_code } packet_command_codes;
519
extern scaled sqxfw (scaled sq, integer fw);
521
extern void do_vf_packet (internal_font_number vf_f, integer c);
522
extern int vf_packet_bytes (charinfo *co);
515
# define scan_special 3 /* look into special text */ /* this is a hack */
517
typedef enum { packet_char_code,
529
} packet_command_codes;
531
extern scaled sqxfw(scaled sq, integer fw);
533
extern void do_vf_packet(internal_font_number vf_f, integer c);
534
extern int vf_packet_bytes(charinfo * co);