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

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

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

FC_DEBUG = 4 pango-view -q -t '{символ}' 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. Все еще не повезло.

1 ответ

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

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

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

Другие вопросы по тегам