]> git.lyx.org Git - features.git/commitdiff
Inherit outer font in text-in-math environments
authorEnrico Forestieri <forenr@lyx.org>
Wed, 1 Nov 2023 21:21:49 +0000 (22:21 +0100)
committerEnrico Forestieri <forenr@lyx.org>
Wed, 1 Nov 2023 21:21:49 +0000 (22:21 +0100)
The text-in-math environments such as \text, \mbox, \fbox, \makebox
and so on, inherit the outer text font. This commit reflects this
in the on-screen representation.

Fixes #12950.

src/MetricsInfo.cpp
src/mathed/InsetMathBox.cpp

index 8fe03ba441fbf4f8ae303b64168948def0fad6a8..714e8ad750a62022eabf19e083f76e6aaf742161 100644 (file)
@@ -11,6 +11,8 @@
 #include <config.h>
 
 #include "MetricsInfo.h"
+#include "BufferView.h"
+#include "Cursor.h"
 
 #include "LyXRC.h"
 
@@ -61,7 +63,8 @@ Changer MetricsBase::changeFontSet(string const & name)
        string const oldname = fontname;
        fontname = name;
        if (isMathFont(name) || isMathFont(oldname))
-               font = sane_font;
+               font = isTextFont(name) ? bv->cursor().getFont().fontInfo()
+                                       : sane_font;
        augmentFont(font, name);
        font.setSize(rc->old.font.size());
        font.setStyle(rc->old.font.style());
index afaadeb83a403094badf094b7098e1c76a36c033..6feddf9cdd269578707d04e6decd145550cb2b94 100644 (file)
@@ -146,14 +146,14 @@ void InsetMathBox::htmlize(HtmlStream & ms) const
 
 void InsetMathBox::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       Changer dummy = mi.base.changeFontSet("textnormal");
+       Changer dummy = mi.base.changeFontSet("text");
        cell(0).metrics(mi, dim);
 }
 
 
 void InsetMathBox::draw(PainterInfo & pi, int x, int y) const
 {
-       Changer dummy = pi.base.changeFontSet("textnormal");
+       Changer dummy = pi.base.changeFontSet("text");
        cell(0).draw(pi, x, y);
 }
 
@@ -196,7 +196,7 @@ InsetMathFBox::InsetMathFBox(Buffer * buf)
 
 void InsetMathFBox::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       Changer dummy = mi.base.changeFontSet("textnormal");
+       Changer dummy = mi.base.changeFontSet("text");
        cell(0).metrics(mi, dim);
        // 1 pixel space, 1 frame, 1 space
        dim.wid += 2 * 3;
@@ -210,7 +210,7 @@ void InsetMathFBox::draw(PainterInfo & pi, int x, int y) const
        Dimension const dim = dimension(*pi.base.bv);
        pi.pain.rectangle(x + 1, y - dim.ascent() + 1,
                dim.width() - 2, dim.height() - 2, Color_foreground);
-       Changer dummy = pi.base.changeFontSet("textnormal");
+       Changer dummy = pi.base.changeFontSet("text");
        cell(0).draw(pi, x + 3, y);
 }
 
@@ -281,7 +281,7 @@ InsetMathMakebox::InsetMathMakebox(Buffer * buf, bool framebox)
 
 void InsetMathMakebox::metrics(MetricsInfo & mi, Dimension & dim) const
 {
-       Changer dummy = mi.base.changeFontSet("textnormal");
+       Changer dummy = mi.base.changeFontSet("text");
 
        Dimension wdim;
        static docstring bracket = from_ascii("[");
@@ -312,7 +312,7 @@ void InsetMathMakebox::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void InsetMathMakebox::draw(PainterInfo & pi, int x, int y) const
 {
-       Changer dummy = pi.base.changeFontSet("textnormal");
+       Changer dummy = pi.base.changeFontSet("text");
        BufferView const & bv = *pi.base.bv;
        int w = mathed_char_width(pi.base.font, '[');