*
* LyX, The Document Processor
*
- * Copyright (C) 1997 Asger Alstrup
+ * Copyright 1997 Asger Alstrup
* and the LyX Team.
*
* ====================================================== */
#include "FontInfo.h"
#include "debug.h"
#include "lyxrc.h" // lyxrc.font_*
-extern LyXRC * lyxrc;
#include "BufferView.h"
#include "LyXView.h"
#include "minibuffer.h"
+
+using std::endl;
+
extern BufferView * current_view;
+
+// The global fontloader
+FontLoader fontloader;
+
+
// Initialize font loader
FontLoader::FontLoader()
{
string ffamily;
string fseries;
string fshape;
- string norm = lyxrc->font_norm;
+ string norm = lyxrc.font_norm;
string fontname;
FontInfo * fi = new FontInfo();
switch (family) {
case LyXFont::ROMAN_FAMILY:
switch (cfam) {
- case 0: ffamily = lyxrc->roman_font_name; break;
+ case 0: ffamily = lyxrc.roman_font_name; 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 = lyxrc.sans_font_name; 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 = lyxrc.typewriter_font_name; break;
case 1: ffamily = "-*-courier";
default: cfam = 100;
}
}
}
+
+// A dummy fontstruct used when there is no gui.
+static XFontStruct dummyXFontStruct;
+static bool dummyXFontStructisGood = false;
+
/// Do load font
XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family,
LyXFont::FONT_SERIES series,
LyXFont::FONT_SHAPE shape,
LyXFont::FONT_SIZE size)
{
+ if (!lyxrc.use_gui) {
+ if (!dummyXFontStructisGood) {
+ // no character specific info
+ dummyXFontStruct.per_char = 0;
+ // unit ascent on character displays
+ dummyXFontStruct.ascent = 1;
+ // no descent on character displays
+ dummyXFontStruct.descent = 0;
+ dummyXFontStructisGood = true;
+ }
+
+ return &dummyXFontStruct;
+ }
+
getFontinfo(family, series, shape);
- int fsize = int( (lyxrc->font_sizes[size] * lyxrc->dpi *
- (lyxrc->zoom/100.0) ) / 72.27 + 0.5 );
+ int fsize = int( (lyxrc.font_sizes[size] * lyxrc.dpi *
+ (lyxrc.zoom/100.0) ) / 72.27 + 0.5 );
string font = fontinfo[family][series][shape]->getFontname(fsize);
font = "fixed";
}
+ XFontStruct * fs = 0;
+
current_view->owner()->getMiniBuffer()->Store();
current_view->owner()->getMiniBuffer()->Set(_("Loading font into X-Server..."));
-
- XFontStruct * fs = XLoadQueryFont(fl_display, font.c_str());
-
+ fs = XLoadQueryFont(fl_display, font.c_str());
+
if (fs == 0) {
if (font == "fixed") {
lyxerr << "We're doomed. Can't get 'fixed' font." << endl;
lyxerr << "Could not get font. Using 'fixed'." << endl;
fs = XLoadQueryFont(fl_display, "fixed");
}
- } else {
- if (lyxerr.debugging(Debug::FONT)) {
- // Tell user the font matching
- LyXFont f;
- f.setFamily(family);
- f.setSeries(series);
- f.setShape(shape);
- f.setSize(size);
- // The rest of the attributes are not interesting
- f.setEmph(LyXFont::INHERIT);
- f.setUnderbar(LyXFont::INHERIT);
- f.setNoun(LyXFont::INHERIT);
- f.setLatex(LyXFont::INHERIT);
-#ifdef USE_PAINTER
- f.setColor(LColor::inherit);
-#else
- f.setColor(LyXFont::INHERIT_COLOR);
-#endif
- lyxerr << "Font '" << f.stateText()
- << "' matched by\n" << font << endl;
- }
+ } else if (lyxerr.debugging(Debug::FONT)) {
+ // Tell user the font matching
+ LyXFont f;
+ f.setFamily(family);
+ f.setSeries(series);
+ f.setShape(shape);
+ f.setSize(size);
+ // The rest of the attributes are not interesting
+ f.setEmph(LyXFont::INHERIT);
+ f.setUnderbar(LyXFont::INHERIT);
+ f.setNoun(LyXFont::INHERIT);
+ f.setLatex(LyXFont::INHERIT);
+ f.setColor(LColor::inherit);
+ lyxerr << "Font '" << f.stateText(0)
+ << "' matched by\n" << font << endl;
}
+
current_view->owner()->getMiniBuffer()->Reset();
fontstruct[family][series][shape][size] = fs;