Метафайл Windows

редактировать
Формат файла

Метафайл Windows (WMF ) - это формат файла изображения изначально разработан для Microsoft Windows в 1990-х годах. Исходный формат метафайла Windows не был независимым от устройства (хотя его можно было сделать в большей степени с помощью заголовков размещения) и мог содержать компоненты как векторной графики, так и растрового изображения. Он действует аналогично файлам SVG. Файлы WMF позже были заменены расширенными метафайлами (файлы EMF), которые действительно обеспечивали независимость от устройств. Затем файлы EMF сами улучшались с помощью файлов EMF + .

По сути, метафайл хранит список записей, состоящий из команд рисования, определений свойств и графических объектов для отображения изображения на экране. Используемые команды рисования тесно связаны с командами интерфейса графического устройства (GDI) API, используемых для рисования в Microsoft Windows.

Существует три основных типа метафайлов - WMF - это 16-битный формат, представленный в Windows 3.0. Это собственный векторный формат для приложений Microsoft Office, таких как Word, PowerPoint и Publisher. Начиная с 2017 г. 14 версия спецификации формата метафайлов Windows доступна для чтения в Интернете или для загрузки в формате PDF. Файлы EMF, которые заменили файлы WMF, работают по тому же принципу, только это 32-разрядный формат файла, который также позволяет встраивать личные данные в записи «комментариев». EMF + - это расширение для файлов EMF и встроенное в эти записи комментариев, позволяющее использовать для изображений и текста команды, объекты и свойства, аналогичные Windows GDI +.

Содержание
  • 1 История
  • 2 Структура метафайла
    • 2.1 WMF
      • 2.1.1 Записи растрового изображения
      • 2.1.2 Записи чертежа
      • 2.1.3 Записи объекта
      • 2.1.4 Записи состояния
      • 2.1.5 Экстренные записи
    • 2.2 EMF
    • 2.3 EMF +
  • 3 Реализации
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
История

Исходный 16-битный формат файла WMF был полностью указан в томе 4 документация Windows 3.1 SDK 1992 года (по крайней мере, если она сочетается с описаниями отдельных функций и структур в других томах), но эта спецификация расплывчата по некоторым деталям. Эти руководства были опубликованы в виде печатных книг, доступных в книжных магазинах без переходов по EULA или других необычных лицензионных ограничений (просто общее предупреждение о том, что при покупке в составе пакета программного обеспечения программное обеспечение будет подлежат одному).

Со временем о существовании этой исторической спецификации было в значительной степени забыто, и некоторые альтернативные реализации прибегли к обратному проектированию, чтобы выяснить формат файла из существующих файлов WMF, что было сложно и подвержено ошибкам. В сентябре 2006 года Microsoft снова опубликовала спецификацию формата файлов WMF в более полной форме в контексте Microsoft Open Specification Promise, пообещав не заявлять патентные права разработчикам форматов файлов.

Позднее Microsoft отказалась от файлов WMF в пользу 32-разрядных файлов EMF, поскольку файлы WMF имели реальные проблемы с независимостью от устройства, несмотря на использование «размещаемого» заголовка файла, который обеспечивал базовую независимость от устройства. Microsoft обнаружила, что разработчики, использующие этот формат, «[встраивали] приложение, расположение или масштабирование комментариев в метафайлы... Другие добавляли в метафайл заголовки, которые предоставляли различную информацию о приложении», что приводило к серьезным проблемам совместимости. Так, в 1992 г. с Windows NT 3.1 Microsoft представила формат расширенного метафайла (EMF) - формат, основанный на Win32 API, с которым они встроили независимость от устройств.. - они также были известны как метафайлы NT. С выпуском Windows XP и GDI + набор записей пришлось значительно увеличить, и поэтому Microsoft выпустила EMF + как расширение существующего формата файлов EMF.

Структура метафайлов
Сравнение метафайлов Windows - примечание что файлы WMF могут включать записи EMF +.

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

