Fix bug #5167: Correctly paint special characters in InsetMathFont

When using, e.g., a 'mathcal' inset in math, the inline completion and
other special characters like '\#', '{..}' are are painted in the
'mathcal' font as well. This is overcome by setting the mathnormal font
before painted these characters.
This commit is contained in:
Vincent van Ravesteijn 2012-05-03 15:51:55 +02:00
parent b0b8e5f54c
commit 6377296492
3 changed files with 13 additions and 3 deletions

View File

@ -48,7 +48,9 @@ void InsetMathBrace::metrics(MetricsInfo & mi, Dimension & dim) const
{
Dimension dim0;
cell(0).metrics(mi, dim0);
Dimension t = theFontMetrics(mi.base.font).dimension('{');
FontInfo font = mi.base.font;
augmentFont(font, from_ascii("mathnormal"));
Dimension t = theFontMetrics(font).dimension('{');
dim.asc = max(dim0.asc, t.asc);
dim.des = max(dim0.des, t.des);
dim.wid = dim0.width() + 2 * t.wid;
@ -59,6 +61,7 @@ void InsetMathBrace::metrics(MetricsInfo & mi, Dimension & dim) const
void InsetMathBrace::draw(PainterInfo & pi, int x, int y) const
{
FontInfo font = pi.base.font;
augmentFont(font, from_ascii("mathnormal"));
font.setShape(UP_SHAPE);
font.setColor(Color_latex);
Dimension t = theFontMetrics(font).dimension('{');

View File

@ -280,7 +280,9 @@ void MathData::metrics(MetricsInfo & mi, Dimension & dim) const
if (completion.length() == 0)
continue;
dim.wid += mathed_string_width(mi.base.font, completion);
FontInfo font = mi.base.font;
augmentFont(font, from_ascii("mathnormal"));
dim.wid += mathed_string_width(font, completion);
}
// Cache the dimension.
mi.base.bv->coordCache().arrays().add(this, dim);
@ -328,6 +330,7 @@ void MathData::draw(PainterInfo & pi, int x, int y) const
if (completion.length() == 0)
continue;
FontInfo f = pi.base.font;
augmentFont(f, from_ascii("mathnormal"));
// draw the unique and the non-unique completion part
// Note: this is not time-critical as it is

View File

@ -490,13 +490,16 @@ void mathed_draw_deco(PainterInfo & pi, int x, int y, int w, int h,
void metricsStrRedBlack(MetricsInfo & mi, Dimension & dim, docstring const & str)
{
mathed_string_dim(mi.base.font, str, dim);
FontInfo font = mi.base.font;
augmentFont(font, from_ascii("mathnormal"));
mathed_string_dim(font, str, dim);
}
void drawStrRed(PainterInfo & pi, int x, int y, docstring const & str)
{
FontInfo f = pi.base.font;
augmentFont(f, from_ascii("mathnormal"));
f.setColor(Color_latex);
pi.pain.text(x, y, str, f);
}
@ -505,6 +508,7 @@ void drawStrRed(PainterInfo & pi, int x, int y, docstring const & str)
void drawStrBlack(PainterInfo & pi, int x, int y, docstring const & str)
{
FontInfo f = pi.base.font;
augmentFont(f, from_ascii("mathnormal"));
f.setColor(Color_foreground);
pi.pain.text(x, y, str, f);
}