Среда, 27.05.2020, 16:14

ХОЧУ ВСЁ ЗНАТЬ!!!

 
Календарь
«  Май 2020  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031
Поиск
Друзья сайта
Вход на сайт

Меню сайта

 

Введение

 Графический формат — это формат, в котором данные, описывающие графическое изображение, записаны в файле. Графические форматы разработаны для того, чтобы эффективно и логично организовывать, сохранять и восстанавливать графические данные. На первый взгляд все просто. Однако это не так. Графические форматы весьма сложны. Вы поймете это, когда попытаетесь использовать их в своих программах. Немаловажное значение имеют и способы их применения, хотя это не всегда очевидно. К примеру, вы обнаружите, что способ записи блока данных является едва ли не решающим фактором, определяющим скорость, с которой этот блок может быть прочитан, размер занимаемого им дискового пространства и простоту доступа к этому блоку из программы. Просто программа должна сохранить эти данные в рациональном формате, иначе они утратят свою полезность. Практически каждая солидная прикладная программа создает и сохраняет некоторые виды графических данных. Даже простейшие текстовые редакторы позволяют создавать линии с помощью символов ASCII или управляющих последовательностей терминала. Широко распространенные в последние годы программы, основанные на GUI (Graphic User Interface — графический интерфейс пользователя), сегодня должны поддерживать смешанные форматы, чтобы можно было включать растровые данные в текстовые документы. Программы управления базами данных, позволяющие работать с изображениями, тоже умеют сохранять в одном файле и текст, и растровые данные. Кроме того, графические файлы - важное "транспортное средство", обеспечивающее обмен визуальными данными между программами и компьютерными системами. В настоящее время интенсивно разрабатываются объектные файловые системы, в которых "файл данных" представляет собой блок независимых элементов, допускающий или не допускающий встраивание графических образов. Очевидно, что традиционная классификация данных нуждается в пересмотре. Тем не менее остается огромное количество накопленных графических данных, доступ к которым могут обеспечить только существующие сегодня средства декодирования и манипулирования графическими файлами.

Основные понятия и термины

Естественно, работу всегда выполняет человек. Однако, когда упоминаются термины «графическая работа» или «вывод результатов компьютерного графического процесса», то речь идет о программе. Поскольку программа "касалась" этих данных последней (перед тем, как они очутились на диске или ленте), мы говорим, что графическая работа выполнена программой, а не человеком.

Графика и компьютерная графика

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

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

Графические файлы

Под графическими файлами подразумеваются файлы, в которых хранятся любые типы устойчивых графических данных (в отличие, например, от текста, электронной таблицы или цифровых данных), предназначенные для последующей визуализации. Способы организации этих файлов называются графическими форматами. Когда изображение сохраняется в файле, то содержимое этого файла уже не является изображением, а становится устойчивыми графическими данными. Эти данные теперь нуждаются в повторной визуализации (как виртуальные графические данные). После записи в файл изображение перестало быть изображением — оно превратилось в данные, причем формат этих данных может измениться, например в результате операций преобразования файла. Изображение, сохраненное в файле формата 1, может быть преобразовано в другой файл — формата 2. Ее всегда очевидно, содержит файл графические данные или нет. Например, форматы электронных таблиц могут быть использованы для хранения графических данных. Формат, используемый для пересылки данных из одной программы в другую, тоже может быть графическим. Некоторые форматы, например TIFF, CGM и GIF, были специально разработаны для межпрограммного обмена данными,  такие форматы, как PCX, которые разрабатывались вместе с определенными программами. Мы не будем рассматривать три типа файлов, которые хотя и содержат графические данные, но выходят за рамки обсуждаемого здесь материала: файлы языка устройства вывода, файлы языка описания страницы и факс-файлы. Файлы языка устройства вывода обычно используются для получения твердых копий и содержат аппаратно-зависимые управляющие коды, которые интерпретируются устройством вывода. Они, как правило, живут недолго, создаются как временные файлы и по некоторым соображениям не архивируются и не используются другими устройствами. За время существования компьютерной индустрии были созданы сотни типов принтеров и плоттеров, использующих заданную производителем управляющую информацию, что традиционно игнорировалось рынком. Наиболее долго применяются язык устройства вывода PCL (Printer Control Language — язык управления принтером) и его варианты, позволяющие управлять лазерными принтерами серии Hewlett Packard LaserJet и совместимыми, а также HPGL (Hewlett Packard Graphics Language — язык графических принтеров Hewlett Packard), дающие возможность управлять плоттерами и другими векторными устройствами. Языки описания страницы представляют собой сложные системы, позволяющие описать графический вывод. Форматы факс-файлов обычно программно-зависимы и создаются приложениями поддержки одного или нескольких факс-модемов.

 Графические данные