Файлы WMF и EMF обрабатывают объекты иначе, чем записи EMF + в файлах EMF. В процессе обработки файлов WMF и EMF записи считываются в таблицу объектов после определения объекта. Если объект удален, объект удаляется из таблицы, и идентификатор можно использовать повторно. Примечательно, что объект не будет использоваться, пока он не будет специально выбран во время воспроизведения записи. Это отличается от файлов EMF +, которые также используют ассоциативный массив через хэш-карту , которая записывает объект вместе с идентификатором объекта. Однако, в отличие от файлов WMF и EMF, которые могут удалять объект, когда создается новый объект, имеющий тот же индекс, что и существующий объект, запись в таблице заменяется новым объектом. Для файла EMF также не нужно специально выбирать объект перед его использованием.

WMF

Структуры исходных и размещаемых метафайлов Windows

Файлы WMF изначально не были разработаны как независимые от устройств, что означает, что вы не могли воспроизвести файл на устройствах вывода, отличных от исходного устройства, на котором был записан файл. Частичное решение этой проблемы было изобретено Aldus Corporation, которая добавила дополнительный «размещаемый» заголовок, названный «заголовком APM», который добавил ограничивающий прямоугольник, версию метафайла, размер метафайла, количество объектов. в метафайле и размер самой большой отдельной записи в метафайле. Позднее он был включен в формат WMF Microsoft, начиная с Windows 2000.

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

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

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

Записи растрового изображения

Управление записями растрового изображения и вывод растровых изображений.

ИмяОписание
META_BITBLTОпределяет, как выполнять передачу битового блока. Эти записи могут указывать растровое изображение для использования в качестве источника или регион.
META_DIBBITBLTОпределяет, как выполнить передачу битового блока независимого от устройства растрового изображения изображения. Эти записи могут указывать растровое изображение для использования в качестве источника или региона.
META_DIBSTRETCHBITBLTОпределяет, как выполнять передачу битовых блоков независимого от устройства растрового изображения, но допускает расширение или сжатие образ. Эти записи могут указывать растровое изображение для использования в качестве источника или область.
META_SETDIBTODEVОпределяет цвет для установки блока пикселей в независимом от устройства растровом изображении. Эти записи могут указывать растровое изображение для использования в качестве источника или региона.
META_STRETCHBLTОпределяет, как выполнить передачу битового блока, но допускает расширение или сжатие изображения.
META_STRETCHDIBОпределяет, как выполнить передачу битовых блоков независимого от устройства растрового изображения, но позволяет увеличивать или уменьшать изображение. Эти записи могут указывать растровое изображение для использования в качестве источника или область.

Записи чертежа

Записи чертежа производят графический вывод.

ИмяОписание
META_ARCРисует эллиптическую дугу.
META_CHORDРисует хорду.
META_ELLIPSEРисует эллиптическую дугу.
META_EXTFLOODFILLЗаполняет область кистью.
META_EXTTEXTOUTРисует текст со шрифтом, цветом фона и цветом текста в контексте устройства воспроизведения.
META_FILLREGIONЗаполняет область указанной кистью.
META_FLOODFILLЗаполняет область кистью.
META_FRAMEREGIONРисует границу вокруг область страницы с помощью кисти.
META_INVERTREGIONЗакрашивает область изображения инвертированными цветами.
META_LINETOРисует полуоткрытый линия от позиции рисования, определенной в контексте устройства воспроизведения, до указанной точки.
META_PAINTREGIONЗакрашивание области текущей кистью, указанной в контексте устройства воспроизведения.
META_PATBLTНарисуйте область текущей кистью, указанной в контексте устройства воспроизведения, а затем объедините цвет кисти и цвет (а) поверхности с помощью растровой операции .
META_PIEНарисуйте клин в форме пирога, ограниченный пересечением эллипса и двух радиалов - линия устанавливается через перо устанавливается через контекст устройства воспроизведения, а область, ограниченная круговой формой, заполняется текущей кистью контекста устройства воспроизведения.
META_POLYLINEРисует серию сегментов линии, соединяя точки в указанный массив.
META_POLYGONЗакрашивает многоугольник, состоящий из двух или более вершин, соединенных прямыми линиями. Многоугольник обводится пером и заполняется с помощью кисти и режима заливки многоугольника, которые определены в контексте устройства воспроизведения.
META_POLYPOLYGONЗакрашивает серию замкнутых многоугольников, которые могут перекрываться. Каждый многоугольник обводится пером и заполняется с помощью кисти и режима заливки многоугольника, которые определены в контексте устройства воспроизведения.
META_RECTANGLEЗакрашивает прямоугольник, который обводится с помощью пера и заполняется с помощью кисти и заполняется с помощью кисти, определенной в контексте устройства воспроизведения.
META_ROUNDRECTЗакрашивает прямоугольник со скругленными углами. Прямоугольник обводится пером, заполняется кистью и заполняется кистью, которая определена в контексте устройства воспроизведения.
META_SETPIXELУстанавливает пиксель с указанными координатами на указанные цвет.
META_TEXTOUTВыводит строку символов в указанном месте, используя шрифт, цвет фона и цвет текста, которые определены в контексте устройства воспроизведения.

