В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

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

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:74299
Аннотация
Чтобы создать шрифт в графической среде 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() функция округляет результат и является прекрасным вариантом длявыполнение предыдущих вычислений.
3,00 3.10 TrueType 3,50 4.00 win16sdk

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 74299 — последний просмотр: 06/01/2011 06:38:00 — редакция: 4.0

,

  • kbinfo kbmt KB74299 KbMtru
Отзывы и предложения
ml>