From b7f013bf1919486dab56a4436a17a3878341a1d5 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Mon, 10 Mar 2014 17:25:10 +0200 Subject: Fix CJK languages support with HarfBuzz-NG By some reason, mapping to Han script doesn't work for some (most?) fonts. Until the issue is really fixed, pretend the HB-old behavior and simply map to Common script. Change-Id: I4c146f5ff2a42f64b971b2f5ebd7f65e2513fdf0 Reviewed-by: Lars Knoll --- src/gui/text/qtextengine.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'src/gui/text') diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 2d7611774b..0298adde7a 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -1506,18 +1506,8 @@ void QTextEngine::itemize() const { QVarLengthArray scripts(length); QUnicodeTools::initScripts(string, length, scripts.data()); - for (int i = 0; i < length; ++i) { - ushort script = scripts.at(i); - switch (script) { - case QChar::Script_Hiragana: - case QChar::Script_Katakana: - script = QChar::Script_Han; - break; - default: - break; - } - analysis[i].script = script; - } + for (int i = 0; i < length; ++i) + analysis[i].script = scripts.at(i); } const ushort *uc = string; @@ -1564,8 +1554,21 @@ void QTextEngine::itemize() const (analysis-1)->flags = QScriptAnalysis::LineOrParagraphSeparator; // to exclude it from width } #ifdef QT_ENABLE_HARFBUZZ_NG - if (!useHarfbuzzNG) { - analysis = scriptAnalysis.data(); + analysis = scriptAnalysis.data(); + if (useHarfbuzzNG) { + for (int i = 0; i < length; ++i) { + switch (analysis[i].script) { + case QChar::Script_Han: + case QChar::Script_Hiragana: + case QChar::Script_Katakana: + case QChar::Script_Bopomofo: + analysis[i].script = QChar::Script_Common; + break; + default: + break; + } + } + } else { for (int i = 0; i < length; ++i) analysis[i].script = hbscript_to_script(script_to_hbscript(analysis[i].script)); } -- cgit v1.2.3