Графические данные традиционно подразделяются на два класса: векторные и растровые.

Векторные данные

В компьютерной графике векторные данные обычно используют для представления прямых, многоугольников и кривых (или любых объектов, которые могут быть созданы на их основе) с помощью определенных в численном виде контрольных (ключевых) точек. Программа воспроизводит линии посредством соединения ключевых точек. С векторными данными всегда связаны информация об атрибутах (цвете и толщине линии) и набор соглашений (или правил), позволяющий программе начертить требуемые объекты. Эти соглашения могут быть заданы как явно, так и в неявном виде. Они программно-зависимы несмотря на то, что используются для одних и тех же целей. В любом случае вы можете свободно оперировать словом "вектор", поскольку оно однозначно определено. В математике, например, вектором называется отрезок прямой, имеющий длину и направление. В компьютерной графике термин вектор используется для обозначения части линии (ее сегмента) и обычно задается конечным набором точек, за исключением кривых линий или более сложных геометрических фигур, для описания которых требуются ключевые точки разного типа.

 Растровые данные

Растровые данные представляют собой набор числовых значений, определяющих цвета отдельных пикселей. Пиксели — это цветные точки, расположенные на правильной сетке и формирующие образ. Обычно мы говорим, что растр — это массив пикселей, хотя технически растр является массивом числовых значений, задающих, окрашивающих или "включающих" соответствующие пиксели при отображении образа на устройстве вывода. Чтобы избежать неопределенности, для обозначения числового значения в растровых данных, соответствующего цвету пикселя в изображении на устройстве вывода, мы будем применять термин пиксельное значение. Раньше термин bitmap, как правило, применялся для обозначения массива (или "карты" — map) единичных битов, в котором каждый бит соответствовал пикселю, а термины pixelmap, graymap и pixmap для обозначения массивов многобитовых пикселей. Мы же применяем термин bitmap (растр) для обозначения массива пикселей (независимо от типа), а термины битовая глубина или пиксельная глубина — для указания размеров этих пикселей, выраженных в битах или других единицах, например в байтах. Битовая глубина определяет количество возможных цветов пикселя. Однобитовый пиксель может быть одного из двух цветов, четырехбитовый — одного из 16 и т.д. На сегодняшний день наиболее часто используется пиксельная глубина 1, 2, 4, 8, 15, 16, 24 или 32 бита (причины этого и другая информация, относящаяся к цвету, изложены в главе 2).

Источники растровых данных: растровые устройства

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

