summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/baseviews.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/baseviews.h')
-rw-r--r--Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/baseviews.h541
1 files changed, 541 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/baseviews.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/baseviews.h
new file mode 100644
index 00000000000..530542634b0
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/baseviews.h
@@ -0,0 +1,541 @@
+/* Copyright (C) 2000-2008 by George Williams */
+/*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef _BASEVIEWS_H
+#define _BASEVIEWS_H
+
+/* cross-compiler woes */
+#if defined (small)
+#undef small
+#endif
+
+#include "splinefont.h"
+
+enum widthtype { wt_width, wt_lbearing, wt_rbearing, wt_vwidth };
+
+enum fvtrans_flags { fvt_dobackground=1, fvt_round_to_int=2,
+ fvt_dontsetwidth=4, fvt_dontmovewidth=8, fvt_scalekernclasses=0x10,
+ fvt_scalepstpos=0x20, fvt_dogrid=0x40, fvt_partialreftrans=0x80 };
+
+typedef struct drect {
+ real x, y;
+ real width, height;
+} DRect;
+
+/* Note: These are ordered as they are displayed in the tools palette */
+enum cvtools { cvt_pointer, cvt_magnify,
+ cvt_freehand, cvt_hand,
+ cvt_curve, cvt_hvcurve,
+ cvt_corner, cvt_tangent,
+ cvt_pen, cvt_spiro,
+ cvt_knife, cvt_ruler,
+ cvt_scale, cvt_flip,
+ cvt_rotate, cvt_skew,
+ cvt_3d_rotate, cvt_perspective,
+ cvt_rect, cvt_poly,
+ cvt_elipse, cvt_star,
+ cvt_minify, cvt_max=cvt_minify,
+ cvt_none = -1,
+ cvt_spirog4=cvt_curve, cvt_spirog2=cvt_hvcurve,
+ cvt_spirocorner=cvt_corner, cvt_spiroleft=cvt_tangent,
+ cvt_spiroright=cvt_pen};
+
+enum bvtools { bvt_pointer, bvt_magnify,
+ bvt_pencil, bvt_line,
+ bvt_shift, bvt_hand,
+ bvt_minify, bvt_eyedropper, bvt_max=bvt_eyedropper,
+ bvt_setwidth, bvt_setvwidth,
+ bvt_rect, bvt_filledrect,
+ bvt_elipse, bvt_filledelipse,
+ bvt_max2 = bvt_filledelipse,
+ bvt_none = -1,
+ bvt_fliph=0, bvt_flipv, bvt_rotate90cw, bvt_rotate90ccw, bvt_rotate180, bvt_skew, bvt_transmove };
+enum drawmode { dm_grid, dm_back, dm_fore, dm_max };
+
+typedef struct bvtfunc {
+ enum bvtools func;
+ int x,y; /* used by skew and move */
+} BVTFunc;
+
+struct freetype_raster {
+ int16 rows, cols;
+ int16 as, lb;
+ int16 bytes_per_row;
+ int16 num_greys;
+ uint8 *bitmap;
+};
+
+struct cvcontainer {
+ struct cvcontainer_funcs *funcs;
+};
+
+enum nav_type { nt_prevdef, nt_prev, nt_goto, nt_next, nt_nextdef };
+struct cvcontainer_funcs {
+ enum cv_container_type { cvc_searcher, cvc_mathkern, cvc_tilepath,
+ cvc_gradient, cvc_multiplepattern } type;
+ void (*activateMe)(struct cvcontainer *cvc,struct charviewbase *cv);
+ void (*charEvent)(struct cvcontainer *cvc,void *event);
+ int (*canNavigate)(struct cvcontainer *cvc,enum nav_type type);
+ void (*doNavigate)(struct cvcontainer *cvc,enum nav_type type);
+ int (*canOpen)(struct cvcontainer *cvc);
+ void (*doClose)(struct cvcontainer *cvc);
+ SplineFont *(*sf_of_container)(struct cvcontainer *cvc);
+};
+
+typedef struct charviewbase {
+ struct charviewbase *next;
+ struct fontviewbase *fv;
+ SplineChar *sc;
+ Layer *layerheads[dm_max];
+ uint8 drawmode;
+ uint16 ft_gridfitwidth;
+ SplineSet *gridfit;
+ struct cvcontainer *container; /* The sv (or whatever) within which this view is embedded (if it is embedded) */
+} CharViewBase;
+
+typedef struct fontviewbase {
+ struct fontviewbase *next; /* Next on list of open fontviews */
+ struct fontviewbase *nextsame; /* Next fv looking at this font */
+ EncMap *map; /* Current encoding info */
+ EncMap *normal; /* If this is not NULL then we have a compacted encoding in map, and this is the original */
+ SplineFont *sf; /* Current font */
+ SplineFont *cidmaster; /* If CID keyed, contains master font */
+ int active_layer;
+ BDFFont *active_bitmap; /* Set if the fontview displays a bitmap strike */
+ uint8 *selected; /* Current selection */
+#ifndef _NO_FFSCRIPT
+ struct dictionary *fontvars; /* Scripting */
+#endif
+#ifndef _NO_PYTHON
+ void *python_fv_object;
+#endif
+} FontViewBase;
+
+enum origins { or_zero, or_center, or_lastpress, or_value, or_undefined };
+struct pov_data {
+ enum origins xorigin, yorigin;
+ double x, y, z;
+ double direction; /* Direction of gaze projected into xy plane */
+ double tilt; /* Angle which drawing plane is tilted with respect to projection plane */
+ double d; /* Distance to projection plane */
+ double sintilt; /* Used internally */
+};
+
+typedef struct {
+ SplineFont *sf;
+ char *pathspec; /* In utf8, not necessarily local encoding */
+ char *username, *password;
+ char *name;
+ char *description;
+ char *tags;
+ char *artists;
+ int notsafeforwork;
+ int oflicense;
+ char *previewimage; /* NULL => No image */
+ uint8 upload_license;
+ uint8 upload_fontlog;
+ char *upload_id; /* Way to manipulate upload on OFLib */
+} OFLibData;
+
+struct lcg_zones {
+ /* info for unhinted processing */
+ /* everything abvoe this should be moved down (default xheight/2) */
+ int top_zone;
+ /* everything below this should be moved up (default xheight/2) */
+ /* anything in between should be stationary */
+ int bottom_zone;
+
+ /* info for hinted processing */
+ /* everything above & at this should be moved down */
+ /* also anything on the other side of a hint from this should be moved down */
+ int top_bound;
+ /* everything below & at this should be moved down */
+ /* also anything on the other side of a hint from this should be moved down */
+ int bottom_bound;
+
+ enum counter_type { ct_squish, ct_retain, ct_auto } counter_type;
+
+ SplineSet *(*embolden_hook)(SplineSet *,struct lcg_zones *,SplineChar *,int layer);
+ int wants_hints;
+ double serif_height, serif_fuzz;
+
+ double stroke_width; /* negative number to lighten, positive to embolden */
+ int removeoverlap;
+
+ BlueData bd;
+ double stdvw;
+};
+/* This order is the same order as the radio buttons in the embolden dlg */
+enum embolden_type { embolden_lcg, embolden_cjk, embolden_auto, embolden_custom, embolden_error };
+
+struct counterinfo {
+ double c_factor, c_add; /* For counters */
+ double sb_factor, sb_add; /* For side bearings */
+ int correct_italic;
+
+ BlueData bd;
+ double stdvw;
+
+ SplineChar *sc;
+ int layer;
+ DBounds bb; /* Value before change */
+ double top_y, bottom_y, boundry;
+ int has_two_zones;
+#define TOP_Z 0
+#define BOT_Z 1
+ int cnts[2];
+ int maxes[2];
+ struct ci_zones {
+ double start, width;
+ double moveto, newwidth; /* Only change width for diagonal stems*/
+ } *zones[2];
+};
+
+enum fvformats { fv_bdf, fv_ttf, fv_pk, fv_pcf, fv_mac, fv_win, fv_palm,
+ fv_image, fv_imgtemplate,
+ fv_eps, fv_epstemplate,
+ fv_pdf, fv_pdftemplate,
+ fv_plate, fv_platetemplate,
+ fv_svg, fv_svgtemplate,
+ fv_glif, fv_gliftemplate,
+ fv_fig,
+ fv_pythonbase = 0x100 };
+
+extern enum undotype CopyUndoType(void);
+extern int CopyContainsSomething(void);
+extern int CopyContainsBitmap(void);
+extern const Undoes *CopyBufferGet(void);
+extern RefChar *CopyContainsRef(SplineFont *);
+extern char **CopyGetPosSubData(enum possub_type *type,SplineFont **copied_from,
+ int pst_depth);
+extern void CopyReference(SplineChar *sc);
+extern void SCCopyLookupData(SplineChar *sc);
+extern void PasteRemoveSFAnchors(SplineFont *);
+extern void PasteAnchorClassMerge(SplineFont *sf,AnchorClass *into,AnchorClass *from);
+extern void PasteRemoveAnchorClass(SplineFont *sf,AnchorClass *dying);
+extern void ClipboardClear(void);
+extern SplineSet *ClipBoardToSplineSet(void);
+extern void BCCopySelected(BDFChar *bc,int pixelsize,int depth);
+extern void PasteToBC(BDFChar *bc,int pixelsize,int depth);
+extern void FVCopyWidth(FontViewBase *fv,enum undotype ut);
+extern void FVCopyAnchors(FontViewBase *fv);
+enum fvcopy_type { ct_fullcopy, ct_reference, ct_lookups, ct_unlinkrefs };
+extern void FVCopy(FontViewBase *fv, enum fvcopy_type copytype);
+extern void PasteIntoFV(FontViewBase *fv, int pasteinto, real trans[6]);
+extern void FVCopyFgtoBg(FontViewBase *fv);
+extern void FVSameGlyphAs(FontViewBase *fv);
+extern void FVClearBackground(FontViewBase *fv);
+extern void FVClear(FontViewBase *fv);
+extern void FVUnlinkRef(FontViewBase *fv);
+extern void FVUndo(FontViewBase *fv);
+extern void FVRedo(FontViewBase *fv);
+extern void FVJoin(FontViewBase *fv);
+extern void FVBuildDuplicate(FontViewBase *fv);
+extern void FVTrans(FontViewBase *fv,SplineChar *sc,real transform[6],uint8 *sel,
+ enum fvtrans_flags);
+extern void FVTransFunc(void *_fv,real transform[6],int otype, BVTFunc *bvts,
+ enum fvtrans_flags );
+extern void FVReencode(FontViewBase *fv,Encoding *enc);
+extern void FVOverlap(FontViewBase *fv,enum overlap_type ot);
+extern void FVAddExtrema(FontViewBase *fv);
+extern void FVCorrectDir(FontViewBase *fv);
+extern void FVRound2Int(FontViewBase *fv,real factor);
+extern void FVCanonicalStart(FontViewBase *fv);
+extern void FVCanonicalContours(FontViewBase *fv);
+extern void FVCluster(FontViewBase *fv);
+extern void CIDSetEncMap(FontViewBase *fv, SplineFont *new );
+extern void FVInsertInCID(FontViewBase *fv,SplineFont *sf);
+
+extern void FVAutoHint(FontViewBase *fv);
+extern void FVAutoHintSubs(FontViewBase *fv);
+extern void FVAutoCounter(FontViewBase *fv);
+extern void FVDontAutoHint(FontViewBase *fv);
+extern void FVAutoInstr(FontViewBase *fv);
+extern void FVClearInstrs(FontViewBase *fv);
+extern void FVClearHints(FontViewBase *fv);
+extern void SCAutoTrace(SplineChar *sc,int layer, int ask);
+extern char *FindAutoTraceName(void);
+extern void *GetAutoTraceArgs(void);
+extern void SetAutoTraceArgs(void *a);
+extern char *FindMFName(void);
+extern char *ProgramExists(char *prog,char *buffer);
+extern void MfArgsInit(void);
+extern void FVAutoTrace(FontViewBase *fv,int ask);
+extern void FVAddEncodingSlot(FontViewBase *fv,int gid);
+extern int FVImportMult(FontViewBase *fv, char *filename,int toback,int bf);
+extern int FVImportBDF(FontViewBase *fv, char *filename,int ispk, int toback);
+extern void MergeFont(FontViewBase *fv,SplineFont *other,int preserveCrossFontKerning);
+extern int FVImportImages(FontViewBase *fv,char *path,int isimage,int toback,int flags);
+extern int FVImportImageTemplate(FontViewBase *fv,char *path,int isimage,int toback,int flags);
+extern void ScriptPrint(FontViewBase *fv,int type,int32 *pointsizes,char *samplefile,
+ unichar_t *sample, char *outputfile);
+extern int FVBParseSelectByPST(FontViewBase *fv,struct lookup_subtable *sub,
+ int search_type);
+extern int SFScaleToEm(SplineFont *sf, int ascent, int descent);
+extern void TransHints(StemInfo *stem,real mul1, real off1, real mul2, real off2, int round_to_int );
+extern void TransDStemHints(DStemInfo *ds,real xmul, real xoff, real ymul, real yoff, int round_to_int );
+extern void VrTrans(struct vr *vr,real transform[6]);
+extern int SFNLTrans(FontViewBase *fv,char *x_expr,char *y_expr);
+extern void FVPointOfView(FontViewBase *fv,struct pov_data *);
+extern void FVStrokeItScript(void *fv, StrokeInfo *si);
+extern void FVOutline(struct fontviewbase *fv, real width);
+extern void FVInline(struct fontviewbase *fv, real width, real inset);
+extern void FVShadow(struct fontviewbase *fv,real angle, real outline_width,
+ real shadow_length,int wireframe);
+extern void CI_Init(struct counterinfo *ci,SplineFont *sf);
+extern void FVEmbolden(struct fontviewbase *fv,enum embolden_type type,struct lcg_zones *zones);
+extern void FVCondenseExtend(struct fontviewbase *fv,struct counterinfo *ci);
+extern void ScriptSCCondenseExtend(SplineChar *sc,struct counterinfo *ci);
+
+struct smallcaps {
+ double lc_stem_width, uc_stem_width;
+ double stem_factor, v_stem_factor;
+ double xheight, scheight, capheight;
+ double vscale, hscale;
+ char *extension_for_letters, *extension_for_symbols;
+ int dosymbols;
+ SplineFont *sf;
+ int layer;
+ double italic_angle, tan_ia;
+};
+
+extern void SmallCapsFindConstants(struct smallcaps *small, SplineFont *sf,
+ int layer );
+
+enum glyphchange_type { gc_generic, gc_smallcaps, gc_subsuper, gc_max };
+
+struct genericchange {
+ enum glyphchange_type gc;
+ uint32 feature_tag;
+ char *glyph_extension;
+ char *extension_for_letters, *extension_for_symbols;
+ double stem_height_scale, stem_width_scale;
+ double stem_height_add , stem_width_add ;
+ double serif_height_scale, serif_width_scale;
+ double seirf_height_add , serif_width_add ;
+ double hcounter_scale, hcounter_add;
+ double lsb_scale, lsb_add;
+ double rsb_scale, rsb_add;
+ uint8 center_in_hor_advance;
+ uint8 use_vert_mapping;
+ uint8 do_smallcap_symbols;
+ uint8 petite; /* generate petite caps rather than smallcaps */
+ double vcounter_scale, vcounter_add; /* If not using mapping */
+ double v_scale; /* If using mapping */
+ struct fixed_maps {
+ int cnt;
+ struct position_maps {
+ double current , desired;
+ double cur_width, des_width;
+ int overlap_index;
+ } *maps;
+ } m;
+ struct fixed_maps g; /* Adjusted for each glyph */
+ double vertical_offset;
+ unsigned int dstem_control, serif_control;
+ struct smallcaps *small;
+/* Filled in by called routine */
+ SplineFont *sf;
+ int layer;
+ double italic_angle, tan_ia;
+};
+
+extern void FVAddSmallCaps(FontViewBase *fv,struct genericchange *genchange);
+extern void FVGenericChange(FontViewBase *fv,struct genericchange *genchange);
+extern void CVGenericChange(CharViewBase *cv,struct genericchange *genchange);
+
+struct xheightinfo {
+ double xheight_current, xheight_desired;
+ double serif_height;
+};
+
+extern void InitXHeightInfo(SplineFont *sf, int layer, struct xheightinfo *xi);
+extern void ChangeXHeight(FontViewBase *fv,CharViewBase *cv, struct xheightinfo *xi);
+extern SplineSet *SSControlStems(SplineSet *ss,
+ double stemwidthscale, double stemheightscale,
+ double hscale, double vscale, double xheight);
+extern void MakeItalic(FontViewBase *fv,CharViewBase *cv,ItalicInfo *ii);
+extern int FVReplaceAll( FontViewBase *fv, SplineSet *find, SplineSet *rpl, double fudge, int flags );
+extern void FVBReplaceOutlineWithReference( FontViewBase *fv, double fudge );
+extern void FVCorrectReferences(FontViewBase *fv);
+extern void _FVSimplify(FontViewBase *fv,struct simplifyinfo *smpl);
+extern void UnlinkThisReference(FontViewBase *fv,SplineChar *sc,int layer);
+extern FontViewBase *ViewPostscriptFont(char *filename,int openflags);
+extern void FVBuildAccent(FontViewBase *fv,int onlyaccents);
+extern void FVRemoveKerns(FontViewBase *fv);
+extern void FVRemoveVKerns(FontViewBase *fv);
+extern void FVVKernFromHKern(FontViewBase *fv);
+extern void FVAddUnencoded(FontViewBase *fv, int cnt);
+extern void FVRemoveUnused(FontViewBase *fv);
+extern void FVCompact(FontViewBase *fv);
+extern void FVDetachGlyphs(FontViewBase *fv);
+extern void FVDetachAndRemoveGlyphs(FontViewBase *fv);
+extern int AutoWidthScript(FontViewBase *fv,int spacing);
+extern int AutoKernScript(FontViewBase *fv,int spacing, int threshold,
+ struct lookup_subtable *sub, char *kernfile);
+
+#ifndef _NO_FFSCRIPT
+extern void DictionaryFree(struct dictionary *dica);
+#endif
+
+extern void BCTrans(BDFFont *bdf,BDFChar *bc,BVTFunc *bvts,FontViewBase *fv );
+extern void BCSetPoint(BDFChar *bc, int x, int y, int color);
+extern void BCTransFunc(BDFChar *bc,enum bvtools type,int xoff,int yoff);
+extern void skewselect(BVTFunc *bvtf,real t);
+extern void BCExpandBitmapToEmBox(BDFChar *bc, int xmin, int ymin, int xmax, int ymax);
+
+extern BDFFloat *BDFFloatCreate(BDFChar *bc,int xmin,int xmax,int ymin,int ymax, int clear);
+extern BDFFloat *BDFFloatCopy(BDFFloat *sel);
+extern BDFFloat *BDFFloatConvert(BDFFloat *sel,int newdepth, int olddepth);
+extern void BDFFloatFree(BDFFloat *sel);
+
+extern int CVLayer(CharViewBase *cv);
+extern Undoes *CVPreserveStateHints(CharViewBase *cv);
+extern Undoes *CVPreserveState(CharViewBase *cv);
+extern Undoes *CVPreserveWidth(CharViewBase *cv,int width);
+extern Undoes *CVPreserveVWidth(CharViewBase *cv,int vwidth);
+extern void CVDoRedo(CharViewBase *cv);
+extern void CVDoUndo(CharViewBase *cv);
+extern void CVRemoveTopUndo(CharViewBase *cv);
+extern void CopySelected(CharViewBase *cv,int doanchors);
+extern void CVCopyGridFit(CharViewBase *cv);
+extern void CopyWidth(CharViewBase *cv,enum undotype);
+extern void PasteToCV(CharViewBase *cv);
+extern void CVYPerspective(CharViewBase *cv,double x_vanish, double y_vanish);
+extern void ScriptSCEmbolden(SplineChar *sc,int layer,enum embolden_type type,struct lcg_zones *zones);
+extern void CVEmbolden(CharViewBase *cv,enum embolden_type type,struct lcg_zones *zones);
+extern void SCCondenseExtend(struct counterinfo *ci,SplineChar *sc, int layer,
+ int do_undoes);
+extern void SCClearSelPt(SplineChar *sc);
+extern void SC_MoreLayers(SplineChar *,Layer *old);
+extern void SCLayersChange(SplineChar *sc);
+extern void SFLayerChange(SplineFont *sf);
+extern void SCTile(SplineChar *sc,int layer);
+extern void _CVMenuMakeLine(CharViewBase *cv,int do_arc,int ellipse_to_back);
+ /* Ellipse to back is a debugging flag and adds the generated ellipse to */
+ /* the background layer so we can look at it. I thought it might actually*/
+ /* be useful, so I left it in. Activated with the Alt key in the menu */
+
+extern void MVCopyChar(FontViewBase *fv, BDFFont *bdf, SplineChar *sc, enum fvcopy_type fullcopy);
+extern void PasteIntoMV(FontViewBase *fv, BDFFont *bdf,SplineChar *sc, int doclear);
+
+extern void ExecuteScriptFile(FontViewBase *fv, SplineChar *sc, char *filename);
+
+extern int HasLicense(SplineFont *,FILE *);
+extern int OFLibUploadFont(OFLibData *);
+
+enum search_flags { sv_reverse = 0x1, sv_flips = 0x2, sv_rotate = 0x4,
+ sv_scale = 0x8, sv_endpoints=0x10 };
+typedef struct searchdata {
+ SplineChar sc_srch, sc_rpl;
+ SplineSet *path, *revpath, *replacepath, *revreplace;
+ int pointcnt, rpointcnt;
+ real fudge;
+ real fudge_percent; /* a value of .05 here represents 5% (we don't store the integer) */
+ unsigned int tryreverse: 1;
+ unsigned int tryflips: 1;
+ unsigned int tryrotate: 1;
+ unsigned int tryscale: 1;
+ unsigned int endpoints: 1; /* Don't match endpoints, use them for direction only */
+ unsigned int onlyselected: 1;
+ unsigned int subpatternsearch: 1;
+ unsigned int doreplace: 1;
+ unsigned int replaceall: 1;
+ unsigned int findall: 1;
+ unsigned int searchback: 1;
+ unsigned int wrap: 1;
+ unsigned int wasreversed: 1;
+ unsigned int replacewithref: 1;
+ unsigned int already_complained: 1; /* User has already been alerted to the fact that we've converted splines to refs and lost the instructions */
+ SplineSet *matched_spl;
+ SplinePoint *matched_sp, *last_sp;
+ real matched_rot, matched_scale;
+ real matched_x, matched_y;
+ double matched_co, matched_si; /* Precomputed sin, cos */
+ enum flipset { flip_none = 0, flip_x, flip_y, flip_xy } matched_flip;
+#ifdef _HAS_LONGLONG
+ unsigned long long matched_refs; /* Bit map of which refs in the char were matched */
+ unsigned long long matched_ss; /* Bit map of which splines in the char were matched */
+ /* In multi-path mode */
+ unsigned long long matched_ss_start;/* Bit map of which splines we tried to start matches with */
+#else
+ unsigned long matched_refs;
+ unsigned long matched_ss;
+ unsigned long matched_ss_start;
+#endif
+ FontViewBase *fv;
+ SplineChar *curchar;
+ int last_gid;
+} SearchData;
+
+extern struct searchdata *SDFromContour( FontViewBase *fv, SplineSet *find, double fudge, int flags );
+extern SplineChar *SDFindNext(struct searchdata *sv);
+
+extern struct python_import_export {
+ struct _object *import; /* None becomes NULL */
+ struct _object *export; /* None becomes NULL */
+ struct _object *data; /* None stays None */
+ char *name;
+ char *extension;
+ char *all_extensions;
+} *py_ie;
+extern void PyFF_SCExport(SplineChar *sc,int ie_index,char *filename,
+ int layer);
+extern void PyFF_SCImport(SplineChar *sc,int ie_index,char *filename,
+ int layer, int clear);
+extern void PyFF_InitFontHook(FontViewBase *fv);
+
+extern void LookupInit(void);
+extern int UserFeaturesDiffer(void);
+extern uint32 *StdFeaturesOfScript(uint32 script);
+
+enum byte_types { bt_instr, bt_cnt, bt_byte, bt_wordhi, bt_wordlo, bt_impliedreturn };
+struct instrdata {
+ uint8 *instrs;
+ int instr_cnt, max;
+ uint8 *bts;
+ unsigned int changed: 1;
+ unsigned int in_composit: 1;
+ SplineFont *sf;
+ SplineChar *sc;
+ uint32 tag;
+ struct instrdlg *id;
+ struct instrdata *next;
+};
+
+extern uint8 *_IVParse(SplineFont *sf, char *text, int *len,
+ void (*IVError)(void *,char *, int), void *iv);
+extern char *_IVUnParseInstrs(uint8 *instrs,int instr_cnt);
+
+extern int BitmapControl(FontViewBase *fv,int32 *sizes,int isavail,int rasterize);
+extern void FVSetWidthScript(FontViewBase *fv,enum widthtype wtype,int val,int incr);
+extern void FVMetricsCenter(FontViewBase *fv,int docenter);
+extern void FVRevert(FontViewBase *fv);
+extern void FVRevertBackup(FontViewBase *fv);
+extern void FVRevertGlyph(FontViewBase *fv);
+extern int MMReblend(FontViewBase *fv, MMSet *mm);
+extern FontViewBase *MMCreateBlendedFont(MMSet *mm,FontViewBase *fv,real blends[MmMax],int tonew );
+#endif