Вопрос или проблема
На моей системе Fedora Linux fontconfig не использует шрифты msttcore, когда должен. Вот один пример; давайте сосредоточимся на шрифте Courier New Bold в PDF-файле:
$ pdffonts -subst a.pdf | grep 'Courier New Bold'
Courier New Bold 8345 0 Noto Sans Mono Regular /usr/share/fonts/google-noto-vf/NotoSansMono[wght].ttf
fontconfig считает, что Noto Sans Mono Regular — это лучшее доступное совпадение для Courier New Bold. Теперь fontconfig знает, что шрифты msttcore установлены:
$ fc-list | grep courbd
/usr/share/fonts/msttcore/courbd.ttf: Courier New:style=Bold,Negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,Vet,Halvfet,Pogrubiony,Negrito,Полужирный,Fet,Kalın,Krepko,đậm,Lodia
$ fc-query /usr/share/fonts/msttcore/courbd.ttf
Pattern has 29 elts (size 32)
family: "Courier New"(s)
familylang: "en"(s)
style: "Bold"(s) "Negreta"(s) "tučné"(s) "fed"(s) "Fett"(s) "Έντονα"(s) "Negrita"(s) "Lihavoitu"(s) "Gras"(s) "Félkövér"(s) "Grassetto"(s) "Vet"(s) "Halvfet"(s) "Pogrubiony"(s) "Negrito"(s) "Полужирный"(s) "Fet"(s) "Kalın"(s) "Krepko"(s) "đậm"(s) "Lodia"(s)
stylelang: "en"(s) "ca"(s) "cs"(s) "da"(s) "de"(s) "el"(s) "es"(s) "fi"(s) "fr"(s) "hu"(s) "it"(s) "nl"(s) "no"(s) "pl"(s) "pt"(s) "ru"(s) "sv"(s) "tr"(s) "sl"(s) "vi"(s) "eu"(s)
fullname: "Courier New Bold"(s) "Courier New Negreta"(s) "Courier New tučné"(s) "Courier New fed"(s) "Courier New Fett"(s) "Courier New Έντονα"(s) "Courier New Negrita"(s) "Courier New Lihavoitu"(s) "Courier New Gras"(s) "Courier New Félkövér"(s) "Courier New Grassetto"(s) "Courier New Vet"(s) "Courier New Halvfet"(s) "Courier New Pogrubiony"(s) "Courier New Negrito"(s) "Courier New Полужирный"(s) "Courier New Fet"(s) "Courier New Kalın"(s) "Courier New Krepko"(s) "Courier New đậm"(s) "Courier New Lodia"(s)
fullnamelang: "en"(s) "ca"(s) "cs"(s) "da"(s) "de"(s) "el"(s) "es"(s) "fi"(s) "fr"(s) "hu"(s) "it"(s) "nl"(s) "no"(s) "pl"(s) "pt"(s) "ru"(s) "sv"(s) "tr"(s) "sl"(s) "vi"(s) "eu"(s)
slant: 0(i)(s)
weight: 200(f)(s)
width: 100(f)(s)
spacing: 100(i)(s)
foundry: "Mono"(s)
file: "/usr/share/fonts/msttcore/courbd.ttf"(s)
index: 0(i)(s)
outline: True(s)
scalable: True(s)
charset:
0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff
... много пропущенной информации ...
lang: aa|af|ar|av|ay|az-az|be|bg|bi|bin|br|bs|bua|ca|ce|ch|co|cs|cy|da|de|el|en|eo|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gn|gv|he|ho|hr|hu|ia|ig|id|ie|ik|io|is|it|kaa|ki|kk|kl|kum|ky|la|lb|lez|lt|lv|mg|mh|mt|nb|nds|nl|nn|no|nr|nso|ny|oc|om|os|pl|pt|rm|ru|se|sel|sk|sl|sma|smj|smn|so|sq|sr|ss|st|sv|sw|tk|tl|tn|tr|ts|tt|tyv|uk|uz|vo|vot|wa|wen|wo|xh|yap|yi|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|lg|li|mn-mn|ms|na|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za|agr|ayc|bem|dsb|lij|mfe|mhr|miq|mjw|nhn|niu|szl|tpi|unm|wae|yuw(s)
fontversion: 184812(i)(s)
capability: "otlayout:arab"(s)
fontformat: "TrueType"(s)
decorative: False(s)
postscriptname: "CourierNewPS-BoldMT"(s)
color: False(s)
symbol: False(s)
variable: False(s)
fonthashint: True(s)
order: 0(i)(s)
namedinstance: False(s)
fontwrapper: "SFNT"(s)
Почему fontconfig не использует этот шрифт, который идеально соответствует шрифту в PDF-файле, вместо Noto Sans Mono Regular? Что не так с моей настройкой и как я могу это исправить?
Ответ или решение
Проблема с сопоставлением шрифтов msttcore в Fedora Linux
На вашем компьютере с Fedora Linux возникла проблема с тем, что Fontconfig не использует установленные шрифты msttcore, когда это необходимо. В частности, это касается шрифта "Courier New Bold" в PDF-документе, который вместо этого отображает "Noto Sans Mono Regular". Данная ситуация представляет собой нарушение ожидаемого поведения системы отображения шрифтов и требует более глубокого анализа.
Описание проблемы
С точки зрения диагностики, вы уже провели важные шаги для выяснения проблемы. Например, вывод команды pdffonts
показывает, что вместо ожидаемого "Courier New Bold" используется "Noto Sans Mono Regular". Это указывает на то, что Fontconfig не распознает "Courier New Bold" как лучший доступный шрифт для замены в данном контексте, несмотря на его наличия в системе.
Вы также проверили, что шрифты msttcore действительно установлены с помощью команды fc-list
, что подтверждает присутствие "courbd.ttf" и правильность его метаданных, как показано с помощью fc-query
.
Возможные причины и решения
-
Проблемы с приоритетом шрифтов: Вы можете проверить приоритеты шрифтов с помощью команды
fc-match -s "Courier New Bold"
. Это покажет все шрифты, соответствующие этому запросу, в порядке предпочтительности. Если "Noto Sans Mono Regular" оказывается первым в списке, это означает, что Fontconfig считает его наилучшим соответствием. В этом случае вы можете изменить конфигурацию Fontconfig, добавив в файлы конфигурации специфические настройки приоритетов шрифтов. -
Конфигурация Fontconfig: Возможно, настройки Fontconfig вашего окружения не учитывают правильные правила сопоставления шрифтов. Проверьте файлы конфигурации Fontconfig в
/etc/fonts/conf.d/
и~/.config/fontconfig/
. Если правила не соответствуют вашим требованиям, вы можете создать пользовательский файл конфигурации, который будет явно указывать, что "Courier New Bold" должен иметь больший приоритет по сравнению с другими шрифтами.Например, добавление следующего кода в файл конфигурации Fonts:
<match target="font"> <test name="family"><string>Courier New</string></test> <edit name="family" mode="prepend"> <string>Courier New</string> </edit> </match>
-
Кеширование шрифтов: После внесения изменений в файлы конфигурации необходимо обновить кеш шрифтов. Для этого выполните команду:
fc-cache -fv
Это заново создаст базы данных шрифтов и обеспечит их обновление согласно новым правилам.
-
Тестирование: После выполнения всех вышеперечисленных шагов, проверьте, изменилось ли поведение системного шрифта, используя ту же команду
pdffonts
, а затем попробуйте открыть PDF-документ снова. Если проблема остается, следует исследовать иные возможные конфликты с остальными шрифтами.
Заключение
Проблема с тем, что Fontconfig не использует шрифты msttcore, может быть связана с приоритетами шрифтов в системе, некорректной конфигурацией Fontconfig или кешированием шрифтов. Следуя вышеуказанным рекомендациям, вы должны быть в состоянии выявить и исправить проблему, обеспечив корректное отображение шрифтов в PDF-документах. Если после всех попыток проблема не решится, рекомендуется обратиться на форумы Fedora или Fontconfig для более детального изучения ситуации.