Иногда говорят о третьем источнике растровых данных — объектных данных. Сейчас это понятие все чаще применяется для обозначения данных, сохраненных совместно с использующей их программой. Лет двадцать пять тому назад компьютерная графика базировалась преимущественно на векторных данных. Векторные экраны и перьевые плоттеры были единственными легкодоступными устройствами вывода. С появлением сложных интегральных схем, запоминающих устройств большой емкости, позволяющих сохранять файлы большого размера, возникла потребность в стандартизованных форматах графических файлов. Сегодня графика чаще всего хранится и отображается как растровая. Это стало возможным вследствие использования высокоскоростных процессоров, недорогой оперативной и внешней памяти, а также устройств ввода-вывода с высокой разрешающей способностью. Кроме того, растровая графика — это результат манипулирования изображениями, полученными от растровых устройств ввода графической информации. Растровая графика используется в прикладных программах, поддерживающих автоматизированное проектирование и трехмерные изображения, деловую графику, двух- и трехмерное моделирование, компьютерные виды искусства и анимацию, графические интерфейсы пользователя, видеоигры, обработку изображений в электронных документах (EDIP) и их анализ. Однако применение растровых данных не всегда целесообразно. Хранение графических изображений в виде растровых данных имеет определенные преимущества, но растровые изображения весьма объемны. На всех компьютерных рынках растет доля сетевых технологий, а большие объемы растровых файлов как-то плохо совмещаются с представлением о недорогих сетях. Стоимость пересылки файлов по Internet, например, определяется не только стоимостью самого подключения, но и временем, затраченным на процесс пересылки. Эту тенденцию усиливает развитие системы World Wide Web. "Всемирная паутина" сегодня строится на базе HTML, гипертекстового языка описания документов, который позволяет программам, работающим на компьютерах удаленных пользователей, с минимальными усилиями создавать сложные изображения текстовых страниц. Сейчас целый ряд фирм-поставщиков придерживается стратегии, направленной на перепоручение задач формирования и воспроизведения изображений компьютерам удаленных пользователей (что позволяет сохранить пропускную способность сети). Пример такого подхода — создание фирмой Sun Microsystem языка программирования Java для Internet.

Типы графических форматов

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

Растровые форматы

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

Наиболее распространенные растровые форматы — это Microsoft BMP, PCX, TIFF и TGA.

Векторные форматы

Файлы векторного формата особенно полезны для хранения линейных элементов (линий и многоугольников), а также элементов, которые можно разложить на простые геометрические объекты (например, текст). Векторные файлы содержат не пиксельные значения, а математические описания элементов изображений. По математическим описаниям графических форм (линий, кривых, сплайнов) программа визуализации строит изображение. Векторные файлы структурно более просты, чем большинство растровых файлов, и обычно организованы в виде потоков данных. Примеры наиболее распространенных векторных форматов — AutoCAD DXF и Microsoft SYLK.

Метафайловые форматы

Метафайлы могут хранить и растровые, и векторные данные. Простейшие метафайлы напоминают файлы векторного формата; они содержат язык или синтаксис для определения элементов векторных данных, но могут включать и растровое представление изображения. Метафайлы часто используются для транспортировки растровых и векторных данных между аппаратными платформами, а также для перемещения изображений между программными платформами. Наиболее распространенные метафайловые форматы — WPG, Macintosh PICT и CGM.

 Форматы сцены

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

Форматы анимации

Форматы анимации появились сравнительно недавно. Они создаются по тому же принципу, который вы использовали в своих детских играх с "движущимися" картинками. Если быстро отображать одно изображение за другим, то создается впечатление, что объекты этого изображения движутся. Самые примитивные из форматов анимации хранят изображения целиком, позволяя отображать их просто в цикле одно за другим. Чуть более усложненные форматы хранят только одно изображение и несколько цветовых таблиц для данного изображения. После загрузки новой цветовой таблицы цвет изображения меняется и создается иллюзия движения объектов. Еще более сложные форматы анимации хранят только различия между двумя последовательно отображаемыми изображениями (называемыми фреймами) и изменяют только те пиксели, которые меняются при отображении данного фрейма. Отображение со скоростью 10—15 фреймов в секунду типично для анимации мультипликационного вида. В видеоанимации для создания иллюзии плавного движения необходимо отображать 20 и более фреймов в секунду. Примерами форматов анимации могут служить TDDD и TTDDD.

Мультимедиа-форматы

