1 /* Copyright (C) 2000-2008 by George Williams */
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are met:
6 * Redistributions of source code must retain the above copyright notice, this
7 * list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright notice,
10 * this list of conditions and the following disclaimer in the documentation
11 * and/or other materials provided with the distribution.
13 * The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission.
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 /* cross-compiler woes */
35 #include "splinefont.h"
37 enum widthtype
{ wt_width
, wt_lbearing
, wt_rbearing
, wt_vwidth
};
39 enum fvtrans_flags
{ fvt_dobackground
=1, fvt_round_to_int
=2,
40 fvt_dontsetwidth
=4, fvt_dontmovewidth
=8, fvt_scalekernclasses
=0x10,
41 fvt_scalepstpos
=0x20, fvt_dogrid
=0x40, fvt_partialreftrans
=0x80 };
43 typedef struct drect
{
48 /* Note: These are ordered as they are displayed in the tools palette */
49 enum cvtools
{ cvt_pointer
, cvt_magnify
,
50 cvt_freehand
, cvt_hand
,
51 cvt_curve
, cvt_hvcurve
,
52 cvt_corner
, cvt_tangent
,
57 cvt_3d_rotate
, cvt_perspective
,
60 cvt_minify
, cvt_max
=cvt_minify
,
62 cvt_spirog4
=cvt_curve
, cvt_spirog2
=cvt_hvcurve
,
63 cvt_spirocorner
=cvt_corner
, cvt_spiroleft
=cvt_tangent
,
64 cvt_spiroright
=cvt_pen
};
66 enum bvtools
{ bvt_pointer
, bvt_magnify
,
69 bvt_minify
, bvt_eyedropper
, bvt_max
=bvt_eyedropper
,
70 bvt_setwidth
, bvt_setvwidth
,
71 bvt_rect
, bvt_filledrect
,
72 bvt_elipse
, bvt_filledelipse
,
73 bvt_max2
= bvt_filledelipse
,
75 bvt_fliph
=0, bvt_flipv
, bvt_rotate90cw
, bvt_rotate90ccw
, bvt_rotate180
, bvt_skew
, bvt_transmove
};
76 enum drawmode
{ dm_grid
, dm_back
, dm_fore
, dm_max
};
78 typedef struct bvtfunc
{
80 int x
,y
; /* used by skew and move */
83 struct freetype_raster
{
92 struct cvcontainer_funcs
*funcs
;
95 enum nav_type
{ nt_prevdef
, nt_prev
, nt_goto
, nt_next
, nt_nextdef
};
96 struct cvcontainer_funcs
{
97 enum cv_container_type
{ cvc_searcher
, cvc_mathkern
, cvc_tilepath
,
98 cvc_gradient
, cvc_multiplepattern
} type
;
99 void (*activateMe
)(struct cvcontainer
*cvc
,struct charviewbase
*cv
);
100 void (*charEvent
)(struct cvcontainer
*cvc
,void *event
);
101 int (*canNavigate
)(struct cvcontainer
*cvc
,enum nav_type type
);
102 void (*doNavigate
)(struct cvcontainer
*cvc
,enum nav_type type
);
103 int (*canOpen
)(struct cvcontainer
*cvc
);
104 void (*doClose
)(struct cvcontainer
*cvc
);
105 SplineFont
*(*sf_of_container
)(struct cvcontainer
*cvc
);
108 typedef struct charviewbase
{
109 struct charviewbase
*next
;
110 struct fontviewbase
*fv
;
112 Layer
*layerheads
[dm_max
];
114 uint16 ft_gridfitwidth
;
116 struct cvcontainer
*container
; /* The sv (or whatever) within which this view is embedded (if it is embedded) */
119 typedef struct fontviewbase
{
120 struct fontviewbase
*next
; /* Next on list of open fontviews */
121 struct fontviewbase
*nextsame
; /* Next fv looking at this font */
122 EncMap
*map
; /* Current encoding info */
123 EncMap
*normal
; /* If this is not NULL then we have a compacted encoding in map, and this is the original */
124 SplineFont
*sf
; /* Current font */
125 SplineFont
*cidmaster
; /* If CID keyed, contains master font */
127 BDFFont
*active_bitmap
; /* Set if the fontview displays a bitmap strike */
128 uint8
*selected
; /* Current selection */
130 struct dictionary
*fontvars
; /* Scripting */
133 void *python_fv_object
;
137 enum origins
{ or_zero
, or_center
, or_lastpress
, or_value
, or_undefined
};
139 enum origins xorigin
, yorigin
;
141 double direction
; /* Direction of gaze projected into xy plane */
142 double tilt
; /* Angle which drawing plane is tilted with respect to projection plane */
143 double d
; /* Distance to projection plane */
144 double sintilt
; /* Used internally */
149 char *pathspec
; /* In utf8, not necessarily local encoding */
150 char *username
, *password
;
157 char *previewimage
; /* NULL => No image */
158 uint8 upload_license
;
159 uint8 upload_fontlog
;
160 char *upload_id
; /* Way to manipulate upload on OFLib */
164 /* info for unhinted processing */
165 /* everything abvoe this should be moved down (default xheight/2) */
167 /* everything below this should be moved up (default xheight/2) */
168 /* anything in between should be stationary */
171 /* info for hinted processing */
172 /* everything above & at this should be moved down */
173 /* also anything on the other side of a hint from this should be moved down */
175 /* everything below & at this should be moved down */
176 /* also anything on the other side of a hint from this should be moved down */
179 enum counter_type
{ ct_squish
, ct_retain
, ct_auto
} counter_type
;
181 SplineSet
*(*embolden_hook
)(SplineSet
*,struct lcg_zones
*,SplineChar
*,int layer
);
183 double serif_height
, serif_fuzz
;
185 double stroke_width
; /* negative number to lighten, positive to embolden */
191 /* This order is the same order as the radio buttons in the embolden dlg */
192 enum embolden_type
{ embolden_lcg
, embolden_cjk
, embolden_auto
, embolden_custom
, embolden_error
};
195 double c_factor
, c_add
; /* For counters */
196 double sb_factor
, sb_add
; /* For side bearings */
204 DBounds bb
; /* Value before change */
205 double top_y
, bottom_y
, boundry
;
213 double moveto
, newwidth
; /* Only change width for diagonal stems*/
217 enum fvformats
{ fv_bdf
, fv_ttf
, fv_pk
, fv_pcf
, fv_mac
, fv_win
, fv_palm
,
218 fv_image
, fv_imgtemplate
,
219 fv_eps
, fv_epstemplate
,
220 fv_pdf
, fv_pdftemplate
,
221 fv_plate
, fv_platetemplate
,
222 fv_svg
, fv_svgtemplate
,
223 fv_glif
, fv_gliftemplate
,
225 fv_pythonbase
= 0x100 };
227 extern enum undotype
CopyUndoType(void);
228 extern int CopyContainsSomething(void);
229 extern int CopyContainsBitmap(void);
230 extern const Undoes
*CopyBufferGet(void);
231 extern RefChar
*CopyContainsRef(SplineFont
*);
232 extern char **CopyGetPosSubData(enum possub_type
*type
,SplineFont
**copied_from
,
234 extern void CopyReference(SplineChar
*sc
);
235 extern void SCCopyLookupData(SplineChar
*sc
);
236 extern void PasteRemoveSFAnchors(SplineFont
*);
237 extern void PasteAnchorClassMerge(SplineFont
*sf
,AnchorClass
*into
,AnchorClass
*from
);
238 extern void PasteRemoveAnchorClass(SplineFont
*sf
,AnchorClass
*dying
);
239 extern void ClipboardClear(void);
240 extern SplineSet
*ClipBoardToSplineSet(void);
241 extern void BCCopySelected(BDFChar
*bc
,int pixelsize
,int depth
);
242 extern void PasteToBC(BDFChar
*bc
,int pixelsize
,int depth
);
243 extern void FVCopyWidth(FontViewBase
*fv
,enum undotype ut
);
244 extern void FVCopyAnchors(FontViewBase
*fv
);
245 enum fvcopy_type
{ ct_fullcopy
, ct_reference
, ct_lookups
, ct_unlinkrefs
};
246 extern void FVCopy(FontViewBase
*fv
, enum fvcopy_type copytype
);
247 extern void PasteIntoFV(FontViewBase
*fv
, int pasteinto
, real trans
[6]);
248 extern void FVCopyFgtoBg(FontViewBase
*fv
);
249 extern void FVSameGlyphAs(FontViewBase
*fv
);
250 extern void FVClearBackground(FontViewBase
*fv
);
251 extern void FVClear(FontViewBase
*fv
);
252 extern void FVUnlinkRef(FontViewBase
*fv
);
253 extern void FVUndo(FontViewBase
*fv
);
254 extern void FVRedo(FontViewBase
*fv
);
255 extern void FVJoin(FontViewBase
*fv
);
256 extern void FVBuildDuplicate(FontViewBase
*fv
);
257 extern void FVTrans(FontViewBase
*fv
,SplineChar
*sc
,real transform
[6],uint8
*sel
,
259 extern void FVTransFunc(void *_fv
,real transform
[6],int otype
, BVTFunc
*bvts
,
260 enum fvtrans_flags
);
261 extern void FVReencode(FontViewBase
*fv
,Encoding
*enc
);
262 extern void FVOverlap(FontViewBase
*fv
,enum overlap_type ot
);
263 extern void FVAddExtrema(FontViewBase
*fv
);
264 extern void FVCorrectDir(FontViewBase
*fv
);
265 extern void FVRound2Int(FontViewBase
*fv
,real factor
);
266 extern void FVCanonicalStart(FontViewBase
*fv
);
267 extern void FVCanonicalContours(FontViewBase
*fv
);
268 extern void FVCluster(FontViewBase
*fv
);
269 extern void CIDSetEncMap(FontViewBase
*fv
, SplineFont
*new );
270 extern void FVInsertInCID(FontViewBase
*fv
,SplineFont
*sf
);
272 extern void FVAutoHint(FontViewBase
*fv
);
273 extern void FVAutoHintSubs(FontViewBase
*fv
);
274 extern void FVAutoCounter(FontViewBase
*fv
);
275 extern void FVDontAutoHint(FontViewBase
*fv
);
276 extern void FVAutoInstr(FontViewBase
*fv
);
277 extern void FVClearInstrs(FontViewBase
*fv
);
278 extern void FVClearHints(FontViewBase
*fv
);
279 extern void SCAutoTrace(SplineChar
*sc
,int layer
, int ask
);
280 extern char *FindAutoTraceName(void);
281 extern void *GetAutoTraceArgs(void);
282 extern void SetAutoTraceArgs(void *a
);
283 extern char *FindMFName(void);
284 extern char *ProgramExists(char *prog
,char *buffer
);
285 extern void MfArgsInit(void);
286 extern void FVAutoTrace(FontViewBase
*fv
,int ask
);
287 extern void FVAddEncodingSlot(FontViewBase
*fv
,int gid
);
288 extern int FVImportMult(FontViewBase
*fv
, char *filename
,int toback
,int bf
);
289 extern int FVImportBDF(FontViewBase
*fv
, char *filename
,int ispk
, int toback
);
290 extern void MergeFont(FontViewBase
*fv
,SplineFont
*other
,int preserveCrossFontKerning
);
291 extern int FVImportImages(FontViewBase
*fv
,char *path
,int isimage
,int toback
,int flags
);
292 extern int FVImportImageTemplate(FontViewBase
*fv
,char *path
,int isimage
,int toback
,int flags
);
293 extern void ScriptPrint(FontViewBase
*fv
,int type
,int32
*pointsizes
,char *samplefile
,
294 unichar_t
*sample
, char *outputfile
);
295 extern int FVBParseSelectByPST(FontViewBase
*fv
,struct lookup_subtable
*sub
,
297 extern int SFScaleToEm(SplineFont
*sf
, int ascent
, int descent
);
298 extern void TransHints(StemInfo
*stem
,real mul1
, real off1
, real mul2
, real off2
, int round_to_int
);
299 extern void TransDStemHints(DStemInfo
*ds
,real xmul
, real xoff
, real ymul
, real yoff
, int round_to_int
);
300 extern void VrTrans(struct vr
*vr
,real transform
[6]);
301 extern int SFNLTrans(FontViewBase
*fv
,char *x_expr
,char *y_expr
);
302 extern void FVPointOfView(FontViewBase
*fv
,struct pov_data
*);
303 extern void FVStrokeItScript(void *fv
, StrokeInfo
*si
);
304 extern void FVOutline(struct fontviewbase
*fv
, real width
);
305 extern void FVInline(struct fontviewbase
*fv
, real width
, real inset
);
306 extern void FVShadow(struct fontviewbase
*fv
,real angle
, real outline_width
,
307 real shadow_length
,int wireframe
);
308 extern void CI_Init(struct counterinfo
*ci
,SplineFont
*sf
);
309 extern void FVEmbolden(struct fontviewbase
*fv
,enum embolden_type type
,struct lcg_zones
*zones
);
310 extern void FVCondenseExtend(struct fontviewbase
*fv
,struct counterinfo
*ci
);
311 extern void ScriptSCCondenseExtend(SplineChar
*sc
,struct counterinfo
*ci
);
314 double lc_stem_width
, uc_stem_width
;
315 double stem_factor
, v_stem_factor
;
316 double xheight
, scheight
, capheight
;
317 double vscale
, hscale
;
318 char *extension_for_letters
, *extension_for_symbols
;
322 double italic_angle
, tan_ia
;
325 extern void SmallCapsFindConstants(struct smallcaps
*small
, SplineFont
*sf
,
328 enum glyphchange_type
{ gc_generic
, gc_smallcaps
, gc_subsuper
, gc_max
};
330 struct genericchange
{
331 enum glyphchange_type gc
;
333 char *glyph_extension
;
334 char *extension_for_letters
, *extension_for_symbols
;
335 double stem_height_scale
, stem_width_scale
;
336 double stem_height_add
, stem_width_add
;
337 double serif_height_scale
, serif_width_scale
;
338 double seirf_height_add
, serif_width_add
;
339 double hcounter_scale
, hcounter_add
;
340 double lsb_scale
, lsb_add
;
341 double rsb_scale
, rsb_add
;
342 uint8 center_in_hor_advance
;
343 uint8 use_vert_mapping
;
344 uint8 do_smallcap_symbols
;
345 uint8 petite
; /* generate petite caps rather than smallcaps */
346 double vcounter_scale
, vcounter_add
; /* If not using mapping */
347 double v_scale
; /* If using mapping */
350 struct position_maps
{
351 double current
, desired
;
352 double cur_width
, des_width
;
356 struct fixed_maps g
; /* Adjusted for each glyph */
357 double vertical_offset
;
358 unsigned int dstem_control
, serif_control
;
359 struct smallcaps
*small
;
360 /* Filled in by called routine */
363 double italic_angle
, tan_ia
;
366 extern void FVAddSmallCaps(FontViewBase
*fv
,struct genericchange
*genchange
);
367 extern void FVGenericChange(FontViewBase
*fv
,struct genericchange
*genchange
);
368 extern void CVGenericChange(CharViewBase
*cv
,struct genericchange
*genchange
);
371 double xheight_current
, xheight_desired
;
375 extern void InitXHeightInfo(SplineFont
*sf
, int layer
, struct xheightinfo
*xi
);
376 extern void ChangeXHeight(FontViewBase
*fv
,CharViewBase
*cv
, struct xheightinfo
*xi
);
377 extern SplineSet
*SSControlStems(SplineSet
*ss
,
378 double stemwidthscale
, double stemheightscale
,
379 double hscale
, double vscale
, double xheight
);
380 extern void MakeItalic(FontViewBase
*fv
,CharViewBase
*cv
,ItalicInfo
*ii
);
381 extern int FVReplaceAll( FontViewBase
*fv
, SplineSet
*find
, SplineSet
*rpl
, double fudge
, int flags
);
382 extern void FVBReplaceOutlineWithReference( FontViewBase
*fv
, double fudge
);
383 extern void FVCorrectReferences(FontViewBase
*fv
);
384 extern void _FVSimplify(FontViewBase
*fv
,struct simplifyinfo
*smpl
);
385 extern void UnlinkThisReference(FontViewBase
*fv
,SplineChar
*sc
,int layer
);
386 extern FontViewBase
*ViewPostscriptFont(char *filename
,int openflags
);
387 extern void FVBuildAccent(FontViewBase
*fv
,int onlyaccents
);
388 extern void FVRemoveKerns(FontViewBase
*fv
);
389 extern void FVRemoveVKerns(FontViewBase
*fv
);
390 extern void FVVKernFromHKern(FontViewBase
*fv
);
391 extern void FVAddUnencoded(FontViewBase
*fv
, int cnt
);
392 extern void FVRemoveUnused(FontViewBase
*fv
);
393 extern void FVCompact(FontViewBase
*fv
);
394 extern void FVDetachGlyphs(FontViewBase
*fv
);
395 extern void FVDetachAndRemoveGlyphs(FontViewBase
*fv
);
396 extern int AutoWidthScript(FontViewBase
*fv
,int spacing
);
397 extern int AutoKernScript(FontViewBase
*fv
,int spacing
, int threshold
,
398 struct lookup_subtable
*sub
, char *kernfile
);
401 extern void DictionaryFree(struct dictionary
*dica
);
404 extern void BCTrans(BDFFont
*bdf
,BDFChar
*bc
,BVTFunc
*bvts
,FontViewBase
*fv
);
405 extern void BCSetPoint(BDFChar
*bc
, int x
, int y
, int color
);
406 extern void BCTransFunc(BDFChar
*bc
,enum bvtools type
,int xoff
,int yoff
);
407 extern void skewselect(BVTFunc
*bvtf
,real t
);
408 extern void BCExpandBitmapToEmBox(BDFChar
*bc
, int xmin
, int ymin
, int xmax
, int ymax
);
410 extern BDFFloat
*BDFFloatCreate(BDFChar
*bc
,int xmin
,int xmax
,int ymin
,int ymax
, int clear
);
411 extern BDFFloat
*BDFFloatCopy(BDFFloat
*sel
);
412 extern BDFFloat
*BDFFloatConvert(BDFFloat
*sel
,int newdepth
, int olddepth
);
413 extern void BDFFloatFree(BDFFloat
*sel
);
415 extern int CVLayer(CharViewBase
*cv
);
416 extern Undoes
*CVPreserveStateHints(CharViewBase
*cv
);
417 extern Undoes
*CVPreserveState(CharViewBase
*cv
);
418 extern Undoes
*CVPreserveWidth(CharViewBase
*cv
,int width
);
419 extern Undoes
*CVPreserveVWidth(CharViewBase
*cv
,int vwidth
);
420 extern void CVDoRedo(CharViewBase
*cv
);
421 extern void CVDoUndo(CharViewBase
*cv
);
422 extern void CVRemoveTopUndo(CharViewBase
*cv
);
423 extern void CopySelected(CharViewBase
*cv
,int doanchors
);
424 extern void CVCopyGridFit(CharViewBase
*cv
);
425 extern void CopyWidth(CharViewBase
*cv
,enum undotype
);
426 extern void PasteToCV(CharViewBase
*cv
);
427 extern void CVYPerspective(CharViewBase
*cv
,double x_vanish
, double y_vanish
);
428 extern void ScriptSCEmbolden(SplineChar
*sc
,int layer
,enum embolden_type type
,struct lcg_zones
*zones
);
429 extern void CVEmbolden(CharViewBase
*cv
,enum embolden_type type
,struct lcg_zones
*zones
);
430 extern void SCCondenseExtend(struct counterinfo
*ci
,SplineChar
*sc
, int layer
,
432 extern void SCClearSelPt(SplineChar
*sc
);
433 extern void SC_MoreLayers(SplineChar
*,Layer
*old
);
434 extern void SCLayersChange(SplineChar
*sc
);
435 extern void SFLayerChange(SplineFont
*sf
);
436 extern void SCTile(SplineChar
*sc
,int layer
);
437 extern void _CVMenuMakeLine(CharViewBase
*cv
,int do_arc
,int ellipse_to_back
);
438 /* Ellipse to back is a debugging flag and adds the generated ellipse to */
439 /* the background layer so we can look at it. I thought it might actually*/
440 /* be useful, so I left it in. Activated with the Alt key in the menu */
442 extern void MVCopyChar(FontViewBase
*fv
, BDFFont
*bdf
, SplineChar
*sc
, enum fvcopy_type fullcopy
);
443 extern void PasteIntoMV(FontViewBase
*fv
, BDFFont
*bdf
,SplineChar
*sc
, int doclear
);
445 extern void ExecuteScriptFile(FontViewBase
*fv
, SplineChar
*sc
, char *filename
);
447 extern int HasLicense(SplineFont
*,FILE *);
448 extern int OFLibUploadFont(OFLibData
*);
450 enum search_flags
{ sv_reverse
= 0x1, sv_flips
= 0x2, sv_rotate
= 0x4,
451 sv_scale
= 0x8, sv_endpoints
=0x10 };
452 typedef struct searchdata
{
453 SplineChar sc_srch
, sc_rpl
;
454 SplineSet
*path
, *revpath
, *replacepath
, *revreplace
;
455 int pointcnt
, rpointcnt
;
457 real fudge_percent
; /* a value of .05 here represents 5% (we don't store the integer) */
458 unsigned int tryreverse
: 1;
459 unsigned int tryflips
: 1;
460 unsigned int tryrotate
: 1;
461 unsigned int tryscale
: 1;
462 unsigned int endpoints
: 1; /* Don't match endpoints, use them for direction only */
463 unsigned int onlyselected
: 1;
464 unsigned int subpatternsearch
: 1;
465 unsigned int doreplace
: 1;
466 unsigned int replaceall
: 1;
467 unsigned int findall
: 1;
468 unsigned int searchback
: 1;
469 unsigned int wrap
: 1;
470 unsigned int wasreversed
: 1;
471 unsigned int replacewithref
: 1;
472 unsigned int already_complained
: 1; /* User has already been alerted to the fact that we've converted splines to refs and lost the instructions */
473 SplineSet
*matched_spl
;
474 SplinePoint
*matched_sp
, *last_sp
;
475 real matched_rot
, matched_scale
;
476 real matched_x
, matched_y
;
477 double matched_co
, matched_si
; /* Precomputed sin, cos */
478 enum flipset
{ flip_none
= 0, flip_x
, flip_y
, flip_xy
} matched_flip
;
480 unsigned long long matched_refs
; /* Bit map of which refs in the char were matched */
481 unsigned long long matched_ss
; /* Bit map of which splines in the char were matched */
482 /* In multi-path mode */
483 unsigned long long matched_ss_start
;/* Bit map of which splines we tried to start matches with */
485 unsigned long matched_refs
;
486 unsigned long matched_ss
;
487 unsigned long matched_ss_start
;
494 extern struct searchdata
*SDFromContour( FontViewBase
*fv
, SplineSet
*find
, double fudge
, int flags
);
495 extern SplineChar
*SDFindNext(struct searchdata
*sv
);
497 extern struct python_import_export
{
498 struct _object
*import
; /* None becomes NULL */
499 struct _object
*export
; /* None becomes NULL */
500 struct _object
*data
; /* None stays None */
503 char *all_extensions
;
505 extern void PyFF_SCExport(SplineChar
*sc
,int ie_index
,char *filename
,
507 extern void PyFF_SCImport(SplineChar
*sc
,int ie_index
,char *filename
,
508 int layer
, int clear
);
509 extern void PyFF_InitFontHook(FontViewBase
*fv
);
511 extern void LookupInit(void);
512 extern int UserFeaturesDiffer(void);
513 extern uint32
*StdFeaturesOfScript(uint32 script
);
515 enum byte_types
{ bt_instr
, bt_cnt
, bt_byte
, bt_wordhi
, bt_wordlo
, bt_impliedreturn
};
520 unsigned int changed
: 1;
521 unsigned int in_composit
: 1;
526 struct instrdata
*next
;
529 extern uint8
*_IVParse(SplineFont
*sf
, char *text
, int *len
,
530 void (*IVError
)(void *,char *, int), void *iv
);
531 extern char *_IVUnParseInstrs(uint8
*instrs
,int instr_cnt
);
533 extern int BitmapControl(FontViewBase
*fv
,int32
*sizes
,int isavail
,int rasterize
);
534 extern void FVSetWidthScript(FontViewBase
*fv
,enum widthtype wtype
,int val
,int incr
);
535 extern void FVMetricsCenter(FontViewBase
*fv
,int docenter
);
536 extern void FVRevert(FontViewBase
*fv
);
537 extern void FVRevertBackup(FontViewBase
*fv
);
538 extern void FVRevertGlyph(FontViewBase
*fv
);
539 extern int MMReblend(FontViewBase
*fv
, MMSet
*mm
);
540 extern FontViewBase
*MMCreateBlendedFont(MMSet
*mm
,FontViewBase
*fv
,real blends
[MmMax
],int tonew
);