Объект записи

Записи объектов создают графические объекты и управляют ими. В файлах WMF есть две широкие категории объектов - графические объекты и объекты структуры. Объекты структуры не создаются и не удаляются в WMF явно, а вместо сложных структур. Например, BitmapCoreHeader содержит информацию о размерах и цветовом формате не зависящего от устройства растрового изображения, которое само является частью объекта DeviceIndependentBitmap. Графический объект, однако, определяет параметры для вывода графики, а во время воспроизведения WMF он устанавливает контекст устройства воспроизведения.

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

ИмяОписание
META_CREATEBRUSHINDIRECTСоздает объект кисти из объекта LogBrush (логическая кисть).
META_CREATEFONTINDIRECTСоздает объект кисти из объекта шрифта.
META_CREATEPALETTEСоздает объект палитры.
META_CREATEPATTERNBRUSHСоздает объект кисти из объекта LogBrush (логическая кисть).
META_CREATEPENINDIRECTСоздает объект пера.
META_CREATEREGIONСоздает объект области.
META_DELETEOBJECTУдалить объект.
META_CREATEBRUSHINDIRECTСоздает объект кисти из объекта LogBrush (логическая кисть).
META_DIBCREATEPATTERNBRUSHСоздает объект кисти из не зависящего от устройства растрового изображения.
META_SELECTCLIPREGIONОпределяет объект области, который будет текущей областью отсечения.
META_SELECTOBJECTВыбирает объект, который будет быть текущим объектом для контекста устройства воспроизведения, который работает со всеми графическими объектами, кроме объектов палитры, которые должны быть установлены с помощью META_SELECTPALETTE.
META_SELECTPLAETTEВыбирает логическую палитру для контекста устройства воспроизведения.

Записи состояния

Записи состояния управляют графическими свойствами контекста устройства воспроизведения.

