Кросс-платформенный способ получить список доступных шрифтов?

Как я могу получить список доступных шрифтов?

Было бы лучше, если бы мне не приходилось зависеть от чего-то огромного.

Мое решение - перечислить каталог /usr/share/fonts в Linux и C:\Windows\Fonts в Windows. Это правильный способ сделать это?


person André Puel    schedule 23.02.2013    source источник


Ответы (2)


Нет, это НЕ правильный путь. Однако проблема в том, что на самом деле нет правильного пути, кроме стандартизации чего-то вроде freetype или написания собственной библиотеки с множеством бэкэндов для разных операционных систем.

Чтобы быть более ясным: в большинстве операционных систем есть растровые шрифты, контурные шрифты, разные кодировки шрифтов, различные другие форматы шрифтов, которые встречаются, но не так хорошо поддерживаются или поддерживаются некоторыми дополнительными плагинами, неалфавитными шрифтами (подумайте о Wingdings , шахматные фигуры и т. д.), цветные шрифты, шрифты TeX, шрифты postscript, 3D-шрифты и т. д.

Более того, у вас может не быть даже стандартного способа их перечисления. Например, большинство операционных систем перечисляют шрифты по имени и размеру, но система X Window традиционно перечисляет шрифты по множеству заголовков столбцов, включая их вес, были ли они без засечек, с фиксированным / переменным интервалом, курсивом или наклонным шрифтом и т. Д. .

БОЛЬШЕ, у вас есть проблемы, такие как пользовательские шрифты по сравнению с общесистемными шрифтами, и даже сетевые шрифты и серверы шрифтов, а теперь и веб-шрифты.

Короче говоря, шрифты сложны. Именно по таким причинам существуют такие библиотеки, как freetype. Я предлагаю просто использовать один.

НО, если вам нужно более быстрое и хакерское решение, перечисление этих каталогов - это начало. Вероятно, вам следует сделать два упомянутых метода двумя возможными бэкэндами, с бэкэндами по умолчанию, выбранными для Linux и Windows, но, возможно, вместо этого можно указать / usr / share / X11 / fonts или перечислить шрифты через defoma, например, вместо этого.

person Community    schedule 23.02.2013
comment
Но freetype не предоставляет возможности списка шрифтов, не так ли? - person André Puel; 24.02.2013

Что ж ... Я бы использовал OpenGL и стандартные (гарантированные) шрифты, список которых можно найти на ЗДЕСЬ

Или я бы взглянул на эти ссылки:

  1. Независимый от платформы способ получить каталог шрифтов?
  2. Шрифты в многоплатформенной среде
  3. Руководство по шрифтам OpenGL

Или вы можете просто использовать графическую библиотеку (SDL, OpenGL) и BITMAP со шрифтом в нем ... И использовать это для текста! :)

Удачи, надеюсь, вы найдете то, что ищете!

person Mitch    schedule 23.02.2013
comment
Или вы можете продолжить свой путь и ifndef WIN32, _APPLE, linux || linux и обратитесь к каталогу FONT ОС (вы знаете папки для Windows / Linux, но для Mac это / System / Library / Fonts и / Library / Fonts)! - person Mitch; 24.02.2013