lyx_mirror/src/frontends/FontLoader.h
Georg Baum be0cd47559 Work around broken math symbol display (bug 7954)
This extends the already existing math symbol fallback mechanism in two ways:
1) When considering the availability of the math font, also take broken
   code points into account. These are currently 0x0009 and 0x00ad, depending
   on the platform.
2) If the fallback symbol in the standard "Symbol" font is not given, or if
   the "Symbol" font is not available, or the fallback symbol is one of the
   broken ones, try to use a generic unicode symbol as second fallback instead.
   If this is available, we rely on Qt to find a font which has it. Only if
   this is not available, display the symbol as ERT.
This ensures that we do never get a symbol which is not displayed: Either
it can be displayed, with or without fallback, or it will be shown as ERT.
2014-03-08 11:13:39 +01:00

57 lines
1.0 KiB
C++

// -*- C++ -*-
/**
* \file FontLoader.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#ifndef FONTLOADER_H
#define FONTLOADER_H
#include "support/strfwd.h"
namespace lyx {
class FontInfo;
namespace frontend {
class FontMetrics;
/// Hold info about a particular font
class FontLoader
{
public:
///
FontLoader();
/// Clears cache
~FontLoader();
/// Update fonts after zoom, dpi, font names, or norm change
// (basically by deleting all cached values)
void update();
/// Is the given font available ?
bool available(FontInfo const & f);
/// Can the given symbol be displayed in general?
bool canBeDisplayed(char_type c);
/// Get the Font metrics for this FontInfo
FontMetrics const & metrics(FontInfo const & f);
};
} // namespace frontend
/// Implementation is in Application.cpp
extern frontend::FontLoader & theFontLoader();
} // namespace lyx
#endif // FONTLOADER_H