Как установить запасной шрифт для специальных символов в строках 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 для этого поля также можно использовать список фамилий, разделенных запятыми.
Когда я добавил необходимые резервные шрифты в список через запятую, это сработало.