mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-22 16:37:28 +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 "debug.h"
|
||||||
#include "Dimension.h"
|
#include "Dimension.h"
|
||||||
#include "support/lstrings.h"
|
#include "LyXRC.h"
|
||||||
#include "TextPainter.h"
|
#include "TextPainter.h"
|
||||||
|
|
||||||
|
#include "support/lstrings.h"
|
||||||
|
|
||||||
#include "frontends/FontMetrics.h"
|
#include "frontends/FontMetrics.h"
|
||||||
|
|
||||||
|
|
||||||
@ -59,12 +61,6 @@ auto_ptr<Inset> InsetMathChar::doClone() const
|
|||||||
|
|
||||||
bool InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) 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 1
|
||||||
if (char_ == '=' && has_math_fonts) {
|
if (char_ == '=' && has_math_fonts) {
|
||||||
FontSetChanger dummy(mi.base, "cmr");
|
FontSetChanger dummy(mi.base, "cmr");
|
||||||
@ -92,6 +88,10 @@ bool InsetMathChar::metrics(MetricsInfo & mi, Dimension & dim) const
|
|||||||
dim.wid += 2 * theFontMetrics(font_).width(' ');
|
dim.wid += 2 * theFontMetrics(font_).width(' ');
|
||||||
lyxerr << "InsetMathChar::metrics: " << dim << endl;
|
lyxerr << "InsetMathChar::metrics: " << dim << endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (dim_ == dim)
|
||||||
|
return false;
|
||||||
|
|
||||||
dim_ = dim;
|
dim_ = dim;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -55,8 +55,6 @@ private:
|
|||||||
char_type char_;
|
char_type char_;
|
||||||
/// cached kerning for superscript
|
/// cached kerning for superscript
|
||||||
mutable int kerning_;
|
mutable int kerning_;
|
||||||
///
|
|
||||||
mutable Font font_cache_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace lyx
|
} // namespace lyx
|
||||||
|
@ -18,7 +18,9 @@
|
|||||||
#include "MathParser.h"
|
#include "MathParser.h"
|
||||||
#include "MathAtom.h"
|
#include "MathAtom.h"
|
||||||
#include "LaTeXFeatures.h"
|
#include "LaTeXFeatures.h"
|
||||||
|
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
#include "LyXRC.h"
|
||||||
|
|
||||||
#include "support/textutils.h"
|
#include "support/textutils.h"
|
||||||
|
|
||||||
@ -29,18 +31,17 @@ using std::auto_ptr;
|
|||||||
|
|
||||||
|
|
||||||
InsetMathSymbol::InsetMathSymbol(latexkeys const * l)
|
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)
|
InsetMathSymbol::InsetMathSymbol(char const * name)
|
||||||
: sym_(in_word_set(from_ascii(name))), h_(0), scriptable_(false),
|
: sym_(in_word_set(from_ascii(name))), h_(0), scriptable_(false)
|
||||||
font_cache_(Font::ALL_IGNORE)
|
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
InsetMathSymbol::InsetMathSymbol(docstring const & name)
|
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
|
// << "' drawn as: '" << sym_->draw
|
||||||
// << "'" << std::endl;
|
// << "'" << std::endl;
|
||||||
|
|
||||||
bool dim_unchanged = (mi.base.font == font_cache_);
|
int const em = mathed_char_width(mi.base.font, 'M');
|
||||||
if (dim_unchanged)
|
FontSetChanger dummy(mi.base, sym_->inset);
|
||||||
dim = dim_;
|
mathed_string_dim(mi.base.font, sym_->draw, dim);
|
||||||
else {
|
docstring::const_reverse_iterator rit = sym_->draw.rbegin();
|
||||||
font_cache_ = mi.base.font;
|
kerning_ = mathed_char_kerning(mi.base.font, *rit);
|
||||||
int const em = mathed_char_width(mi.base.font, 'M');
|
// correct height for broken cmex and wasy font
|
||||||
FontSetChanger dummy(mi.base, sym_->inset);
|
if (sym_->inset == "cmex" || sym_->inset == "wasy") {
|
||||||
mathed_string_dim(mi.base.font, sym_->draw, dim);
|
h_ = 4 * dim.des / 5;
|
||||||
docstring::const_reverse_iterator rit = sym_->draw.rbegin();
|
dim.asc += h_;
|
||||||
kerning_ = mathed_char_kerning(mi.base.font, *rit);
|
dim.des -= h_;
|
||||||
// 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;
|
|
||||||
}
|
}
|
||||||
|
// 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;
|
scriptable_ = false;
|
||||||
if (mi.base.style == LM_ST_DISPLAY)
|
if (mi.base.style == LM_ST_DISPLAY)
|
||||||
@ -94,7 +87,11 @@ bool InsetMathSymbol::metrics(MetricsInfo & mi, Dimension & dim) const
|
|||||||
sym_->extra == "funclim")
|
sym_->extra == "funclim")
|
||||||
scriptable_ = true;
|
scriptable_ = true;
|
||||||
|
|
||||||
return dim_unchanged;
|
if (dim_ == dim)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
dim_ = dim;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -81,8 +81,6 @@ private:
|
|||||||
mutable int kerning_;
|
mutable int kerning_;
|
||||||
///
|
///
|
||||||
mutable bool scriptable_;
|
mutable bool scriptable_;
|
||||||
///
|
|
||||||
mutable Font font_cache_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace lyx
|
} // namespace lyx
|
||||||
|
Loading…
x
Reference in New Issue
Block a user