diff options
Diffstat (limited to 'splash/SplashFTFontFile.cc')
-rw-r--r-- | splash/SplashFTFontFile.cc | 71 |
1 files changed, 63 insertions, 8 deletions
diff --git a/splash/SplashFTFontFile.cc b/splash/SplashFTFontFile.cc index 5761117..5b01fcf 100644 --- a/splash/SplashFTFontFile.cc +++ b/splash/SplashFTFontFile.cc @@ -2,6 +2,8 @@ // // SplashFTFontFile.cc // +// Copyright 2003-2013 Glyph & Cog, LLC +// //======================================================================== #include <aconf.h> @@ -13,6 +15,7 @@ #endif #include "gmem.h" +#include "GString.h" #include "SplashFTFontEngine.h" #include "SplashFTFont.h" #include "SplashFTFontFile.h" @@ -23,15 +26,25 @@ SplashFontFile *SplashFTFontFile::loadType1Font(SplashFTFontEngine *engineA, SplashFontFileID *idA, +#if LOAD_FONTS_FROM_MEM + GString *fontBufA, +#else char *fileNameA, GBool deleteFileA, - const char **encA) { +#endif + const char **encA, + GBool useLightHintingA) { FT_Face faceA; int *codeToGIDA; const char *name; int i; +#if LOAD_FONTS_FROM_MEM + if (FT_New_Memory_Face(engineA->lib, (FT_Byte *)fontBufA->getCString(), + fontBufA->getLength(), 0, &faceA)) { +#else if (FT_New_Face(engineA->lib, fileNameA, 0, &faceA)) { +#endif return NULL; } codeToGIDA = (int *)gmallocn(256, sizeof(int)); @@ -42,59 +55,101 @@ SplashFontFile *SplashFTFontFile::loadType1Font(SplashFTFontEngine *engineA, } } - return new SplashFTFontFile(engineA, idA, fileNameA, deleteFileA, - faceA, codeToGIDA, 256, gFalse, gTrue); + return new SplashFTFontFile(engineA, idA, +#if LOAD_FONTS_FROM_MEM + fontBufA, +#else + fileNameA, deleteFileA, +#endif + faceA, codeToGIDA, 256, + gFalse, useLightHintingA); } SplashFontFile *SplashFTFontFile::loadCIDFont(SplashFTFontEngine *engineA, SplashFontFileID *idA, +#if LOAD_FONTS_FROM_MEM + GString *fontBufA, +#else char *fileNameA, GBool deleteFileA, +#endif int *codeToGIDA, int codeToGIDLenA) { FT_Face faceA; +#if LOAD_FONTS_FROM_MEM + if (FT_New_Memory_Face(engineA->lib, (FT_Byte *)fontBufA->getCString(), + fontBufA->getLength(), 0, &faceA)) { +#else if (FT_New_Face(engineA->lib, fileNameA, 0, &faceA)) { +#endif return NULL; } - return new SplashFTFontFile(engineA, idA, fileNameA, deleteFileA, + return new SplashFTFontFile(engineA, idA, +#if LOAD_FONTS_FROM_MEM + fontBufA, +#else + fileNameA, deleteFileA, +#endif faceA, codeToGIDA, codeToGIDLenA, gFalse, gFalse); } SplashFontFile *SplashFTFontFile::loadTrueTypeFont(SplashFTFontEngine *engineA, SplashFontFileID *idA, +#if LOAD_FONTS_FROM_MEM + GString *fontBufA, +#else char *fileNameA, - int fontNum, GBool deleteFileA, +#endif + int fontNum, int *codeToGIDA, int codeToGIDLenA) { FT_Face faceA; +#if LOAD_FONTS_FROM_MEM + if (FT_New_Memory_Face(engineA->lib, (FT_Byte *)fontBufA->getCString(), + fontBufA->getLength(), fontNum, &faceA)) { +#else if (FT_New_Face(engineA->lib, fileNameA, fontNum, &faceA)) { +#endif return NULL; } - return new SplashFTFontFile(engineA, idA, fileNameA, deleteFileA, + return new SplashFTFontFile(engineA, idA, +#if LOAD_FONTS_FROM_MEM + fontBufA, +#else + fileNameA, deleteFileA, +#endif faceA, codeToGIDA, codeToGIDLenA, gTrue, gFalse); } SplashFTFontFile::SplashFTFontFile(SplashFTFontEngine *engineA, SplashFontFileID *idA, +#if LOAD_FONTS_FROM_MEM + GString *fontBufA, +#else char *fileNameA, GBool deleteFileA, +#endif FT_Face faceA, int *codeToGIDA, int codeToGIDLenA, - GBool trueTypeA, GBool type1A): + GBool trueTypeA, GBool useLightHintingA): +#if LOAD_FONTS_FROM_MEM + SplashFontFile(idA, fontBufA) +#else SplashFontFile(idA, fileNameA, deleteFileA) +#endif { engine = engineA; face = faceA; codeToGID = codeToGIDA; codeToGIDLen = codeToGIDLenA; trueType = trueTypeA; - type1 = type1A; + useLightHinting = useLightHintingA; } SplashFTFontFile::~SplashFTFontFile() { |