home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Tex / Tex29 / StTeXsrc.zoo / src / tfm.h < prev    next >
Text File  |  1988-03-13  |  3KB  |  132 lines

  1.  
  2. /*
  3.  * @(#)tfm.h 2.5 EPA
  4.  *
  5.  * Copyright 1987,1988 Pat J Monardo
  6.  *
  7.  * Redistribution of this file is permitted through
  8.  * the specifications in the file COPYING.
  9.  *
  10.  * 
  11.  */
  12.  
  13. global  byte_file       tfm_file;
  14.  
  15. global  mword   font_info[];
  16. global  ptr     fmem_ptr;
  17.  
  18. global  qqqq    null_character;
  19.  
  20. global  qqqq    font_check[];
  21. global  scal    font_size[];
  22. global  scal    font_dsize[];
  23. global  hword   font_params[];
  24. global  str     font_name[];
  25. global  str     font_area[];
  26. global  byte    font_bc[];
  27. global  byte    font_ec[];
  28. global  ptr     font_glue[];
  29. global  bool    font_used[];
  30. global  int     hyphen_char[];
  31. global  int     skew_char[];
  32.  
  33. global  ptr     char_base[];
  34. global  ptr     width_base[];
  35. global  ptr     height_base[];
  36. global  ptr     depth_base[];
  37. global  ptr     italic_base[];
  38. global  ptr     lig_kern_base[];
  39. global  ptr     kern_base[];
  40. global  ptr     exten_base[];
  41. global  ptr     param_base[];
  42.  
  43.  
  44. global  fnt     font_ptr;
  45.  
  46. #define null_font   FONT_BASE
  47.  
  48. #define char_exists(CI) \
  49.     ((CI).b0 > MIN_QUARTERWORD)
  50.  
  51. #define char_info(F, C) \
  52.     font_info[char_base[F] + (C)].qqqq
  53.  
  54. #define char_width(F, CI) \
  55.     font_info[width_base[F] + CI.b0].sc
  56.  
  57. #define char_height(F, CB) \
  58.     font_info[height_base[F] + (CB) / 16].sc
  59.  
  60. #define char_depth(F, CB) \
  61.     font_info[depth_base[F] + (CB) % 16].sc
  62.  
  63. #define char_italic(F, CI) \
  64.     font_info[italic_base[F] + qo(CI.b2) / 4].sc
  65.  
  66. #define NO_TAG              0
  67. #define LIG_TAG             1
  68. #define LIST_TAG            2
  69. #define EXT_TAG             3
  70.  
  71. #define stop_bit(M)         M.b0
  72. #define next_char(M)        M.b1
  73. #define op_bit(M)           M.b2
  74. #define rem_byte(M)         M.b3
  75. #define STOP_FLAG           128
  76. #define KERN_FLAG           128
  77.  
  78. #define ext_top(M)          M.b0
  79. #define ext_mid(M)          M.b1
  80. #define ext_bot(M)          M.b2
  81. #define ext_rep(W)          W.b3
  82.  
  83. #define char_tag(CI) \
  84.     qo(CI.b2) % 4
  85.  
  86. #define height_depth(CI) \
  87.     qo(CI.b1)
  88.  
  89. #define lig_kern_start(F, CI) \
  90.     lig_kern_base[F] + rem_byte(CI)
  91.  
  92. #define char_kern(F, CI) \
  93.     font_info[kern_base[F] + rem_byte(CI)].sc
  94.  
  95. #define SLANT_CODE          1
  96. #define SPACE_CODE          2
  97. #define SPACE_STRETCH_CODE  3
  98. #define SPACE_SHRINK_CODE   4
  99. #define X_HEIGHT_CODE       5
  100. #define QUAD_CODE           6
  101. #define EXTRA_SPACE_CODE    7
  102.  
  103. #define param(F, CODE)  \
  104.     font_info[param_base[F] + CODE].sc
  105.  
  106. #define slant(F) \
  107.     param(F, SLANT_CODE)
  108.  
  109. #define space(F) \
  110.     param(F, SPACE_CODE)
  111.  
  112. #define space_stretch(F) \
  113.     param(F, SPACE_STRETCH_CODE)
  114.  
  115. #define space_shrink(F) \
  116.     param(F, SPACE_SHRINK_CODE)
  117.  
  118. #define x_height(F) \
  119.     param(F, X_HEIGHT_CODE)
  120.  
  121. #define quad(F) \
  122.     param(F, QUAD_CODE)
  123.  
  124. #define extra_space(F) \
  125.     param(F, EXTRA_SPACE_CODE)
  126.  
  127. fnt     read_font_info();
  128. int     find_font_dimen();
  129. int     scan_font_ident();
  130. int     char_warning();
  131. ptr     new_character();
  132.