Qt Используйте несколько шрифтов в одно и то же время
У меня есть три шрифта, которые я хочу использовать в своем программном обеспечении:
- FontA: содержит латинские, греческие, символы Cryllic
- FontB: содержит корейские символы
- FontC: содержит японские, китайские символы
Эти шрифты не имеют перекрытия.
Я хочу настроить мое приложение таким образом, чтобы все эти шрифты использовались сразу, так как символы из разных языков могут отображаться в том же контексте в моем программном обеспечении.
Если символ найден в FontA, используйте его. В противном случае, посмотрите на FontB, если вы его используете. Посмотрите на FontC в качестве последнего средства, если он найден, используйте его, иначе ничего не делайте.
Как настроить Qt таким образом?
(В моей среде встроен linux, Qt 4.8)
P.S.: Я пробовал QFont:: insertSubstitution, но он используется в случае, если FontA не установлен в системе, так что это действительно не помогает в моем случае.
P.P.S.: Объединение этих шрифтов в один шрифт не может быть и речи, поскольку они являются проприетарными шрифтами.
Ответы
Ответ 1
Как и другие, - если ваша версия QT использует fontconfig, выполните ее через fontconfig, ее единственной функцией является управление подменой интеллектуального шрифта. И если ваша версия не использует fontconfig, вам не повезло, так как я сомневаюсь, что кто-то потратил много времени на то, чтобы заставить ее работать теперь, когда fontconfig широко доступен.
Ответ 2
Попробуйте использовать этот подход: Как (правильно) выводить многоязычный текст в Qt-Embedded?
Он работает с большим количеством языков одновременно (кириллица, европейская, тайская, японская и т.д.).
- Поместите Droid Fonts (необязательно, он также должен работать с другими шрифтами) в каталог, где Qt может его найти,
- Экспортировать специальную переменную среды:
export QWS_NO_SHARE_FONTS=1
- Запустите приложение с параметром
-fn "Droid Sans"
Ответ 3
Qt имеет резервную обработку для таких ситуаций.
В Документация Qt4 Я обнаружил, что вы можете настроить этот резервный механизм. Выглядит очень многообещающе и должно решить вашу проблему.
В Qt5 я не вижу прямой ссылки на класс QPlatformFontDatabase
. Только this. Похоже, вы должны написать плагин.
Кроме того, эта страница подсказывает, что QPlatformFontDatabase apeared в Qt 5.2, поэтому она должна работать в Qt5. По какой-то причине для Qt5 нет документации.
Вы должны попробовать и посмотреть или, по крайней мере, взять выбор в источниках.