ИмяОписание
META_ANIMATEPALETTEПереопределяет записи в логической палитре, которая определена в контексте устройства воспроизведения с помощью указанного объекта палитры.
META_EXCLUDECLIPRECTУстанавливает область отсечения, которая определена в устройстве воспроизведения контекст существующей области отсечения за вычетом указанного прямоугольника.
META_INTERSECTCLIPRECTУстанавливает область отсечения, которая определена в контексте устройства воспроизведения, на пересечении существующей области отсечения и указанного прямоугольника.
META_MOVETOУстанавливает позицию вывода в контексте устройства воспроизведения в указанную точку.
META_OFFSETCLIPRGNПеремещает область отсечения, определенную в контексте устройства воспроизведения, на указанные смещения.
META_OFFSETVIEWPORTORGПеремещает исходную точку окна просмотра в контексте устройства воспроизведения на заданные горизонтальные и вертикальные смещения.
META_OFFSETWINDOWORGПеремещает исходную точку окна вывода в контексте устройства воспроизведения по заданной горизонтали и вертикали l смещения.
META_REALIZEPALETTEОтображает записи из логической палитры, которая определена в контексте устройства воспроизведения, в системную палитру.
META_RESIZEPALETTEПовторно определяет размер логической палитры, которая определяется в контексте устройства воспроизведения.
META_RESTOREDCВосстанавливает контекст устройства воспроизведения из ранее сохраненного контекста устройства.
META_SAVEDCСохраняет контекст устройства воспроизведения для последующего извлечения.
META_SCALEVIEWPORTEXTМасштабирует горизонтальные и вертикальные границы области просмотра, которые определены в контексте устройства воспроизведения, с использованием соотношений, образованных указанными множителями и делителями.
META_SCALEWINDOWEXTМасштабирует горизонтальное и вертикальные пределы окна вывода, которое определяется в контексте устройства воспроизведения с использованием соотношений, образованных указанными множителями и делителями.
META_SETBKCOLORУстанавливает заданный цвет фона в контексте устройства воспроизведения.
META_SETBKMODEУстанавливает режим фонового микширования в контексте устройства воспроизведения.
META_SETLAYOUTОпределяет ориентацию макета в контексте устройства воспроизведения.
META_SETMAPMODEОпределяет режим сопоставления при воспроизведении контекст устройства.
META_SETMAPPERFLAGSОпределяет алгоритм, который использует средство сопоставления шрифтов при сопоставлении логических шрифтов с физическими шрифтами.
META_SETPALENTRIESОпределяет значения цвета RGB в диапазоне записей в логическая палитра, которая определена в контексте устройства воспроизведения.
META_SETPOLYFILLMODEОпределяет режим заливки многоугольника в контексте устройства воспроизведения для графических операций, которые заполняют многоугольники.
META_SETRELABSНеиспользуемая запись.
META_SETROP2Определяет режим смешивания работы с растром переднего плана в контексте устройства воспроизведения.
META_SETSTRETCHBLTMODEОпределяет режим растяжения растрового изображения в контексте устройства воспроизведения.
META_SETTEXTALIGNОпределяет значения выравнивания текста в контексте устройства воспроизведения.
META _SETTEXTCHAREXTRAОпределяет межсимвольный интервал для выравнивания текста в контексте устройства воспроизведения.
META_SETTEXTCOLORОпределяет цвет переднего плана текста в контексте устройства воспроизведения.
META_SETTEXTJUSTIFICATIONОпределяет количество места, которое нужно добавить для разбиения символов в строке выровненного текста.
META_SETVIEWPORTEXTОпределяет горизонтальные и вертикальные пределы области просмотра в контексте устройства воспроизведения.
META_SETVIEWPORTORGОпределяет исходную точку окна просмотра в контексте устройства воспроизведения.
META_SETWINDOWEXTОпределяет горизонтальные и вертикальные пределы окна вывода в контексте устройства воспроизведения.
META_SETWINDOWORGОпределяет источник окна вывода в контексте устройства воспроизведения.

Escape-записи

Универсальная escape-запись WMF

Escape-записи - это средство расширения функциональности метафайла с помощью записей, которые иначе не определены как тип записи WMF. Каждая escape-запись содержит функцию записи, escape-функцию и потенциально управляющие данные.

Следующие escape-записи составляют файл WMF.

