On Thu, Sep 06, 2007 at 08:29:33PM +0200, Andre Poenitz wrote:

> On Thu, Sep 06, 2007 at 07:04:15PM +0200, Georg Baum wrote:

> > IMHO a real fix would put the font stuff in the frontend where it belongs.
> > Then there would not be any link problems in client and tex2lyx.
> 
> That's of course correct.

Here are the patches for trunk and branch. Those with Qt 4.1, on *nix
should register the fonts with fontconfig by themselves (or use the
xft-fonts package), on windows should install the fonts. Who is not
willing (or cannot) upgrade pays a small price but is still able to
use lyx.

There's no problem on Mac, where Qt 4.3 is already required, but
someone should check that things actually work, as I cannot do it.

-- 
Enrico
Index: src/LyX.cpp
===================================================================
--- src/LyX.cpp (revision 20095)
+++ src/LyX.cpp (working copy)
@@ -450,9 +450,6 @@ int LyX::exec(int & argc, char * argv[])
                return !final_success;
        }
 
-       // Force adding of font path _before_ Application is initialized
-       support::os::addFontResources();
-
        // Let the frontend parse and remove all arguments that it knows
        pimpl_->application_.reset(createApplication(argc, argv));
 
@@ -487,9 +484,6 @@ int LyX::exec(int & argc, char * argv[])
 
        prepareExit();
 
-       // Restore original font resources after Application is destroyed.
-       support::os::restoreFontResources();
-
        return exit_status;
 }
 
Index: src/frontends/qt4/GuiFontLoader.cpp
===================================================================
--- src/frontends/qt4/GuiFontLoader.cpp (revision 20095)
+++ src/frontends/qt4/GuiFontLoader.cpp (working copy)
@@ -21,8 +21,11 @@
 #include "support/filetools.h"
 #include "support/lstrings.h"
 #include "support/Systemcall.h"
+#include "support/Package.h"
+#include "support/os.h"
 
 #include <qfontinfo.h>
+#include <QFontDatabase>
 
 #include <boost/tuple/tuple.hpp>
 
@@ -33,6 +36,9 @@
 #endif
 
 using lyx::support::contains;
+using lyx::support::package;
+using lyx::support::addPath;
+using lyx::support::addName;
 
 using std::endl;
 using std::make_pair;
@@ -41,6 +47,12 @@ using std::pair;
 using std::vector;
 using std::string;
 
