poppler/GfxFont.cc | 36 ++++++++++++------------------------ poppler/GfxFont.h | 2 ++ 2 files changed, 14 insertions(+), 24 deletions(-)
New commits: commit 4bb2c9b98299f429752b4c60820cea31ef05f7e0 Author: Jason Crain <[email protected]> Date: Wed Mar 25 21:04:19 2015 +0100 Use width from W array for WMode positioning Bug #89621 diff --git a/poppler/GfxFont.cc b/poppler/GfxFont.cc index 3e9b7db..81f5903 100644 --- a/poppler/GfxFont.cc +++ b/poppler/GfxFont.cc @@ -30,7 +30,7 @@ // Copyright (C) 2012 Yi Yang <[email protected]> // Copyright (C) 2012 Suzuki Toshiya <[email protected]> // Copyright (C) 2012 Thomas Freitag <[email protected]> -// Copyright (C) 2013, 2014 Jason Crain <[email protected]> +// Copyright (C) 2013-2015 Jason Crain <[email protected]> // Copyright (C) 2014 Olly Betts <[email protected]> // // To see a description of the changes please see the Changelog file that @@ -2207,30 +2207,14 @@ int GfxCIDFont::getNextChar(char *s, int len, CharCode *code, // horizontal if (cMap->getWMode() == 0) { - w = widths.defWidth; + w = getWidth(cid); h = vx = vy = 0; - if (widths.nExceps > 0 && cid >= widths.exceps[0].first) { - a = 0; - b = widths.nExceps; - // invariant: widths.exceps[a].first <= cid < widths.exceps[b].first - while (b - a > 1) { - m = (a + b) / 2; - if (widths.exceps[m].first <= cid) { - a = m; - } else { - b = m; - } - } - if (cid <= widths.exceps[a].last) { - w = widths.exceps[a].width; - } - } // vertical } else { w = 0; h = widths.defHeight; - vx = widths.defWidth / 2; + vx = getWidth(cid) / 2; vy = widths.defVY; if (widths.nExcepsV > 0 && cid >= widths.excepsV[0].first) { a = 0; @@ -2534,13 +2518,9 @@ int *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) { return codeToGID; } -double GfxCIDFont::getWidth (char* s, int len) { - int nUsed; +double GfxCIDFont::getWidth(CID cid) { double w; int a, b, m; - CharCode c; - - CID cid = cMap->getCID(s, len, &c, &nUsed); w = widths.defWidth; if (widths.nExceps > 0 && cid >= widths.exceps[0].first) { @@ -2562,6 +2542,14 @@ double GfxCIDFont::getWidth (char* s, int len) { return w; } +double GfxCIDFont::getWidth (char* s, int len) { + int nUsed; + CharCode c; + + CID cid = cMap->getCID(s, len, &c, &nUsed); + return getWidth(cid); +} + //------------------------------------------------------------------------ // GfxFontDict //------------------------------------------------------------------------ diff --git a/poppler/GfxFont.h b/poppler/GfxFont.h index 1f01cc7..febb902 100644 --- a/poppler/GfxFont.h +++ b/poppler/GfxFont.h @@ -21,6 +21,7 @@ // Copyright (C) 2007 Koji Otani <[email protected]> // Copyright (C) 2011 Axel Strübing <[email protected]> // Copyright (C) 2011, 2012, 2014 Adrian Johnson <[email protected]> +// Copyright (C) 2015 Jason Crain <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -401,6 +402,7 @@ private: int mapCodeToGID(FoFiTrueType *ff, int cmapi, Unicode unicode, GBool wmode); + double getWidth(CID cid); // Get width of a character. GooString *collection; // collection name CMap *cMap; // char code --> CID
_______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
