|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Metrics for Portable Documents
The following table specifies the most important font metrics for applications that require portable documents and the functions that allow an application to retrieve them.
Function Metric Use EnumFontFamilies ntmSizeEM Retrieval of design metrics; conversion to device metrics GetCharABCWidths ABCWidths Accurate placement of characters at the start and end of margins, picture boundaries, and other text breaks GetCharWidth32 AdvanceWidths Placement of characters on a line GetOutlineTextMetrics otmfsType Font-embedding bits otmsCharSlopeRise Y-component for slope of cursor for italic fonts otmsCharSlopeRun X-component for slope of cursor for italic fonts otmAscent Line spacing otmDescent Line spacing otmLineGap Line spacing otmpFamilyName Font identification otmpStyleName Font identification otmpFullName Font identification (typically, family and style name)
The otmsCharSlopeRise, otmsCharSlopeRun, otmAscent, otmDescent, and otmLineGap members of the OUTLINETEXTMETRIC structure are scaled or transformed to correspond to the current device mode and physical height (as given in the tmHeight member of the NEWTEXTMETRIC structure). Font identification is important in those instances when an application must select the same font ѕ for example, when a document is reopened or moved to a different operating system. The font mapper always selects the correct font when an application requests a font by full name. The family and style names provide input to the standard font dialog box, which ensures that the selection bars are properly placed.
The otmsCharSlopeRise and otmsCharSlopeRun values are used to produce a close approximation of the main italic angle of the font. For typical roman fonts, otmsCharSlopeRise is 1 and otmsCharSlopeRun is 0. For italic fonts, the values attempt to approximate the sine and cosine of the main italic angle of the font (in counterclockwise degrees past vertical); note that the italic angle for upright fonts is 0. Because these values are not expressed in design units, they should not be converted into device units.
The character placement and line spacing metrics enable an application to compute device-independent line breaks that are portable across screens, printers, typesetters, and even platforms. Device-independent page layout requires the following seven basic steps:
1. Normalize all design metrics to a common ultra-high resolution (UHR) value (for example, 65,536 DPI); this prevents round-off errors. 2. Compute line breaks based on UHR metrics and physical page width; this yields a starting point and an ending point of a line within the text stream. 3. Compute the device page width in device units (for example, pixels). 4. Fit each line of text into the device page width, using the line breaks computed in step 2. 5. Compute page breaks by using UHR metrics and the physical page length; this yields the number of lines per page.
6. Compute the line heights in device units. 7. Fit the lines of text onto the page, using the lines per page from step 5 and the line heights from step 6.
If all applications adopt these techniques, developers can virtually guarantee that documents moved from one application to another will retain their original appearance and format.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Метрика для Портативных Документов
Следующий стол определяет наиболее важную шрифтовую метрику для приложений, которые требуют портативные документы и функции, которые позволяют приложение, чтобы извлекать их.
Функциональное Метрическое Использование ПОИСК EnumFontFamilies ntmSizeEM проектой метрики; преобразование в метрику устройства GetCharABCWidths ABCWidths Точного размещения символов в начале и конце полей, картинных границ, и другой текст ломает Размещение GetCharWidth32 AdvanceWidths символов на битах линии GetOutlineTextMetrics otmfsType Шрифтового вложения otmsCharSlopeRise Y-component для уклона курсора для шрифтов курсива otmsCharSlopeRun X-component для уклона курсора для шрифтов курсива otmAscent Линии, размещающих расстояние Линии otmDescent Линии otmLineGap, размещающий идентификацию Шрифта Шрифта otmpFamilyName Шрифта идентификации otmpStyleName идентификации otmpFullName (обычно, семейное и имя стиля)
otmsCharSlopeRise, otmsCharSlopeRun, otmAscent, otmDescent, И участники otmLineGap структуры OUTLINETEXTMETRIC масштабированы или превращены, чтобы переписываться в текущий способ устройства и физической высоты (как дано на члене tmHeight структуры NEWTEXTMETRIC). Шрифтовая идентификация важная в тех примерах когда приложение должно выбраться тот же шрифт U например, когда документ открыт вновь или перемещен на другую операционную систему. Шрифтовое mapper всегда выбирается правильный шрифт когда приложение просит шрифт полным именем. Семейные и имена стиля обеспечивают вклад в стандартный шрифтовой диалоговый ящик, который проверяет, что бары выбора правильно установлены.
otmsCharSlopeRise И величины otmsCharSlopeRun использованы, чтобы производить закрытую аппроксимацию основного угла курсива шрифта. Для типичных римских шрифтов, otmsCharSlopeRise, - 1 и otmsCharSlopeRun - 0. Для шрифтов курсива, величины пытаются аппроксимировать синус и косинус основного угла курсива шрифта (в против часовой стрелки градусах прошлых вертикальных); отметьте, что угол курсива для прямых шрифтов - 0. Поскольку эти величины не выражены на проектых устройствах, они не должны преобразовываны на устройства устройства.
Символьное размещение и линия, размещающие метрику позволяют приложение, чтобы вычислять машинонезависимые прерывания линии, которые портативные через экраны, принтеры, наборщиков, и даже платформы. Машинонезависимый страничный формат требует следующее семь основных шагов:
1. Приведите всю проектую метрику к общему крайнему-высокому решению (UHR) величине (например, 65,536 DPI); это предохраняет округлять ошибки. 2. Вычислите прерывания линии основанные в метрике UHR и физической страничной ширине; это дает отправной пункт и выходной линии в пределах текстового потока. 3. Вычислите страничную ширину устройства на устройствах устройства (например, пиксели). 4. Установите каждую строку текста на страничную ширину устройства, используя линию прерываний вычислялся на этапе 2. 5. Вычислите разделители страниц используя метрику UHR и физическая страничная длина; это дает количество линий за страницу.
6. Вычислите линию высот на устройствах устройства. 7. Установите строки текста на странице, используя линии за страницу из шага 5 и линия высот из шага 6.
Если все приложения принимают эти методы, разработчики могут фактически гарантировать, что документы перемещенные из одного приложения на другое сохранит их оригинальное появление и формат.
|
|
|
|
| |