+#if QT_VERSION >= 0x040200
+string const math_fonts[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
+       "eufm10", "msam10", "msbm10", "wasy10", "esint10"};
+int const num_math_fonts = sizeof(math_fonts) / sizeof(*math_fonts);
+#endif
+
 
 namespace lyx {
 namespace frontend {
@@ -189,6 +201,24 @@ pair<QFont, bool> const getSymbolFont(st
 
 GuiFontLoader::GuiFontLoader()
 {
+#if QT_VERSION >= 0x040200
+       fontID = new int[num_math_fonts];
+
+       string const fonts_dir =
+               addPath(package().system_support().absFilename(), "fonts");
+
+       for (int i = 0 ; i < num_math_fonts; ++i) {
+               string const font_file = lyx::support::os::external_path(
+                               addName(fonts_dir, math_fonts[i] + ".ttf"));
+               fontID[i] = 
QFontDatabase::addApplicationFont(toqstr(font_file));
+
+               LYXERR(Debug::FONT) << "Adding font " << font_file
+                                   << static_cast<const char *>
+                                       (fontID[i] < 0 ? " FAIL" : " OK")
+                                   << endl;
+       }
+#endif
+
        for (int i1 = 0; i1 < Font::NUM_FAMILIES; ++i1)
                for (int i2 = 0; i2 < 2; ++i2)
                        for (int i3 = 0; i3 < 4; ++i3)
@@ -197,6 +227,19 @@ GuiFontLoader::GuiFontLoader()
 }
 
 
+GuiFontLoader::~GuiFontLoader()
+{
+#if QT_VERSION >= 0x040200
+       for (int i = 0 ; i < num_math_fonts; ++i) {
+               if (fontID[i] >= 0)
+                       QFontDatabase::removeApplicationFont(fontID[i]);
+       }
+
+       delete [] fontID;
+#endif
+}
+
+
 void GuiFontLoader::update()
 {
        for (int i1 = 0; i1 < Font::NUM_FAMILIES; ++i1) {
Index: src/frontends/qt4/GuiFontLoader.h
===================================================================
--- src/frontends/qt4/GuiFontLoader.h   (revision 20095)
+++ src/frontends/qt4/GuiFontLoader.h   (working copy)
@@ -48,7 +48,7 @@ public:
        GuiFontLoader();
 
        /// Destructor
-       virtual ~GuiFontLoader() {}
+       ~GuiFontLoader();
 
        virtual void update();
        virtual bool available(Font const & f);
@@ -74,6 +74,9 @@ public:
        }
 
 private:
+#if QT_VERSION >= 0x040200
+       int * fontID;
+#endif
        /// BUTT ugly !
        QLFontInfo * fontinfo_[Font::NUM_FAMILIES][2][4][10];
 };
Index: src/support/os_cygwin.cpp
===================================================================
--- src/support/os_cygwin.cpp   (revision 20095)
+++ src/support/os_cygwin.cpp   (working copy)
@@ -32,24 +32,6 @@ using std::string;
 
 using lyx::support::contains;
 
-#ifdef X_DISPLAY_MISSING
-#include "support/filetools.h"
-#include "support/Package.h"
-#include "support/Path.h"
-using lyx::support::addName;
-using lyx::support::addPath;
-using lyx::support::package;
-
-// API definition for manually calling font functions on Windows 2000 and later
-typedef int (WINAPI *FONTAPI)(LPCSTR, DWORD, PVOID);
-#define FR_PRIVATE     0x10
-
-// Names of TrueType fonts to load
-string const win_fonts_truetype[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
-       "eufm10", "msam10", "msbm10", "wasy10", "esint10"};
-const int num_fonts_truetype = sizeof(win_fonts_truetype) / 
sizeof(*win_fonts_truetype);
-#endif
-
 
 namespace lyx {
 namespace support {
@@ -294,59 +276,6 @@ bool autoOpenFile(string const & filenam
                win_path.c_str(), NULL, NULL, 1)) > 32;
 }
 
-
-void addFontResources()
-{
-#ifdef X_DISPLAY_MISSING
-       // Windows only: Add BaKoMa TrueType font resources
-       string const fonts_dir = 
addPath(package().system_support().absFilename(), "fonts");
-
-       HMODULE hDLL = LoadLibrary("gdi32");
-       FONTAPI pAddFontResourceEx =
-               (FONTAPI) GetProcAddress(hDLL, "AddFontResourceExA");
-
-       for (int i = 0 ; i < num_fonts_truetype ; ++i) {
-               string const font_current = to_local8bit(from_utf8(convert_path(
-                       addName(fonts_dir, win_fonts_truetype[i] + ".ttf"),
-                       PathStyle(windows))));
-               if (pAddFontResourceEx) {
-                       // Windows 2000 and later: Use AddFontResourceEx
-                       pAddFontResourceEx(font_current.c_str(), FR_PRIVATE, 0);
-               } else {
-                       // Older Windows versions: Use AddFontResource
-                       AddFontResource(font_current.c_str());
-               }
-       }
-       FreeLibrary(hDLL);
-#endif
-}
-
-
-void restoreFontResources()
-{
-#ifdef X_DISPLAY_MISSING
-       // Windows only: Remove BaKoMa TrueType font resources
-       string const fonts_dir = 
addPath(package().system_support().absFilename(), "fonts");
-
-       HMODULE hDLL = LoadLibrary("gdi32");
-       FONTAPI pRemoveFontResourceEx = (FONTAPI) GetProcAddress(hDLL, 
"RemoveFontResourceExA");
-
-       for(int i = 0 ; i < num_fonts_truetype ; ++i) {
-               string const font_current = to_local8bit(from_utf8(convert_path(
-                       addName(fonts_dir, win_fonts_truetype[i] + ".ttf"),
-                       PathStyle(windows))));
-               if (pRemoveFontResourceEx) {
-                       // Windows 2000 and later: Use RemoveFontResourceEx
-                       pRemoveFontResourceEx(font_current.c_str(), FR_PRIVATE, 
0);
-               } else {
-                       // Older Windows versions: Use RemoveFontResource
-                       RemoveFontResource(font_current.c_str());
-               }
-       }
-       FreeLibrary(hDLL);
-#endif
-}
-
 } // namespace os
 } // namespace support
 } // namespace lyx
