diff options
Diffstat (limited to 'pdf/xpdf/FontFile.h')
-rw-r--r-- | pdf/xpdf/FontFile.h | 261 |
1 files changed, 0 insertions, 261 deletions
diff --git a/pdf/xpdf/FontFile.h b/pdf/xpdf/FontFile.h deleted file mode 100644 index 7aa5ba9..0000000 --- a/pdf/xpdf/FontFile.h +++ /dev/null @@ -1,261 +0,0 @@ -//======================================================================== -// -// FontFile.h -// -// Copyright 1999-2003 Glyph & Cog, LLC -// -//======================================================================== - -#ifndef FONTFILE_H -#define FONTFILE_H - -#include <aconf.h> - -#ifdef USE_GCC_PRAGMAS -#pragma interface -#endif - -#include <stdio.h> -#include "gtypes.h" -#include "GString.h" -#include "CharTypes.h" - -class GHash; -class CharCodeToUnicode; - -//------------------------------------------------------------------------ - -typedef void (*FontFileOutputFunc)(void *stream, char *data, int len); - -//------------------------------------------------------------------------ -// FontFile -//------------------------------------------------------------------------ - -class FontFile { -public: - - FontFile(); - virtual ~FontFile(); - - // Returns the font name, as specified internally by the font file. - // Returns NULL if no name is available. - virtual char *getName() = 0; - - // Returns the custom font encoding, or NULL if the encoding is not - // available. - virtual char **getEncoding() = 0; -}; - -//------------------------------------------------------------------------ -// Type1FontFile -//------------------------------------------------------------------------ - -class Type1FontFile: public FontFile { -public: - - Type1FontFile(char *file, int len); - virtual ~Type1FontFile(); - virtual char *getName() { return name; } - virtual char **getEncoding() { return encoding; } - -private: - - char *name; - char **encoding; -}; - -//------------------------------------------------------------------------ -// Type1CFontFile -//------------------------------------------------------------------------ - -struct Type1CTopDict; -struct Type1CPrivateDict; - -class Type1CFontFile: public FontFile { -public: - - Type1CFontFile(char *fileA, int lenA); - virtual ~Type1CFontFile(); - GBool isOk() { return ok; } - - virtual char *getName(); - virtual char **getEncoding(); - - // Convert to a Type 1 font, suitable for embedding in a PostScript - // file. The name will be used as the PostScript font name. - void convertToType1(FontFileOutputFunc outputFuncA, void *outputStreamA); - - // Convert to a Type 0 CIDFont, suitable for embedding in a - // PostScript file. The name will be used as the PostScript font - // name. - void convertToCIDType0(char *psName, - FontFileOutputFunc outputFuncA, void *outputStreamA); - - // Convert to a Type 0 (but non-CID) composite font, suitable for - // embedding in a PostScript file. The name will be used as the - // PostScript font name. - void convertToType0(char *psName, - FontFileOutputFunc outputFuncA, void *outputStreamA); - -private: - - void readEncoding(); - void readTopDict(Type1CTopDict *dict); - void readPrivateDict(Type1CPrivateDict *privateDict, - int offset, int size); - Gushort *readCharset(int charset, int nGlyphs); - void eexecWrite(char *s); - void eexecCvtGlyph(char *glyphName, int pos, int n); - void cvtGlyph(int pos, int n, GBool top); - void cvtGlyphWidth(GBool useOp); - void eexecDumpNum(double x, GBool fpA); - void eexecDumpOp1(int opA); - void eexecDumpOp2(int opA); - void eexecWriteCharstring(Guchar *s, int n); - void getDeltaInt(char *buf, char *key, double *opA, int n); - void getDeltaReal(char *buf, char *key, double *opA, int n); - int getIndexLen(int indexPos); - int getIndexValPos(int indexPos, int i, int *valLen); - int getIndexEnd(int indexPos); - Guint getWord(int pos, int size); - double getNum(int *pos, GBool *fp); - char *getString(int sid, char *buf); - - Guchar *file; - int len; - - GString *name; - char **encoding; - - int topDictIdxPos; - int stringIdxPos; - int gsubrIdxPos; - int subrIdxPos; - int gsubrBias; - int subrBias; - - FontFileOutputFunc outputFunc; - void *outputStream; - double op[48]; // operands - GBool fp[48]; // true if operand is fixed point - int nOps; // number of operands - int nHints; // number of hints for the current glyph - GBool firstOp; // true if we haven't hit the first op yet - double defaultWidthX; // default glyph width - double nominalWidthX; // nominal glyph width - GBool defaultWidthXFP; // true if defaultWidthX is fixed point - GBool nominalWidthXFP; // true if nominalWidthX is fixed point - Gushort r1; // eexec encryption key - GString *charBuf; // charstring output buffer - int line; // number of eexec chars on current line - - GBool ok; -}; - -//------------------------------------------------------------------------ -// TrueTypeFontFile -//------------------------------------------------------------------------ - -struct TTFontTableHdr; -struct TTFontCmap; - -class TrueTypeFontFile: public FontFile { -public: - - TrueTypeFontFile(char *fileA, int lenA); - ~TrueTypeFontFile(); - - // This always returns NULL, since it's probably better to trust the - // font name in the PDF file rather than the one in the TrueType - // font file. - virtual char *getName(); - - virtual char **getEncoding(); - - // Return the number of cmaps defined by this font. - int getNumCmaps(); - - // Return the platform ID of the <i>th cmap. - int getCmapPlatform(int i); - - // Return the encoding ID of the <i>th cmap. - int getCmapEncoding(int i); - - // Return the index of the cmap for <platform>, <encoding>. Returns - // -1 if there is no corresponding cmap. - int findCmap(int platform, int enc); - - // Return the GID corresponding to <c> according to the <i>th cmap. - Gushort mapCodeToGID(int i, int c); - - // Return a name-to-GID mapping, constructed from the font's post - // table. Returns NULL if there is no post table. - GHash *getNameToGID(); - - // Convert to a Type 42 font, suitable for embedding in a PostScript - // file. The name will be used as the PostScript font name (so we - // don't need to depend on the 'name' table in the font). The - // encoding is needed because the PDF Font object can modify the - // encoding. - void convertToType42(char *name, char **encodingA, - GBool pdfFontHasEncoding, - Gushort *codeToGID, - FontFileOutputFunc outputFunc, void *outputStream); - - // Convert to a Type 2 CIDFont, suitable for embedding in a - // PostScript file. The name will be used as the PostScript font - // name (so we don't need to depend on the 'name' table in the - // font). - void convertToCIDType2(char *name, Gushort *cidMap, int nCIDs, - FontFileOutputFunc outputFunc, void *outputStream); - - // Convert to a Type 0 (but non-CID) composite font, suitable for - // embedding in a PostScript file. The name will be used as the - // PostScript font name (so we don't need to depend on the 'name' - // table in the font). - void convertToType0(char *name, Gushort *cidMap, int nCIDs, - FontFileOutputFunc outputFunc, void *outputStream); - - // Write a TTF file, filling in any missing tables that are required - // by the TrueType spec. If the font already has all the required - // tables, it will be written unmodified. - void writeTTF(FILE *out); - -private: - - char *file; - int len; - - char **encoding; - - TTFontTableHdr *tableHdrs; - int nTables; - int bbox[4]; - int locaFmt; - int nGlyphs; - GBool mungedCmapSize; - TTFontCmap *cmaps; - int nCmaps; - - int getByte(int pos); - int getChar(int pos); - int getUShort(int pos); - int getShort(int pos); - Guint getULong(int pos); - double getFixed(int pos); - int seekTable(char *tag); - int seekTableIdx(char *tag); - void cvtEncoding(char **encodingA, GBool pdfFontHasEncoding, - FontFileOutputFunc outputFunc, void *outputStream); - void cvtCharStrings(char **encodingA, GBool pdfFontHasEncoding, - Gushort *codeToGID, - FontFileOutputFunc outputFunc, void *outputStream); - int getCmapEntry(int cmapFmt, int pos, int code); - void cvtSfnts(FontFileOutputFunc outputFunc, void *outputStream, - GString *name); - void dumpString(char *s, int length, - FontFileOutputFunc outputFunc, void *outputStream); - Guint computeTableChecksum(char *data, int length); -}; - -#endif |