Смекни!
smekni.com

Вывод текста (стр. 3 из 3)

// установим систему координат с несбалансированными

// масштабными коэффициентами по осям

SetMapMode( hDC, MM_ANISOTROPIC );

// в одном логическом дюйме должно быть, как и в обычном, 1440 точек

// поэтому 1440 логическим единицам

SetWindowExt( hDC, 1440, 1440 );

// должно соответствовать столько физических ед., сколько

// их находится в одном логическом дюйме.

SetViewportExt( hDC, GetDeviceCaps( hDC, LOGPIXELSX ), GetDeviceCaps( hDC, LOGPIXELSY ) );

Такую систему координат удобно применять в системах, реализующих WYSIWYG технологию.

Одним из важнейших признаков является тип шрифта, который определяет возможности его применения на различных устройствах. В Windows шрифты делятся на три группы, в зависимости от их организации:

Поясним основные различия шрифтов:

Растровые шрифты:


Представляют из себя набор битовых образов отображаемых символов. Отличаются наиболее высокой скоростью вывода и самым высоким качеством текста, так как каждый символ разрабатывается вручную.

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

Возможна программная реализация наклонных и жирных начертаний на основе базового варианта.

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

Векторные шрифты:

Описывают каждый отображаемый символ как набор сопрягаемых линий. Так как для вывода символа требуется прорисовка всех линий, то это самые медленные в работе шрифты.

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

Символы могут наклоняться как в виде всей строки, так и внутри строки. Программно возможно создание наклонных и жирных начертаний.

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

TrueType шрифты:

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

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

При выводе символов небольшого размера качество невысокое, так как автоматическая генерация качественных битмапов малого размера практически невозможна. При этом TrueType шрифт часто заменяется на растровый шрифт малого размера (Small Fonts). Во всех остальных случаях это самые качественные шрифты.

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

TrueType шрифты позволяют отображать наклонные строки текста.

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

TrueType шрифты отличаются от остальных шрифтов еще и тем, что позволяют использовать различные интервалы между разными символами. При этом выделяют пары символов (kerning pairs) и для них задают относительное смещение (приближение или удаление), для получения наиболее качественного текста. Задание “кернинга” осуществляется разработчиком шрифта.

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

При этом под ANSI подразумевается та кодовая таблица, которая принята в данной версии Windows. Строго говоря, ANSI существует только лишь в англоязычном варианте Windows. Так, например, все русификаторы заменяют стандартную кодовую таблицу ANSI на собственную, содержащую русские буквы. При этом, с точки зрения Windows, она будет все равно считаться ANSI. В русифицированном варианте кодовой таблицы Windows русские буквы занимают места с 192 по 255 включительно.

Аналогично, под OEM подразумевается кодовая таблица, принятая в DOS. Обычно это 437 кодовая таблица, однако возможно применение и других кодовых таблиц. Как правило, для русификации DOS применяется альтернативная кодировка ГОСТ, на основе которой была разработана 866 кодовая таблица (входила в состав MS DOS 4.0 распространяемом на территории СССР).

Кодовая таблица SYMBOL в Windows обозначает шрифт, состоящий из разных не–алфавитных символов, например стрелок, пиктограммок и пр. и последняя кодовая таблица SHIFTJIS имеет очень специфичное применение, рассчитанное на японскую азбуку KANJI. В этой азбуке предусмотрены некоторые символы, задаваемые последовательностью из двух байт.