Index: src/support/os_unix.cpp
===================================================================
--- src/support/os_unix.cpp     (revision 20095)
+++ src/support/os_unix.cpp     (working copy)
@@ -13,19 +13,11 @@
 #include <config.h>
 
 #include "support/os.h"
-#include "debug.h"
 
 #ifdef __APPLE__
 #include <Carbon/Carbon.h>
-#include <ApplicationServices/ApplicationServices.h>
-#elif defined(HAVE_FONTCONFIG_FONTCONFIG_H)
-#include "support/filetools.h"
-#include "support/Package.h"
-#include <fontconfig/fontconfig.h>
-using lyx::support::addPath;
 #endif
 
-using std::endl;
 using std::string;
 
 
@@ -200,52 +192,6 @@ bool autoOpenFile(string const & filenam
 #endif
 }
 
-
-void addFontResources()
-{
-#ifdef __APPLE__
-       CFBundleRef  myAppBundle = CFBundleGetMainBundle();
-       CFURLRef  myAppResourcesURL, FontsURL;
-       FSRef  fontDirRef;
-       FSSpec  fontDirSpec;
-       CFStringRef  filePath = CFStringCreateWithBytes(kCFAllocatorDefault,
-                                       (UInt8 *) "fonts", strlen("fonts"),
-                                       kCFStringEncodingISOLatin1, false);
-
-       myAppResourcesURL = CFBundleCopyResourcesDirectoryURL(myAppBundle);
-       FontsURL = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,
-                       myAppResourcesURL, filePath, true);
-       if (lyxerr.debugging(Debug::FONT)) {
-               UInt8  buf[255];
-               if (CFURLGetFileSystemRepresentation(FontsURL, true, buf, 255))
-                       lyxerr << "Adding Fonts directory: " << buf << endl;
-       }
-       CFURLGetFSRef (FontsURL, &fontDirRef);
-       OSStatus err = FSGetCatalogInfo (&fontDirRef, kFSCatInfoNone,
-                                        NULL, NULL, &fontDirSpec, NULL);
-       if (err)
-               lyxerr << "FSGetCatalogInfo err = " << err << endl;
-       err = FMActivateFonts (&fontDirSpec, NULL, NULL,
-                              kFMLocalActivationContext);
-       if (err)
-               lyxerr << "FMActivateFonts err = " << err << endl;
-#elif defined(HAVE_FONTCONFIG_FONTCONFIG_H)
-       // Register BaKoMa truetype fonts with fontconfig
-       string const fonts_dir =
-               addPath(package().system_support().absFilename(), "fonts");
-       if (!FcConfigAppFontAddDir(0, (FcChar8 const *)fonts_dir.c_str()))
-               lyxerr << "Unable to register fonts with fontconfig." << endl;
-#endif
-}
-
-
-void restoreFontResources()
-{
-#if defined(HAVE_FONTCONFIG_FONTCONFIG_H) && !defined(__APPLE__)
-       FcConfigAppFontClear(0);
-#endif
-}
-
 } // namespace os
 } // namespace support
 } // namespace lyx
Index: src/support/os.h
===================================================================
--- src/support/os.h    (revision 20095)
+++ src/support/os.h    (working copy)
@@ -109,19 +109,6 @@ bool canAutoOpenFile(std::string const &
  */
 bool autoOpenFile(std::string const & filename, auto_open_mode const mode = 
VIEW);
 
-/** General font utilities.
- *  FIXME: only MAC and WIN32 for now but it would be nice to convince
- *  fontconfig to do the same for linux.
- */
-
-/// Add fonts to the font subsystem, must be called before Application
-/// is initialized.
-void addFontResources();
-
-/// Restore original font resources, must be called after Application
-/// is destroyed.
-void restoreFontResources();
-
 } // namespace os
 } // namespace support
 } // namespace lyx