Мультимедиа-форматы относительно новы, но приобретают все большее значение. Они предназначены для хранения данных различных типов в одном файле. Эти форматы обычно позволяют объединять графическую, звуковую и видеоинформацию. Примерами могут служить хорошо известные форматы RIFF фирмы Microsoft, QuickTime фирмы Apple, MPEG и FLI фирмы Autodesk, а в ближайшем будущем ожидается появление новых форматов. Различные варианты форматов мультимедиа описаны в главе 10.

Смешанные форматы

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

Гипертекст и гипермедиа

Гипертекст — это система, обеспечивающая нелинейный доступ к информации. Большинство книг построены по линейному принципу: они имеют начало, окончание и определенную схему размещения текста. Гипертекст же позволяет создавать документы с одним или несколькими началами, с одним, несколькими окончаниями либо вообще без него, а также со множеством гипертекстовых связей, которые помогают читателю "перепрыгивать" в любое место документа. Гипертекстовые языки не являются форматами графических файлов, как GIF или DXF. Это, скорее, языки программирования вроде PostScript или С. Они специально предназначены для последовательной передачи потоков данных, то есть поток гипертекстовой информации можно декодировать по мере получения данных. Чтобы просмотреть гипертекстовый документ, не нужно ожидать его полной загрузки. Термин гипермедиа обозначает сплав гипертекста и мультимедиа. Современные гипертекстовые языки и сетевые протоколы поддерживают самые разнообразные средства, включая текст и шрифты, неподвижную и динамическую графику, аудио-, видео- и объемные данные. Гипертекст обеспечивает создание структуры, которая позволяет пользователю компьютера организовывать мультимедиа-данные, отображать их и интерактивно перемещаться по ним. Гипертекстовые и гипермедийные системы, например World Wide Web, хранят обширные информационные ресурсы в виде файлов GIF, JPEG, PostScript, MPEG и AVI. Используются и многие другие форматы.

Трехмерные форматы

В трехмерных файлах данных хранится описание формы и цвета объемных моделей воображаемых и реальных объектов. Объемные модели обычно конструируются из многоугольников и гладких поверхностей, объединенных с описаниями соответствующих элементов: цвета, текстуры, отражений и т.д., с помощью которых программа визуализации реконструирует объект. Модели помешаются в сцены с источниками света и камерами, поэтому объекты в трехмерных файлах часто называют элементами сцены. Программы визуализации, которые пользуются трехмерными данными, — это, как правило, программы моделирования и анимации (например, Lightwave фирмы NewTek и 3D Studio фирмы Autodesk). Они позволяют корректировать внешний вид визуализированного изображения, изменяя и дополняя систему освещения, текстуру элементов сцены и их относительное расположение. Кроме того, они дают возможность пользователю "оживлять" элементы сцены, то есть приписывают им движение. После этого программа создает ряд растровых файлов (или кадров), которые, если взять их по порядку, собираются в фильм. Важно понять, что векторные данные являются двухмерными. Это значит, что программа-создатель этих данных не пыталась моделировать объемное изображение и передавать перспективу. К векторным данным относятся чертежи САПР и большинство иллюстративных вставок, предназначенных для настольных издательских систем. На рынке существует некоторая неразбериха относительно понятия объемная визуализация. Ситуация осложняется тем, что трехмерные данные сейчас поддерживаются рядом форматов, которые ранее служили только для хранения двухмерных векторных данных. Пример — формат DXF фирмы Autodesk. Форматы типа DXF иногда называют расширенными векторными форматами.

Форматы языка моделирования виртуальной реальности (VRML)

VRML ("вермел") можно рассматривать как гибрид объемной графики и HTML. Формат VRML v.1.0 — это, по сути, файловый формат Silicon Graphics Inventor, в который добавлены средства, обеспечивающие соединение с URL в системе World Wide Web.

VRML кодирует трехмерные данные в формат, пригодный для обмена через Internet в соответствии с протоколом Hypertext Transfer Protocol (HTTP). Полученные с Web-сервера VRML-данные отображаются в Web-броузере, который поддерживает интерпретатор языка VRML.

Форматы аудиофайлов