ИмяОписание
ABORTDOCОстанавливает обработку текущего документа.
BEGIN_PATHОткрывает путь.
CHECK_JPEGFORMATОпределяет, может ли он обрабатывать данное изображение JPEG.
CHECK_PNGFORMATОпределяет, может ли он обрабатывать данное изображение PNG.
CLIP_TO_PATHПрименяет функцию к текущему контуру обрезки PostScript.
CLOSE_CHANNELТо же, что и ENDDOC.
DOWNLOAD_FACEУстанавливает имя шрифта на устройстве вывода.
DOWNLOAD_HEADERЗагружает наборы процедур PostScript.
DRAW_PATTERNRECTРисует прямоугольник с заданным узором.
ENCAPSULATED_POSTSCRIPTОтправляет произвольные инкапсулированные данные PostScript (EPS) непосредственно в драйвер принтера.
END_PATHЗавершает путь.
ENDDOCСообщает драйверу принтера о завершении нового задания на печать.
EPS_PRINTINGУказывает начало и конец печати EPS.
EXTTEXTOUTРисует текст, используя текущий выбранный шрифт, цвет фона и цвет текста.
GET_COLORTABLEПолучает значения таблицы цветов из драйвера принтера.
GET_DEVICEUNITSВозвращает единицы устройства, в настоящее время настроенные на устройстве вывода.
GET_EXTENDED_TEXTMETRICSПолучает расширенные текстовые метрики, которые в настоящее время настроено в драйвере принтера.
GET_FACENAMEПолучает имя шрифта, настроенное в данный момент на устройстве вывода.
GET_PAIRKERNTABLEПолучает таблицу ядра шрифта в настоящее время определено на устройстве вывода.
GET_PHYSPAGESIZEИзвлекает физический размер страницы, выбранный в данный момент на устройстве вывода.
GET_PRINTINGOFFSETИзвлекает смещение от верхнего левого угла физическая страница, на которой начинается фактическая печать или рисунок.
GET_PS_FEATURESETTINGЗапрашивает драйвер принтера для получения информации о функциях PostScript, поддерживаемых на устройстве вывода.
GET_SCALINGFACTORИзвлекает коэффициенты масштабирования для ось x и ось y принтера.
META_ESCAPE_ENHANCED_METAFILEИспользуется для e mbed метафайл EMF в метафайл WMF.
METAFILE_DRIVERЗапрашивает драйвер принтера о его поддержке метафайлов на устройстве вывода.
NEWFRAMEУведомляет драйвер принтера, что приложение завершила запись на страницу.
NEXTBANDУведомляет драйвер принтера о том, что приложение завершило запись в полосу.
PASSTHROUGHПередает произвольные данные драйверу принтера.
POSTSCRIPT_DATAОтправляет произвольные данные PostScript на устройство вывода.
POSTSCRIPT_IDENTIFYУстанавливает для драйвера принтера режим PostScript или GDI.
POSTSCRIPT_IGNOREУведомляет устройство вывода об игнорировании данных PostScript.
POSTSCRIPT_INJECTIONВставляет блок необработанных данных в поток PostScript.
POSTSCRIPT_PASSTHROUGHОтправляет произвольные данные непосредственно в драйвер принтера, который, как ожидается, будет обрабатывать эти данные только в режиме PostScript.
OPEN_CHANNELДействует так же, как STARTDOC, с NULL документом и выходным именем файла и данными в необработанном режиме.
QUERY_DIBSUPPORTЗапрашивает драйвер принтера о его поддержке DIB на устройстве вывода.
QUERY_ESCSUPPORTЗапрашивает драйвер принтера, чтобы определить, поддерживается ли конкретная escape-функция WMF на устройстве вывода.
SET_COLORTABLEУстанавливает значения таблицы цветов.
SET_COPYCOUNTУстанавливает количество копий.
SET_LINECAPОпределяет режим окончания строки для использования при выводе на устройство вывода.
SET_LINEJOINОпределяет режим соединения строк для использования при выводе на устройство вывода.
SET_MITERLIMITУстанавливает предел длины угловых соединений для использования при рисовании с устройством вывода.
SPCLPASSTHROUGH2Позволяет документам включать частные процедуры и другие произвольные данные в документы.
STARTDOCУведомляет драйвер принтера о том, что начинается новое задание печати. ​​

В управляющих записях вокруг A была обнаружена серьезная уязвимость. bort escape-запись, которая хранит код процедуры прерывания внутри самой записи. Это затронуло системы Windows (см. CVE - 2005-4560 ) и проект Wine (см. CVE -2006-0106 ). Согласно Secunia, «Уязвимость вызвана ошибкой в ​​обработке файлов метафайлов Windows ('.wmf'), содержащих специально созданные записи SETABORTPROC 'Escape'. Такие записи позволяют произвольно заданной пользователем функции выполнять выполняться при сбое рендеринга файла WMF. " Согласно документации SDK Windows 3.1, escape-код SETABORTPROC был устаревшим и заменен одноименной функцией в Windows 3.1 задолго до того, как была обнаружена уязвимость WMF. Однако устаревший escape-код был сохранен для совместимости с 16-битными программами, написанными для (или, по крайней мере, обратно совместимыми с) Windows 3.0. Это изменение произошло примерно в то же время, когда Microsoft создавала 32-битную повторную реализацию GDI для Windows NT, и вполне вероятно, что уязвимость возникла во время этой попытки.

