X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FFontLoader.C;h=273aab391029d1bbff6be2f8b632d2f5f09d4f1e;hb=dff2911bda426ad439e6475f62183cedd7044801;hp=bdc47763ff3ecce4e156e5027ea78c61dfb8a6fc;hpb=54e7ddb5d9a348ae9cfc60f399e9c0c2658ab4c5;p=lyx.git diff --git a/src/FontLoader.C b/src/FontLoader.C index bdc47763ff..273aab3910 100644 --- a/src/FontLoader.C +++ b/src/FontLoader.C @@ -60,7 +60,7 @@ void FontLoader::update() void FontLoader::reset() { // Clear font infos, font structs and font metrics - for (int i1 = 0; i1 < 4; ++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; @@ -75,7 +75,7 @@ void FontLoader::reset() void FontLoader::unload() { // Unload all fonts - for (int i1 = 0; i1 < 4; ++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]) { @@ -103,11 +103,48 @@ void FontLoader::getFontinfo(LyXFont::FONT_FAMILY family, if (fontinfo[family][series][shape] != 0) return; - // Special code for the symbol family - if (family == LyXFont::SYMBOL_FAMILY){ - fontinfo[family][series][shape] = new FontInfo("-*-symbol-*"); - return; + // Special fonts + switch (family) + { + case LyXFont::SYMBOL_FAMILY: + fontinfo[family][series][shape] = + new FontInfo("-*-symbol-*-*-*-*-*-*-*-*-*-*-*-*"); + return; + + case LyXFont::CMR_FAMILY: + fontinfo[family][series][shape] = + new FontInfo("-*-cmr-medium-*-*-*-*-*-*-*-*-*-*-*"); + return; + + case LyXFont::CMSY_FAMILY: + fontinfo[family][series][shape] = + new FontInfo("-*-cmsy-*-*-*-*-*-*-*-*-*-*-*-*"); + return; + + case LyXFont::CMM_FAMILY: + fontinfo[family][series][shape] = + new FontInfo("-*-cmmi-medium-*-*-*-*-*-*-*-*-*-*-*"); + return; + + case LyXFont::CMEX_FAMILY: + fontinfo[family][series][shape] = + new FontInfo("-*-cmex-*-*-*-*-*-*-*-*-*-*-*-*"); + return; + + case LyXFont::MSA_FAMILY: + fontinfo[family][series][shape] = + new FontInfo("-*-msam-*-*-*-*-*-*-*-*-*-*-*-*"); + return; + + case LyXFont::MSB_FAMILY: + fontinfo[family][series][shape] = + new FontInfo("-*-msbm-*-*-*-*-*-*-*-*-*-*-*-*"); + return; + + default: + break; } + // Normal font. Let's search for an existing name that matches. string ffamily; @@ -282,3 +319,15 @@ XFontStruct * FontLoader::doLoad(LyXFont::FONT_FAMILY family, fontstruct[family][series][shape][size] = fs; return fs; } + + +bool FontLoader::available(LyXFont const & f) +{ + 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(); +}