pdf2htmlEX/pdf2htmlEX/src/util/fontforge-2.0.20170731/autowidth.h

82 lines
2.6 KiB
C

#ifndef FONTFORGE_AUTOWIDTH_H
#define FONTFORGE_AUTOWIDTH_H
#include "baseviews.h"
#include "splinefont.h"
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;
extern int AutoKernScript(FontViewBase *fv, int spacing, int threshold, struct lookup_subtable *sub, char *kernfile);
extern int AutoWidthScript(FontViewBase *fv, int spacing);
extern int KernThreshold(SplineFont *sf, int cnt);
extern real SFGuessItalicAngle(SplineFont *sf);
extern void FVRemoveKerns(FontViewBase *fv);
extern void FVRemoveVKerns(FontViewBase *fv);
extern void FVVKernFromHKern(FontViewBase *fv);
#endif /* FONTFORGE_AUTOWIDTH_H */