Index: src/support/os_win32.cpp
===================================================================
--- src/support/os_win32.cpp    (revision 20095)
+++ src/support/os_win32.cpp    (working copy)
@@ -19,8 +19,6 @@
 #include "support/lstrings.h"
 #include "support/filetools.h"
 #include "support/ExceptionMessage.h"
-#include "support/Package.h"
-#include "support/Path.h"
 
 #include "debug.h"
 #include "gettext.h"
@@ -70,18 +68,6 @@ using std::string;
 
 using lyx::support::runCommand;
 using lyx::support::split;
-using lyx::support::addName;
-using lyx::support::addPath;
-using lyx::support::package;
-
-// API definition for manually calling font functions on Windows 2000 and later
-typedef int (WINAPI *FONTAPI)(LPCSTR, DWORD, PVOID);
-#define FR_PRIVATE     0x10
-
-// Names of TrueType fonts to load
-string const win_fonts_truetype[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
-       "eufm10", "msam10", "msbm10", "wasy10", "esint10"};
-const int num_fonts_truetype = sizeof(win_fonts_truetype) / 
sizeof(*win_fonts_truetype);
 
 
 namespace lyx {
@@ -407,54 +393,6 @@ bool autoOpenFile(string const & filenam
                to_local8bit(from_utf8(filename)).c_str(), NULL, NULL, 1)) > 32;
 }
 
-
-void addFontResources()
-{
-       // Windows only: Add BaKoMa TrueType font resources
-       string const fonts_dir = 
addPath(package().system_support().absFilename(), "fonts");
-
-       HMODULE hDLL = LoadLibrary("gdi32");
-       FONTAPI pAddFontResourceEx = (FONTAPI) GetProcAddress(hDLL, 
"AddFontResourceExA");
-
-       for (int i = 0 ; i < num_fonts_truetype ; ++i) {
-               string const font_current =
-                       addName(fonts_dir, win_fonts_truetype[i] + ".ttf");
-               if (pAddFontResourceEx) {
-                       // Windows 2000 and later: Use AddFontResourceEx for 
private font
-                       
pAddFontResourceEx(to_local8bit(from_utf8(external_path(font_current))).c_str(),
 FR_PRIVATE, 0);
-               } else {
-                       // Older Windows versions: Use AddFontResource
-                       
AddFontResource(to_local8bit(from_utf8(external_path(font_current))).c_str());
-               }
-       }
-
-       FreeLibrary(hDLL);
-}
-
-
-void restoreFontResources()
-{
-       // Windows only: Remove BaKoMa TrueType font resources
-       string const fonts_dir = 
addPath(package().system_support().absFilename(), "fonts");
-
-       HMODULE hDLL = LoadLibrary("gdi32");
-       FONTAPI pRemoveFontResourceEx = (FONTAPI) GetProcAddress(hDLL, 
"RemoveFontResourceExA");
-
-       for(int i = 0 ; i < num_fonts_truetype ; ++i) {
-               string const font_current =
-                       addName(fonts_dir, win_fonts_truetype[i] + ".ttf");
-               if (pRemoveFontResourceEx) {
-                       // Windows 2000 and later: Use RemoveFontResourceEx for 
private font
-                       
pRemoveFontResourceEx(to_local8bit(from_utf8(external_path(font_current))).c_str(),
 FR_PRIVATE, 0);
-               } else {
-                       // Older Windows versions: Use RemoveFontResource
-                       
RemoveFontResource(to_local8bit(from_utf8(external_path(font_current))).c_str());
-               }
-       }
-
-       FreeLibrary(hDLL);
-}
-
 } // namespace os
 } // namespace support
 } // namespace lyx
Index: configure.ac
===================================================================
--- configure.ac        (revision 20095)
+++ configure.ac        (working copy)
@@ -236,7 +236,7 @@ AC_LANG_POP(C)
 # some standard header files
 AC_HEADER_DIRENT
 AC_HEADER_MAJOR
-AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h strings.h locale.h io.h 
process.h NewAPIs.h utime.h sys/utime.h fontconfig/fontconfig.h)
+AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h strings.h locale.h io.h 
process.h NewAPIs.h utime.h sys/utime.h)
 
 # some standard structures
 AC_HEADER_STAT
Index: src/LyX.cpp
===================================================================
--- src/LyX.cpp (revision 20108)
+++ src/LyX.cpp (working copy)
@@ -446,9 +446,6 @@ int LyX::exec(int & argc, char * argv[])
                return !final_success;
        }
 
-       // Force adding of font path _before_ Application is initialized
-       support::os::addFontResources();
-
        // Let the frontend parse and remove all arguments that it knows
        pimpl_->application_.reset(createApplication(argc, argv));
 
@@ -483,9 +480,6 @@ int LyX::exec(int & argc, char * argv[])
 
        prepareExit();
 
-       // Restore original font resources after Application is destroyed.
-       support::os::restoreFontResources();
-
        return exit_status;
 }
 
Index: src/frontends/qt4/GuiFontLoader.cpp
===================================================================
--- src/frontends/qt4/GuiFontLoader.cpp (revision 20108)
+++ src/frontends/qt4/GuiFontLoader.cpp (working copy)
@@ -21,8 +21,11 @@
 #include "support/filetools.h"
 #include "support/lstrings.h"
 #include "support/Systemcall.h"
+#include "support/Package.h"
+#include "support/os.h"
 
 #include <qfontinfo.h>
+#include <QFontDatabase>
 
 #include <boost/tuple/tuple.hpp>
 
@@ -33,6 +36,9 @@
 #endif
 
 using lyx::support::contains;
+using lyx::support::package;
+using lyx::support::addPath;
+using lyx::support::addName;
 
 using std::endl;
 using std::make_pair;
@@ -41,6 +47,12 @@ using std::pair;
 using std::vector;
 using std::string;
 
