summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psfont.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psfont.h')
-rw-r--r--Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psfont.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psfont.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psfont.h
new file mode 100644
index 00000000000..5362ccd3cf1
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psfont.h
@@ -0,0 +1,191 @@
+/* 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 _PSFONT_H_
+#define _PSFONT_H_
+
+#include "splinefont.h"
+
+/* pfb section headers.
+ There seem to be three and a half of them. the first is a the start of the
+ file and is 6 bytes long "\200\001x\005\000\000", the second is right after
+ the newline after eexec and is 6 bytes "\200\002I\224\000\000", the third
+ is right before the zeros (after the encoded data) and is "\200\001\024\002\000\000"
+ the last is at the end of file and is only two bytes "\200\003"
+ I think that the \200 byte indicates a header, the next byte is 1 for ascii,
+ 2 for binary and 3 for eof, then next 4 bytes are the length (not present
+ for eof headers) with the first byte the least significant.
+*/
+
+struct charprocs {
+ int cnt, next;
+ char **keys;
+ SplineChar **values;
+};
+
+struct fontinfo {
+ char *familyname;
+ char *fullname;
+ char *notice;
+ char *weight;
+ char *version;
+ real italicangle;
+ unsigned int isfixedpitch:1;
+ real underlineposition;
+ real underlinethickness;
+ int em, ascent, descent; /* Generated by Fontographer (and us) */
+ int fstype; /* 2=>no embedding, 4=>print, 8=>edit */
+ /* Multiple master */
+ char *blenddesignpositions;
+ char *blenddesignmap;
+ char *blendaxistypes;
+};
+
+struct private {
+ struct psdict *private;
+ struct pschars *subrs; /* (optional, required if othersubrs is present) */
+ /* 0-2 part of Flex, 3 hint replacement, 4 and up for charstrings */
+ int leniv; /* (optional) must be 4 for old interpreters (number of rand chars at start of charstrings entries) */
+#if 0
+ int bluefuzz; /* (optional) (expand bluezones by this much, def=1) */
+ real bluescale; /* (optional) if the current pointsize in pixels is less than this value then do overshoot hinting */
+ int blueshift; /* (optional) */
+ real bluevalues[14]; /* <=7 pairs of integers, first less than second, (may be empty) */
+ /* first pair is baseline overshoots, other pairs above baseline */
+ real expansionfactor; /* (optional) only for languagegroup==1 (CJK) */
+ real familyblues[14]; /* (optional) bluevalues for family, can override local entry at small pointsizes */
+ real familyotherblues[10];/* (optional) otherblues for family */
+ unsigned int forcebold:1; /* (optional) */
+ int languagegroup; /* (optional) (0=>latin, greek, cyril, etc.), (1=>CJK)*/
+ int leniv; /* (optional) must be 4 for old interpreters (number of rand chars at start of charstrings entries) */
+ char *minfeature; /* obsolete, required must be {16 16} */
+ char *nd; /* "noaccess def" (may also be named "|-") */
+ char *np; /* "noaccess put" (may also be named "|") */
+ real otherblues[10]; /* (optional) descender blue zones */
+ struct pschars *othersubrs; /* (optional) shouldn't contain user defined subs */
+ int password; /* obsolete, required must be 5839 */
+ char *rd; /* "{string currentfile exch readstring pop}" (may also be named "-|") */
+ unsigned int rndstemup:1; /* (optional) obsolete, false if languagegroud==1 */
+ real stdhw[1]; /* (optional) dominant horizontal stem width */
+ real stdvw[1]; /* (optional) dominant vert */
+ real stemsnaph[12]; /* (optional) common h stem widths (at most 12, includes stdhw, sorted by increasing size) */
+ real stemsnapv[12]; /* (optional) common v stem widths*/
+ struct pschars *subrs; /* (optional, required if othersubrs is present) */
+ /* 0-2 part of Flex, 3 hint replacement, 4 and up for charstrings */
+ int uniqueid; /* (optional) seems same as fontdict entry. why's it here too? what of XUID? */
+/* CID entries */
+ int subrmapoffset; /* Offset to the start of this font's subr strings map */
+ int sdbytes; /* bytes in each pointer in the map */
+ int subrcnt; /* number of subroutines, number of pointers-1 in the map */
+#endif
+};
+
+typedef struct fontdict {
+ int fonttype;
+ real fontmatrix[6];
+ char *fontname; /* (optional) */
+ struct fontinfo *fontinfo;
+ int languagelevel; /* (optional) */
+ int wmode; /* (optional) chooses between alternate metric sets */
+/* non-type0 entries */
+ char *encoding[256];
+ real fontbb[4];
+ int uniqueid; /* (optional) open range between 4,000,000 and 4,999,999 */
+ int xuid[20]; /* (optional) */
+/* Type1 specific values */
+ int painttype; /* 0 (filled) 2 (stroked) */
+ real strokewidth; /* (optional) only if painttype==2 */
+ struct psdict *metrics; /* (optional) */
+ struct psdict *metrics2; /* (optional) */
+ struct pschars *chars;
+ struct charprocs *charprocs;
+ struct private *private;
+ unsigned int wasbinary: 1;
+ unsigned int wascff: 1;
+ Encoding *encoding_name;
+/* CID stuff */
+ int fdcnt; /* For the underlying dictionaries */
+ struct fontdict **fds;
+ char *cidfontname;
+ int cidfonttype;
+ real cidversion;
+ char *registry;
+ char *ordering;
+ int supplement;
+ int mapoffset;
+ int fdbytes;
+ int gdbytes;
+ int cidcnt;
+ uint8 **cidstrs;
+ int16 *cidlens;
+ int16 *cidfds;
+/* CFF stuff */
+ struct splinefont *sf;
+/* MM stuff */
+ char *blendfunc;
+ char *weightvector;
+ char *cdv;
+ char *ndv;
+ struct psdict *blendprivate;
+ struct psdict *blendfontinfo;
+#ifdef _HAS_LONGLONG
+ long long creationtime; /* seconds since 1970 */
+ long long modificationtime;
+#else
+ long creationtime;
+ long modificationtime;
+#endif
+} FontDict;
+
+struct cidbytes {
+ int fdbytes, gdbytes, cidcnt;
+ int cidmapoffset;
+ int fdcnt;
+ struct fddata {
+ int leniv;
+ int subrmapoff, sdbytes, subrcnt;
+ int flexmax;
+ unsigned int iscjk:1;
+ struct pschars *subrs;
+ } *fds;
+ int *fdind;
+ int errors;
+};
+
+struct fd2data {
+ int defwid, nomwid; /* For Type2 charstrings */
+ struct pschars *subrs;
+ FILE *private; /* Subroutines get stored in the private file immediately after the private dict */
+ int eodictmark, fillindictmark;
+ int privatelen;
+};
+
+extern char *AdobeStandardEncoding[256];
+
+extern FontDict *_ReadPSFont(FILE *ps);
+extern FontDict *ReadPSFont(char *fontname);
+extern void PSFontFree(FontDict *fd);
+#endif