diff options
author | Jonathan Kew <jfkthame@googlemail.com> | 2008-05-13 15:23:54 +0000 |
---|---|---|
committer | Jonathan Kew <jfkthame@googlemail.com> | 2008-05-13 15:23:54 +0000 |
commit | fd35b82f19e360b19b3d9b109df5664477cb2e44 (patch) | |
tree | 4b259ded004d0122ebdb74c98ab8a025566d4b99 /Build/source/texk/web2c/xetexdir/XeTeXFontMgr.cpp | |
parent | 7888c3aa65c1787b0e215fd52ad3146a0524dc79 (diff) |
merged xetex 0.998.3 from scripts.sil.org
git-svn-id: svn://tug.org/texlive/trunk@8110 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/xetexdir/XeTeXFontMgr.cpp')
-rw-r--r-- | Build/source/texk/web2c/xetexdir/XeTeXFontMgr.cpp | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/Build/source/texk/web2c/xetexdir/XeTeXFontMgr.cpp b/Build/source/texk/web2c/xetexdir/XeTeXFontMgr.cpp index 8695c83567e..4e88c896451 100644 --- a/Build/source/texk/web2c/xetexdir/XeTeXFontMgr.cpp +++ b/Build/source/texk/web2c/xetexdir/XeTeXFontMgr.cpp @@ -45,6 +45,25 @@ authorization from SIL International. extern Fixed loadedfontdesignsize; +// functions from the Pascal/WEB side +extern "C" { + void zprintnl(int s); + void zprintchar(int c); + void zprintint(int i); + void zprintscaled(int sc); + void begindiagnostic(); + void zenddiagnostic(int nl); + int gettracingfontsstate(); +}; + +// see cpascal.h +#define printcstring(STR) \ + do { \ + const char* ch_ptr = (STR); \ + while (*ch_ptr) \ + zprintchar(*(ch_ptr++)); \ + } while (0) + XeTeXFontMgr* XeTeXFontMgr::sFontManager = NULL; char XeTeXFontMgr::sReqEngine = 0; @@ -89,10 +108,32 @@ XeTeXFontMgr::findFont(const char* name, char* variant, double ptSize) { std::string nameStr(name); Font* font = NULL; + int tracing = gettracingfontsstate(); int dsize = 100; loadedfontdesignsize = 655360L; + if (tracing > 0) { + begindiagnostic(); + zprintnl('F'); + printcstring("ont \""); + printcstring(name); + if (variant != NULL) { + printcstring("/"); + printcstring(variant); + } + printcstring("\""); + if (ptSize < 0) { + printcstring(" scaled "); + zprintint(X2Fix(-ptSize)); + } + else { + printcstring(" at "); + zprintscaled(X2Fix(ptSize)); + printcstring("pt"); + } + } + for (int pass = 0; pass < 2; ++pass) { // try full name as given std::map<std::string,Font*>::iterator i = nameToFont.find(nameStr); @@ -183,8 +224,13 @@ XeTeXFontMgr::findFont(const char* name, char* variant, double ptSize) } } - if (font == NULL) + if (font == NULL) { + if (tracing > 0) { + printcstring(" not found"); + zenddiagnostic(0); + } return 0; + } Family* parent = font->parent; @@ -391,6 +437,13 @@ XeTeXFontMgr::findFont(const char* name, char* variant, double ptSize) if (font != NULL && font->opSizeInfo.designSize != 0) loadedfontdesignsize = (font->opSizeInfo.designSize << 16L) / 10; + if (tracing > 0) { + zprintnl(' '); + printcstring("-> "); + printcstring(getPlatformFontDesc(font->fontRef).c_str()); + zenddiagnostic(0); + } + return font->fontRef; } |