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 66a3d64346.
This commit is contained in:
Jean-Marc Lasgouttes 2019-05-13 10:47:47 +02:00
parent 051a1a56a9
commit 6df593049c
5 changed files with 18 additions and 28 deletions

View File

@ -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();
}
}

View File

@ -48,7 +48,6 @@
#include "support/convert.h"
#include "support/debug.h"
#include "support/lassert.h"
#include "support/lyxlib.h"
#include <stdlib.h>
#include <cmath>
@ -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

View File

@ -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;

View File

@ -111,12 +111,6 @@ int GuiFontMetrics::maxDescent() const
}
int GuiFontMetrics::leading() const
{
return metrics_.leading();
}
int GuiFontMetrics::em() const
{
return QFontInfo(font_).pixelSize();

View File

@ -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;