1diff --git a/poppler/GlobalParams.cc b/poppler/GlobalParams.cc
2index 6efdd0c..9f81d87 100644
3--- a/poppler/GlobalParams.cc
4+++ b/poppler/GlobalParams.cc
5@@ -197,6 +197,36 @@ get_poppler_datadir (void)
6 #undef POPPLER_DATADIR
7 #define POPPLER_DATADIR get_poppler_datadir ()
8
9+static const char *
10+get_poppler_fontsdir (void)
11+{
12+  static char retval[MAX_PATH];
13+  static int beenhere = 0;
14+
15+  unsigned char *p;
16+
17+  if (beenhere)
18+    return retval;
19+
20+  if (!GetModuleFileName (hmodule, (CHAR *) retval, sizeof(retval) - 20))
21+    return POPPLER_DATADIR;
22+
23+  p = _mbsrchr ((unsigned char *) retval, '\\');
24+  *p = '\0';
25+  p = _mbsrchr ((unsigned char *) retval, '\\');
26+  if (p) {
27+    if (stricmp ((const char *) (p+1), "bin") == 0)
28+      *p = '\0';
29+  }
30+  strcat (retval, "\\share\\fonts");
31+
32+  beenhere = 1;
33+
34+  return retval;
35+}
36+#undef POPPLER_FONTSDIR
37+#define POPPLER_FONTSDIR get_poppler_fontsdir ()
38+
39 #endif
40
41 //------------------------------------------------------------------------
42@@ -1113,7 +1143,7 @@ GooString *GlobalParams::findFontFile(GooString *fontName) {
43   FILE *f;
44   int i, j;
45
46-  setupBaseFonts(NULL);
47+  setupBaseFonts(POPPLER_FONTSDIR);
48   lockGlobalParams;
49   if ((path = (GooString *)fontFiles->lookup(fontName))) {
50     path = path->copy();
51@@ -1149,7 +1179,7 @@ GooString *GlobalParams::findFontFile(GooString *fontName) {
52 */
53 #if WITH_FONTCONFIGURATION_FONTCONFIG
54 // not needed for fontconfig
55-void GlobalParams::setupBaseFonts(char *dir) {
56+void GlobalParams::setupBaseFonts(const char *dir) {
57 }
58
59 GooString *GlobalParams::findBase14FontFile(GooString *base14Name, GfxFont *font) {
60@@ -1363,7 +1393,7 @@ static const char *displayFontDirs[] = {
61   NULL
62 };
63
64-void GlobalParams::setupBaseFonts(char *dir) {
65+void GlobalParams::setupBaseFonts(const char *dir) {
66   GooString *fontName;
67   GooString *fileName;
68   FILE *f;
69diff --git a/poppler/GlobalParams.h b/poppler/GlobalParams.h
70index bc11684..f15de06 100644
71--- a/poppler/GlobalParams.h
72+++ b/poppler/GlobalParams.h
73@@ -133,7 +133,7 @@ public:
74
75   ~GlobalParams();
76
77-  void setupBaseFonts(char *dir);
78+  void setupBaseFonts(const char *dir);
79
80   //----- accessors
81
82diff --git a/poppler/GlobalParamsWin.cc b/poppler/GlobalParamsWin.cc
83index 084b49b..855b088 100644
84--- a/poppler/GlobalParamsWin.cc
85+++ b/poppler/GlobalParamsWin.cc
86@@ -405,7 +405,7 @@ static GooString* replaceSuffix(GooString *path,
87 }
88
89
90-void GlobalParams::setupBaseFonts(char * dir)
91+void GlobalParams::setupBaseFonts(const char * dir = NULL)
92 {
93     const char *dataRoot = popplerDataDir ? popplerDataDir : POPPLER_DATADIR;
94     GooString *fileName = NULL;
95@@ -556,7 +556,7 @@ GooString *GlobalParams::findSystemFontFile(GfxFont *font,
96   GooString *fontName = font->getName();
97   if (!fontName) return NULL;
98   lockGlobalParams;
99-  setupBaseFonts(NULL);
100+  setupBaseFonts(POPPLER_FONTSDIR);
101
102   // TODO: base14Name should be changed?
103   // In the system using FontConfig, findSystemFontFile() uses
104