filefilterlist.h
filename.h
filetools.h
+ fontutils.h
forkedcall.h
forkedcallqueue.h
forkedcontr.h
filefilterlist.C
filename.C
filetools.C
+ fontutils.C
forkedcall.C
forkedcallqueue.C
forkedcontr.C
int exec(int & argc, char * argv[])
{
- // Force adding of font path _before_ QApplication is initialized
- FontLoader::initFontPath();
-
GuiApplication app(argc, argv);
guiApp = &app;
using std::vector;
using std::string;
-#ifdef Q_WS_MACX
-#include <ApplicationServices/ApplicationServices.h>
-#endif
-
-#ifdef Q_WS_WIN
-#include "windows.h"
-#include "support/os.h"
-#include "support/package.h"
-#include "support/path.h"
-using lyx::support::addName;
-using lyx::support::addPath;
-using lyx::support::package;
-namespace os = lyx::support::os;
-string const win_fonts_truetype[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
- "eufm10", "msam10", "msbm10", "wasy10"};
-const int num_fonts_truetype = sizeof(win_fonts_truetype) / sizeof(*win_fonts_truetype);
-#endif
-
-void FontLoader::initFontPath()
-{
-#ifdef Q_WS_MACX
- 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;
-#endif
-
-#ifdef Q_WS_WIN
- // Windows only: Add BaKoMa TrueType font resources
- string const fonts_dir = addPath(package().system_support(), "fonts");
-
- for (int i = 0 ; i < num_fonts_truetype ; ++i) {
- string const font_current =
- addName(fonts_dir, win_fonts_truetype[i] + ".ttf");
- AddFontResource(os::external_path(font_current).c_str());
- }
-#endif
-}
FontLoader::~FontLoader() {
-#ifdef Q_WS_WIN
- // Windows only: Remove BaKoMa TrueType font resources
- string const fonts_dir = addPath(package().system_support(), "fonts");
-
- for(int i = 0 ; i < num_fonts_truetype ; ++i) {
- string const font_current =
- addName(fonts_dir, win_fonts_truetype[i] + ".ttf");
- RemoveFontResource(os::external_path(font_current).c_str());
- }
-#endif
}
namespace {
return fontinfo(f).metrics;
}
- /// Called before QApplication is initialized
- static void initFontPath();
-
/// Called the first time when available() can't load a symbol font
static void addToFontPath();
using std::vector;
using std::string;
-#ifdef Q_WS_MACX
-#include <ApplicationServices/ApplicationServices.h>
-#endif
-
-#ifdef Q_WS_WIN
-#include "windows.h"
-#include "support/os.h"
-#include "support/package.h"
-#include "support/path.h"
-using lyx::support::addName;
-using lyx::support::addPath;
-using lyx::support::package;
-namespace os = lyx::support::os;
-string const win_fonts_truetype[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
- "eufm10", "msam10", "msbm10", "wasy10"};
-const int num_fonts_truetype = sizeof(win_fonts_truetype) / sizeof(*win_fonts_truetype);
-#endif
-
-void FontLoader::initFontPath()
-{
-#ifdef Q_WS_MACX
- 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;
-#endif
-
-#ifdef Q_WS_WIN
- // Windows only: Add BaKoMa TrueType font resources
- string const fonts_dir = addPath(package().system_support(), "fonts");
-
- for (int i = 0 ; i < num_fonts_truetype ; ++i) {
- string const font_current =
- addName(fonts_dir, win_fonts_truetype[i] + ".ttf");
- AddFontResource(os::external_path(font_current).c_str());
- }
-#endif
-}
FontLoader::~FontLoader() {
-#ifdef Q_WS_WIN
- // Windows only: Remove BaKoMa TrueType font resources
- string const fonts_dir = addPath(package().system_support(), "fonts");
-
- for(int i = 0 ; i < num_fonts_truetype ; ++i) {
- string const font_current =
- addName(fonts_dir, win_fonts_truetype[i] + ".ttf");
- RemoveFontResource(os::external_path(font_current).c_str());
- }
-#endif
}
namespace {
return fontinfo(f).metrics;
}
- /// Called before QApplication is initialized
- static void initFontPath();
-
/// Called the first time when available() can't load a symbol font
static void addToFontPath();
#include "GuiView.h"
-#include "FontLoader.h"
#include "QLImage.h"
#include "qt_helpers.h"
#include "socket_callback.h"
Clipboard and Selection access.
*/
- // Force adding of font path _before_ QApplication is initialized
- FontLoader::initFontPath();
-
#if defined(Q_WS_WIN) && !defined(Q_CYGWIN_WIN)
static GuiApplication app(argc, argv);
#else
#include "support/filefilterlist.h"
#include "support/filetools.h"
+#include "support/fontutils.h"
#include "support/forkedcall.h"
#include "support/fs_extras.h"
#include "support/lyxlib.h"
}
lyx_gui::exit(0);
+ // Restore original font resources after Application is destroyed.
+ lyx::support::restoreFontResources();
}
#include "support/environment.h"
#include "support/filetools.h"
+#include "support/fontutils.h"
#include "support/lyxlib.h"
#include "support/convert.h"
#include "support/os.h"
// FIXME: We should not directly call exit(), since it only
// guarantees a return to the system, no application cleanup.
// This may cause troubles with not executed destructors.
- if (lyx_gui::use_gui)
+ if (lyx_gui::use_gui) {
// lyx_gui::exit may return and only schedule the exit
lyx_gui::exit(status);
+ // Restore original font resources after Application is destroyed.
+ lyx::support::restoreFontResources();
+ }
+
exit(status);
}
lyx::support::top_build_dir_is_one_level_up);
// Start the real execution loop.
- if (lyx_gui::use_gui)
+ if (lyx_gui::use_gui) {
+ // Force adding of font path _before_ Application is initialized
+ lyx::support::addFontResources();
return lyx_gui::exec(argc, argv);
+ }
else
return exec2(argc, argv);
}
filename.h \
filetools.C \
filetools.h \
+ fontutils.C \
+ fontutils.h \
forkedcall.C \
forkedcall.h \
forkedcallqueue.C \
--- /dev/null
+/**
+ * \file fontutils.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Asger Alstrup
+ * \author John Levon
+ *
+ * Full author contact details are available in file CREDITS.
+ *
+ * General font utilities.
+ */
+
+#include <config.h>
+
+#include "fontutils.h"
+
+#include "support/filetools.h"
+#include "support/lstrings.h"
+#include "support/systemcall.h"
+
+#ifdef __APPLE__
+#include <ApplicationServices/ApplicationServices.h>
+#endif
+
+#ifdef _WIN32
+#include "windows.h"
+#include "support/os.h"
+#include "support/package.h"
+#include "support/path.h"
+using lyx::support::addName;
+using lyx::support::addPath;
+using lyx::support::package;
+namespace os = lyx::support::os;
+
+using std::string;
+
+string const win_fonts_truetype[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
+ "eufm10", "msam10", "msbm10", "wasy10"};
+const int num_fonts_truetype = sizeof(win_fonts_truetype) / sizeof(*win_fonts_truetype);
+#endif
+
+
+namespace lyx {
+namespace support {
+
+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;
+#endif
+
+#ifdef _WIN32
+ // Windows only: Add BaKoMa TrueType font resources
+ string const fonts_dir = addPath(package().system_support(), "fonts");
+
+ for (int i = 0 ; i < num_fonts_truetype ; ++i) {
+ string const font_current =
+ addName(fonts_dir, win_fonts_truetype[i] + ".ttf");
+ AddFontResource(os::external_path(font_current).c_str());
+ }
+#endif
+}
+
+
+void restoreFontResources()
+{
+#ifdef _WIN32
+ // Windows only: Remove BaKoMa TrueType font resources
+ string const fonts_dir = addPath(package().system_support(), "fonts");
+
+ for(int i = 0 ; i < num_fonts_truetype ; ++i) {
+ string const font_current =
+ addName(fonts_dir, win_fonts_truetype[i] + ".ttf");
+ RemoveFontResource(os::external_path(font_current).c_str());
+ }
+#endif
+}
+
+} //namespace support
+} // namespace lyx
--- /dev/null
+// -*- C++ -*-
+/**
+ * \file fontutils.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author John Levon
+ *
+ * Full author contact details are available in file CREDITS.
+ *
+ * General font utilities.
+ * FIXME: only MAC and WIN32 for now but it would be nice to convince
+ * fontconfig to do the same for linux.
+ */
+
+#ifndef LYX_FONTUTILS_H
+#define LYX_FONTUTILS_H
+
+namespace lyx {
+namespace support {
+
+/// 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 support
+} // namespace lyx
+
+#endif