Аудиоинформация обычно хранится на магнитной ленте в виде аналоговых данных. Записи аудиоданных на такие носители, как компакт-диск (CD-ROM) и жесткий диск, предшествует их кодирование посредством дискретизации подобно тому, как это делается при записи цифровых видеоданных. После кодирования аудиоданные можно записывать на диск как необработанный поток цифровых данных или, что встречается чаще, сохранять в формате аудиофайла. Форматы аудиофайлов по своей концепции идентичны форматам графических файлов, только хранящаяся в них информация предназначена не для глаз, а для ушей. Большинство форматов содержат простой заголовок, который описывает хранимые в файле аудиоданные. Чаще всего в заголовке указывается количество отсчетов в секунду, количество каналов и количество битов на отсчет. Эта информация в первом приближении соответствует данным о количестве отсчетов на пиксель, количестве цветовых плоскостей и количестве битов на отсчет, содержащимся в заголовках графических файлов. В форматах аудиофайлов применяются различные методы сжатия данных. Для 8-битовых графических и аудиоданных обычно используется кодирование по алгоритму Хаффмена. А вот для 16-битовых аудиоданных необходимы адаптированные специально для этих целей алгоритмы.

 Форматы шрифтов

Такие файлы содержат описания наборов буквенно-цифровых знаков и символов в компактном, удобном для доступа формате. Из файлов шрифтов можно произвольно выбирать данные, связанные с отдельными знаками. В этом смысле они представляют собой базы данных о знаках и символах и поэтому иногда используются для хранения графических данных, хотя подобные данные по своей природе не являются буквенно-цифровыми или символьными. Файлы шрифтов могут иметь (а могут и не иметь) общие заголовки, а некоторые файлы поддерживают даже подзаголовки для каждого знака. В любом случае для того, чтобы выбрать отдельные знаки без чтения и анализа всего файла, нужно знать начало данных о знаках, объем данных о каждом знаке и порядок, в котором эти знаки хранятся. Данные о знаках в файле могут индексироваться буквами и цифрами, кодом ASCII и другими средствами. Некоторые файлы шрифтов можно дополнять и редактировать, поэтому в них есть специальный указатель, по которому всегда можно найти данные о знаках. Некоторые файлы шрифтов поддерживают сжатие, а многие — шифрование данных о знаках.  Исторически сложились три основных типа файлов шрифтов: растровые, штриховые и сплайновые контурные.

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

Растровые шрифты состоят из набора изображений символов, визуализирующихся в виде небольших прямоугольных растров и хранящихся последовательно в отдельном файле. Этот файл может иметь или не иметь заголовка. Большинство файлов растровых шрифтов — монохромные, чаще всего шрифты в таких файлах хранятся в виде прямоугольников одного размера, что повышает скорость доступа к ним. Символы, хранимые в растровом формате, могут быть довольно сложными — в этом случае размер файла возрастает, что уменьшает скорость и простоту их использования. К преимуществам растровых файлов относятся быстрый доступ и простота в применении: чтение и отображение знака из растрового файла обычно занимает не больше времени, чем чтение и отображение обычного прямоугольника. Правда, иногда такие данные анализируются и используются в качестве шаблона для отображения знака программой визуализации. Главным недостатком растровых шрифтов считается относительно сложное масштабирование. К разряду существенных недостатков можно отнести и тот факт, что повернутые растровые шрифты хорошо смотрятся только на экранах с пикселями квадратной формы. В большинстве знако-ориентированных систем, таких как MS-DOS, UNIX знакового режима, а также в системах с текстовыми терминалами, применяются растровые шрифты, записанные в ПЗУ или на диске.

Штриховые шрифты

