*
* \author Asger Alstrup
*
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
*/
#include <config.h>
-#include <cmath> // fabs()
-
-#ifdef __GNUG__
-#pragma implementation
-#endif
#include "xfont_loader.h"
#include "FontInfo.h"
-#include "gettext.h"
+
#include "debug.h"
+#include "LColor.h"
#include "lyxrc.h" // lyxrc.font_*
-#include "BufferView.h"
-#include "frontends/LyXView.h"
-#include "support/systemcall.h"
+
+#include "frontends/lyx_gui.h"
+
#include "support/filetools.h"
+#include "support/systemcall.h"
+
+#include "lyx_forms.h"
-#include FORMS_H_LOCATION
+#include <algorithm>
+
+using lyx::support::LibFileSearch;
+using lyx::support::OnlyPath;
+using lyx::support::Systemcall;
using std::endl;
+using std::string;
+
// The global fontloader
xfont_loader fontloader;
default:
return string();
- }
+ }
+}
+
+string const fontName(string const & family, string const & foundry)
+{
+ if (foundry.empty() || foundry == "Xft")
+ return "-*-"+family;
+ else
+ return "-"+foundry+"-"+family;
}
+
bool addFontPath()
{
string const dir = OnlyPath(LibFileSearch("xfonts", "fonts.dir"));
char ** p = XGetFontPath(fl_get_display(), &n);
if (std::find(p, p + n, dir) != p + n)
return false;
- lyxerr << "Adding " << dir << " to the font path.\n";
+ lyxerr[Debug::FONT] << "Adding " << dir
+ << " to the font path." << endl;
string const command = "xset fp+ " + dir;
Systemcall s;
- if (!s.startscript(Systemcall::Wait, command))
+ if (!s.startscript(Systemcall::Wait, command))
return true;
- lyxerr << "Unable to add font path.\n";
+ lyxerr << "Unable to add " << dir << "to the font path."
+ << endl;
}
return false;
}
first_time = false;
if (addFontPath()) {
delete fontinfo[family][series][shape];
- fontinfo[family][series][shape] = new FontInfo(pat);
+ fontinfo[family][series][shape] = new FontInfo(pat);
}
}
return;
switch (family) {
case LyXFont::ROMAN_FAMILY:
switch (cfam) {
- case 0: ffamily = lyxrc.roman_font_name; break;
+ case 0: ffamily = fontName(lyxrc.roman_font_name,
+ lyxrc.roman_font_foundry);
+ break;
case 1: ffamily = "-*-times";
default: cfam = 100;
}
break;
case LyXFont::SANS_FAMILY:
switch (cfam) {
- case 0: ffamily = lyxrc.sans_font_name; break;
+ case 0: ffamily = fontName(lyxrc.sans_font_name,
+ lyxrc.sans_font_foundry);
+ break;
case 1: ffamily = "-*-helvetica";
default: cfam = 100;
}
break;
case LyXFont::TYPEWRITER_FAMILY:
switch (cfam) {
- case 0: ffamily = lyxrc.typewriter_font_name; break;
+ case 0: ffamily = fontName(lyxrc.typewriter_font_name,
+ lyxrc.typewriter_font_foundry);
+ break;
case 1: ffamily = "-*-courier";
default: cfam = 100;
}
LyXFont::FONT_SHAPE shape,
LyXFont::FONT_SIZE size)
{
- if (!lyxrc.use_gui) {
+ if (!lyx_gui::use_gui) {
if (!dummyXFontStructisGood) {
// no character specific info
dummyXFontStruct.per_char = 0;
bool xfont_loader::available(LyXFont const & f)
{
- if (!lyxrc.use_gui)
+ if (!lyx_gui::use_gui)
return false;
if (!fontinfo[f.family()][f.series()][f.realShape()])