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

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

Мне было бы лучше, если бы я не зависел от чего-то огромного.

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

1

Решение

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

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

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

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

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

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

2

Другие решения

Ну … я бы использовал OpenGL и шрифты по умолчанию (гарантированные), список которых можно найти ВОТ

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

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

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

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

1

По вопросам рекламы [email protected]