+#if QT_VERSION >= 0x040200
+string const math_fonts[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
+       "eufm10", "msam10", "msbm10", "wasy10", "esint10"};
+int const num_math_fonts = sizeof(math_fonts) / sizeof(*math_fonts);
+#endif
+
 
 namespace lyx {
 namespace frontend {
@@ -189,6 +201,24 @@ pair<QFont, bool> const getSymbolFont(st
 
 GuiFontLoader::GuiFontLoader()
 {
+#if QT_VERSION >= 0x040200
+       fontID = new int[num_math_fonts];
+
+       string const fonts_dir =
+               addPath(package().system_support().absFilename(), "fonts");
+
+       for (int i = 0 ; i < num_math_fonts; ++i) {
+               string const font_file = lyx::support::os::external_path(
+                               addName(fonts_dir, math_fonts[i] + ".ttf"));
+               fontID[i] = 
QFontDatabase::addApplicationFont(toqstr(font_file));
+
+               LYXERR(Debug::FONT) << "Adding font " << font_file
+                                   << static_cast<const char *>
+                                       (fontID[i] < 0 ? " FAIL" : " OK")
+                                   << endl;
+       }
+#endif
+
        for (int i1 = 0; i1 < Font::NUM_FAMILIES; ++i1)
                for (int i2 = 0; i2 < 2; ++i2)
                        for (int i3 = 0; i3 < 4; ++i3)
@@ -197,6 +227,19 @@ GuiFontLoader::GuiFontLoader()
 }
 
 
+GuiFontLoader::~GuiFontLoader()
+{
+#if QT_VERSION >= 0x040200
+       for (int i = 0 ; i < num_math_fonts; ++i) {
+               if (fontID[i] >= 0)
+                       QFontDatabase::removeApplicationFont(fontID[i]);
+       }
+
+       delete [] fontID;
+#endif
+}
+
+
 void GuiFontLoader::update()
 {
        for (int i1 = 0; i1 < Font::NUM_FAMILIES; ++i1)
Index: src/frontends/qt4/GuiFontLoader.h
===================================================================
--- src/frontends/qt4/GuiFontLoader.h   (revision 20108)
+++ src/frontends/qt4/GuiFontLoader.h   (working copy)
@@ -47,7 +47,7 @@ public:
        GuiFontLoader();
 
        /// Destructor
-       virtual ~GuiFontLoader() {}
+       ~GuiFontLoader();
 
        virtual void update();
        virtual bool available(Font const & f);
@@ -73,6 +73,9 @@ public:
        }
 
 private:
+#if QT_VERSION >= 0x040200
+       int * fontID;
+#endif
        /// BUTT ugly !
        QLFontInfo * fontinfo_[Font::NUM_FAMILIES][2][4][10];
 };
Index: src/support/os_cygwin.cpp
===================================================================
--- src/support/os_cygwin.cpp   (revision 20108)
+++ src/support/os_cygwin.cpp   (working copy)
@@ -32,24 +32,6 @@ using std::string;
 
 using lyx::support::contains;
 
-#ifdef X_DISPLAY_MISSING
-#include "support/filetools.h"
-#include "support/Package.h"
-#include "support/Path.h"
-using lyx::support::addName;
-using lyx::support::addPath;
-using lyx::support::package;
-
-// API definition for manually calling font functions on Windows 2000 and later
-typedef int (WINAPI *FONTAPI)(LPCSTR, DWORD, PVOID);
-#define FR_PRIVATE     0x10
-
-// Names of TrueType fonts to load
-string const win_fonts_truetype[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
-       "eufm10", "msam10", "msbm10", "wasy10", "esint10"};
-const int num_fonts_truetype = sizeof(win_fonts_truetype) / 
sizeof(*win_fonts_truetype);
-#endif
-
 
 namespace lyx {
 namespace support {
@@ -294,59 +276,6 @@ bool autoOpenFile(string const & filenam
                win_path.c_str(), NULL, NULL, 1)) > 32;
 }
 
-
-void addFontResources()
-{
-#ifdef X_DISPLAY_MISSING
-       // Windows only: Add BaKoMa TrueType font resources
-       string const fonts_dir = 
addPath(package().system_support().absFilename(), "fonts");
-
-       HMODULE hDLL = LoadLibrary("gdi32");
-       FONTAPI pAddFontResourceEx =
-               (FONTAPI) GetProcAddress(hDLL, "AddFontResourceExA");
-
-       for (int i = 0 ; i < num_fonts_truetype ; ++i) {
-               string const font_current = to_local8bit(from_utf8(convert_path(
-                       addName(fonts_dir, win_fonts_truetype[i] + ".ttf"),
-                       PathStyle(windows))));
-               if (pAddFontResourceEx) {
-                       // Windows 2000 and later: Use AddFontResourceEx
-                       pAddFontResourceEx(font_current.c_str(), FR_PRIVATE, 0);
-               } else {
-                       // Older Windows versions: Use AddFontResource
-                       AddFontResource(font_current.c_str());
-               }
-       }
-       FreeLibrary(hDLL);
-#endif
-}
-
-
-void restoreFontResources()
-{
-#ifdef X_DISPLAY_MISSING
-       // Windows only: Remove BaKoMa TrueType font resources
-       string const fonts_dir = 
addPath(package().system_support().absFilename(), "fonts");
-
-       HMODULE hDLL = LoadLibrary("gdi32");
-       FONTAPI pRemoveFontResourceEx = (FONTAPI) GetProcAddress(hDLL, 
"RemoveFontResourceExA");
-
-       for(int i = 0 ; i < num_fonts_truetype ; ++i) {
-               string const font_current = to_local8bit(from_utf8(convert_path(
-                       addName(fonts_dir, win_fonts_truetype[i] + ".ttf"),
-                       PathStyle(windows))));
-               if (pRemoveFontResourceEx) {
-                       // Windows 2000 and later: Use RemoveFontResourceEx
-                       pRemoveFontResourceEx(font_current.c_str(), FR_PRIVATE, 
0);
-               } else {
-                       // Older Windows versions: Use RemoveFontResource
-                       RemoveFontResource(font_current.c_str());
-               }
-       }
-       FreeLibrary(hDLL);
-#endif
-}
-
 } // namespace os
 } // namespace support
 } // namespace lyx
