diff options
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/doc/src/qmltypereference.qdoc | 1 | ||||
-rw-r--r-- | src/quick/items/qquicktext.cpp | 17 | ||||
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 17 | ||||
-rw-r--r-- | src/quick/items/qquicktextinput.cpp | 17 | ||||
-rw-r--r-- | src/quick/util/qquickglobal.cpp | 8 | ||||
-rw-r--r-- | src/quick/util/qquickvaluetypes.cpp | 13 | ||||
-rw-r--r-- | src/quick/util/qquickvaluetypes_p.h | 4 |
7 files changed, 77 insertions, 0 deletions
diff --git a/src/quick/doc/src/qmltypereference.qdoc b/src/quick/doc/src/qmltypereference.qdoc index 7c7bdbc137..0c2e2bc73d 100644 --- a/src/quick/doc/src/qmltypereference.qdoc +++ b/src/quick/doc/src/qmltypereference.qdoc @@ -171,6 +171,7 @@ available when you import \c QtQuick. \li \l real \c font.letterSpacing \li \l real \c font.wordSpacing \li \l bool \c font.kerning + \li \l bool \c font.preferShaping \li \l enumeration \c font.hintingPreference \endlist diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp index 07cc1ff76e..5f58f0cdde 100644 --- a/src/quick/items/qquicktext.cpp +++ b/src/quick/items/qquicktext.cpp @@ -1515,6 +1515,23 @@ QQuickText::~QQuickText() Text { text: "OATS FLAVOUR WAY"; font.kerning: false } \endqml */ + +/*! + \qmlproperty bool QtQuick::Text::font.preferShaping + \since 5.10 + + Sometimes, a font will apply complex rules to a set of characters in order to + display them correctly. In some writing systems, such as Brahmic scripts, this is + required in order for the text to be legible, but in e.g. Latin script, it is merely + a cosmetic feature. Setting the \c preferShaping property to false will disable all + such features when they are not required, which will improve performance in most cases. + + The default value is true. + + \qml + Text { text: "Some text"; font.preferShaping: false } + \endqml +*/ QFont QQuickText::font() const { Q_D(const QQuickText); diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index 193f804c13..d26d3b0456 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -368,6 +368,23 @@ QString QQuickTextEdit::text() const */ /*! + \qmlproperty bool QtQuick::TextEdit::font.preferShaping + \since 5.10 + + Sometimes, a font will apply complex rules to a set of characters in order to + display them correctly. In some writing systems, such as Brahmic scripts, this is + required in order for the text to be legible, but in e.g. Latin script, it is merely + a cosmetic feature. Setting the \c preferShaping property to false will disable all + such features when they are not required, which will improve performance in most cases. + + The default value is true. + + \qml + TextEdit { text: "Some text"; font.preferShaping: false } + \endqml +*/ + +/*! \qmlproperty string QtQuick::TextEdit::text The text to display. If the text format is AutoText the text edit will diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index d01d604171..d516b6f30c 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -392,6 +392,23 @@ QString QQuickTextInputPrivate::realText() const TextInput { text: "OATS FLAVOUR WAY"; font.kerning: false } \endqml */ + +/*! + \qmlproperty bool QtQuick::TextInput::font.preferShaping + \since 5.10 + + Sometimes, a font will apply complex rules to a set of characters in order to + display them correctly. In some writing systems, such as Brahmic scripts, this is + required in order for the text to be legible, but in e.g. Latin script, it is merely + a cosmetic feature. Setting the \c preferShaping property to false will disable all + such features when they are not required, which will improve performance in most cases. + + The default value is true. + + \qml + TextInput { text: "Some text"; font.preferShaping: false } + \endqml +*/ QFont QQuickTextInput::font() const { Q_D(const QQuickTextInput); diff --git a/src/quick/util/qquickglobal.cpp b/src/quick/util/qquickglobal.cpp index 6df23cdff5..14ead56740 100644 --- a/src/quick/util/qquickglobal.cpp +++ b/src/quick/util/qquickglobal.cpp @@ -303,6 +303,7 @@ public: QV4::ScopedValue vwspac(scope, obj->get((s = v4->newString(QStringLiteral("wordSpacing"))))); QV4::ScopedValue vhint(scope, obj->get((s = v4->newString(QStringLiteral("hintingPreference"))))); QV4::ScopedValue vkerning(scope, obj->get((s = v4->newString(QStringLiteral("kerning"))))); + QV4::ScopedValue vshaping(scope, obj->get((s = v4->newString(QStringLiteral("preferShaping"))))); // pull out the values, set ok to true if at least one valid field is given. if (vbold->isBoolean()) { @@ -361,6 +362,13 @@ public: retn.setKerning(vkerning->booleanValue()); if (ok) *ok = true; } + if (vshaping->isBoolean()) { + bool enable = vshaping->booleanValue(); + if (enable) + retn.setStyleStrategy(static_cast<QFont::StyleStrategy>(retn.styleStrategy() & ~QFont::PreferNoShaping)); + else + retn.setStyleStrategy(static_cast<QFont::StyleStrategy>(retn.styleStrategy() | QFont::PreferNoShaping)); + } return retn; } diff --git a/src/quick/util/qquickvaluetypes.cpp b/src/quick/util/qquickvaluetypes.cpp index bc4a72b6ea..e4a03f3b52 100644 --- a/src/quick/util/qquickvaluetypes.cpp +++ b/src/quick/util/qquickvaluetypes.cpp @@ -767,6 +767,19 @@ void QQuickFontValueType::setKerning(bool b) v.setKerning(b); } +bool QQuickFontValueType::preferShaping() const +{ + return (v.styleStrategy() & QFont::PreferNoShaping) == 0; +} + +void QQuickFontValueType::setPreferShaping(bool enable) +{ + if (enable) + v.setStyleStrategy(static_cast<QFont::StyleStrategy>(v.styleStrategy() & ~QFont::PreferNoShaping)); + else + v.setStyleStrategy(static_cast<QFont::StyleStrategy>(v.styleStrategy() | QFont::PreferNoShaping)); +} + QT_END_NAMESPACE #include "moc_qquickvaluetypes_p.cpp" diff --git a/src/quick/util/qquickvaluetypes_p.h b/src/quick/util/qquickvaluetypes_p.h index a3f35a84ec..5a9af970e8 100644 --- a/src/quick/util/qquickvaluetypes_p.h +++ b/src/quick/util/qquickvaluetypes_p.h @@ -324,6 +324,7 @@ class QQuickFontValueType Q_PROPERTY(qreal wordSpacing READ wordSpacing WRITE setWordSpacing FINAL) Q_PROPERTY(HintingPreference hintingPreference READ hintingPreference WRITE setHintingPreference FINAL) Q_PROPERTY(bool kerning READ kerning WRITE setKerning FINAL) + Q_PROPERTY(bool preferShaping READ preferShaping WRITE setPreferShaping FINAL) public: enum FontWeight { Thin = QFont::Thin, @@ -397,6 +398,9 @@ public: bool kerning() const; void setKerning(bool b); + + bool preferShaping() const; + void setPreferShaping(bool b); }; QT_END_NAMESPACE |