Поиск шрифтов в Linux (в C ++) - PullRequest
       28

Поиск шрифтов в Linux (в C ++)

5 голосов
/ 03 декабря 2010

Я хочу иметь возможность получить абсолютный путь к файлу шрифта ttf в Linux, если ему дано имя шрифта (если оно существует). Есть ли команда или API, которые будут возвращать эту информацию?

Например, учитывая "arial.ttf", я хочу найти абсолютный путь (например, /usr/share/fonts/truetype/msttcorefonts/arial.ttf), где бы это ни было.

Ответы [ 3 ]

5 голосов
/ 23 апреля 2014

Самый простой способ - использовать fontconfig с опцией --format:

$ fc-match --format=%{file} LiberationSans-Regular.ttf

приведет к выводу

/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf

Вместо имени файла шрифта вы также можете указать описание шрифта, например, mono, DejaVu, :weight=bold, DejaVu-12 или DejaVu:weight=bold. Так, например,

$ fc-match --format=%{file} :weight=bold

результат в

/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf

в моей системе. Кажется, единственное, что не работает, - это указать полный путь к файлу шрифта.

0 голосов
/ 24 апреля 2014

Возможно, попытка получить доступ к шрифтам по пути - это действительно плохая идея, стек шрифтов linux не спроектирован таким образом. Не будет никакой стабильности в расположениях, и многие «шрифты», которых ожидают пользователи в списках шрифтов, не отображаются в один файл шрифта, а являются составными из нескольких файлов шрифтов.

Если вы хотите быть совместимыми со всеми другими настольными приложениями (и пользователи ожидают, что выбор шрифтов будет работать одинаково во всех приложениях), вам необходимо получить доступ к шрифтам по шаблонам через слой косвенности fontconfig (используя pango-cairo, или QT) и принять результат может быть сложным и не интуитивным.

Неважно, что это кажется вам менее интуитивным, важно только то, что выбор шрифта работает так же, как и во всех других приложениях. И обычно есть очень веские причины для выбора сопоставления fontconfig.

0 голосов
/ 03 декабря 2010

Вы смотрели на Как получить список установленных шрифтов True Type в Linux с использованием C или C ++? ?

Там нет принятого ответа, но у него хорошее начало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...