Index: src/support/os_unix.cpp
===================================================================
--- src/support/os_unix.cpp     (revision 20108)
+++ src/support/os_unix.cpp     (working copy)
@@ -13,19 +13,11 @@
 #include <config.h>
 
 #include "support/os.h"
-#include "debug.h"
 
 #ifdef __APPLE__
 #include <Carbon/Carbon.h>
-#include <ApplicationServices/ApplicationServices.h>
-#elif defined(HAVE_FONTCONFIG_FONTCONFIG_H)
-#include "support/filetools.h"
-#include "support/Package.h"
-#include <fontconfig/fontconfig.h>
-using lyx::support::addPath;
 #endif
 
-using std::endl;
 using std::string;
 
 
@@ -200,52 +192,6 @@ bool autoOpenFile(string const & filenam
 #endif
 }
 
-
-void addFontResources()
-{
-#ifdef __APPLE__
-       CFBundleRef  myAppBundle = CFBundleGetMainBundle();
-       CFURLRef  myAppResourcesURL, FontsURL;
-       FSRef  fontDirRef;
-       FSSpec  fontDirSpec;
-       CFStringRef  filePath = CFStringCreateWithBytes(kCFAllocatorDefault,
-                                       (UInt8 *) "fonts", strlen("fonts"),
-                                       kCFStringEncodingISOLatin1, false);
-
-       myAppResourcesURL = CFBundleCopyResourcesDirectoryURL(myAppBundle);
-       FontsURL = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,
-                       myAppResourcesURL, filePath, true);
-       if (lyxerr.debugging(Debug::FONT)) {
-               UInt8  buf[255];
-               if (CFURLGetFileSystemRepresentation(FontsURL, true, buf, 255))
-                       lyxerr << "Adding Fonts directory: " << buf << endl;
-       }
-       CFURLGetFSRef (FontsURL, &fontDirRef);
-       OSStatus err = FSGetCatalogInfo (&fontDirRef, kFSCatInfoNone,
-                                        NULL, NULL, &fontDirSpec, NULL);
-       if (err)
-               lyxerr << "FSGetCatalogInfo err = " << err << endl;
-       err = FMActivateFonts (&fontDirSpec, NULL, NULL,
-                              kFMLocalActivationContext);
-       if (err)
-               lyxerr << "FMActivateFonts err = " << err << endl;
-#elif defined(HAVE_FONTCONFIG_FONTCONFIG_H)
-       // Register BaKoMa truetype fonts with fontconfig
-       string const fonts_dir =
-               addPath(package().system_support().absFilename(), "fonts");
-       if (!FcConfigAppFontAddDir(0, (FcChar8 const *)fonts_dir.c_str()))
-               lyxerr << "Unable to register fonts with fontconfig." << endl;
-#endif
-}
-
-
-void restoreFontResources()
-{
-#if defined(HAVE_FONTCONFIG_FONTCONFIG_H) && !defined(__APPLE__)
-       FcConfigAppFontClear(0);
-#endif
-}
-
 } // namespace os
 } // namespace support
 } // namespace lyx
Index: src/support/os.h
===================================================================
--- src/support/os.h    (revision 20108)
+++ src/support/os.h    (working copy)
@@ -109,19 +109,6 @@ bool canAutoOpenFile(std::string const &
  */
 bool autoOpenFile(std::string const & filename, auto_open_mode const mode = 
VIEW);
 
-/** General font utilities.
- *  FIXME: only MAC and WIN32 for now but it would be nice to convince
- *  fontconfig to do the same for linux.
- */
-
-/// Add fonts to the font subsystem, must be called before Application
-/// is initialized.
-void addFontResources();
-
-/// Restore original font resources, must be called after Application
-/// is destroyed.
-void restoreFontResources();
-
 } // namespace os
 } // namespace support
 } // namespace lyx
Index: src/support/os_win32.cpp
===================================================================
--- src/support/os_win32.cpp    (revision 20108)
+++ src/support/os_win32.cpp    (working copy)
@@ -19,8 +19,6 @@
 #include "support/lstrings.h"
 #include "support/filetools.h"
 #include "support/ExceptionMessage.h"
