Как я могу получить список доступных шрифтов?
Мне было бы лучше, если бы я не зависел от чего-то огромного.
Мое решение пока состоит в том, чтобы перечислить каталог /usr/share/fonts
на Linux и C:\Windows\Fonts
на окнах. Это правильный способ сделать это?
Нет, это НЕ правильный путь. Однако проблема заключается в том, что на самом деле нет правильного пути, если не считать стандартизации на что-то вроде freetype или написания собственной библиотеки с большим количеством бэкэндов для разных операционных систем.
Чтобы быть более понятным: большинство операционных систем имеют растровые шрифты, контурные шрифты, различные кодировки шрифтов, различные другие форматы шрифтов, которые встречаются, но не так хорошо поддерживаются или поддерживаются с помощью некоторых дополнительных плагинов, неалфавитных шрифтов (вспомним Wingdings , шахматные фигуры и т. д.), цветные шрифты, шрифты TeX, постскриптумные шрифты, 3D-шрифты и т. д.
Кроме того, у вас может даже не быть стандартного способа их перечисления. Например, большинство операционных систем перечисляют шрифты по имени и размеру, но система X Window традиционно перечисляла шрифты по множеству заголовков столбцов, включая их вес, независимо от того, были ли они без засечек / с засечками, с фиксированным / переменным интервалом, курсивом или косым и т. Д. ,
Более того, у вас есть проблемы, такие как пользовательские шрифты против общесистемных шрифтов, и даже сетевые шрифты, серверы шрифтов, а теперь и веб-шрифты.
Короче говоря, шрифты сложны. Именно по таким причинам существуют библиотеки типа freetype. Я бы предложил просто использовать один.
НО, если вы хотите более быстрое и более хакерское решение, тогда перечисление этих каталогов является началом. Вероятно, вам следует использовать два метода, о которых вы упомянули, два возможных бэкэнда, с бэкэндами по умолчанию, выбранными для Linux и Windows, но, возможно, вместо этого можно перечислить / usr / share / X11 / fonts или перечислить шрифты через defoma, например.
Ну … я бы использовал OpenGL и шрифты по умолчанию (гарантированные), список которых можно найти ВОТ
Или я бы взглянул на эти ссылки:
Или вы можете просто использовать графическую библиотеку (SDL, OpenGL) и BITMAP со шрифтом в нем … И использовать это для текста! 🙂
Удачи, надеюсь, вы найдете то, что ищете!