Details
-
Technical task
-
Resolution: Unresolved
-
P2: Important
-
None
-
None
Description
Since The QFontDatabase::Japanese writing system spans multiple QChar::Script ranges, we are currently just ignoring all except QChar::Script_Han in the code which sorts the fallback list by support (qt_sort_families_by_writing_system()) and in the code which returns a subset of the registered font families that support the writing system (QPlatformFontDatabase::fallbacksForFamily()).
In addition, QChar::Script_Han is mapped to multiple writing systems, so the reverse lookup will always give us the first one, SimplifiedChinese. There is a work-around for this in Gerrit: https://codereview.qt-project.org/c/qt/qtbase/+/289805
But the general problem here is that the underlying data structure is not expressive enough and assumes there is a one-to-one mapping between the two, which is incorrect. Ideally, there would be a many-to-many lookup, so that in the case of Hanzi/Kanji, we would prefer both Chinese and Japanese fonts, and for Hiragana/Katakana we would prefer Japanese fonts.