1
4
5# ifndef LMT_TEXFONT_H
6# define LMT_TEXFONT_H
7
8# include "tex/textypes.h"
9
10
27
28typedef struct ligatureinfo {
29 int type;
30 int ligature;
31 int adjacent;
32
33 int padding;
34} ligatureinfo;
35
36typedef struct kerninfo {
37 int kern;
38 int adjacent;
39} kerninfo;
40
41
63
64typedef struct extinfo {
65 struct extinfo *next;
66 int glyph;
67 int start_overlap;
68 int end_overlap;
69 int advance;
70 int extender;
71
72 int padding;
73} extinfo;
74
75
87
88typedef struct mathinfo {
89
92 halfword smaller;
93 halfword mirror;
94 halfword flat_accent;
95 halfword next;
96
100 scaled top_anchor;
101 scaled bottom_anchor;
102
109 int top_left_math_kerns;
110 int top_right_math_kerns;
111 int bottom_right_math_kerns;
112 int bottom_left_math_kerns;
113 scaled *top_left_math_kern_array;
114 scaled *top_right_math_kern_array;
115 scaled *bottom_right_math_kern_array;
116 scaled *bottom_left_math_kern_array;
117
122 extinfo *extensible_recipe;
123 scaled extensible_italic;
124
125
126
127 scaled top_left_kern;
128 scaled bottom_left_kern;
129 scaled top_right_kern;
130 scaled bottom_right_kern;
131
132 scaled left_margin;
133 scaled right_margin;
134 scaled top_margin;
135 scaled bottom_margin;
136
137 scaled top_overshoot;
138 scaled bottom_overshoot;
139
140 scaled inner_x_offset;
141 scaled inner_y_offset;
142} mathinfo;
143
144typedef struct charinfo {
145
150 scaled width;
151 scaled height;
152 scaled depth;
153 scaled italic;
154
163 scaled expansion;
164 scaled compression;
165 scaled leftprotrusion;
166 scaled rightprotrusion;
167
176 halfword tag;
177
185 kerninfo *kerns;
186 mathinfo *math;
187 ligatureinfo *ligatures;
188} charinfo;
189
190
202
203
206
207
208
209
210
211
228
229typedef struct texfont {
230
231 int first_character;
232 int last_character;
233
234 sa_tree characters;
235 charinfo *chardata;
236 int chardata_count;
237 int chardata_size;
238
239 int size;
240 int design_size;
241 char *name;
242 char *original;
243
244 int mathcontrol;
245 int textcontrol;
246
247 int compactmath;
248
249 double weight;
250
251 int parameter_count;
252 scaled *parameter_base;
253
254 charinfo *left_boundary;
255 charinfo *right_boundary;
256
257 scaled *math_parameter_base;
258 int math_parameter_count;
259
260 int mathscales[3];
261 int mathxscales[3];
262 int mathyscales[3];
263 int mathweights[3];
264
265 int hyphen_char;
266 int skew_char;
267} texfont;
268
269
275
276typedef struct font_state_info {
277 texfont **fonts;
278 halfword adjust_stretch;
279 halfword adjust_shrink;
280 halfword adjust_step;
281 int padding;
282 memory_data font_data;
283} font_state_info ;
284
285extern font_state_info lmt_font_state;
286
287# define font_size(a) lmt_font_state.fonts[a]->size
288# define font_name(a) lmt_font_state.fonts[a]->name
289# define font_original(a) lmt_font_state.fonts[a]->original
290# define font_design_size(a) lmt_font_state.fonts[a]->design_size
291# define font_first_character(a) lmt_font_state.fonts[a]->first_character
292# define font_last_character(a) lmt_font_state.fonts[a]->last_character
293# define font_compactmath(a) lmt_font_state.fonts[a]->compactmath
294# define font_mathcontrol(a) lmt_font_state.fonts[a]->mathcontrol
295# define font_textcontrol(a) lmt_font_state.fonts[a]->textcontrol
296# define font_hyphen_char(a) lmt_font_state.fonts[a]->hyphen_char
297# define font_skew_char(a) lmt_font_state.fonts[a]->skew_char
298# define font_mathscale(a,b) lmt_font_state.fonts[a]->mathscales[b]
299# define font_mathxscale(a,b) lmt_font_state.fonts[a]->mathxscales[b]
300# define font_mathyscale(a,b) lmt_font_state.fonts[a]->mathyscales[b]
301
302# define set_font_size(a,b) lmt_font_state.fonts[a]->size = b
303# define set_font_name(a,b) lmt_font_state.fonts[a]->name = b
304# define set_font_original(a,b) lmt_font_state.fonts[a]->original = b
305# define set_font_design_size(a,b) lmt_font_state.fonts[a]->design_size = b
306# define set_font_first_character(a,b) lmt_font_state.fonts[a]->first_character = b
307# define set_font_last_character(a,b) lmt_font_state.fonts[a]->last_character = b
308# define set_font_compactmath(a,b) lmt_font_state.fonts[a]->compactmath = b
309# define set_font_mathcontrol(a,b) lmt_font_state.fonts[a]->mathcontrol = b
310# define set_font_textcontrol(a,b) lmt_font_state.fonts[a]->textcontrol = b
311# define set_font_hyphen_char(a,b) lmt_font_state.fonts[a]->hyphen_char = b
312# define set_font_skew_char(a,b) lmt_font_state.fonts[a]->skew_char = b
313# define set_font_max_shrink(a,b) lmt_font_state.fonts[a]->max_shrink = b
314# define set_font_max_stretch(a,b) lmt_font_state.fonts[a]->max_stretch = b
315# define set_font_step(a,b) lmt_font_state.fonts[a]->step = b
316
317# define set_font_textsize(a,b) lmt_font_state.fonts[a]->mathscales[0] = b
318# define set_font_scriptsize(a,b) lmt_font_state.fonts[a]->mathscales[1] = b
319# define set_font_scriptscriptsize(a,b) lmt_font_state.fonts[a]->mathscales[2] = b
320
321# define set_font_x_textsize(a,b) lmt_font_state.fonts[a]->mathxscales[0] = b
322# define set_font_x_scriptsize(a,b) lmt_font_state.fonts[a]->mathxscales[1] = b
323# define set_font_x_scriptscriptsize(a,b) lmt_font_state.fonts[a]->mathxscales[2] = b
324
325# define set_font_y_textsize(a,b) lmt_font_state.fonts[a]->mathyscales[0] = b
326# define set_font_y_scriptsize(a,b) lmt_font_state.fonts[a]->mathyscales[1] = b
327# define set_font_y_scriptscriptsize(a,b) lmt_font_state.fonts[a]->mathyscales[2] = b
328
329# define set_font_textweight(a,b) lmt_font_state.fonts[a]->mathweights[0] = b
330# define set_font_scriptweight(a,b) lmt_font_state.fonts[a]->mathweights[1] = b
331# define set_font_scriptscriptweight(a,b) lmt_font_state.fonts[a]->mathweights[2] = b
332
333
341
342typedef enum text_control_codes {
343 text_control_collapse_hyphens = 0x0001,
344 text_control_base_ligaturing = 0x0002,
345 text_control_base_kerning = 0x0004,
346 text_control_none_protected = 0x0008,
347 text_control_has_italics = 0x0010,
348 text_control_auto_italics = 0x0020,
349 text_control_replace_apostrophe = 0x0040,
350
351 text_control_quality_set = 0x0100,
352 text_control_expansion = 0x0200,
353 text_control_left_protrusion = 0x0400,
354 text_control_right_protrusion = 0x0800,
355} text_control_codes;
356
357# define has_font_text_control(f,c) ((font_textcontrol(f) & c) == c)
358# define set_font_text_control(f,c) font_textcontrol(f) |= (c)
359
360
364
365typedef enum boundarychar_codes {
366 left_boundary_char = -1,
367 right_boundary_char = -2,
368 non_boundary_char = -3,
369} boundarychar_codes;
370
371# define font_left_boundary(a) lmt_font_state.fonts[a]->left_boundary
372# define font_right_boundary(a) lmt_font_state.fonts[a]->right_boundary
373
374# define font_has_left_boundary(a) (font_left_boundary(a))
375# define font_has_right_boundary(a) (font_right_boundary(a))
376
377# define set_font_left_boundary(a,b) { if (font_left_boundary(a)) { lmt_memory_free(font_left_boundary(a)); } font_left_boundary(a) = b; }
378# define set_font_right_boundary(a,b) { if (font_right_boundary(a)) { lmt_memory_free(font_right_boundary(a)); } font_right_boundary(a) = b; }
379
380
385
386
392
393# define font_parameter_count(a) lmt_font_state.fonts[a]->parameter_count
394# define font_parameter_base(a) lmt_font_state.fonts[a]->parameter_base
395# define font_parameter(a,b) lmt_font_state.fonts[a]->parameter_base[b]
396
397# define font_math_parameter_count(a) lmt_font_state.fonts[a]->math_parameter_count
398# define font_math_parameter_base(a) lmt_font_state.fonts[a]->math_parameter_base
399# define font_math_parameter(a,b) lmt_font_state.fonts[a]->math_parameter_base[b]
400
401# define set_font_parameter_base(a,b) lmt_font_state.fonts[a]->parameter_base = b;
402# define set_font_math_parameter_base(a,b) lmt_font_state.fonts[a]->math_parameter_base = b;
403
404
408
409
410
411
412extern void tex_set_font_parameters (halfword f, int b);
413extern void tex_set_font_math_parameters (halfword f, int b);
414extern int tex_get_font_max_id (void);
415extern int tex_get_font_max_id (void);
416
417extern halfword tex_checked_font_adjust (
418 halfword adjust_spacing,
419 halfword adjust_spacing_step,
420 halfword adjust_spacing_shrink,
421 halfword adjust_spacing_stretch
422);
423
424
428
429typedef enum font_parameter_codes {
430 slant_code = 1,
431 space_code,
432 space_stretch_code,
433 space_shrink_code,
434 ex_height_code,
435 em_width_code,
436 extra_space_code,
437} font_parameter_codes;
438
439extern scaled tex_get_font_slant (halfword f);
440extern scaled tex_get_font_space (halfword f);
441extern scaled tex_get_font_space_stretch (halfword f);
442extern scaled tex_get_font_space_shrink (halfword f);
443extern scaled tex_get_font_ex_height (halfword f);
444extern scaled tex_get_font_em_width (halfword f);
445extern scaled tex_get_font_extra_space (halfword f);
446extern scaled tex_get_font_parameter (halfword f, halfword code);
447extern void tex_set_font_parameter (halfword f, halfword code, scaled v);
448
449extern scaled tex_get_scaled_slant (halfword f);
450extern scaled tex_get_scaled_space (halfword f);
451extern scaled tex_get_scaled_space_stretch (halfword f);
452extern scaled tex_get_scaled_space_shrink (halfword f);
453extern scaled tex_get_scaled_ex_height (halfword f);
454extern scaled tex_get_scaled_em_width (halfword f);
455extern scaled tex_get_scaled_extra_space (halfword f);
456extern scaled tex_get_scaled_parameter (halfword f, halfword code);
457extern void tex_set_scaled_parameter (halfword f, halfword code, scaled v);
458
459extern halfword tex_get_scaled_glue (halfword f);
460extern halfword tex_get_scaled_parameter_glue (quarterword p, quarterword s);
461extern halfword tex_get_parameter_glue (quarterword p, quarterword s);
462
463extern halfword tex_get_font_identifier (halfword fs);
464
465
468
469typedef enum font_math_kern_codes {
470 top_right_kern = 1,
471 bottom_right_kern,
472 bottom_left_kern,
473 top_left_kern,
474} font_math_kern_codes;
475
476extern charinfo *tex_get_charinfo (halfword f, int c);
477extern int tex_char_exists (halfword f, int c);
478extern void tex_char_process (halfword f, int c);
479extern int tex_math_char_exists (halfword f, int c, int size);
480extern int tex_get_math_char (halfword f, int c, int size, scaled *scale, scaled *xscale, scaled *ysale, scaled *weight, int direction);
481
482
501
502typedef enum char_tag_codes {
503 no_tag = 0x0000000,
504 ligatures_tag = 0x0000001,
505 kerns_tag = 0x0000002,
506 list_tag = 0x0000004,
507 callback_tag = 0x0000010,
508 extensible_tag = 0x0000020,
509 horizontal_tag = 0x0000040,
510 vertical_tag = 0x0000080,
511 inner_left_tag = 0x0000100,
512 inner_right_tag = 0x0000200,
513 inner_top_tag = 0x0000400,
514 inner_bottom_tag = 0x0000800,
515 extend_last_tag = 0x0001000,
516 italic_tag = 0x0002000,
517 n_ary_tag = 0x0004000,
518 radical_tag = 0x0008000,
519 punctuation_tag = 0x0010000,
520 keep_base_tag = 0x0020000,
521 expansion_tag = 0x0040000,
522 protrusion_tag = 0x0080000,
523 above_baseline_tag = 0x0100000,
524 below_baseline_tag = 0x0200000,
525 force_extensible_tag = 0x0400000,
526} char_tag_codes;
527
528
532
533# define set_charinfo_width(ci,val) ci->width = val;
534# define set_charinfo_height(ci,val) ci->height = val;
535# define set_charinfo_depth(ci,val) ci->depth = val;
536# define set_charinfo_italic(ci,val) ci->italic = val;
537# define set_charinfo_expansion(ci,val) ci->expansion = val;
538# define set_charinfo_compression(ci,val) ci->compression = val;
539# define set_charinfo_leftprotrusion(ci,val) ci->leftprotrusion = val;
540# define set_charinfo_rightprotrusion(ci,val) ci->rightprotrusion = val;
541
542# define set_charinfo_tag(ci,val) ci->tag |= val;
543# define set_charinfo_next(ci,val) if (ci->math) { ci->math->next = val; }
544
545# define has_charinfo_tag(ci,p) (((ci->tag) & (p)) == (p))
546# define get_charinfo_tag(ci) ci->tag
547
548# define set_charinfo_ligatures(ci,val) { lmt_memory_free(ci->ligatures); ci->ligatures = val; }
549# define set_charinfo_kerns(ci,val) { lmt_memory_free(ci->kerns); ci->kerns = val; }
550# define set_charinfo_math(ci,val) { lmt_memory_free(ci->math); ci->math = val; }
551
552# define set_charinfo_top_left_math_kern_array(ci,val) if (ci->math) { lmt_memory_free(ci->math->top_left_math_kern_array); ci->math->top_left_math_kern_array = val; }
553# define set_charinfo_top_right_math_kern_array(ci,val) if (ci->math) { lmt_memory_free(ci->math->top_right_math_kern_array); ci->math->top_left_math_kern_array = val; }
554# define set_charinfo_bottom_right_math_kern_array(ci,val) if (ci->math) { lmt_memory_free(ci->math->bottom_right_math_kern_array); ci->math->top_left_math_kern_array = val; }
555# define set_charinfo_bottom_left_math_kern_array(ci,val) if (ci->math) { lmt_memory_free(ci->math->bottom_left_math_kern_array); ci->math->top_left_math_kern_array = val; }
556
557
558
559# define set_ligature_item(f,b,c,d) { f.type = b; f.adjacent = c; f.ligature = d; }
560# define set_kern_item(f,b,c) { f.adjacent = b; f.kern = c; }
561
562# define set_charinfo_left_margin(ci,val) if (ci->math) { ci->math->left_margin = val; }
563# define set_charinfo_right_margin(ci,val) if (ci->math) { ci->math->right_margin = val; }
564# define set_charinfo_top_margin(ci,val) if (ci->math) { ci->math->top_margin = val; }
565# define set_charinfo_bottom_margin(ci,val) if (ci->math) { ci->math->bottom_margin = val; }
566
567# define set_charinfo_smaller(ci,val) if (ci->math) { ci->math->smaller = val; }
568# define set_charinfo_mirror(ci,val) if (ci->math) { ci->math->mirror = val; }
569# define set_charinfo_extensible_italic(ci,val) if (ci->math) { ci->math->extensible_italic = val; }
570# define set_charinfo_top_anchor(ci,val) if (ci->math) { ci->math->top_anchor = val; }
571# define set_charinfo_bottom_anchor(ci,val) if (ci->math) { ci->math->bottom_anchor = val; }
572# define set_charinfo_flat_accent(ci,val) if (ci->math) { ci->math->flat_accent = val; }
573
574# define set_charinfo_inner_x_offset(ci,val) if (ci->math) { ci->math->inner_x_offset = val; }
575# define set_charinfo_inner_y_offset(ci,val) if (ci->math) { ci->math->inner_y_offset = val; }
576
577# define set_charinfo_top_left_kern(ci,val) if (ci->math) { ci->math->top_left_kern = val; }
578# define set_charinfo_top_right_kern(ci,val) if (ci->math) { ci->math->top_right_kern = val; }
579# define set_charinfo_bottom_left_kern(ci,val) if (ci->math) { ci->math->bottom_left_kern = val; }
580# define set_charinfo_bottom_right_kern(ci,val) if (ci->math) { ci->math->bottom_right_kern = val; }
581
582# define set_charinfo_top_overshoot(ci,val) if (ci->math) { ci->math->top_overshoot = val; }
583# define set_charinfo_bottom_overshoot(ci,val) if (ci->math) { ci->math->bottom_overshoot = val; }
584
585# define proper_char_index(f, c) (c >= font_first_character(f) && c <= font_last_character(f))
586
587
588
589void tex_set_lpcode_in_font (halfword f, halfword c, halfword i);
590void tex_set_rpcode_in_font (halfword f, halfword c, halfword i);
591void tex_set_efcode_in_font (halfword f, halfword c, halfword i);
592void tex_set_cfcode_in_font (halfword f, halfword c, halfword i);
593
594extern void tex_add_charinfo_math_kern (charinfo *ci, int type, scaled ht, scaled krn);
595extern int tex_get_charinfo_math_kerns (charinfo *ci, int id);
596extern void tex_set_charinfo_extensible_recipe (charinfo *ci, extinfo *ext);
597extern void tex_append_charinfo_extensible_recipe (charinfo *ci, int glyph, int startconnect, int endconnect, int advance, int repeater);
598
599
600
601int tex_char_has_math (halfword f, halfword c);
602int tex_has_ligature (halfword f, halfword c);
603int tex_has_kern (halfword f, halfword c);
604
605
606
607# define MATH_KERN_NOT_FOUND 0x7FFFFFFF
608
609extern scaled tex_font_x_scaled (scaled v);
610extern scaled tex_font_y_scaled (scaled v);
611
612extern scaled tex_char_width_from_font (halfword f, halfword c);
613extern scaled tex_char_height_from_font (halfword f, halfword c);
614extern scaled tex_char_depth_from_font (halfword f, halfword c);
615extern scaled tex_char_total_from_font (halfword f, halfword c);
616extern scaledwhd tex_char_whd_from_font (halfword f, halfword c);
617extern scaled tex_char_italic_from_font (halfword f, halfword c);
618extern scaled tex_char_ef_from_font (halfword f, halfword c);
619extern scaled tex_char_cf_from_font (halfword f, halfword c);
620extern scaled tex_char_lp_from_font (halfword f, halfword c);
621extern scaled tex_char_rp_from_font (halfword f, halfword c);
622extern halfword tex_char_tag_from_font (halfword f, halfword c);
623extern halfword tex_char_next_from_font (halfword f, halfword c);
624extern halfword tex_char_has_tag_from_font (halfword f, halfword c, halfword tag);
625extern void tex_char_reset_tag_from_font (halfword f, halfword c, halfword tag);
626extern int tex_char_checked_tag (halfword tag);
627extern scaled tex_char_inner_x_offset_from_font (halfword f, halfword c);
628extern scaled tex_char_inner_y_offset_from_font (halfword f, halfword c);
629extern scaled tex_char_top_left_kern_from_font (halfword f, halfword c);
630extern scaled tex_char_top_right_kern_from_font (halfword f, halfword c);
631extern scaled tex_char_bottom_left_kern_from_font (halfword f, halfword c);
632extern scaled tex_char_bottom_right_kern_from_font (halfword f, halfword c);
633extern halfword tex_char_extensible_italic_from_font (halfword f, halfword c);
634extern halfword tex_char_flat_accent_from_font (halfword f, halfword c);
635extern halfword tex_char_top_anchor_from_font (halfword f, halfword c);
636extern halfword tex_char_bottom_anchor_from_font (halfword f, halfword c);
637extern scaled tex_char_left_margin_from_font (halfword f, halfword c);
638extern scaled tex_char_right_margin_from_font (halfword f, halfword c);
639extern scaled tex_char_top_margin_from_font (halfword f, halfword c);
640extern scaled tex_char_bottom_margin_from_font (halfword f, halfword c);
641extern scaled tex_char_top_overshoot_from_font (halfword f, halfword c);
642extern scaled tex_char_bottom_overshoot_from_font (halfword f, halfword c);
643extern extinfo *tex_char_extensible_recipe_from_font (halfword f, halfword c);
644extern extinfo *tex_char_extensible_recipe_front_last (halfword f, halfword c);
645
646extern halfword tex_char_unchecked_top_anchor_from_font (halfword f, halfword c);
647extern halfword tex_char_unchecked_bottom_anchor_from_font (halfword f, halfword c);
648
649extern scaled tex_char_width_from_glyph (halfword g);
650extern scaled tex_char_height_from_glyph (halfword g);
651extern scaled tex_char_depth_from_glyph (halfword g);
652extern scaled tex_char_total_from_glyph (halfword g);
653extern scaled tex_char_italic_from_glyph (halfword g);
654extern scaled tex_char_width_italic_from_glyph (halfword g);
655extern scaledwhd tex_char_whd_from_glyph (halfword g);
656extern scaled tex_char_left_protrusion_from_glyph (halfword g);
657extern scaled tex_char_right_protrusion_from_glyph (halfword g);
658extern scaledkrn tex_char_corner_kerns_from_glyph (halfword g);
659
660extern int tex_valid_kern (halfword left, halfword right);
661extern int tex_valid_ligature (halfword left, halfword right, int *slot);
662
663extern scaled tex_calculated_char_width (halfword f, halfword c, halfword ex);
664extern scaled tex_calculated_glyph_width (halfword g, halfword ex);
665
666
670
671# define end_kern 0x7FFFFF
672
673# define charinfo_kern(b,c) b->kerns[c]
674
675# define kern_char(b) (b).adjacent
676# define kern_kern(b) (b).kern
677# define kern_end(b) ((b).adjacent == end_kern)
678# define kern_disabled(b) ((b).adjacent > end_kern)
679
680
684
685# define end_of_ligature_code 0x7FFFFF
686
687# define charinfo_ligature(b,c) b->ligatures[c]
688
689# define ligature_is_valid(a) ((a).type != 0)
690# define ligature_type(a) ((a).type >> 1)
691# define ligature_char(a) (a).adjacent
692# define ligature_replacement(a) (a).ligature
693# define ligature_end(a) ((a).adjacent == end_of_ligature_code)
694# define ligature_disabled(a) ((a).adjacent > end_of_ligature_code)
695
696
697
698typedef enum math_extension_modes {
699 math_extension_normal,
700 math_extension_repeat,
701} math_extension_modes;
702
703
704
705typedef enum adjust_spacing_modes {
706 adjust_spacing_off,
707 adjust_spacing_unused,
708 adjust_spacing_full,
709 adjust_spacing_font,
710} adjust_spacing_modes;
711
712typedef enum protrude_chars_modes {
713 protrude_chars_off,
714 protrude_chars_unused,
715 protrude_chars_normal,
716 protrude_chars_advanced,
717} protrude_chars_modes;
718
719
727
728typedef enum missing_character_locations {
729 missing_character_text_glyph = 0x01,
730 missing_character_math_glyph = 0x02,
731 missing_character_math_kernel = 0x03,
732} missing_character_locations;
733
734extern halfword tex_checked_font (halfword f);
735extern int tex_is_valid_font (halfword f);
736extern int tex_raw_get_kern (halfword f, int lc, int rc);
737extern int tex_get_kern (halfword f, int lc, int rc);
738extern ligatureinfo tex_get_ligature (halfword f, int lc, int rc);
739extern int tex_new_font (void);
740extern int tex_new_font_id (void);
741extern void tex_font_malloc_charinfo (halfword f, int num);
742extern void tex_char_malloc_mathinfo (charinfo *ci);
743extern void tex_dump_font_data (dumpstream f);
744extern void tex_undump_font_data (dumpstream f);
745extern void tex_create_null_font (void);
746extern void tex_delete_font (int id);
747extern int tex_read_font_info (char *cnom, scaled s);
748
749extern halfword tex_handle_glyphrun (halfword head, halfword group, halfword direction);
750extern halfword tex_handle_ligaturing (halfword head, halfword tail);
751extern halfword tex_handle_kerning (halfword head, halfword tail);
752
753extern void tex_set_cur_font (halfword g, halfword f);
754extern int tex_tex_def_font (int a);
755
756extern void tex_missing_character (halfword n, halfword f, halfword c, halfword where);
757
758extern void tex_initialize_fonts (void);
759
760extern void tex_set_font_name (halfword f, const char *s);
761extern void tex_set_font_original (halfword f, const char *s);
762
763extern scaled tex_get_math_font_scale (halfword f, halfword size);
764extern scaled tex_get_math_font_x_scale (halfword f, halfword size);
765extern scaled tex_get_math_font_y_scale (halfword f, halfword size);
766extern scaled tex_get_math_font_weight (halfword f, halfword size);
767
768
769
770
771
772extern scaled tex_get_math_font_factor (halfword size);
773
774extern void tex_run_font_spec (void);
775
776# endif
777 |