Метрики для переносного документа


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

Функция Метрика Использование
EnumFontFamilies ntmSizeEM Извлекает расчетные метрики; преобразует в метрики устройства
GetCharABCWidths ABCWidths Точное размещение букв (символов) в начале и конце полей страницы, в границах рисунка, и другой разбивки текста .
GetCharWidth32 AdvanceWidths Размещение букв в строке
GetOutlineTextMetrics otmfsType Биты внедрения шрифта.
  otmsCharSlopeRise Y-компонент для наклона курсора для курсивных шрифтов.
  otmsCharSlopeRun X-компонент для наклона курсора для курсивных шрифтов.
  otmAscent Интервал между строками..
  otmDescent Интервал между строками.
  otmLineGap Интервал между строками.
  otmpFamilyName Идентификация шрифта.
  otmpStyleName Идентификация шрифта.
  otmpFullName Идентификация шрифта (обычно имя семейства и стиля).
 

Члены otmsCharSlopeRise, otmsCharSlopeRun, otmAscent, otmDescent и otmLineGap структуры OUTLINETEXTMETRIC масштабируются или преобразуются, чтобы соответствовать текущему режиму устройства и физической высоте (как задано в члене tmHeight структуры NEWTEXTMETRIC).

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

Значения членов otmsCharSlopeRise и otmsCharSlopeRun используются для создания достаточно хорошего приближения основного угла курсивного шрифта. Для обычных прямых (латинских) шрифтов, otmsCharSlopeRise равен 1, а otmsCharSlopeRun - 0. Для курсивных шрифтов, пытаются подобрать близкие значения синуса и косинуса основного угла курсивного шрифта (в градусах против часовой стрелки за пределы вертикали); обратите внимание, что курсивный угол для вертикальных шрифтов - 0. Поскольку эти значения не выражены в расчетных единицах измерения, они не должны преобразовываться в единицы измерения устройства (пиксели).

Метрики размещение символов и интервала между строками дают возможность приложению вычислить не зависящие от устройства переносы строки, которые являются машинонезависимыми для экранов, принтеров, наборных устройств и других инструментальных комплексов.

Чтобы выполнить независимый от устройств макет страницы

  1. Нормализуйте все расчетные метрики до общепринятого значения  сверхвысокого разрешения (UHR)(например, 65,536 DPI); это не допускает ошибок округления.
  2. Вычислите переносы строки, основанные на  метрике UHR и физической ширине страницы; это вырабатывает отправную  и конечную точку строки в пределах текстового потока.
  3. Вычислите ширину страницы устройства в единицах измерения устройства (например, пикселях).
  4. Подгоните каждую строку текста по ширине страницы устройства, используя переносы строки, вычисленные в шаге 2.
  5. Вычислите разграничители страниц при помощи использования метрик UHR  и физической длины страницы; это вырабатывает число строк в странице.
  6. Вычислите высоты строк в единицах измерения устройства (пикселях).
  7. Подгоните строки текста в странице, используя число строк на страницу из шага 5 и высоту строки из шага 6.

Если все прикладные программы принимают эти методы, разработчики могут фактически гарантировать, что документы, перемещенные из одного приложения в другое будет сохранять свой первоначальный вид и формат.

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz