From: Jean-Marc Lasgouttes Date: Mon, 13 May 2019 08:47:47 +0000 (+0200) Subject: Revert "Try to compute row height like it should be done" X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=37a3cb86f4dcbc7d503720517891c1a576abc7f0;p=features.git Revert "Try to compute row height like it should be done" This is not done right at all. The best is to revert for now and think about how to do it properly. This reverts commit 66a3d64346332e47252b37dbc0f80158738987dc. --- diff --git a/src/Row.cpp b/src/Row.cpp index 1a12e9d695..697e526094 100644 --- a/src/Row.cpp +++ b/src/Row.cpp @@ -376,11 +376,8 @@ void Row::finalizeLast() if (elt.type == STRING) { dim_.wid -= elt.dim.wid; - FontMetrics const & fm = theFontMetrics(elt.font); - elt.dim.wid = fm.width(elt.str); + elt.dim.wid = theFontMetrics(elt.font).width(elt.str); dim_.wid += elt.dim.wid; - dim_.asc = fm.maxAscent() + fm.leading(); - dim_.des = fm.maxDescent(); } } diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index fc7e09d862..6f195a6022 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -48,7 +48,6 @@ #include "support/convert.h" #include "support/debug.h" #include "support/lassert.h" -#include "support/lyxlib.h" #include #include @@ -62,10 +61,6 @@ using frontend::FontMetrics; namespace { -// the somewhat arbitrary leading added between rows. This is 20% of -// the characters height, inluding the possible leading of the font. -// 20% is a standard value used by LaTeX and word processors. -double const extra_leading = 0.2; int numberOfLabelHfills(Paragraph const & par, Row const & row) { @@ -1155,19 +1150,27 @@ void TextMetrics::setRowHeight(Row & row) const // Initial value for ascent (useful if row is empty). Font const font = displayFont(row.pit(), row.pos()); FontMetrics const & fm = theFontMetrics(font); - int maxasc = fm.maxAscent() + fm.leading(); - int maxdes = fm.maxDescent(); + int maxasc = int(fm.maxAscent() * spacing_val); + int maxdes = int(fm.maxDescent() * spacing_val); // Find the ascent/descent of the row contents for (Row::Element const & e : row) { - maxasc = max(maxasc, e.dim.ascent()); - maxdes = max(maxdes, e.dim.descent()); + if (e.inset) { + maxasc = max(maxasc, e.dim.ascent()); + maxdes = max(maxdes, e.dim.descent()); + } else { + FontMetrics const & fm2 = theFontMetrics(e.font); + maxasc = max(maxasc, int(fm2.maxAscent() * spacing_val)); + maxdes = max(maxdes, int(fm2.maxDescent() * spacing_val)); + } } - // Add some leading (split between before and after) - int const leading = support::iround(extra_leading * (maxasc + maxdes)); - row.dim().asc = int((maxasc + leading - leading / 2) * spacing_val); - row.dim().des = int((maxdes + leading / 2) * spacing_val); + // This is nicer with box insets + ++maxasc; + ++maxdes; + + row.dim().asc = maxasc; + row.dim().des = maxdes; } @@ -2017,8 +2020,7 @@ void TextMetrics::completionPosAndDim(Cursor const & cur, int & x, int & y, int defaultRowHeight() { - FontMetrics const & fm = theFontMetrics(sane_font); - return support::iround(fm.maxHeight() * (1 + extra_leading) + fm.leading()); + return int(theFontMetrics(sane_font).maxHeight() * 1.2); } } // namespace lyx diff --git a/src/frontends/FontMetrics.h b/src/frontends/FontMetrics.h index a35a26b481..4472aa7008 100644 --- a/src/frontends/FontMetrics.h +++ b/src/frontends/FontMetrics.h @@ -60,8 +60,6 @@ public: virtual int maxAscent() const = 0; /// return the maximum descent of the font virtual int maxDescent() const = 0; - /// return the default leading of the font (often 0) - virtual int leading() const = 0; /// return default dimension of the font. /// \warning \c width is set to zero. virtual Dimension const defaultDimension() const = 0; diff --git a/src/frontends/qt4/GuiFontMetrics.cpp b/src/frontends/qt4/GuiFontMetrics.cpp index 5f70c8d705..10ca292cb6 100644 --- a/src/frontends/qt4/GuiFontMetrics.cpp +++ b/src/frontends/qt4/GuiFontMetrics.cpp @@ -111,12 +111,6 @@ int GuiFontMetrics::maxDescent() const } -int GuiFontMetrics::leading() const -{ - return metrics_.leading(); -} - - int GuiFontMetrics::em() const { return QFontInfo(font_).pixelSize(); diff --git a/src/frontends/qt4/GuiFontMetrics.h b/src/frontends/qt4/GuiFontMetrics.h index 830a824add..4f0b3076a3 100644 --- a/src/frontends/qt4/GuiFontMetrics.h +++ b/src/frontends/qt4/GuiFontMetrics.h @@ -36,7 +36,6 @@ public: virtual int maxAscent() const; virtual int maxDescent() const; - virtual int leading() const; virtual Dimension const defaultDimension() const; virtual int em() const; virtual int xHeight() const;