From: Enrico Forestieri Date: Wed, 1 Nov 2023 21:21:49 +0000 (+0100) Subject: Inherit outer font in text-in-math environments X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=d72b9b0238bd33197f0cea4a36d90d78d1cbc666;p=features.git Inherit outer font in text-in-math environments 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. --- diff --git a/src/MetricsInfo.cpp b/src/MetricsInfo.cpp index 8fe03ba441..714e8ad750 100644 --- a/src/MetricsInfo.cpp +++ b/src/MetricsInfo.cpp @@ -11,6 +11,8 @@ #include #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()); diff --git a/src/mathed/InsetMathBox.cpp b/src/mathed/InsetMathBox.cpp index afaadeb83a..6feddf9cdd 100644 --- a/src/mathed/InsetMathBox.cpp +++ b/src/mathed/InsetMathBox.cpp @@ -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, '[');