-#include "support/Package.h"
-#include "support/Path.h"
 
 #include "debug.h"
 #include "gettext.h"
@@ -70,18 +68,6 @@ using std::string;
 
 using lyx::support::runCommand;
 using lyx::support::split;
-using lyx::support::addName;
-using lyx::support::addPath;
-using lyx::support::package;
-
-// API definition for manually calling font functions on Windows 2000 and later
-typedef int (WINAPI *FONTAPI)(LPCSTR, DWORD, PVOID);
-#define FR_PRIVATE     0x10
-
-// Names of TrueType fonts to load
-string const win_fonts_truetype[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
-       "eufm10", "msam10", "msbm10", "wasy10", "esint10"};
-const int num_fonts_truetype = sizeof(win_fonts_truetype) / 
sizeof(*win_fonts_truetype);
 
 
 namespace lyx {
@@ -407,54 +393,6 @@ bool autoOpenFile(string const & filenam
                to_local8bit(from_utf8(filename)).c_str(), NULL, NULL, 1)) > 32;
 }
 
-
-void addFontResources()
-{
-       // Windows only: Add BaKoMa TrueType font resources
-       string const fonts_dir = 
addPath(package().system_support().absFilename(), "fonts");
-
-       HMODULE hDLL = LoadLibrary("gdi32");
-       FONTAPI pAddFontResourceEx = (FONTAPI) GetProcAddress(hDLL, 
"AddFontResourceExA");
-
-       for (int i = 0 ; i < num_fonts_truetype ; ++i) {
-               string const font_current =
-                       addName(fonts_dir, win_fonts_truetype[i] + ".ttf");
-               if (pAddFontResourceEx) {
-                       // Windows 2000 and later: Use AddFontResourceEx for 
private font
-                       
pAddFontResourceEx(to_local8bit(from_utf8(external_path(font_current))).c_str(),
 FR_PRIVATE, 0);
-               } else {
-                       // Older Windows versions: Use AddFontResource
-                       
AddFontResource(to_local8bit(from_utf8(external_path(font_current))).c_str());
-               }
-       }
-
-       FreeLibrary(hDLL);
-}
-
-
-void restoreFontResources()
-{
-       // Windows only: Remove BaKoMa TrueType font resources
-       string const fonts_dir = 
addPath(package().system_support().absFilename(), "fonts");
-
-       HMODULE hDLL = LoadLibrary("gdi32");
-       FONTAPI pRemoveFontResourceEx = (FONTAPI) GetProcAddress(hDLL, 
"RemoveFontResourceExA");
-
-       for(int i = 0 ; i < num_fonts_truetype ; ++i) {
-               string const font_current =
-                       addName(fonts_dir, win_fonts_truetype[i] + ".ttf");
-               if (pRemoveFontResourceEx) {
-                       // Windows 2000 and later: Use RemoveFontResourceEx for 
private font
-                       
pRemoveFontResourceEx(to_local8bit(from_utf8(external_path(font_current))).c_str(),
 FR_PRIVATE, 0);
-               } else {
-                       // Older Windows versions: Use RemoveFontResource
-                       
RemoveFontResource(to_local8bit(from_utf8(external_path(font_current))).c_str());
-               }
-       }
-
-       FreeLibrary(hDLL);
-}
-
 } // namespace os
 } // namespace support
 } // namespace lyx
Index: configure.ac
===================================================================
--- configure.ac        (revision 20108)
+++ configure.ac        (working copy)
@@ -234,7 +234,7 @@ AC_LANG_POP(C)
 # some standard header files
 AC_HEADER_DIRENT
 AC_HEADER_MAJOR
-AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h strings.h locale.h 
utime.h sys/utime.h io.h process.h NewAPIs.h fontconfig/fontconfig.h)
+AC_CHECK_HEADERS(sys/time.h sys/types.h sys/select.h strings.h locale.h 
utime.h sys/utime.h io.h process.h NewAPIs.h)
 
 # some standard structures
 AC_HEADER_STAT

Reply via email to