Мотив Как рассчитать или получить размер шрифта в пикселях?
Я пытаюсь написать код в Motif, чтобы изменить диалоговое окно с предупреждением, чтобы изменить его размер, если поле недостаточно широкое. Ширина и высота всегда устанавливаются вызывающими классами, и они не всегда достаточно широки для отображаемого сообщения, а конец строки обрезается. Вместо того, чтобы фиксировать везде, чтобы использовать автоматическое изменение размера (т.е. ширина равна 0 или не задана вообще), они хотят выяснить, какова ширина в пикселях для символа в диалоговом окне. Затем они могут умножить самую длинную линию на ширину X пикселей, чтобы получить длину строки в пикселях. Затем мы увидим, нужно ли сбросить объявленную ширину диалогового окна, чтобы остановить усечение. Изменяться будут только слишком короткие диалоги (слишком широкие диалоги изменять нельзя).
Однако; Я не могу найти ни одного примера, как получить ширину символа в пикселях где угодно. Я помню, как много лет назад я работал над проектом, в котором они создали какой-то виджет, вставили в него символ, а затем сделали XtGetValues, чтобы получить ширину и высоту, поэтому я думаю, что это можно сделать. Так кто-нибудь знает, как это сделать?
1 ответ
Это было давно, но если не изменяет память, Xt не имеет какой-либо конкретной поддержки шрифтов, он полагается на простой libx11. Вам нужно будет позвонитьXQueryFont
или XLoadQueryFont
чтобы получить XFontStruct
описывая свой шрифт, а затем ползать по per_char
массив, чтобы найти размеры отдельных глифов.