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 <lars.knoll@digia.com>
This commit is contained in:
parent
4c9885a0f5
commit
b7f013bf19
@ -1506,18 +1506,8 @@ void QTextEngine::itemize() const
|
||||
{
|
||||
QVarLengthArray<uchar> 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));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user