The branch, str-metrics, has been updated. - Log -----------------------------------------------------------------
commit 2ee065343106b1270792f4f095cf52a015b0ab18 Author: Jean-Marc Lasgouttes <lasgout...@lyx.org> Date: Sun Jul 21 12:24:08 2013 +0200 Get rid of ugly font metrics workarounds. Now we have proper ligatures and kerning on screen... diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index c0a6467..c50eb77 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -444,7 +444,8 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format) return ReadError; // default for current rowpainter capabilities - force_paint_single_char = true; + //force_paint_single_char = true; + force_paint_single_char = false; // format prior to 2.0 and introduction of format tag unsigned int format = 0; diff --git a/src/frontends/qt4/GuiApplication.cpp b/src/frontends/qt4/GuiApplication.cpp index 53fb170..818237d 100644 --- a/src/frontends/qt4/GuiApplication.cpp +++ b/src/frontends/qt4/GuiApplication.cpp @@ -2364,7 +2364,6 @@ void GuiApplication::restoreGuiSession() QString const GuiApplication::romanFontName() { QFont font; - font.setKerning(false); font.setStyleHint(QFont::Serif); font.setFamily("serif"); @@ -2375,7 +2374,6 @@ QString const GuiApplication::romanFontName() QString const GuiApplication::sansFontName() { QFont font; - font.setKerning(false); font.setStyleHint(QFont::SansSerif); font.setFamily("sans"); @@ -2386,7 +2384,6 @@ QString const GuiApplication::sansFontName() QString const GuiApplication::typewriterFontName() { QFont font; - font.setKerning(false); font.setStyleHint(QFont::TypeWriter); font.setFamily("monospace"); diff --git a/src/frontends/qt4/GuiFontLoader.cpp b/src/frontends/qt4/GuiFontLoader.cpp index b2448be..4520c57 100644 --- a/src/frontends/qt4/GuiFontLoader.cpp +++ b/src/frontends/qt4/GuiFontLoader.cpp @@ -165,7 +165,8 @@ QFont symbolFont(QString const & family, bool * ok) upper[0] = family[0].toUpper(); QFont font; - font.setKerning(false); + if (force_paint_single_char) + font.setKerning(false); font.setFamily(family); if (isChosenFont(font, family)) { @@ -256,7 +257,8 @@ static QString makeFontName(QString const & family, QString const & foundry) GuiFontInfo::GuiFontInfo(FontInfo const & f) : metrics(QFont()) { - font.setKerning(false); + if (force_paint_single_char) + font.setKerning(false); QString const pat = symbolFamily(f.family()); if (!pat.isEmpty()) { bool ok; @@ -334,7 +336,8 @@ GuiFontInfo::GuiFontInfo(FontInfo const & f) FontInfo smallfont = f; smallfont.decSize().decSize().setShape(UP_SHAPE); QFont font2(font); - font2.setKerning(false); + if (force_paint_single_char) + font2.setKerning(false); font2.setPointSizeF(convert<double>(lyxrc.font_sizes[smallfont.size()]) * lyxrc.zoom / 100.0); diff --git a/src/frontends/qt4/GuiLog.cpp b/src/frontends/qt4/GuiLog.cpp index 8c74139..f79705c 100644 --- a/src/frontends/qt4/GuiLog.cpp +++ b/src/frontends/qt4/GuiLog.cpp @@ -130,7 +130,6 @@ GuiLog::GuiLog(GuiView & lv) logTB->setReadOnly(true); QFont font(guiApp->typewriterFontName()); - font.setKerning(false); font.setFixedPitch(true); font.setStyleHint(QFont::TypeWriter); logTB->setFont(font); diff --git a/src/frontends/qt4/GuiPrefs.cpp b/src/frontends/qt4/GuiPrefs.cpp index 68f6aae..d5d64a7 100644 --- a/src/frontends/qt4/GuiPrefs.cpp +++ b/src/frontends/qt4/GuiPrefs.cpp @@ -314,7 +314,6 @@ static void setComboxFont(QComboBox * cb, string const & family, // for bug 1063. QFont font; - font.setKerning(false); QString const font_family = toqstr(family); if (font_family == guiApp->romanFontName()) { diff --git a/src/frontends/qt4/GuiProgressView.cpp b/src/frontends/qt4/GuiProgressView.cpp index a22ea60..2e0dfad 100644 --- a/src/frontends/qt4/GuiProgressView.cpp +++ b/src/frontends/qt4/GuiProgressView.cpp @@ -61,7 +61,6 @@ GuiProgressView::GuiProgressView(GuiView & parent, Qt::DockWidgetArea area, setWidget(widget_); QFont font(guiApp->typewriterFontName()); - font.setKerning(false); font.setFixedPitch(true); font.setStyleHint(QFont::TypeWriter); widget_->outTE->setFont(font); diff --git a/src/frontends/qt4/GuiViewSource.cpp b/src/frontends/qt4/GuiViewSource.cpp index edc1dea..7f60521 100644 --- a/src/frontends/qt4/GuiViewSource.cpp +++ b/src/frontends/qt4/GuiViewSource.cpp @@ -72,7 +72,6 @@ ViewSourceWidget::ViewSourceWidget() ///dialog_->viewSourceTV->setAcceptRichText(false); // this is personal. I think source code should be in fixed-size font QFont font(guiApp->typewriterFontName()); - font.setKerning(false); font.setFixedPitch(true); font.setStyleHint(QFont::TypeWriter); viewSourceTV->setFont(font); diff --git a/src/rowpainter.cpp b/src/rowpainter.cpp index cfa7f51..2bcef26 100644 --- a/src/rowpainter.cpp +++ b/src/rowpainter.cpp @@ -264,17 +264,6 @@ void RowPainter::paintChars(pos_type & vpos, FontInfo const & font, // collect as much similar chars as we can for (++vpos ; vpos < end ; ++vpos) { - // Work-around bug #6920 - // The bug can be reproduced with DejaVu font under Linux. - // The issue is that we compute the metrics character by character - // in ParagraphMetrics::singleWidth(); but we paint word by word - // for performance reason. - // Maybe a more general fix would be draw character by character - // for some predefined fonts on some platform. In arabic and - // Hebrew we already do paint this way. - if (prev_char == 'f' || lyxrc.force_paint_single_char) - break; - pos = bidi_.vis2log(vpos); if (pos < font_span.first || pos > font_span.last) break; ----------------------------------------------------------------------- Summary of changes: src/LyXRC.cpp | 3 ++- src/frontends/qt4/GuiApplication.cpp | 3 --- src/frontends/qt4/GuiFontLoader.cpp | 9 ++++++--- src/frontends/qt4/GuiLog.cpp | 1 - src/frontends/qt4/GuiPrefs.cpp | 1 - src/frontends/qt4/GuiProgressView.cpp | 1 - src/frontends/qt4/GuiViewSource.cpp | 1 - src/rowpainter.cpp | 11 ----------- 8 files changed, 8 insertions(+), 22 deletions(-) hooks/post-receive -- Repository for new features