Штриховые шрифты — это базы данных, содержащие информацию о знаках, которые записаны в векторной форме. Знак может быть представлен одним штрихом или полым контуром. Данные о штриховых знаках обычно состоят из набора конечных точек линий, рисуемых последовательно, отражая тот факт, что многие штриховые шрифты происходят от приложений, поддерживающих перьевые плоттеры. Бывают и более сложные штриховые шрифты. Файлы таких шрифтов содержат инструкции по начертанию дуг и других кривых. Вероятно, самыми известными и наиболее широко используемыми штриховыми шрифтами являются наборы знаков Херши (Hershey), которые все еще доступны в режиме on-line. Штриховые шрифты имеют определенные преимущества. Во-первых, их можно легко масштабировать и поворачивать. Во-вторых, они состоят из примитивов (линий и дуг), которые поддерживаются большинством операционных сред и программ визуализации на базе GUI. Главным же недостатком штриховых шрифтов можно считать то, что они обычно имеют "механический" вид, противоречащий нашему представлению о высококачественном печатном тексте. Сейчас штриховые шрифты используются редко. Тем не менее они поддерживаются многими перьевыми плоттерами. Информация об этих шрифтах может понадобиться, например, в том случае, если у вас есть специализированная промышленная система с векторным дисплеем или нечто подобное.

Сплайновые контурные шрифты

Описания знаков в сплайновых шрифтах состоят из контрольных точек, которые обеспечивают реконструкцию геометрических примитивов, известных как сплайны. Существует очень много типов сплайнов, и все они позволяют рисовать плавные, приятные для глаза кривые, которые мы обычно ассоциируем с буквами высококачественного печатного текста. Данные о контурах, как правило, сопровождаются информацией, используемой для реконструкции знаков. Эта информация может включать сведения о кернинге и сведения, необходимые для масштабирования очень больших и очень маленьких знаков (так называемые "подсказки"). Преимущество сплайновых шрифтов в том, что их можно использовать для высококачественного представления знаков, которые в некоторых случаях нельзя отличить от полученных типографским способом металлических шрифтов. (В сплайновые контурные переведены практически все традиционные шрифты.) Кроме того, такие знаки можно масштабировать, поворачивать и вообще производить над ними операции, о которых раньше приходилось только мечтать. К сожалению, реконструкция знаков в сплайновые контурные данные — задача не из простых. Сложные шрифты требуют дополнительных затрат времени на визуализацию и разработку программного обеспечения.

Форматы языков описания страницы

Языки описания страницы (PDL — Page Description Language) — это настоящие машинные языки, используемые для описания компоновки, шрифтов и графики печатных и отображаемых страниц. PDL представляют собой интерпретируемые языки, применяемые для передачи информации на устройства печати (например, принтеры) и на устройства отображения (такие, как экраны графического интерфейса пользователя GUI). Особенность этих языков заключается в том, что коды PDL зависят от аппаратных средств. Типичный файл PostScript содержит подробную информацию об устройстве вывода, метрике шрифта, цветовых палитрах и т.п. Файл PostScript с кодом для четырехцветного документа формата А4 может быть напечатан или отображен только на устройстве, которое имеет средства обработки этой метрики. А вот языки разметки не содержат информации об устройстве вывода. Они основаны на том, что устройство, визуализирующее код на языке разметки, сможет адаптироваться к переданным командам форматирования. Программа визуализации сама выбирает шрифты, цвета и метод отображения графических данных. Язык разметки дает только информацию и сведения о ее структуре. Языки описания страницы — это, формально говоря, языки программирования, и для чтения заключенных в них данных необходимы сложные интерпретаторы. Они существенно отличаются от гораздо более простых анализаторов, применяемых для чтения графических форматов.

Элементы графического файла

Разные спецификации файловых форматов используют различную терминологию. Главным образом это относится к структурам данных в файле: полям, тегам и блокам. Иногда в спецификациях приводится определение одного из этих терминов, но затем он может быть заменен на другой, более наглядный, например последовательность на запись. В рамках этой книги мы будем считать, что графические файлы состоят из последовательностей данных или структур данных, называемых файловыми элементами или элементами данных. Эти элементы подразделяются на три категории: поля, теги и потоки.

Поля

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

Теги

Продолжение