Как загрузить загрузчик шрифтов QML в UTF-8 при загрузке

#utf-8 #fonts #qml #roboto

Вопрос:

Моя установка:

  • Qt 5.9.4
  • система buildroot Linux
  • процессор rockchip rk3288
  • загрузочный скрипт в файле /etc/init.d

У меня есть qml для отображения некоторых символов utf8

 // roboto font
FontLoader {
    id: roboto
    source: "qrc:/fonts/Roboto-Regular.ttf"
}

Text {
    text: "The temperature is: u2103"
    font.pixelSize: 24
    font.family: roboto.name
}
 

Когда я запускаю приложение из командной строки (UART), шрифт отображается правильно.
Когда я перезагружаюсь и мое приложение запускается из загрузочного сценария. Символы utf-8 отображаются неправильно.

Я перепробовал всевозможные комбинации:

  • Шрифт находится в файловой системе
  • Шрифт находится в разных местах файловой системы
  • различные шрифты (Монтсеррат, Авенир и т.д.).
  • отображение шрифта на основе статуса загрузчика == Загрузчик шрифтов.Готов

Все с одинаковыми результатами. Я случайно наткнулся на это решение:

 // japanese font
FontLoader {
    id: jpFont
    source: "qrc:/fonts/NotoSansJP-Regular.otf"
}

// roboto font
FontLoader {
    id: roboto
    source: "qrc:/fonts/Roboto-Regular.ttf"
}

Text {
    text: "The temperature is: u2103"
    font.pixelSize: 24
    font.family: roboto.name
}
 

Это работает. Я даже не использую японский шрифт, но, похоже, он заставляет Roboto работать правильно.

  • Почему мой шрифт загружает отладку utf8, но не при загрузке
  • почему этот дополнительный шрифт волшебным образом исправляет это ?

Комментарии:

1. Я бы проверил переменную среды LANG (и LC_* тоже) в обоих случаях. Также список доступных шрифтов (с помощью QFontDatabase::applicationFontFamilies)