From 889bdf1de48ecd7ae313c0b400e3a971f496e041 Mon Sep 17 00:00:00 2001 From: Igor Khanin Date: Fri, 12 Jul 2024 21:20:01 +0300 Subject: [PATCH] QTextOption: Add flag for showing default ignorable characters The presence of the flag instructs the text shaping engine to not outright ignore normally non-printable code points, so that if the font has glyphs for them, they will be rendered. This is useful when editing plain text whose layout is affected by the presence of such characters (primarily BiDi control characters), and for layout debugging in general. [ChangeLog][QtGui][Text] Added QTextOption::ShowDefaultIgnorables flag. Change-Id: I610a30603f718254ab8e532083e65252351159f0 Reviewed-by: Eskil Abrahamsen Blomfeldt Reviewed-by: Christian Ehrlicher --- src/gui/text/qtextengine.cpp | 10 ++- src/gui/text/qtextoption.cpp | 1 + src/gui/text/qtextoption.h | 1 + .../auto/gui/text/qfontmetrics/CMakeLists.txt | 4 ++ .../text/qfontmetrics/tst_qfontmetrics.cpp | 57 ++++++++++++++++++ .../shared/resources/testfont_bidimarks.ttf | Bin 0 -> 66536 bytes 6 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 tests/auto/shared/resources/testfont_bidimarks.ttf diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 08512bead57..e3af305760e 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1498,16 +1498,20 @@ void QTextEngine::shapeText(int item) const for (int i = 0; i < itemLength; ++i, ++glyph_pos) { log_clusters[i] = glyph_pos; initialGlyphs.attributes[glyph_pos].clusterStart = true; + + bool is_print_char; if (QChar::isHighSurrogate(string[i]) && i + 1 < itemLength && QChar::isLowSurrogate(string[i + 1])) { - initialGlyphs.attributes[glyph_pos].dontPrint = !QChar::isPrint(QChar::surrogateToUcs4(string[i], string[i + 1])); + is_print_char = QChar::isPrint(QChar::surrogateToUcs4(string[i], string[i + 1])); ++i; log_clusters[i] = glyph_pos; } else { - initialGlyphs.attributes[glyph_pos].dontPrint = !QChar::isPrint(string[i]); + is_print_char = QChar::isPrint(string[i]); } + initialGlyphs.attributes[glyph_pos].dontPrint = + !is_print_char && !(option.flags() & QTextOption::ShowDefaultIgnorables); if (Q_UNLIKELY(!initialGlyphs.attributes[glyph_pos].dontPrint)) { QFontEngine *actualFontEngine = fontEngine; @@ -1638,7 +1642,7 @@ int QTextEngine::shapeTextWithHarfbuzzNG(const QScriptItem &si, uint buffer_flags = HB_BUFFER_FLAG_DEFAULT; // Symbol encoding used to encode various crap in the 32..255 character code range, // and thus might override U+00AD [SHY]; avoid hiding default ignorables - if (Q_UNLIKELY(actualFontEngine->symbol)) + if (Q_UNLIKELY(actualFontEngine->symbol || (option.flags() & QTextOption::ShowDefaultIgnorables))) buffer_flags |= HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES; hb_buffer_set_flags(buffer, hb_buffer_flags_t(buffer_flags)); diff --git a/src/gui/text/qtextoption.cpp b/src/gui/text/qtextoption.cpp index ea1b556f081..a94fe32490e 100644 --- a/src/gui/text/qtextoption.cpp +++ b/src/gui/text/qtextoption.cpp @@ -268,6 +268,7 @@ QList QTextOption::tabs() const shown differently to breaking spaces. \value ShowLineAndParagraphSeparators Visualize line and paragraph separators with appropriate symbol characters. \value [since 5.7] ShowDocumentTerminator Visualize the end of the document with a section sign. + \value [since 6.9] ShowDefaultIgnorables Render normally non-visual characters if supported by font. \value AddSpaceForLineAndParagraphSeparators While determining the line-break positions take into account the space added for drawing a separator character. \value SuppressColors Suppress all color changes in the character formats (except the main selection). diff --git a/src/gui/text/qtextoption.h b/src/gui/text/qtextoption.h index f0a385ff50f..88dd6959dc3 100644 --- a/src/gui/text/qtextoption.h +++ b/src/gui/text/qtextoption.h @@ -73,6 +73,7 @@ public: AddSpaceForLineAndParagraphSeparators = 0x4, SuppressColors = 0x8, ShowDocumentTerminator = 0x10, + ShowDefaultIgnorables = 0x20, IncludeTrailingSpaces = 0x80000000, }; Q_DECLARE_FLAGS(Flags, Flag) diff --git a/tests/auto/gui/text/qfontmetrics/CMakeLists.txt b/tests/auto/gui/text/qfontmetrics/CMakeLists.txt index ee2f76ef76a..e00593c7089 100644 --- a/tests/auto/gui/text/qfontmetrics/CMakeLists.txt +++ b/tests/auto/gui/text/qfontmetrics/CMakeLists.txt @@ -27,9 +27,13 @@ set_source_files_properties("../../../shared/resources/testfont.ttf" set_source_files_properties("../../../shared/resources/testfont_linemetrics.otf" PROPERTIES QT_RESOURCE_ALIAS "testfont_linemetrics.otf" ) +set_source_files_properties("../../../shared/resources/testfont_bidimarks.ttf" + PROPERTIES QT_RESOURCE_ALIAS "testfont_bidimarks.ttf" +) set(testfont_resource_files "../../../shared/resources/testfont.ttf" "../../../shared/resources/testfont_linemetrics.otf" + "../../../shared/resources/testfont_bidimarks.ttf" "ucs4font.ttf" ) diff --git a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp index bad33ab0a47..429eab131a6 100644 --- a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp +++ b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp @@ -37,6 +37,8 @@ private slots: void largeText_data(); void largeText(); // QTBUG-123339 void typoLineMetrics(); + void defaultIgnorableHorizontalAdvance_data(); + void defaultIgnorableHorizontalAdvance(); }; void tst_QFontMetrics::same() @@ -454,5 +456,60 @@ void tst_QFontMetrics::typoLineMetrics() } } +void tst_QFontMetrics::defaultIgnorableHorizontalAdvance_data() +{ + QTest::addColumn("withShaping"); + + QTest::newRow("With Text Shaping") << true; + QTest::newRow("Without Text Shaping") << false; +} + +void tst_QFontMetrics::defaultIgnorableHorizontalAdvance() +{ + QFETCH(bool, withShaping); + + // testfont_bidimarks.ttf is a version of testfont.ttf with additional + // glyphs for U+200E (LRM) and U+200F (RLM) + QString testFont = QFINDTESTDATA("fonts/testfont_bidimarks.ttf"); + QVERIFY(!testFont.isEmpty()); + + int id = QFontDatabase::addApplicationFont(testFont); + QVERIFY(id >= 0); + + auto cleanup = qScopeGuard([&id] { + if (id >= 0) + QFontDatabase::removeApplicationFont(id); + }); + + QFont withoutSupport; + QFont withSupport(QFontDatabase::applicationFontFamilies(id).at(0)); + + if (!withShaping) { + withoutSupport.setStyleStrategy(QFont::PreferNoShaping); + withSupport.setStyleStrategy(QFont::PreferNoShaping); + } + + QFontMetrics withoutSupportMetrics(withoutSupport); + QFontMetrics withSupportMetrics(withSupport); + + QTextOption opt; + opt.setFlags(QTextOption::ShowDefaultIgnorables); + + const QChar LRM = (ushort)0x200e; + const QString str = QStringLiteral("[") + LRM + QStringLiteral("]"); + + int withoutSupportWithoutIgnorablesAdvance = withoutSupportMetrics.horizontalAdvance(str); + int withoutSupportWithIgnorablesAdvance = withoutSupportMetrics.horizontalAdvance(str, opt); + + QCOMPARE_GT(withoutSupportWithoutIgnorablesAdvance, 0); + QCOMPARE_EQ(withoutSupportWithIgnorablesAdvance, withoutSupportWithoutIgnorablesAdvance); + + int withSupportWithoutIgnorablesAdvance = withSupportMetrics.horizontalAdvance(str); + int withSupportWithIgnorablesAdvance = withSupportMetrics.horizontalAdvance(str, opt); + + QCOMPARE_GT(withSupportWithoutIgnorablesAdvance, 0); + QCOMPARE_GT(withSupportWithIgnorablesAdvance, withSupportWithoutIgnorablesAdvance); +} + QTEST_MAIN(tst_QFontMetrics) #include "tst_qfontmetrics.moc" diff --git a/tests/auto/shared/resources/testfont_bidimarks.ttf b/tests/auto/shared/resources/testfont_bidimarks.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a698930cfa829fb0c5ee56dd2f4273e56ae90822 GIT binary patch literal 66536 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