/
autowidth.h
66 lines (60 loc) · 2.04 KB
/
autowidth.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
struct charone {
real lbearing, rmax;
real newl, newr;
int baseserif, lefttops, righttops; /* serif zones which affect this character */
SplineChar *sc;
int base, top; /* bottom of character, number of decimation zones we've got */
short *ledge;
short *redge;
struct charpair *asleft;
struct charpair *asright;
};
struct charpair {
struct charone *left, *right;
struct charpair *nextasleft, *nextasright;
int base, top;
short *distances;
short visual;
};
typedef struct widthinfo {
real spacing; /* desired spacing between letters */
real decimation;
real serifsize;
real seriflength;
real caph;
real descent;
real xheight;
real n_stem_exterior_width, n_stem_interior_width;
real current_I_spacing;
int serifs[4][2]; /* Four serif zones: descent, baseline, xheight, cap */
int lcnt, rcnt; /* count of left and right chars respectively */
int real_lcnt, real_rcnt; /* what the user asked for. We might add I */
int tcnt; /* sum of r+l cnt */
int pcnt; /* pair count, often r*l cnt */
int l_Ipos, r_Ipos;
struct charone **left, **right;
struct charpair **pairs;
int space_guess;
int threshold;
SplineFont *sf;
FontViewBase *fv;
int layer;
unsigned int done: 1;
unsigned int autokern: 1;
unsigned int onlynegkerns: 1;
struct lookup_subtable *subtable;
} WidthInfo;
#define NOTREACHED -9999.0
extern struct charone *AW_MakeCharOne(SplineChar *sc);
extern void AW_InitCharPairs(WidthInfo *wi);
extern void AW_FreeCharList(struct charone **list);
extern void AW_FreeCharPairs(struct charpair **list, int cnt);
extern void AW_ScriptSerifChecker(WidthInfo *wi);
extern int AW_ReadKernPairFile(char *fn,WidthInfo *wi);
extern void AW_BuildCharPairs(WidthInfo *wi);
extern void AW_AutoKern(WidthInfo *wi);
extern void AW_AutoWidth(WidthInfo *wi);
extern void AW_FindFontParameters(WidthInfo *wi);
extern void AW_KernRemoveBelowThreshold(SplineFont *sf,int threshold);
extern SplineFont *aw_old_sf;
extern int aw_old_spaceguess;