После того, как Стив Гибсон из Gibson Research Corporation обвинил Microsoft в преднамеренном внедрении бэкдора в свой код, Марк Руссинович представил опровержение и заявил, что:

... все было по-другому, когда формат был разработан. В Windows 3.1 код модели «большой» памяти по своей природе не зависит от местоположения, и Windows никогда не была исправлена, поэтому и Windows, и приложение могли просто скопировать функцию приложения в файл WMF и предположить, что она будет работать при воспроизведении одним и тем же приложением в более поздний сеанс запуска. В любом случае неясно, предполагали ли разработчики приложения, создающие метафайлы на диске с процедурами прерывания. Кроме того, как Стивен Тулуза из Microsoft указал в опровержении Microsoft утверждений Стива, ландшафт безопасности в начале 1990-х сильно отличался от сегодняшнего, и всему коду, включая тот, который хранится в файле WMF, по своей сути доверяли. 319>Питер Ферри из Symantec Security Response, США, также не согласился с Гибсоном, отметив, что:

Гибсон утверждал, что создается поток для запуска обработчика SetAbortProc. Фактически, никакой поток для запуска обработчика не создается - это обратный вызов, который вызывается анализатором, и синтаксический анализатор должен ждать, пока обратный вызов не вернется, в противном случае весь смысл функции (для прерывания печати) теряется.. По его собственному признанию, Гибсон не читал документацию (на самом деле он утверждал, что не мог ее найти, хотя она находится в свободном доступе на веб-сайте Microsoft), и он утверждал, что контекст устройства недоступен для обработчика функций.. Конечно, контекст устройства доступен обработчику функции - это один из двух параметров, которые ему передаются (см. Выше), и он требуется для прерывания печати. Наконец, Гибсон заявил, что поток управления не может вернуться в Windows. Дело просто в том, что функция возвращает и отбрасывает параметры, которые были переданы в стек. Если запись сформирована правильно, Windows продолжит анализ файла, как и раньше.... Гибсон признает, что догадывался о нескольких вещах. К сожалению, он плохо угадал. Думаю, теперь мы знаем лучше.

EMF

Заголовки расширенного метафайла Windows

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

Каждый заголовок EMF начинается с записи EMR_HEADER и записывает соответствующие свойства устройства, на котором было записано изображение метафайла. Исходный заголовок EMF имеет 80-байтовый заголовок и дополнительную строку описания переменной длины. Другие метафайлы содержат поля расширения, которые инкапсулируют исходный заголовок. EmfMetafileHeaderExtension1- это запись, которая вставляется непосредственно после исходного заголовка EMF, указывает, есть ли дескриптор формата пикселя и смещение объекта дескриптора в заголовке, а также поле, которое указывает, Записи OpenGL существуют в метафайле. Дескриптор формата пикселя определяет возможности поверхности рисования и то, закодирован ли пиксель в RGBA или является индексом в таблице цветов. EmfMetafileHeaderExtension2- это запись, которая вставляется непосредственно после EmfMetafileHeaderExtension1запись, и она содержит два поля со значениями X и Y для измерения поверхности устройства в микрометрах.

Как и файлы WMF, записи могут быть классифицированы по функциям, однако есть больше записей типов в файлах EMF, чем в файлах WMF. Записи могут быть классифицированы как элементы управления, растровые изображения, обрезки, комментарии, рисование, экранирование, создание объекта, манипулирование объектами, OpenGL, скобки пути, записи состояния и преобразования.

EMF +

С выпуском Windows XP был представлен формат расширенного формата метафайлов плюс расширения (EMF +). EMF + предоставляет способ сериализации вызовов API GDI + таким же образом, как WMF / EMF хранит вызовы GDI.

Существуют также сжатые версии метафайлов Windows, известные как сжатый метафайл Windows (WMZ) и сжатый расширенный метафайл Windows (EMZ), которые в основном представляют собой сжатые gzip файлы WMF и EMF соответственно.

Реализации

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

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-21 10:46:06
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте