mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
Remove optimization to avoid char and symbol metrics calculation. This was incompatible with the way the font zooming works in LyX.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18266 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
7831aff546
commit
bd3e07179f
@ -17,9 +17,11 @@
|
||||
|
||||
#include "debug.h"
|
||||
#include "Dimension.h"
|
||||
#include "support/lstrings.h"
|
||||
#include "LyXRC.h"
|
||||
#include "TextPainter.h"
|
||||
|
||||
#include "support/lstrings.h"
|
||||
|
||||
#include "frontends/FontMetrics.h"
|
||||
|
||||
|
||||
@ -59,12 +61,6 @@ auto_ptr<Inset> InsetMathChar::doClone() const
|
||||
|
||||
bool InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
{
|
||||
if (mi.base.font == font_cache_) {
|
||||
dim = dim_;
|
||||
return false;
|
||||
}
|
||||
font_cache_ = mi.base.font;
|
||||
|
||||
#if 1
|
||||
if (char_ == '=' && has_math_fonts) {
|
||||
FontSetChanger dummy(mi.base, "cmr");
|
||||
@ -92,6 +88,10 @@ bool InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
dim.wid += 2 * theFontMetrics(font_).width(' ');
|
||||
lyxerr << "InsetMathChar::metrics: " << dim << endl;
|
||||
#endif
|
||||
|
||||
if (dim_ == dim)
|
||||
return false;
|
||||
|
||||
dim_ = dim;
|
||||
return true;
|
||||
}
|
||||
|
@ -55,8 +55,6 @@ private:
|
||||
char_type char_;
|
||||
/// cached kerning for superscript
|
||||
mutable int kerning_;
|
||||
///
|
||||
mutable Font font_cache_;
|
||||
};
|
||||
|
||||
} // namespace lyx
|
||||
|
@ -18,7 +18,9 @@
|
||||
#include "MathParser.h"
|
||||
#include "MathAtom.h"
|
||||
#include "LaTeXFeatures.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "LyXRC.h"
|
||||
|
||||
#include "support/textutils.h"
|
||||
|
||||
@ -29,18 +31,17 @@ using std::auto_ptr;
|
||||
|
||||
|
||||
InsetMathSymbol::InsetMathSymbol(latexkeys const * l)
|
||||
: sym_(l), h_(0), scriptable_(false), font_cache_(Font::ALL_IGNORE)
|
||||
: sym_(l), h_(0), scriptable_(false)
|
||||
{}
|
||||
|
||||
|
||||
InsetMathSymbol::InsetMathSymbol(char const * name)
|
||||
: sym_(in_word_set(from_ascii(name))), h_(0), scriptable_(false),
|
||||
font_cache_(Font::ALL_IGNORE)
|
||||
: sym_(in_word_set(from_ascii(name))), h_(0), scriptable_(false)
|
||||
{}
|
||||
|
||||
|
||||
InsetMathSymbol::InsetMathSymbol(docstring const & name)
|
||||
: sym_(in_word_set(name)), h_(0), scriptable_(false), font_cache_(Font::ALL_IGNORE)
|
||||
: sym_(in_word_set(name)), h_(0), scriptable_(false)
|
||||
{}
|
||||
|
||||
|
||||
@ -63,30 +64,22 @@ bool InsetMathSymbol::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
// << "' drawn as: '" << sym_->draw
|
||||
// << "'" << std::endl;
|
||||
|
||||
bool dim_unchanged = (mi.base.font == font_cache_);
|
||||
if (dim_unchanged)
|
||||
dim = dim_;
|
||||
else {
|
||||
font_cache_ = mi.base.font;
|
||||
int const em = mathed_char_width(mi.base.font, 'M');
|
||||
FontSetChanger dummy(mi.base, sym_->inset);
|
||||
mathed_string_dim(mi.base.font, sym_->draw, dim);
|
||||
docstring::const_reverse_iterator rit = sym_->draw.rbegin();
|
||||
kerning_ = mathed_char_kerning(mi.base.font, *rit);
|
||||
// correct height for broken cmex and wasy font
|
||||
if (sym_->inset == "cmex" || sym_->inset == "wasy") {
|
||||
h_ = 4 * dim.des / 5;
|
||||
dim.asc += h_;
|
||||
dim.des -= h_;
|
||||
}
|
||||
// seperate things a bit
|
||||
if (isRelOp())
|
||||
dim.wid += static_cast<int>(0.5 * em + 0.5);
|
||||
else
|
||||
dim.wid += static_cast<int>(0.1667 * em + 0.5);
|
||||
|
||||
dim_ = dim;
|
||||
int const em = mathed_char_width(mi.base.font, 'M');
|
||||
FontSetChanger dummy(mi.base, sym_->inset);
|
||||
mathed_string_dim(mi.base.font, sym_->draw, dim);
|
||||
docstring::const_reverse_iterator rit = sym_->draw.rbegin();
|
||||
kerning_ = mathed_char_kerning(mi.base.font, *rit);
|
||||
// correct height for broken cmex and wasy font
|
||||
if (sym_->inset == "cmex" || sym_->inset == "wasy") {
|
||||
h_ = 4 * dim.des / 5;
|
||||
dim.asc += h_;
|
||||
dim.des -= h_;
|
||||
}
|
||||
// seperate things a bit
|
||||
if (isRelOp())
|
||||
dim.wid += static_cast<int>(0.5 * em + 0.5);
|
||||
else
|
||||
dim.wid += static_cast<int>(0.1667 * em + 0.5);
|
||||
|
||||
scriptable_ = false;
|
||||
if (mi.base.style == LM_ST_DISPLAY)
|
||||
@ -94,7 +87,11 @@ bool InsetMathSymbol::metrics(MetricsInfo & mi, Dimension & dim) const
|
||||
sym_->extra == "funclim")
|
||||
scriptable_ = true;
|
||||
|
||||
return dim_unchanged;
|
||||
if (dim_ == dim)
|
||||
return false;
|
||||
|
||||
dim_ = dim;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -81,8 +81,6 @@ private:
|
||||
mutable int kerning_;
|
||||
///
|
||||
mutable bool scriptable_;
|
||||
///
|
||||
mutable Font font_cache_;
|
||||
};
|
||||
|
||||
} // namespace lyx
|
||||
|
Loading…
Reference in New Issue
Block a user