summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/xetexdir/XeTeXFontMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/xetexdir/XeTeXFontMgr.cpp')
-rw-r--r--Build/source/texk/web2c/xetexdir/XeTeXFontMgr.cpp55
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;
}