LOGFONT и кегль
От: greatsokol Россия  
Дата: 23.03.05 08:28
Оценка:
Как, имея на руках структуру типа LOGFONT (или сам объект класса CFont), вычислить кегль шрифта или наоброт.
lfHeigth, насколько понимаю, не подходит.
Re: LOGFONT и кегль
От: MaximE Великобритания  
Дата: 23.03.05 09:39
Оценка:
greatsokol wrote:

> Как, имея на руках структуру типа LOGFONT (или сам объект класса CFont), вычислить кегль шрифта или наоброт.

> lfHeigth, насколько понимаю, не подходит.

Если не ошибаюсь, положительный height и есть размер шрифта в пунктах (кегль). Отрицательный — в пикселах.

На страничке есть формула для перевода кегля в пикселы для конкретного разрешения: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_1wmq.asp

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9
Re[2]: LOGFONT и кегль
От: greatsokol Россия  
Дата: 23.03.05 11:08
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>greatsokol wrote:


>> Как, имея на руках структуру типа LOGFONT (или сам объект класса CFont), вычислить кегль шрифта или наоброт.

>> lfHeigth, насколько понимаю, не подходит.

ME>Если не ошибаюсь, положительный height и есть размер шрифта в пунктах (кегль). Отрицательный — в пикселах.


ME>На страничке есть формула для перевода кегля в пикселы для конкретного разрешения: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_1wmq.asp


ME>--

ME>Maxim Yegorushkin

Извините, может быть я не в курсе глубинных процессов, но, если я инициализирую структуру типа LOGFONT перед передачей в диалог выбора фонта и указываю lfHeight=14, то далог, будучи показанным, показывает мне кегль равный 11 (не точное значение, но вобщем — отличное от ожидаемого). Может быть кто-нибудь с этим уже боролся?
Re[3]: LOGFONT и кегль
От: MaximE Великобритания  
Дата: 23.03.05 11:42
Оценка:
greatsokol wrote:

> Извините, может быть я не в курсе глубинных процессов, но, если я инициализирую структуру типа LOGFONT перед передачей в диалог выбора фонта и указываю lfHeight=14, то далог, будучи показанным, показывает мне кегль равный 11 (не точное значение, но вобщем — отличное от ожидаемого).


Как ты определяешь кегль на диалоге?

Корректный метод определения: иметь на диалоге заглавную Х, померить ее высоту в пикселах (h), разделить на разрешение устройства дисплея, и разделить на 1/72 (размер пункта в дюймах).

Т.е., если высота буквы Х составляет 12 пикселов, разрешение монитора 96ppi, то размер шрифта Х в пунктах (кегль) есть:

12 / 96 * 72 = 9 пунктов.

Имей ввиду, что гарнитуры разных производителей по разному трактуют размер шрифта: у некоторых он включает внутренний интерлиньяж, у некоторых нет.

> Может быть кто-нибудь с этим уже боролся?


Я конкретно занимался device independent precise text layout (как в продуктах Adobe).

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9
Re[4]: LOGFONT и кегль
От: greatsokol Россия  
Дата: 23.03.05 11:57
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>greatsokol wrote:


>> Извините, может быть я не в курсе глубинных процессов, но, если я инициализирую структуру типа LOGFONT перед передачей в диалог выбора фонта и указываю lfHeight=14, то далог, будучи показанным, показывает мне кегль равный 11 (не точное значение, но вобщем — отличное от ожидаемого).


ME>Как ты определяешь кегль на диалоге?


ME>Корректный метод определения: иметь на диалоге заглавную Х, померить ее высоту в пикселах (h), разделить на разрешение устройства дисплея, и разделить на 1/72 (размер пункта в дюймах).


ME>Т.е., если высота буквы Х составляет 12 пикселов, разрешение монитора 96ppi, то размер шрифта Х в пунктах (кегль) есть:


ME>12 / 96 * 72 = 9 пунктов.


ME>Имей ввиду, что гарнитуры разных производителей по разному трактуют размер шрифта: у некоторых он включает внутренний интерлиньяж, у некоторых нет.


>> Может быть кто-нибудь с этим уже боролся?


ME>Я конкретно занимался device independent precise text layout (как в продуктах Adobe).


ME>--

ME>Maxim Yegorushkin

Опять таки, я дико извинияюсь
А на диалоге выбора шрифта мы что за величину указываем, когда выбираем размер? Пункты или пиксели?
Re[5]: LOGFONT и кегль
От: MaximE Великобритания  
Дата: 23.03.05 12:03
Оценка:
greatsokol wrote:

> Опять таки, я дико извинияюсь

> А на диалоге выбора шрифта мы что за величину указываем, когда выбираем размер? Пункты или пиксели?

Диалоги разные бывают Надо смотреть в код или читать доки.

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9
Re[6]: LOGFONT и кегль
От: greatsokol Россия  
Дата: 23.03.05 12:06
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>greatsokol wrote:


>> Опять таки, я дико извинияюсь

>> А на диалоге выбора шрифта мы что за величину указываем, когда выбираем размер? Пункты или пиксели?

ME>Диалоги разные бывают Надо смотреть в код или читать доки.


ME>--

ME>Maxim Yegorushkin

Например вот такойм (MFC):

HWND hwnd;                // owner window
HDC hdc;                  // display device context of owner window

CHOOSEFONT cf;            // common dialog box structure
static LOGFONT lf;        // logical font structure
static DWORD rgbCurrent;   // current text color
HFONT hfont, hfontPrev;
DWORD rgbPrev;

// Initialize CHOOSEFONT
ZeroMemory(&cf, sizeof(cf));
cf.lStructSize = sizeof (cf);
cf.hwndOwner = hwnd;
cf.lpLogFont = &lf;
cf.rgbColors = rgbCurrent;
cf.Flags = CF_SCREENFONTS | CF_EFFECTS;

if (ChooseFont(&cf)==TRUE) {
    hfont = CreateFontIndirect(cf.lpLogFont);
    hfontPrev = SelectObject(hdc, hfont);
    rgbCurrent= cf.rgbColors;
    rgbPrev = SetTextColor(hdc, rgbCurrent);
 .
 .
 .
}
Re[7]: LOGFONT и кегль
От: MaximE Великобритания  
Дата: 23.03.05 12:17
Оценка:
greatsokol wrote:

> Например вот такойм (MFC):


[]

См. iPointSize @ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxstructures/choosefont.asp

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.