X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FFontLoader.C;h=7567dde5be7fbfe7552db3874b367e1c5b642c30;hb=98c966c64594611e469313314abd1e59524adb4a;hp=760013b63a6ccb1a9a20ab311ce22033fe64cc6b;hpb=0cf717d0c8ba3d766acb45c3adfcc0de1f3b79db;p=lyx.git diff --git a/src/FontLoader.C b/src/FontLoader.C index 760013b63a..7567dde5be 100644 --- a/src/FontLoader.C +++ b/src/FontLoader.C @@ -1,8 +1,8 @@ /* This file is part of - * ====================================================== - * + * ====================================================== + * * LyX, The Document Processor - * + * * Copyright 1997 Asger Alstrup * and the LyX Team. * @@ -60,7 +60,7 @@ void FontLoader::update() void FontLoader::reset() { // Clear font infos, font structs and font metrics - for (int i1 = 0; i1 < 9; ++i1) + for (int i1 = 0; i1 < LyXFont::NUM_FAMILIES; ++i1) for (int i2 = 0; i2 < 2; ++i2) for (int i3 = 0; i3 < 4; ++i3) { fontinfo[i1][i2][i3] = 0; @@ -72,10 +72,10 @@ void FontLoader::reset() // Unload all fonts -void FontLoader::unload() +void FontLoader::unload() { // Unload all fonts - for (int i1 = 0; i1 < 9; ++i1) + for (int i1 = 0; i1 < LyXFont::NUM_FAMILIES; ++i1) for (int i2 = 0; i2 < 2; ++i2) for (int i3 = 0; i3 < 4; ++i3) { if (fontinfo[i1][i2][i3]) { @@ -95,8 +95,8 @@ void FontLoader::unload() // Get font info /* Takes care of finding which font that can match the given request. Tries different alternatives. */ -void FontLoader::getFontinfo(LyXFont::FONT_FAMILY family, - LyXFont::FONT_SERIES series, +void FontLoader::getFontinfo(LyXFont::FONT_FAMILY family, + LyXFont::FONT_SERIES series, LyXFont::FONT_SHAPE shape) { // Do we have the font info already? @@ -104,42 +104,52 @@ void FontLoader::getFontinfo(LyXFont::FONT_FAMILY family, return; // Special fonts - switch (family) + switch (family) { case LyXFont::SYMBOL_FAMILY: fontinfo[family][series][shape] = - new FontInfo("-*-symbol-*-*-*-*-*-*-*-*-*-*-*-*"); + new FontInfo("-*-symbol-*-*-*-*-*-*-*-*-*-*-adobe-fontspecific"); + return; + + case LyXFont::CMR_FAMILY: + fontinfo[family][series][shape] = + new FontInfo("-*-cmr10-medium-*-*-*-*-*-*-*-*-*-*-*"); return; case LyXFont::CMSY_FAMILY: fontinfo[family][series][shape] = - new FontInfo("-*-cmsy-*-*-*-*-*-*-*-*-*-*-*-*"); + new FontInfo("-*-cmsy10-*-*-*-*-*-*-*-*-*-*-*-*"); return; case LyXFont::CMM_FAMILY: fontinfo[family][series][shape] = - new FontInfo("-*-cmmi-medium-*-*-*-*-*-*-*-*-*-*-*"); + new FontInfo("-*-cmmi10-medium-*-*-*-*-*-*-*-*-*-*-*"); return; case LyXFont::CMEX_FAMILY: fontinfo[family][series][shape] = - new FontInfo("-*-cmex-*-*-*-*-*-*-*-*-*-*-*-*"); + new FontInfo("-*-cmex10-*-*-*-*-*-*-*-*-*-*-*-*"); return; case LyXFont::MSA_FAMILY: fontinfo[family][series][shape] = - new FontInfo("-*-msam-*-*-*-*-*-*-*-*-*-*-*-*"); + new FontInfo("-*-msam10-*-*-*-*-*-*-*-*-*-*-*-*"); return; case LyXFont::MSB_FAMILY: - fontinfo[family][series][shape] = - new FontInfo("-*-msbm-*-*-*-*-*-*-*-*-*-*-*-*"); + fontinfo[family][series][shape] = + new FontInfo("-*-msbm10-*-*-*-*-*-*-*-*-*-*-*-*"); + return; + + case LyXFont::EUFRAK_FAMILY: + fontinfo[family][series][shape] = + new FontInfo("-*-eufm10-medium-*-*-*-*-*-*-*-*-*-*-*"); return; default: break; } - + // Normal font. Let's search for an existing name that matches. string ffamily; @@ -249,19 +259,19 @@ bool dummyXFontStructisGood = false; } // namespace anon /// Do load font -XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, - LyXFont::FONT_SERIES series, - LyXFont::FONT_SHAPE shape, +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; + dummyXFontStruct.per_char = 0; // unit ascent on character displays - dummyXFontStruct.ascent = 1; + dummyXFontStruct.ascent = 1; // no descent on character displays - dummyXFontStruct.descent = 0; + dummyXFontStruct.descent = 0; dummyXFontStructisGood = true; } @@ -269,8 +279,8 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, } 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); @@ -285,7 +295,7 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, current_view->owner()->messagePush(_("Loading font into X-Server...")); fs = XLoadQueryFont(GUIRunTime::x11Display(), font.c_str()); - + if (fs == 0) { if (font == "fixed") { lyxerr << "We're doomed. Can't get 'fixed' font." << endl; @@ -305,7 +315,7 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, f.setUnderbar(LyXFont::INHERIT); f.setNoun(LyXFont::INHERIT); f.setColor(LColor::inherit); - lyxerr << "Font '" << f.stateText(0) + lyxerr << "Font '" << f.stateText(0) << "' matched by\n" << font << endl; } @@ -318,7 +328,11 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, bool FontLoader::available(LyXFont const & f) { - load(f.family(), f.series(), f.realShape(), f.size()); + if (!lyxrc.use_gui) + return false; + + if (!fontinfo[f.family()][f.series()][f.realShape()]) + getFontinfo(f.family(), f.series(), f.realShape()); return fontinfo[f.family()][f.series()][f.realShape()] ->getFontname(f.size()).size(); }