X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FFontLoader.C;h=fafb7110b96fd9801d0f8f95e2637301417bb5ae;hb=f448e22d483e1370bcbfbb7be8cb47ad7251ed77;hp=cbf3bd5c456e6adc272f8b93480c038e03edf8e3;hpb=90343c7ade8fb41afe6c50d4902b7a15bfa8c4e6;p=lyx.git diff --git a/src/FontLoader.C b/src/FontLoader.C index cbf3bd5c45..fafb7110b9 100644 --- a/src/FontLoader.C +++ b/src/FontLoader.C @@ -11,7 +11,6 @@ #include #include // fabs() -#include // atoi() #ifdef __GNUG__ #pragma implementation "FontLoader.h" @@ -26,8 +25,15 @@ #include "LyXView.h" #include "minibuffer.h" +using std::endl; + extern BufferView * current_view; + +// The global fontloader +FontLoader fontloader; + + // Initialize font loader FontLoader::FontLoader() { @@ -52,11 +58,11 @@ void FontLoader::update() void FontLoader::reset() { // Clear font infos, font structs and font metrics - for (int i1 = 0; i1<4; i1++) - for (int i2 = 0; i2<2; i2++) - for (int i3 = 0; i3<4; i3++) { + for (int i1 = 0; i1 < 4; ++i1) + for (int i2 = 0; i2 < 2; ++i2) + for (int i3 = 0; i3 < 4; ++i3) { fontinfo[i1][i2][i3] = 0; - for (int i4 = 0; i4<10; i4++) { + for (int i4 = 0; i4<10; ++i4) { fontstruct[i1][i2][i3][i4] = 0; } } @@ -66,16 +72,16 @@ void FontLoader::reset() void FontLoader::unload() { // Unload all fonts - for (int i1 = 0; i1<4; i1++) - for (int i2 = 0; i2<2; i2++) - for (int i3 = 0; i3<4; i3++) { + for (int i1 = 0; i1 < 4; ++i1) + for (int i2 = 0; i2 < 2; ++i2) + for (int i3 = 0; i3 < 4; ++i3) { if (fontinfo[i1][i2][i3]) { delete fontinfo[i1][i2][i3]; fontinfo[i1][i2][i3] = 0; } - for (int i4 = 0; i4<10; i4++) { + for (int i4 = 0; i4 < 10; ++i4) { if (fontstruct[i1][i2][i3][i4]) { - XFreeFont(fl_display, fontstruct[i1][i2][i3][i4]); + XFreeFont(fl_get_display(), fontstruct[i1][i2][i3][i4]); fontstruct[i1][i2][i3][i4] = 0; } } @@ -198,27 +204,9 @@ void FontLoader::getFontinfo(LyXFont::FONT_FAMILY family, } -// A dummy fontstruct used when there is no gui. Only the last 3 have -// well-thought values... -static XFontStruct dummyXFontStruct = { - /*XExtData *ext_data; */ 0, - /* Font fid; */ 0, - /* unsigned direction; */ FontLeftToRight, - /* unsigned min_char_or_byte2; */ 0, - /* unsigned max_char_or_byte2; */ 0, - /* unsigned min_byte1; */ 0, - /* unsigned max_byte1; */ 0, - /* Bool all_chars_exist; */ 0, - /* unsigned default_char; */ 0, - /* int n_properties; */ 0, - /* XFontProp *properties; */ 0, - /* XCharStruct min_bounds; */ 0, - /* XCharStruct max_bounds; */ 0, - /* XCharStruct *per_char; */ 0, // no character specific info - /* int ascent; */ 1, // unit ascent on character displays - /* int descent; */ 0, // no descent on character displays -}; - +// 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, @@ -227,6 +215,16 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, 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; } @@ -246,14 +244,14 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, current_view->owner()->getMiniBuffer()->Store(); current_view->owner()->getMiniBuffer()->Set(_("Loading font into X-Server...")); - fs = XLoadQueryFont(fl_display, font.c_str()); + fs = XLoadQueryFont(fl_get_display(), font.c_str()); if (fs == 0) { if (font == "fixed") { lyxerr << "We're doomed. Can't get 'fixed' font." << endl; } else { lyxerr << "Could not get font. Using 'fixed'." << endl; - fs = XLoadQueryFont(fl_display, "fixed"); + fs = XLoadQueryFont(fl_get_display(), "fixed"); } } else if (lyxerr.debugging(Debug::FONT)) { // Tell user the font matching @@ -268,7 +266,7 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, f.setNoun(LyXFont::INHERIT); f.setLatex(LyXFont::INHERIT); f.setColor(LColor::inherit); - lyxerr << "Font '" << f.stateText() + lyxerr << "Font '" << f.stateText(0) << "' matched by\n" << font << endl; }