Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pdf/xpdf/FTFont.cc
diff options
context:
space:
mode:
authorMartin 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)
commit8032fd96d450ac015c0153f1fa57e974d67b4993 (patch)
treedba81f5197969c0a5e55c50d3474c2cc817b3785 /pdf/xpdf/FTFont.cc
parent9ac495d6543dbd65992791bb41d5f8fbf90e549c (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.cc42
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;
}