Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.3.0, 5.4.1, 5.5.0
-
None
-
Kubuntu15.04(Qt 5.4.1)
Kubuntu14.10(Qt 5.3.0)
Qt.5.5.1
Ubuntu touch 15.04
-
39e023b805cf2be207ef7086f6951e789e020bda, a856c4a902816a7d691ca50e6f556521287be441
Description
if developer specifies font family with Non-Regular style, potential risk to encounter Chinese characters are missing in some cases .
E.g
import QtQuick 2.4 import QtQuick.Controls 1.3 ApplicationWindow { visible: true width: 1280 height: 800 Text { anchors.centerIn: parent text: "系统设置" font.family: "Ubuntu" font.pixelSize: 69; font.weight: Font.Light } }
Regarding the code snippets above.
For Chinese characters, QFontDatabase will use fallback font family("Droid Sans Fallback") with "Light" style when add font Glyph.
since QFontDatabase checks if default style(Regular) of fallback font family "Droid Sans Fallback" is same as font style specified in qml(Font.Light).
And QFontDatabase::isSmoothlyScalable will return false in such a case, which results in scene graph will
use QSGDefaultGlyphNode when createGlyphNode is called. Issue happens.
However If scene graph doesn't prefer NativeGlyphNode and create GlyphNode based on Distance Field technique. It works fine.
Need to only check styleKey when foundry->styles == specified style
Please have a check with the testcases.qml attached.