summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttf.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttf.h')
-rw-r--r--Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttf.h871
1 files changed, 0 insertions, 871 deletions
diff --git a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttf.h b/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttf.h
deleted file mode 100644
index db19f5dc863..00000000000
--- a/Build/source/texk/dvisvgm/dvisvgm-src/libs/ff-woff/fontforge/ttf.h
+++ /dev/null
@@ -1,871 +0,0 @@
-/* Copyright (C) 2001-2012 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.
- */
-
-#include "psfont.h" /* for struct fddata */
-
-#define MAC_DELETED_GLYPH_NAME "<Delete>"
-
-struct taxis {
- uint32 tag;
- real min, def, max; /* in user design space */
- int nameid;
- int paircount;
- real *mapfrom; /* after conversion from [-1,1] */
- real *mapto; /* secondary conversiont to [-1,1] */
-};
-
-struct tinstance {
- int nameid;
- real *coords; /* Location along axes array[axis_count] */
-};
-
-struct tuples {
- real *coords; /* Location along axes array[axis_count] */
- SplineChar **chars; /* Varied glyphs, array parallels one in info */
- struct ttf_table *cvt;
- KernClass *khead, *klast, *vkhead, *vklast; /* Varied kern classes */
-};
-
-struct variations {
- int axis_count;
- struct taxis *axes; /* Array of axis_count entries */
- int instance_count; /* Not master designs, but named interpolations in design space */
- struct tinstance *instances;
- int tuple_count;
- struct tuples *tuples;
-};
-
-enum gsub_inusetype { git_normal, git_justinuse, git_findnames };
-
-struct macidname {
- int id;
- struct macname *head, *last;
- struct macidname *next;
-};
-
-struct savetab {
- uint32 tag;
- uint32 offset;
- int len;
-};
-
-struct ttfinfo {
- int emsize; /* ascent + descent? from the head table */
- int ascent, descent; /* from the hhea table */
- /* not the usWinAscent from the OS/2 table */
- int vertical_origin; /* if vmetrics are present */
- int width_cnt; /* from the hhea table, in the hmtx table */
- int glyph_cnt; /* from maxp table (or cff table) */
- unsigned int index_to_loc_is_long:1; /* in head table */
- unsigned int is_ttc:1; /* Is it a font collection? */
- unsigned int is_onebyte:1; /* Is it a one byte encoding? */
- unsigned int twobytesymbol:1; /* it had a symbol encoding which we converted to unicode */
- unsigned int complainedbeyondglyfend:1; /* Don't complain about this more than once */
- unsigned int extensionrequested:1; /* Only ask once for a copy of a font containing extension subtables */
- unsigned int to_order2:1; /* We are to leave the font as truetype (order2) splines, else convert to ps */
- unsigned int complainedmultname:1; /* Don't complain about this more than once */
- unsigned int strokedfont: 1; /* painttype==2 for otf */
- unsigned int use_typo_metrics: 1;
- unsigned int weight_width_slope_only: 1;
- unsigned int optimized_for_cleartype: 1;
- unsigned int apply_lsb: 1;
- int sfntRevision;
- enum openflags openflags;
- /* Mac fonts platform=0/1, platform specific enc id, roman=0, english is lang code 0 */
- /* iso platform=2, platform specific enc id, latin1=0/2, no language */
- /* microsoft platform=3, platform specific enc id, 1, english is lang code 0x??09 */
- char *copyright; /* from the name table, nameid=0 */
- char *familyname; /* nameid=1 */
- char *fullname; /* nameid=4 */
- char *weight;
- char *version; /* nameid=5 */
- char *fontname; /* postscript font name, nameid=6 */
- char *xuid; /* Only for open type cff fonts */
- int uniqueid;
- real italicAngle; /* from post table */
- int upos, uwidth; /* underline pos, width from post table */
- real strokewidth;
- int fstype;
- struct psdict *private; /* Only for open type cff fonts */
- EncMap *map;
- enum uni_interp uni_interp;
- struct pfminfo pfminfo;
- short os2_version;
- short gasp_version;
- int dupnamestate;
- struct ttflangname *names;
- char *fontcomments, *fontlog;
- char **cvt_names;
- SplineChar **chars; /* from all over, glyf table for contours */
- /* cmap table for encodings */
- /* hmtx table for widths */
- /* post table for names */
- /* Or from CFF table for everything in opentype */
- LayerInfo *layers;
- int layer_cnt;
- BDFFont *bitmaps;
- char *cidregistry, *ordering;
- int supplement;
- real cidfontversion;
- int subfontcnt;
- SplineFont **subfonts;
- char *inuse; /* What glyphs are used by this font in the ttc */
-
- int numtables;
- /* BASE */
- uint32 base_start; /* Offset from sof to start of 'BASE' table */
- /* CFF */
- uint32 cff_start; /* Offset from sof to start of postscript compact font format */
- uint32 cff_length;
- /* cmap */
- uint32 encoding_start; /* Offset from sof to start of encoding table */
- uint32 vs_start; /* Offset within 'cmap' to variant selector table */
- /* gasp */
- uint32 gasp_start;
- /* glyf */
- uint32 glyph_start; /* Offset from sof to start of glyph table */
- uint32 glyph_length;
- /* GDEF */
- uint32 gdef_start; /* Offset from sof to start of GDEF table (glyph class defn, ligature carets) */
- uint32 gdef_length;
- /* GPOS */
- uint32 gpos_start; /* Offset from sof to start of GPOS table */
- uint32 gpos_length;
- /* GSUB */
- uint32 gsub_start; /* Offset from sof to start of GSUB table */
- uint32 gsub_length;
- uint32 g_bounds; /* Filled in with g???_start+g???_length */
- /* EBDT, bdat */
- uint32 bitmapdata_start; /* Offset to start of bitmap data */
- uint32 bitmapdata_length;
- /* EBLT, bloc */
- uint32 bitmaploc_start; /* Offset to start of bitmap locator data */
- uint32 bitmaploc_length;
- /* gvar, etc. */
- uint32 gvar_start, gvar_len;
- uint32 fvar_start, fvar_len;
- uint32 avar_start, avar_len;
- uint32 cvar_start, cvar_len;
- /* head */
- uint32 head_start;
- /* hhea */
- uint32 hhea_start;
- /* hmtx */
- uint32 hmetrics_start;
- /* JSTF */
- uint32 jstf_start;
- uint32 jstf_length;
- /* kern */
- uint32 kern_start;
- /* loca */
- uint32 glyphlocations_start;/* there are glyph_cnt of these, from maxp tab */
- uint32 loca_length; /* actually glypn_cnt is wrong. Use the table length (divided by size) instead */
- /* maxp */
- uint32 maxp_start; /* maximum number of glyphs */
- uint32 maxp_len;
- /* name */
- uint32 copyright_start; /* copyright and fontname */
- /* post */
- uint32 postscript_start; /* names for the glyphs, italic angle, etc. */
- /* OS/2 */
- uint32 os2_start;
- /* TYP1 */
- uint32 typ1_start; /* For Adobe's? Apple's? attempt to stuff a type1 font into an sfnt wrapper */
- uint32 typ1_length;
- /* vhea */
- uint32 vhea_start;
- /* vmtx */
- uint32 vmetrics_start;
- /* VORG */
- uint32 vorg_start;
-
- /* PfEd -- FontForge/PfaEdit specific info */
- uint32 pfed_start;
- /* TeX -- TeX table, also non-standard */
- uint32 tex_start;
- /* BDF -- BDF properties, also non-standard */
- uint32 bdf_start;
- /* FFTM -- FontForge timestamps */
- uint32 fftm_start;
-
- /* Apple Advanced Typography Tables */
- uint32 prop_start;
- uint32 lcar_start;
- uint32 opbd_start;
- uint32 acnt_start;
- uint32 feat_start;
- uint32 mort_start;
- uint32 morx_start;
- uint32 bsln_start;
-
- /* MATH Table */
- uint32 math_start;
- uint32 math_length;
-
- /* Info for instructions */
- uint32 cvt_start, cvt_len;
- uint32 prep_start, prep_len;
- uint32 fpgm_start, fpgm_len;
-
- unsigned int one_of_many: 1; /* A TTCF file, or a opentype font with multiple fonts */
- unsigned int obscomplain: 1; /* We've complained about obsolete format 3 in EBDT table */
- unsigned int cmpcomplain: 1; /* We've complained about compressed format 4 in EBDT */
- unsigned int unkcomplain: 1; /* We've complained about unknown formats in EBDT */
- unsigned int comcomplain: 1; /* We've complained about composit formats in EBDT */
- unsigned int onlystrikes: 1; /* Only read in the bitmaps, not the outlines */
- unsigned int onlyonestrike: 1; /* Only read in one bitmap (strike) */
- unsigned int barecff: 1; /* pay attention to the encoding in the cff file, we won't have a cmap */
- unsigned int wdthcomplain: 1; /* We've complained about advance widths exceding the max */
- unsigned int bbcomplain: 1; /* We've complained about glyphs being outside the bounding box */
- unsigned int gbbcomplain: 1; /* We've complained about points being outside the bounding box */
-
- int platform, specific; /* values of the encoding we chose to use */
-
- int anchor_class_cnt; /* For GPOS */
- int anchor_merge_cnt;
- AnchorClass *ahead, *alast;
-
- KernClass *khead, *klast, *vkhead, *vklast;
-
- OTLookup *gpos_lookups, *gsub_lookups, *cur_lookups;
-
- OTLookup *mort_subs_lookup, *mort_pos_lookup2;
- int mort_r2l, mort_tag_mac, mort_feat, mort_setting, mort_is_nested;
- uint16 *morx_classes;
- uint16 *bsln_values;
-
- int mort_max;
-
- struct ttf_table *tabs;
- FPST *possub;
- ASM *sm;
- MacFeat *features;
- char *chosenname;
- int macstyle;
- int lookup_cnt; /* Max lookup in current GPOS/GSUB table */
- int feature_cnt; /* Max feature in current GPOS/GSUB table */
- struct variations *variations;
- struct macidname *macstrids;
- struct fontdict *fd; /* For reading in Type42 fonts. Glyph names in postscript section must be associated with glyphs in TTF section */
- int savecnt;
- struct savetab *savetab;
- int32 last_size_pos;
- uint16 design_size;
- uint16 fontstyle_id;
- struct otfname *fontstyle_name;
- uint16 design_range_bottom, design_range_top;
- struct texdata texdata;
- int mark_class_cnt;
- char **mark_classes; /* glyph name list */
- char **mark_class_names; /* used within ff (utf8) */
- int mark_set_cnt;
- char **mark_sets; /* glyph name list */
- char **mark_set_names; /* used within ff (utf8) */
- uint8 warned_morx_out_of_bounds_glyph;
- int badgid_cnt, badgid_max; /* Used when parsing apple morx tables*/
- SplineChar **badgids; /* which use out of range glyph IDs as temporary flags */
- long long creationtime; /* seconds since 1970 */
- long long modificationtime;
- int gasp_cnt;
- struct gasp *gasp;
- struct MATH *math;
- /* Set of errors we found when loading the font */
- unsigned int bad_ps_fontname: 1;
- unsigned int bad_glyph_data: 1;
- unsigned int bad_cff: 1;
- unsigned int bad_metrics: 1;
- unsigned int bad_cmap: 1;
- unsigned int bad_embedded_bitmap: 1;
- unsigned int bad_gx: 1;
- unsigned int bad_ot: 1;
- unsigned int bad_os2_version: 1;
- unsigned int bad_sfnt_header: 1;
- Layer guidelines;
- struct Base *horiz_base, *vert_base;
- Justify *justify;
-
- int advanceWidthMax;
- int fbb[4]; /* x,yMin x,yMax*/
- int isFixedPitch;
-
- uint32 jstf_script;
- uint32 jstf_lang;
- int16 jstf_isShrink, jstf_prio, jstf_lcnt;
- struct otffeatname *feat_names;
- enum gsub_inusetype justinuse;
- long ttfFileSize;
-};
-
-struct taboff {
- uint32 tag; /* Table name */
- uint32 checksum;/* for table */
- uint32 offset; /* to start of table in file */
- uint32 length;
- FILE *data;
- uint16 dup_of;
- uint16 orderingval;
-};
-
-#define MAX_TAB 48
-struct tabdir {
- int32 version; /* 0x00010000 */
- uint16 numtab;
- uint16 searchRange; /* (Max power of 2 <= numtab) *16 */
- uint16 entrySel; /* Log2(Max power of 2 <= numtab ) */
- uint16 rangeShift; /* numtab*16 - searchRange */
- struct taboff tabs[MAX_TAB];/* room for all the tables */
- /* Not in any particular order. */
- struct taboff *ordered[MAX_TAB]; /* Ordered the way the tables should be output in file */
- struct taboff *alpha[MAX_TAB]; /* Ordered alphabetically by tag for the ttf header */
-};
-
-struct glyphhead {
- int16 numContours;
- int16 xmin;
- int16 ymin;
- int16 xmax;
- int16 ymax;
-};
-
-struct head {
- int32 version; /* 0x00010000 */
- int32 revision; /* 0 */
- uint32 checksumAdj; /* set to 0, sum entire font, store 0xb1b0afba-sum */
- uint32 magicNum; /* 0x5f0f3cf5 */
- uint16 flags; /* 1 */
- uint16 emunits; /* sf->ascent+sf->descent */
- int32 createtime[2];/* number of seconds since 1904 */
- int32 modtime[2];
- int16 xmin; /* min for entire font */
- int16 ymin;
- int16 xmax;
- int16 ymax;
- uint16 macstyle; /* 1=>Bold, 2=>Italic */
- uint16 lowestreadable; /* size in pixels. Say about 10? */
- int16 dirhint; /* 0=>mixed directional characters, */
- int16 locais32; /* is the location table 32bits or 16, 0=>16, 1=>32 */
- int16 glyphformat; /* 0 */
- uint16 mbz; /* padding */
-};
-
-struct hhead {
- int32 version; /* 0x00010000 */
- int16 ascender; /* sf->ascender */
- int16 descender; /* -sf->descender */
- int16 linegap; /* 0 */
- int16 maxwidth; /* of all characters */
- int16 minlsb; /* How is this different from xmin above? */
- int16 minrsb;
- int16 maxextent; /* How is this different from xmax above? */
- int16 caretSlopeRise;/* Uh... let's say 1? */
- int16 caretSlopeRun;/* Uh... let's say 0 */
- /* not exactly specified, but FontValidator wants this to match italicangle */
- int16 mbz[5];
- int16 metricformat; /* 0 */
- uint16 numMetrics; /* just set to glyph count */
-};
-
-struct kp {
- uint16 left; /* left glyph num */
- uint16 right; /* right glyph num */
- /* table is ordered by these two above treated as uint32 */
- int16 offset; /* kern amount */
-};
-
-struct kern {
- uint16 version; /* 0 */
- uint16 ntab; /* 1, number of subtables */
- /* first (and only) subtable */
- uint16 stversion; /* 0 */
- uint16 length; /* length of subtable beginning at &stversion */
- uint16 coverage; /* 1, (set of flags&format) */
- uint16 nPairs; /* number of kern pairs */
- uint16 searchRange; /* (Max power of 2 <= nPairs) *6 */
- uint16 entrySel; /* Log2(Max power of 2 <= nPairs ) */
- uint16 rangeShift; /* numtab*6 - searchRange */
- struct kp *kerns; /* Array should be nPairs big */
-};
-
-struct maxp {
- int32 version; /* 0x00010000 */
- uint16 numGlyphs;
- uint16 maxPoints; /* max number of points in a simple glyph */
- uint16 maxContours; /* max number of paths in a simple glyph */
- uint16 maxCompositPts;
- uint16 maxCompositCtrs;
- uint16 maxZones; /* 1 */
- uint16 maxTwilightPts; /* 0 */
- uint16 maxStorage; /* 0 */
- uint16 maxFDEFs; /* 0 */
- uint16 maxIDEFs; /* 0 */
- uint16 maxStack; /* 0 */
- uint16 maxglyphInstr;/* 0 */
- uint16 maxnumcomponents; /* Maximum number of refs in any composit */
- uint16 maxcomponentdepth;
- /* Apple docs say: 0 (if no composits), maximum value 1 (one level of composit) */
- /* OpenType docs say: 1 (if no composits), any depth allowed */
-};
-
-struct namerec {
- uint16 platform; /* 3 => MS */
- uint16 specific; /* 1 */
- uint16 language; /* 0x0409 */
- uint16 nameid; /* 0=>copyright, 1=>family, 2=>weight, 4=>fullname */
- /* 5=>version, 6=>postscript name */
- uint16 strlen;
- uint16 stroff;
-};
-
-struct os2 {
- uint16 version; /* 1 */
- int16 avgCharWid; /* average all chars (v3) see v2 definition below */
- uint16 weightClass; /* 100=>thin, 200=>extra-light, 300=>light, 400=>normal, */
- /* 500=>Medium, 600=>semi-bold, 700=>bold, 800=>extra-bold, */
- /* 900=>black */
- uint16 widthClass; /* 75=>condensed, 100, 125=>expanded */
- int16 fstype; /* 0x0008 => allow embedded editing */
- int16 ysubXSize; /* emsize/5 */
- int16 ysubYSize; /* emsize/5 */
- int16 ysubXOff; /* 0 */
- int16 ysubYOff; /* emsize/5 */
- int16 ysupXSize; /* emsize/5 */
- int16 ysupYSize; /* emsize/5 */
- int16 ysupXOff; /* 0 */
- int16 ysupYOff; /* emsize/5 */
- int16 yStrikeoutSize; /* 102/2048 *emsize */
- int16 yStrikeoutPos; /* 530/2048 *emsize */
- int16 sFamilyClass; /* ??? 0 */
- /* high order byte is the "class", low order byte the sub class */
- /* class = 0 => no classification */
- /* class = 1 => old style serifs */
- /* subclass 0, no class; 1 ibm rounded; 2 garalde; 3 venetian; 4 mod venitian; 5 dutch modern; 6 dutch trad; 7 contemporary; 8 caligraphic; 15 misc */
- /* class = 2 => transitional serifs */
- /* subclass 0, no class; 1 drect line; 2 script; 15 misc */
- /* class = 3 => modern serifs */
- /* subclass: 1, italian; 2, script */
- /* class = 4 => clarendon serifs */
- /* subclass: 1, clarendon; 2, modern; 3 trad; 4 newspaper; 5 stub; 6 monotone; 7 typewriter */
- /* class = 5 => slab serifs */
- /* subclass: 1, monotone; 2, humanist; 3 geometric; 4 swiss; 5 typewriter */
- /* class = 7 => freeform serifs */
- /* subclass: 1, modern */
- /* class = 8 => sans serif */
- /* subclass: 1, ibm neogrotesque; 2 humanist; 3 low-x rounded; 4 high-x rounded; 5 neo-grotesque; 6 mod neo-grot; 9 typewriter; 10 matrix */
- /* class = 9 => ornamentals */
- /* subclass: 1, engraver; 2 black letter; 3 decorative; 4 3D */
- /* class = 10 => scripts */
- /* subclass: 1, uncial; 2 brush joined; 3 formal joined; 4 monotone joined; 5 calligraphic; 6 brush unjoined; 7 formal unjoined; 8 monotone unjoined */
- /* class = 12 => symbolic */
- /* subclass: 3 mixed serif; 6 old style serif; 7 neo-grotesque sans; */
- char panose[10]; /* can be set to zero */
- uint32 unicoderange[4];
- /* 1<<0=>ascii, 1<<1 => latin1, 2=>100-17f, 3=>180-24f, 4=>250-2af */
- /* 5=> 2b0-2ff, 6=>300-36f, ... */
- char achVendID[4]; /* can be zero */
- uint16 fsSel; /* 1=> italic, 32=>bold, 64 => regular */
- /* 2=>underscore, 4=>negative, 8->outlined, 16=>strikeout */
- /* version 4 of OS/2 */
- /* 128->don't use win_ascent/descent for line spacing */
- /* 256=>family varies on weight width slope only */
- /* 512=>oblique (as opposed to italic) */
- uint16 firstcharindex; /* minimum unicode encoding */
- uint16 lastcharindex; /* maximum unicode encoding */
- uint16 ascender; /* font ascender height (not ascent) */
- uint16 descender; /* font descender height */
- uint16 linegap; /* 0 */
- uint16 winascent; /* ymax */
- uint16 windescent; /* ymin */
- uint32 ulCodePage[2];
- /* 1<<0 => latin1, 1<<1=>latin2, cyrillic, greek, turkish, hebrew, arabic */
- /* 1<<30 => mac, 1<<31 => symbol */
- /* OTF stuff (version 2 of OS/2) */
- short xHeight;
- short capHeight;
- short defChar;
- short breakChar;
- short maxContext;
- /* V3 of OS/2 has no additional data */
- /* V4 of OS/2 has no additional data */
-
- int v1_avgCharWid; /* 1&2 Weighted average of the lower case letters and space */
- int v3_avgCharWid; /* 3&4 average over all non-zero width glyphs */
-};
-
-struct glyphinfo {
- struct maxp *maxp; /* this one is given to dumpglyphs, rest blank */
- uint32 *loca;
- FILE *glyphs;
- FILE *hmtx;
- int hmtxlen;
- FILE *vmtx;
- int vmtxlen;
- int next_glyph;
- int glyph_len;
- int xmin, ymin, xmax, ymax;
- BlueData bd;
- int strikecnt; /* number of bitmaps to dump */
- int lasthwidth, lastvwidth; /* encoding of last glyph for which we generate a full metrics entry */
- int hfullcnt, vfullcnt;
- int flags;
- int fixed_width;
- int32 *bsizes;
- unsigned int dovariations: 1;
- unsigned int onlybitmaps: 1;
- unsigned int has_instrs: 1;
- unsigned int is_ttf: 1;
- unsigned int ttc_composite_font: 1;
- SplineFont *sf;
- int32 *pointcounts;
- int *bygid; /* glyph list */
- int gcnt;
- int layer;
-};
-
-struct vorg {
- uint16 majorVersion; /* 1 */
- uint16 minorVersion; /* 0 */
- short defaultVertOriginY; /* Y coord of default vertical origin in the design coordinate system */
- uint16 numVertOriginYMetrics; /* exceptions to the above, elements in following array */
-};
-
-struct feat_name {
- int strid;
- struct macname *mn, *smn;
-};
-
-struct other_names {
- int strid;
- struct macname *mn;
- struct other_names *next;
-};
-
-struct alltabs {
- struct tabdir tabdir;
- struct head head;
- struct hhead hhead;
- struct hhead vhead;
- struct maxp maxp;
- struct os2 os2;
- struct vorg vorg;
- FILE *loca;
- int localen;
- FILE *name;
- int namelen;
- FILE *post;
- int postlen;
- FILE *gpos; /* Used instead of kern for opentype (and other glyph positioning) */
- int gposlen;
- FILE *gsub; /* Used for ligatures and other substitutions */
- int gsublen;
- FILE *gdef; /* If we use mark to base we need this to tell the text processor what things are marks (the opentype docs say it is optional. They are wrong) */
- int gdeflen;
- FILE *kern;
- int kernlen;
- FILE *cmap;
- int cmaplen;
- FILE *headf;
- int headlen;
- FILE *hheadf;
- int hheadlen;
- FILE *maxpf;
- int maxplen;
- FILE *os2f;
- int os2len;
- FILE *math;
- int mathlen;
- FILE *base;
- int baselen;
- FILE *jstf;
- int jstflen;
- FILE *cvtf;
- int cvtlen;
- FILE *fpgmf; /* Copied from an original ttf file and dumped out. Never generated */
- int fpgmlen;
- FILE *prepf; /* Copied from an original ttf file and dumped out. Never generated */
- int preplen;
- FILE *vheadf;
- int vheadlen;
- FILE *vorgf;
- int vorglen;
- FILE *gaspf;
- int gasplen;
- FILE *cfff;
- int cfflen;
- FILE *sidf;
- FILE *sidh;
- FILE *charset;
- FILE *encoding;
- FILE *globalsubrs;
- FILE *private;
- FILE *charstrings;
- FILE *fdselect;
- FILE *fdarray;
- FILE *bdat; /* might be EBDT */
- int bdatlen;
- FILE *bloc; /* might be EBLC */
- int bloclen;
- FILE *ebsc;
- int ebsclen;
- FILE *prop;
- int proplen;
- FILE *opbd;
- int opbdlen;
- FILE *acnt;
- int acntlen;
- FILE *lcar;
- int lcarlen;
- FILE *feat;
- int featlen;
- FILE *morx;
- int morxlen;
- FILE *bsln;
- int bslnlen;
- FILE *pfed;
- int pfedlen;
- FILE *tex;
- int texlen;
- FILE *bdf;
- int bdflen;
- FILE *gvar;
- int gvarlen;
- FILE *fvar;
- int fvarlen;
- FILE *cvar;
- int cvarlen;
- FILE *avar;
- int avarlen;
- FILE *fftmf;
- int fftmlen;
- FILE *dsigf;
- int dsiglen;
- FILE *hdmxf;
- int hdmxlen;
- int defwid, nomwid;
- int sidcnt;
- int lenpos;
- int privatelen;
- unsigned int sidlongoffset: 1;
- unsigned int cfflongoffset: 1;
- unsigned int applemode: 1; /* Where apple & ms differ do things apple's way (bitmaps, name table PostScript) */
- unsigned int opentypemode: 1; /* Where apple & ms differ do things opentype's way (bitmaps, name table PostScript) */
- /* If both are set then try to generate both types of tables. Some things can't be fudged though (name table postscript) */
- unsigned int msbitmaps: 1;
- unsigned int applebitmaps: 1;
- unsigned int otbbitmaps: 1;
- unsigned int isotf: 1;
- unsigned int dovariations: 1; /* Output Apple *var tables (for mm fonts) */
- unsigned int error: 1;
- struct glyphinfo gi;
- int isfixed;
- struct fd2data *fds;
- int next_strid;
-
- struct feat_name *feat_name;
- struct other_names *other_names;
- struct macname2 *ordered_feat;
-
- int next_lookup; /* for doing nested lookups in contextual features */
- short *gn_sid;
- enum fontformat format;
- int fontstyle_name_strid; /* For GPOS 'size' */
- SplineFont *sf;
- EncMap *map;
- struct ttf_table *oldcvt;
- unsigned oldcvtlen;
-};
-
-struct subhead { uint16 first, cnt, delta, rangeoff; }; /* a sub header in 8/16 cmap table */
-
-enum touchflags { tf_x=1, tf_y=2, tf_d=4, tf_endcontour=0x80, tf_startcontour=0x40 };
-
-struct ct_branch {
- uint16 classnum;
- struct contexttree *branch;
-};
-
-struct ct_subs {
- struct fpst_rule *rule;
- struct contexttree *branch;/* if the rule ends here this will be null */
- uint16 thisclassnum;
-};
-
-struct contexttree {
- int depth;
- int branch_cnt; /* count of subbranches of this node */
- struct ct_branch *branches;
- struct fpst_rule *ends_here;
- int rule_cnt; /* count of rules which are active here */
- struct ct_subs *rules;
- int pending_pos;
- OTLookup *applymarkedsubs;
- OTLookup *applycursubs;
- uint16 marked_index, cur_index;
- uint8 markme;
- int state, next_state;
- struct contexttree *parent;
-};
-
- /* TrueType Composite glyph flags */
-#define _ARGS_ARE_WORDS 1
-#define _ARGS_ARE_XY 2
-#define _ROUND 4 /* round offsets so componant is on grid */
-#define _SCALE 8
-/* 0x10 is reserved */
-#define _MORE 0x20
-#define _XY_SCALE 0x40
-#define _MATRIX 0x80
-#define _INSTR 0x100
-#define _USE_MY_METRICS 0x200
-#define _OVERLAP_COMPOUND 0x400 /* Used in Apple GX fonts */
- /* Means the components overlap (which? this one and what other?) */
-/* Described in OpenType specs, not by Apple */
-/* amusingly, Apple supports but MS does not */
-/* MS says they support this after Win 2000 */
-#define _SCALED_OFFSETS 0x800 /* Use Apple definition of offset interpretation */
-#define _UNSCALED_OFFSETS 0x1000 /* Use MS definition */
-
-extern int ttfFixupRef(SplineChar **chars,int i);
-extern const char *cffnames[];
-extern const int nStdStrings;
-
- /* Open type Advanced Typography Tables */
-extern void otf_dumpgpos(struct alltabs *at, SplineFont *sf);
-extern void otf_dumpgsub(struct alltabs *at, SplineFont *sf);
-extern void otf_dumpgdef(struct alltabs *at, SplineFont *sf);
-extern void otf_dumpbase(struct alltabs *at, SplineFont *sf);
-extern void otf_dumpjstf(struct alltabs *at, SplineFont *sf);
-extern void otf_dump_dummydsig(struct alltabs *at, SplineFont *sf);
-extern int gdefclass(SplineChar *sc);
-
-extern void ttf_dumpkerns(struct alltabs *at, SplineFont *sf);
-extern void aat_dumplcar(struct alltabs *at, SplineFont *sf);
-extern void aat_dumpmorx(struct alltabs *at, SplineFont *sf);
-extern void aat_dumpopbd(struct alltabs *at, SplineFont *sf);
-extern void aat_dumpprop(struct alltabs *at, SplineFont *sf);
-extern void aat_dumpbsln(struct alltabs *at, SplineFont *sf);
-extern int LookupHasDefault(OTLookup *otl);
-extern int scriptsHaveDefault(struct scriptlanglist *sl);
-extern int FPSTisMacable(SplineFont *sf, FPST *fpst);
-
-extern int OTTagToMacFeature(uint32 tag, int *featureType,int *featureSetting);
-extern uint16 *props_array(SplineFont *sf,struct glyphinfo *gi);
-extern int haslrbounds(SplineChar *sc, PST **left, PST **right);
-extern int16 *PerGlyphDefBaseline(SplineFont *sf,int *def_baseline);
-extern void FigureBaseOffsets(SplineFont *sf,int def_bsln,int offsets[32]);
-
- /* Apple variation tables */
-extern int ContourPtNumMatch(MMSet *mm, int gid);
-extern int16 **SCFindDeltas(MMSet *mm, int gid, int *_ptcnt);
-extern int16 **CvtFindDeltas(MMSet *mm, int *_ptcnt);
-extern void ttf_dumpvariations(struct alltabs *at, SplineFont *sf);
-
-extern struct macsettingname {
- int mac_feature_type;
- int mac_feature_setting;
- uint32 otf_tag;
-} macfeat_otftag[], *user_macfeat_otftag;
-
- /* TrueType instructions */
-extern struct ttf_table *SFFindTable(SplineFont *sf,uint32 tag);
-
-extern int memushort(uint8 *data,int table_len, int offset);
-extern void memputshort(uint8 *data,int offset,uint16 val);
-extern int TTF__getcvtval(SplineFont *sf,int val);
-extern int TTF_getcvtval(SplineFont *sf,int val);
-
-extern int SSAddPoints(SplineSet *ss,int ptcnt,BasePoint *bp, char *flags);
-extern int Macable(SplineFont *sf, OTLookup *otl);
-
- /* Used by both otf and apple */
-extern int LigCaretCnt(SplineChar *sc);
-extern uint16 *ClassesFromNames(SplineFont *sf,char **classnames,int class_cnt,
- int numGlyphs, SplineChar ***glyphs, int apple_kc);
-extern SplineChar **SFGlyphsFromNames(SplineFont *sf,char *names);
-
-
-extern SplineChar **EntryExitDecompose(SplineFont *sf,AnchorClass *ac,
- struct glyphinfo *gi);
-extern void AnchorClassDecompose(SplineFont *sf,AnchorClass *_ac, int classcnt, int *subcnts,
- SplineChar ***marks,SplineChar ***base,
- SplineChar ***lig,SplineChar ***mkmk,
- struct glyphinfo *gi);
-
-extern void cvt_unix_to_1904( long long time, int32 result[2]);
-
-
- /* Non-standard tables */
- /* My PfEd table for FontForge/PfaEdit specific info */
-extern void pfed_dump(struct alltabs *at, SplineFont *sf);
-extern void pfed_read(FILE *ttf,struct ttfinfo *info);
- /* The TeX table, to contain stuff the TeX people want */
-extern void tex_dump(struct alltabs *at, SplineFont *sf);
-extern void tex_read(FILE *ttf,struct ttfinfo *info);
-
-extern void ttf_bdf_read(FILE *ttf,struct ttfinfo *info);
- /* The FFTM table, to some timestamps I'd like */
-extern int ttf_fftm_dump(SplineFont *sf,struct alltabs *at);
-
- /* The MATH table */
-extern void otf_dump_math(struct alltabs *at, SplineFont *sf);
-
-/* Known font parameters for 'TeX ' table (fontdims, spacing params, whatever you want to call them) */
- /* Used by all fonts */
-#define TeX_Slant CHR('S','l','n','t')
-#define TeX_Space CHR('S','p','a','c')
-#define TeX_Stretch CHR('S','t','r','e')
-#define TeX_Shrink CHR('S','h','n','k')
-#define TeX_XHeight CHR('X','H','g','t')
-#define TeX_Quad CHR('Q','u','a','d')
- /* Used by text fonts */
-#define TeX_ExtraSp CHR('E','x','S','p')
- /* Used by all math fonts */
-#define TeX_MathSp CHR('M','t','S','p')
- /* Used by math fonts */
-#define TeX_Num1 CHR('N','u','m','1')
-#define TeX_Num2 CHR('N','u','m','2')
-#define TeX_Num3 CHR('N','u','m','3')
-#define TeX_Denom1 CHR('D','n','m','1')
-#define TeX_Denom2 CHR('D','n','m','2')
-#define TeX_Sup1 CHR('S','u','p','1')
-#define TeX_Sup2 CHR('S','u','p','2')
-#define TeX_Sup3 CHR('S','u','p','3')
-#define TeX_Sub1 CHR('S','u','b','1')
-#define TeX_Sub2 CHR('S','u','b','2')
-#define TeX_SupDrop CHR('S','p','D','p')
-#define TeX_SubDrop CHR('S','b','D','p')
-#define TeX_Delim1 CHR('D','l','m','1')
-#define TeX_Delim2 CHR('D','l','m','2')
-#define TeX_AxisHeight CHR('A','x','H','t')
- /* Used by math extension fonts */
-#define TeX_DefRuleThick CHR('R','l','T','k')
-#define TeX_BigOpSpace1 CHR('B','O','S','1')
-#define TeX_BigOpSpace2 CHR('B','O','S','2')
-#define TeX_BigOpSpace3 CHR('B','O','S','3')
-#define TeX_BigOpSpace4 CHR('B','O','S','4')
-#define TeX_BigOpSpace5 CHR('B','O','S','5')
-
-extern void SFDummyUpCIDs(struct glyphinfo *gi,SplineFont *sf);