1// -*- C++ -*-
2/* Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
3     Written by James Clark (jjc@jclark.com)
4
5This file is part of groff.
6
7groff is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free
9Software Foundation; either version 2, or (at your option) any later
10version.
11
12groff is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15for more details.
16
17You should have received a copy of the GNU General Public License along
18with groff; see the file COPYING.  If not, write to the Free Software
19Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */
20
21extern int fat_offset;
22
23extern int over_hang;
24extern int accent_width;
25
26extern int delimiter_factor;
27extern int delimiter_shortfall;
28
29extern int null_delimiter_space;
30extern int script_space;
31extern int thin_space;
32extern int medium_space;
33extern int thick_space;
34
35extern int num1;
36extern int num2;
37// we don't use num3, because we don't have \atop
38extern int denom1;
39extern int denom2;
40extern int axis_height;
41extern int sup1;
42extern int sup2;
43extern int sup3;
44extern int default_rule_thickness;
45extern int sub1;
46extern int sub2;
47extern int sup_drop;
48extern int sub_drop;
49extern int x_height;
50extern int big_op_spacing1;
51extern int big_op_spacing2;
52extern int big_op_spacing3;
53extern int big_op_spacing4;
54extern int big_op_spacing5;
55
56extern int baseline_sep;
57extern int shift_down;
58extern int column_sep;
59extern int matrix_side_sep;
60
61// ms.eqn relies on this!
62
63#define LINE_STRING "10"
64#define MARK_OR_LINEUP_FLAG_REG "MK"
65
66#define WIDTH_FORMAT PREFIX "w%d"
67#define HEIGHT_FORMAT PREFIX "h%d"
68#define DEPTH_FORMAT PREFIX "d%d"
69#define TOTAL_FORMAT PREFIX "t%d"
70#define SIZE_FORMAT PREFIX "z%d"
71#define SMALL_SIZE_FORMAT PREFIX "Z%d"
72#define SUP_RAISE_FORMAT PREFIX "p%d"
73#define SUB_LOWER_FORMAT PREFIX "b%d"
74#define SUB_KERN_FORMAT PREFIX "k%d"
75#define FONT_FORMAT PREFIX "f%d"
76#define SKEW_FORMAT PREFIX "s%d"
77#define LEFT_WIDTH_FORMAT PREFIX "lw%d"
78#define LEFT_DELIM_STRING_FORMAT PREFIX "l%d"
79#define RIGHT_DELIM_STRING_FORMAT PREFIX "r%d"
80#define SQRT_STRING_FORMAT PREFIX "sqr%d"
81#define SQRT_WIDTH_FORMAT PREFIX "sq%d"
82#define BASELINE_SEP_FORMAT PREFIX "bs%d"
83// this needs two parameters, the uid and the column index
84#define COLUMN_WIDTH_FORMAT PREFIX "cw%d,%d"
85
86#define BAR_STRING PREFIX "sqb"
87#define TEMP_REG PREFIX "temp"
88#define MARK_REG PREFIX "mark"
89#define MARK_WIDTH_REG PREFIX "mwidth"
90#define SAVED_MARK_REG PREFIX "smark"
91#define MAX_SIZE_REG PREFIX "mxsz"
92#define REPEAT_APPEND_STRING_MACRO PREFIX "ras"
93#define TOP_HEIGHT_REG PREFIX "th"
94#define TOP_DEPTH_REG PREFIX "td"
95#define MID_HEIGHT_REG PREFIX "mh"
96#define MID_DEPTH_REG PREFIX "md"
97#define BOT_HEIGHT_REG PREFIX "bh"
98#define BOT_DEPTH_REG PREFIX "bd"
99#define EXT_HEIGHT_REG PREFIX "eh"
100#define EXT_DEPTH_REG PREFIX "ed"
101#define TOTAL_HEIGHT_REG PREFIX "tot"
102#define DELTA_REG PREFIX "delta"
103#define DELIM_STRING PREFIX "delim"
104#define DELIM_WIDTH_REG PREFIX "dwidth"
105#define SAVED_FONT_REG PREFIX "sfont"
106#define SAVED_PREV_FONT_REG PREFIX "spfont"
107#define SAVED_INLINE_FONT_REG PREFIX "sifont"
108#define SAVED_INLINE_PREV_FONT_REG PREFIX "sipfont"
109#define SAVED_SIZE_REG PREFIX "ssize"
110#define SAVED_INLINE_SIZE_REG PREFIX "sisize"
111#define SAVED_INLINE_PREV_SIZE_REG PREFIX "sipsize"
112#define SAVE_FONT_STRING PREFIX "sfont"
113#define RESTORE_FONT_STRING PREFIX "rfont"
114#define INDEX_REG PREFIX "i"
115#define TEMP_MACRO PREFIX "tempmac"
116
117#define DELIMITER_CHAR "\\(EQ"
118
119const int CRAMPED_SCRIPT_STYLE = 0;
120const int SCRIPT_STYLE = 1;
121const int CRAMPED_DISPLAY_STYLE = 2;
122const int DISPLAY_STYLE = 3;
123
124extern int script_style(int);
125extern int cramped_style(int);
126
127const int ORDINARY_TYPE = 0;
128const int OPERATOR_TYPE = 1;
129const int BINARY_TYPE = 2;
130const int RELATION_TYPE = 3;
131const int OPENING_TYPE = 4;
132const int CLOSING_TYPE = 5;
133const int PUNCTUATION_TYPE = 6;
134const int INNER_TYPE = 7;
135const int SUPPRESS_TYPE = 8;
136
137void set_script_size();
138
139enum { HINT_PREV_IS_ITALIC = 01, HINT_NEXT_IS_ITALIC = 02 };
140
141extern const char *current_roman_font;
142