2013-11-13 2 views
1

Как я могу получить «- -courier- - * - - ...« как имя, если у меня есть название шрифта, например «Courier New»? Меня интересуют первые два раздела - производитель и семья.Как получить имя шрифта X-like от удобного для пользователя имени?

Спасибо.

P.S. Я могу использовать стандартные функции Xlib. Я не хочу зависеть от какой-либо другой библиотеки.

ответ

1

К сожалению, обработка шрифтов фрагментирована в X11, и то, что вы хотите, невозможно.

Функция Xlib XListFonts() вернет список «старых» шрифтов фиксированного размера, таких как «-adobe-courier-bold-o-normal» - 0-0-100-100-m-iso10464-1. И это вся информация; просто имя и набор параметров.

Что вы ищете, это функции Freetype, такие как XftFontOpenName(), где вы можете поместить образец, похожий на «Courier New-14: жирный: наклонный - курсив, наклонный». Но это совсем другой способ визуализации шрифтов, и между двумя системами шрифтов нет никакой связи.

Вы можете запросить библиотеку Xft для списка шрифтов, используя XftFontMatch(), возможно, это даст вам информацию, которую вы ищете. Но вам придется использовать библиотеку freetype (небольшая цена для оплаты, я думаю).