2015-05-23 3 views
1

Моя программа хочет загрузить моноширинный шрифт с помощью этой команды:X11: как мне получить шрифт, который я хочу?

font_info = XLoadQueryFont(dpy, 
     "-*-*-medium-r-*-*-12-*-*-*-m-*-iso8859-1"); 

Шрифт он заканчивает загрузку является

-apple-monaco-medium-r-normal--12-87-100-100-m-90-iso8859-1 

Как я могу получить мой локальной машине, чтобы понять, что «лучший» шрифт для использования в

-urw-nimbus mono l-medium-r-normal--12-87-100-100-m-90-iso8859-1 

Я не хочу называть конкретный шрифт в моей программе, потому что я не могу гарантировать, что мой компьютер будет иметь его. Я хочу, чтобы мой компьютер знал, что это лучший шрифт для использования.

Возможно ли это?

+2

Вы не определили критерии для «наилучшего». шрифт яблока является первым в алфавитном порядке, который удовлетворяет. почему бы вам не вставлять свои шрифты с приложением и специально называть шрифты thoss. в противном случае вам понадобится инструкция switch/case, которая проваливается, если не найдена. –

+0

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

+0

Яблочный шрифт не первый в алфавитном порядке. У меня также есть -adobe-courier-medium-r-normal – hymie

ответ

0

Создайте свой собственный список приоритетов, и вы можете оставить это как резерв. Попробуйте загрузить nimbus сначала.

font_info = XLoadQueryFont(dpy, 
          "-*-nimbus*-medium-r-*-*-12-*-*-*-m-*-iso8859-1"); 
if (!font_info) { 
    fprintf(stderr, "XLoadQueryFont: failed to load nimbus font, looking for a fallback font\n"); 
    font_info = XLoadQueryFont(dpy, 
           "-*-*-medium-r-*-*-12-*-*-*-m-*-iso8859-1"); 
} 
if (!font_info) 
    fprintf(stderr, "XLoadQueryFont: failed to load a font\n"); 
+1

Цель заключалась в том, что программа запрашивала '- * - * - medium-r - * - * - 12 - * - * - * - m - * - iso8859-1', а для отдельного клиента - ответ «я попробую nimbus first» или «сначала попробую консоль» или «сначала попробую lucida». Я не хотел помещать конкретный шрифт в саму программу, если бы мог ее избежать. – hymie

Смежные вопросы