ИНФОРМАЦИЯ: Вычисление логического высоты и кегль шрифта

Переводы статьи Переводы статьи
Код статьи: 74299 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

Чтобы создать шрифт в графической среде Microsoft Windows, только требуемый размер, приложение необходимо рассчитать высоту на основе логических шрифта, так как CreateFont() и CreateFontIndirect() функции для указания высоты использовать логические единицы.

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

Дополнительная информация

Чтобы рассчитать высоту на основе логических, можно используйте следующую формулу:
                                Point Size * LOGPIXELSY
   height = Internal Leading + -------------------------
                                          72
				
LOGPIXELSY — это количество точек, содержащихся в логическом дюйме на устройство. Это значение получается путем вызова метода GetDeviceCaps() функции с индексом LOGPIXELSY. Значение 72 важен, так как один дюйм содержит 72 точки.

Проблема с этот расчет является, не существует способа определить Внутренняя ведущих для шрифта, так как он еще не создан. Для обойти эту сложность, используйте следующий вариант формулы:
            -(Point Size * LOGPIXELSY)
   height = --------------------------
                         72
				
Эта формула может быть записан следующим образом:
   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
				
Когда приложение вызывает метод CreateFont() -или- CreateFontIndirect() функции и указывается отрицательное значение для параметра высоты средство сопоставления шрифтов обеспечивает наиболее точное соответствие для высоты символа, а не Высота ячейки. Разница между высотой клетки и высоты символа является внутренней интерлиньяж как показано на следующей схеме:
   ----------  <------------------------------
   |        |           |- Internal Leading  |
   | |   |  |  <---------                    |
   | |   |  |        |                       |- Cell Height
   | |---|  |        |- Character Height     |
   | |   |  |        |                       |
   | |   |  |        |                       |
   ----------  <------------------------------
				
Следующая формула вычисляет размер шрифта:
                (Height - Internal Leading) * 72
   Point Size = --------------------------------
                           LOGPIXELSY
				
Значения высоты и внутренние ведущих получаются изTEXTMETRIC Структура данных. LOGPIXELSY значение берется изGetDeviceCaps функции, как описано выше.

Круглые рассчитанной размер в пунктах до ближайшего целого. WindowsMulDiv() функция округляет результат и является прекрасным вариантом для выполнение предыдущих вычислений.

Свойства

Код статьи: 74299 - Последний отзыв: 1 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
Ключевые слова: 
kbinfo kbmt KB74299 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:74299

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com