diff options
author | Martin Kretzschmar <mkretzschmar@src.gnome.org> | 2003-03-31 23:23:17 (GMT) |
---|---|---|
committer | Martin Kretzschmar <mkretzschmar@src.gnome.org> | 2003-03-31 23:23:17 (GMT) |
commit | 8032fd96d450ac015c0153f1fa57e974d67b4993 (patch) | |
tree | dba81f5197969c0a5e55c50d3474c2cc817b3785 /pdf/xpdf/FTFont.cc | |
parent | 9ac495d6543dbd65992791bb41d5f8fbf90e549c (diff) |
update
* ANNOUNCE, CHANGES, README, aconf-win32.h: update
* xpdf/CharCodeToUnicode.cc, xpdf/Decrypt.cc, xpdf/FTFont.cc,
xpdf/FTFont.h, xpdf/FontEncodingTables.cc, xpdf/Gfx.cc,
xpdf/GfxFont.cc, xpdf/GfxState.cc, xpdf/GfxState.h,
xpdf/GlobalParams.cc, xpdf/GlobalParams.h, xpdf/Link.cc,
xpdf/NameToUnicodeTable.h, xpdf/Stream.cc, xpdf/TextOutputDev.cc,
xpdf/TextOutputDev.h, xpdf/XOutputDev.cc, xpdf/config.h,
xpdf/pdftotext.cc, xpdf/xpdf.cc, xpdf/Outline.cc, xpdf/XPDFApp.cc,
xpdf/XPDFApp.h, xpdf/XPDFCore.cc, xpdf/XPDFCore.h,
xpdf/XPDFViewer.cc, xpdf/XPDFViewer.h: update.
* goo/gfile.cc: update.
* goo/Makefile.am: use GMutex.h
* doc/pdffonts.1, doc/pdffonts.cat, doc/pdfimages.1,
doc/pdfimages.cat, doc/pdfinfo.1, doc/pdfinfo.cat, doc/pdftopbm.1,
doc/pdftopbm.cat, doc/pdftops.1, doc/pdftops.cat, doc/pdftotext.1,
doc/pdftotext.cat, doc/pdftotext.hlp, doc/xpdf.1, doc/xpdf.cat,
doc/xpdf.hlp, doc/xpdfrc.5, doc/xpdfrc.cat, doc/xpdfrc.hlp: update
Diffstat (limited to 'pdf/xpdf/FTFont.cc')
-rw-r--r-- | pdf/xpdf/FTFont.cc | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/pdf/xpdf/FTFont.cc b/pdf/xpdf/FTFont.cc index 8de09e0..ab101ac 100644 --- a/pdf/xpdf/FTFont.cc +++ b/pdf/xpdf/FTFont.cc @@ -56,6 +56,9 @@ FTFontFile::FTFontFile(FTFontEngine *engineA, char *fontFileName, ok = gFalse; engine = engineA; codeMap = NULL; + cidToGID = NULL; + cidToGIDLen = 0; + if (FT_New_Face(engine->lib, fontFileName, 0, &face)) { return; } @@ -144,11 +147,15 @@ FTFontFile::FTFontFile(FTFontEngine *engineA, char *fontFileName, ok = gFalse; engine = engineA; codeMap = NULL; + cidToGID = NULL; + cidToGIDLen = 0; + if (FT_New_Face(engine->lib, fontFileName, 0, &face)) { return; } - cidToGID = cidToGIDA; cidToGIDLen = cidToGIDLenA; + cidToGID = (Gushort *)gmalloc(cidToGIDLen * sizeof(Gushort)); + memcpy(cidToGID, cidToGIDA, cidToGIDLen * sizeof(Gushort)); mode = ftFontModeCIDToGIDMap; ok = gTrue; } @@ -157,12 +164,17 @@ FTFontFile::FTFontFile(FTFontEngine *engineA, char *fontFileName) { ok = gFalse; engine = engineA; codeMap = NULL; + cidToGID = NULL; + cidToGIDLen = 0; + if (FT_New_Face(engine->lib, fontFileName, 0, &face)) { return; } - cidToGID = NULL; - cidToGIDLen = 0; - mode = ftFontModeCFFCharset; + if (!strcmp(face->driver->root.clazz->module_name, "t1cid")) { + mode = ftFontModeCID; + } else { + mode = ftFontModeCFFCharset; + } ok = gTrue; } @@ -173,6 +185,9 @@ FTFontFile::~FTFontFile() { if (codeMap) { gfree(codeMap); } + if (cidToGID) { + gfree(cidToGID); + } } //------------------------------------------------------------------------ @@ -664,20 +679,25 @@ FT_UInt FTFont::getGlyphIndex(CharCode c, Unicode u) { break; case ftFontModeCFFCharset: #if 1 //~ cff cid->gid map + { #if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0 - CFF_Font *cff = (CFF_Font *)((TT_Face)fontFile->face)->extra.data; + CFF_Font *cff = (CFF_Font *)((TT_Face)fontFile->face)->extra.data; #else - CFF_Font cff = (CFF_Font)((TT_Face)fontFile->face)->extra.data; + CFF_Font cff = (CFF_Font)((TT_Face)fontFile->face)->extra.data; #endif - idx = 0; - for (j = 0; j < (int)cff->num_glyphs; ++j) { - if (cff->charset.sids[j] == c) { - idx = j; - break; + idx = 0; + for (j = 0; j < (int)cff->num_glyphs; ++j) { + if (cff->charset.sids[j] == c) { + idx = j; + break; + } } } #endif break; + case ftFontModeCID: + idx = c; + break; } return idx; } |