Как установить резервный шрифт для специальных символов в строках Pango в Windows?

Мое приложение отображает строки, используя Pango, Cairo и GTK3. Некоторые из этих строк содержат специальные символы, в том числе один, не входящий в базовую плоскость Unicode. В Linux это только что сработало, но в Windows он не может найти специальные символы и вместо этого отображает поле неизвестного символа.

Я использую Roboto для текста, но он не включает эти символы. Используя трюк, я найдено здесь Я обнаружил, что в Linux основной fontconfig переключается на Symbolica или STIX.

FC_DEBUG=4 pango-view -q -t '{character}' 2>&1 | grep -o 'семейство: "[^"]+' | вырезать -c 10- | хвост -n 1

Я пытался установить эти шрифты на машину с Windows, но безуспешно.

На моем компьютере с Windows работает Mingw-w64, который поставляется с /etc/fonts, содержащим файлы fontconfig, но они не Кажется, я делаю что-то не так. К сожалению, pango-view, похоже, не обращает внимания на переменную окружения FC_DEBUG, поэтому я не могу понять, что она делает.

Как я могу указать fontconfig в Windows, где взять глифы для кодовых точек, которые Roboto не предоставляет?

Обновление: я установил AttrFallback для рассматриваемых строк, чтобы быть True, на тот случай, если сборки Pango обрабатывают это по-разному в Linux и Windows. Все равно не повезло.


person Paul Johnson    schedule 13.11.2018    source источник


Ответы (1)


Я до сих пор не знаю, почему это работает по-разному в Windows и Linux, но ответ оказался скрытым в Pango.FontDescription.set_family документация:

В некоторых случаях использования pango.FontDescription также можно использовать разделенный запятыми список имен семейств для этого поля.

Когда я добавил необходимые резервные шрифты в список, разделенный запятыми, это сработало.

person Paul Johnson    schedule 16.11.2018