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;
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]) {
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-*-*-*-*-*-*-*-*-*-*-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("-*-cmsy10-*-*-*-*-*-*-*-*-*-*-*-*");
+ return;
+
+ case LyXFont::CMM_FAMILY:
+ fontinfo[family][series][shape] =
+ new FontInfo("-*-cmmi10-medium-*-*-*-*-*-*-*-*-*-*-*");
+ return;
+
+ case LyXFont::CMEX_FAMILY:
+ fontinfo[family][series][shape] =
+ new FontInfo("-*-cmex10-*-*-*-*-*-*-*-*-*-*-*-*");
+ return;
+
+ case LyXFont::MSA_FAMILY:
+ fontinfo[family][series][shape] =
+ new FontInfo("-*-msam10-*-*-*-*-*-*-*-*-*-*-*-*");
+ return;
+
+ case LyXFont::MSB_FAMILY:
+ 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;
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();
+}