Мотив Как рассчитать или получить размер шрифта в пикселях? - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь написать код в Motif, чтобы изменить диалоговое окно с предупреждением, чтобы изменить его размер, если поле недостаточно широкое. Ширина и высота всегда устанавливаются вызывающими классами, и они не всегда достаточно широкие для отображаемого сообщения, а конец строки обрезается. Вместо того, чтобы фиксировать везде, чтобы использовать автоматическое изменение размера (т.е. ширина равна 0 или не задана вообще), они хотят выяснить, какова ширина в пикселях для символа в диалоговом окне. Затем они могут умножить самую длинную линию на ширину X пикселей, чтобы получить длину строки в пикселях. Затем мы увидим, нужно ли сбросить объявленную ширину диалогового окна, чтобы остановить усечение. Изменяются только слишком короткие диалоги (слишком широкие диалоги изменять нельзя).

Однако; Я не могу найти ни одного примера, как получить ширину символа в пикселях где угодно. Я помню, как go годы я был в проекте, где они создали какой-то виджет, вставили в него символ, а затем сделали XtGetValues, чтобы получить ширину и высоту, так что я думаю, что это можно сделать. Так кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 08 мая 2020

Долгое время это было go, но если память не изменяет, Xt не имеет какой-либо c поддержки шрифтов, он полагается на обычную libx11. Вам нужно будет вызвать XQueryFont или XLoadQueryFont, чтобы получить XFontStruct, описывающий ваш шрифт, а затем ползать по массиву per_char, чтобы найти размеры отдельных глифов.

...