Метафайл Windows ( WMF ) - это формат файла изображения, изначально разработанный для Microsoft Windows в 1990-х годах. Исходный формат метафайла Windows не был независимым от устройства (хотя его можно было сделать еще лучше с помощью заголовков размещения) и мог содержать компоненты как векторной графики, так и растровые изображения . Он действует аналогично файлам SVG . Файлы WMF были позже заменены расширенными метафайлами (файлы EMF), которые действительно обеспечивали независимость от устройства. Файлы EMF затем сами улучшались с помощью файлов EMF + .
По сути, метафайл хранит список записей, состоящий из команд рисования, определений свойств и графических объектов для отображения изображения на экране. [1] Используемые команды рисования тесно связаны с командами API интерфейса графического устройства (GDI), используемыми для рисования в Microsoft Windows.
Существует три основных типа метафайлов - WMF - это 16-разрядный формат, представленный в Windows 3.0 . Это собственный векторный формат для приложений Microsoft Office, таких как Word , PowerPoint и Publisher . Начиная с 2017 г. [Обновить]14 версия спецификации формата метафайлов Windows доступна для чтения в Интернете или для загрузки в формате PDF. [2] Файлы EMF, которые заменили файлы WMF, работают по тому же принципу, только это 32-битный формат файла, который также позволяет встраивать личные данные в записи «комментариев». [3] EMF + - это расширение файлов EMF, встроенное в эти записи комментариев, позволяющее использовать для изображений и текста команды, объекты и свойства, аналогичные Windows GDI + . [4]
История
Исходный 16-битный формат файла WMF был полностью определен в томе 4 документации Windows 3.1 SDK 1992 г. [5] (по крайней мере, если он был объединен с описанием отдельных функций и структур в других томах), но эта спецификация была расплывчатой. немного деталей. Эти пособия были опубликованы в виде печатных книг , доступных в книжных магазинах, не имеющих клик через EULA или других ограничений необычна лицензирования (только общее предупреждение , что если они были приобретены в рамках пакета программного обеспечения, программное обеспечение будет распространяться на один).
Со временем о существовании этой исторической спецификации было в значительной степени забыто, и некоторые альтернативные реализации прибегли к обратному проектированию, чтобы выяснить формат файла из существующих файлов WMF, что было сложно и подвержено ошибкам. [6] В сентябре 2006 года Microsoft снова опубликовала спецификацию формата файла WMF в более полной форме [7] в контексте Microsoft Open Specification Promise , пообещав не отстаивать патентные права разработчикам форматов файлов. [8]
Позднее Microsoft отказалась от файлов WMF в пользу 32-битных файлов EMF, поскольку файлы WMF имели реальные проблемы с независимостью от устройства, несмотря на использование «размещаемого» заголовка файла, который обеспечивал базовую независимость от устройства. Microsoft обнаружила, что разработчики, которые используют этот формат, «[встраивают] приложение, расположение или масштабируют комментарии в метафайлы ... Другие добавляли заголовки в метафайл, которые предоставляют различную информацию о приложении», что вызывает серьезные проблемы совместимости. [9] Таким образом, в 1992 году с Windows NT 3.1 Microsoft представила формат расширенного метафайла (EMF) [10] - формат, основанный на Win32 API и обеспечивающий независимость от устройств. [11] [9] - они также были известны как метафайлы NT. [12] С выпуском Windows XP и GDI + набор записей пришлось значительно увеличить, и поэтому Microsoft выпустила EMF + как расширение существующего формата файлов EMF. [10] [13]
Структура метафайла
Файлы WMF, EMF и EMF + состоят из серии записей, которые воспроизводятся для создания графического вывода. Некоторые записи определяют объекты, которые могут указывать графические объекты, используемые для определения способа рисования графики (например, перья определяют цвет и ширину линий). Каждый из этих объектов хранится в метафайлах и помещается в таблицу объектов, которая отслеживает использование графических объектов при обработке метафайла. Таблица объектов - это ассоциативный массив индексов структур графических объектов, определенных в метафайле.
Файлы WMF и EMF обрабатывают объектную обработку иначе, чем записи EMF + в файлах EMF. В процессе обработки файлов WMF и EMF записи считываются в таблицу объектов после определения объекта. Если объект удален, объект удаляется из таблицы, и идентификатор можно использовать повторно. Примечательно, что объект не будет использоваться, пока он не будет специально выбран во время воспроизведения записи. [14] [15] Это отличается от файлов EMF +, которые также используют ассоциативный массив через хэш-карту, которая записывает объект вместе с идентификатором объекта. Однако, в отличие от файлов WMF и EMF, которые могут удалять объект, когда создается новый объект, имеющий тот же индекс, что и существующий объект, запись в таблице заменяется новым объектом. EMF-файлу также не нужно специально выбирать объект перед его использованием. [16]
WMF
Файлы WMF изначально не проектировались как независимые от устройств, что означает, что вы не могли воспроизводить файл на устройствах вывода, которые отличались от исходного устройства, на котором файл был записан. Частичное решение этой проблемы было изобретено компанией Aldus Corporation , которая добавила дополнительный «размещаемый» заголовок, названный «заголовком APM» [18], который добавил ограничивающий прямоугольник, версию метафайла, размер метафайла, количество объектов в метафайле. и размер самой большой отдельной записи в метафайле. [19] [20] Это было позже включено в формат WMF Microsoft, начиная с Windows 2000. [21]
Файлы WMF структурированы серией записей, начиная с нескольких контрольных записей: записи заголовка, [19] [22] вышеупомянутой необязательной размещаемой записи [23] и заканчивая записью конца файла . [19] [24]
Контрольные записи инкапсулируют записи, составляющие само изображение. Эти записи работают в так называемом контексте устройства воспроизведения , который представляет собой набор свойств и объектов, составляющих графическую среду устройства, когда метафайл «воспроизводится» на этом устройстве вывода. [25]
Записи, отличные от записей управления, могут быть в значительной степени сгруппированы в записи растровых изображений, записи чертежей, записи объектов, записи состояния и записи перехода.
Записи растровых изображений
Записи Bitmap управляют и выводят растровые изображения .
Имя | Описание |
---|---|
META_BITBLT | Определяет, как выполнить передачу битового блока . Эти записи могут указывать растровое изображение для использования в качестве источника или регион. [26] |
META_DIBBITBLT | Определяет, как выполнить передачу битового блока не зависящего от устройства растрового изображения. Эти записи могут указывать растровое изображение для использования в качестве источника или регион. [27] |
META_DIBSTRETCHBITBLT | Определяет, как выполнить передачу битового блока не зависящего от устройства растрового изображения, но допускает расширение или сжатие изображения. Эти записи могут указывать растровое изображение для использования в качестве источника или регион. [28] |
META_SETDIBTODEV | Задает цвет для установки блока пикселей в растровом изображении, не зависящем от устройства. Эти записи могут указывать растровое изображение для использования в качестве источника или регион. [29] |
META_STRETCHBLT | Определяет, как выполнить передачу битового блока, но допускает расширение или сжатие изображения. [30] |
META_STRETCHDIB | Определяет, как выполнить передачу битового блока не зависящего от устройства растрового изображения, но допускает расширение или сжатие изображения. Эти записи могут указывать растровое изображение для использования в качестве источника или регион. [31] |
Записи чертежей
Записи чертежей производят вывод графики.
Имя | Описание |
---|---|
META_ARC | Рисует эллиптическую дугу . [32] |
META_CHORD | Рисует аккорд . [33] |
META_ELLIPSE | Рисует эллиптическую дугу . [34] |
META_EXTFLOODFILL | Заполняет область кистью. [35] |
META_EXTTEXTOUT | Нарисуйте текст со шрифтом, цветом фона и цветом текста в контексте устройства воспроизведения. [36] |
META_FILLREGION | Заполняет область указанной кистью. [37] |
META_FLOODFILL | Заполняет область кистью. [38] |
META_FRAMEREGION | Рисует кистью границу вокруг области страницы. [39] |
МЕТА_ИНВЕРТРЕГИОН | Закрашивает область изображения инвертированными цветами. [40] |
META_LINETO | Рисует полуоткрытую линию от позиции рисования, определенной в контексте устройства воспроизведения, до указанной точки. [41] |
META_PAINTREGION | Нарисуйте область текущей кистью, указанной в контексте устройства воспроизведения. [42] |
META_PATBLT | Нарисуйте область текущей кистью, указанной в контексте устройства воспроизведения, а затем объедините цвет кисти и цвет (а) поверхности с помощью растровой операции . [43] |
META_PIE | Нарисуйте клин в форме пирога, ограниченный пересечением эллипса и двух радиалов - линия задается пером, заданным через контекст устройства воспроизведения, а область, ограниченная формой пирога, заполняется текущей кистью устройства воспроизведения. контекст. [44] |
МЕТА_POLYLINE | Рисует серию сегментов линий, соединяя точки в указанном массиве. [45] |
МЕТА_ПОЛИГОН | Рисует многоугольник, состоящий из двух или более вершин, соединенных прямыми линиями. Многоугольник обводится пером и заполняется с помощью кисти и режима заливки многоугольника, которые определены в контексте устройства воспроизведения. [46] |
МЕТА_POLYPOLYGON | Рисует серию замкнутых многоугольников, которые могут перекрываться. Каждый многоугольник обводится пером и заполняется с помощью кисти и режима заливки многоугольника, которые определены в контексте устройства воспроизведения. [47] |
META_RECTANGLE | Закрашивает прямоугольник, который обводится пером, заполняется с помощью кисти и заполняется с помощью кисти, определенной в контексте устройства воспроизведения. [48] |
META_ROUNDRECT | Закрашивает прямоугольник со скругленными углами. Прямоугольник обводится пером, заполняется кистью и заполняется кистью, определенной в контексте устройства воспроизведения. [49] |
META_SETPIXEL | Устанавливает пиксель с указанными координатами на указанный цвет. [50] |
META_TEXTOUT | Выводит строку символов в указанном месте, используя шрифт, цвет фона и цвет текста, которые определены в контексте устройства воспроизведения. [51] |
Записи об объектах
Записи объектов создают графические объекты и управляют ими. В файлах WMF есть две широкие категории объектов - графические объекты и объекты структуры. Объекты структуры не создаются и не удаляются в WMF явно, а вместо сложных структур. Например, BitmapCoreHeader содержит информацию о размерах и цветовом формате не зависящего от устройства растрового изображения [52], которое само является частью объекта DeviceIndependentBitmap. [53] Графический объект, однако, определяет параметры для вывода графики, а во время воспроизведения WMF он устанавливает контекст устройства воспроизведения. [54]
Графическими объектами могут быть кисти (определяет стиль, цвет и узор кисти, которые определяют, как рисовать область изображения), шрифты (определяют свойства, которые влияют на отображение текста), палитры (задают цвета как значения, не зависящие от устройства, определяется приложением), перьями (задает графические атрибуты линии) и областями (которые определяют сегменты линии и кривой, определяющие форму). [54]
Имя | Описание |
---|---|
META_CREATEBRUSHINDIRECT | Создает объект кисти из объекта LogBrush (логическая кисть). [55] |
META_CREATEFONTINDIRECT | Создает объект кисти из объекта шрифта. [56] |
META_CREATEPALETTE | Создает объект палитры. |
META_CREATEPATTERNBRUSH [57] | Создает объект кисти из объекта LogBrush (логическая кисть). [58] |
META_CREATEPENINDIRECT | Создает объект пера. [59] |
META_CREATEREGION | Создает объект региона. [60] |
META_DELETEOBJECT | Удалить объект. [61] |
META_CREATEBRUSHINDIRECT | Создает объект кисти из объекта LogBrush (логическая кисть). [62] |
META_DIBCREATEPATTERNBRUSH | Создает объект кисти из независимого от устройства растрового изображения. [63] |
META_SELECTCLIPREGION | Определяет объект области, который будет текущей областью отсечения . [64] |
META_SELECTOBJECT | Выбирает объект, который будет текущим объектом для контекста устройства воспроизведения, который работает со всеми графическими объектами, кроме объектов палитры, которые должны быть установлены с помощью META_SELECTPALETTE. [65] |
META_SELECTPLAETTE | Выбирает логическую палитру для контекста устройства воспроизведения. [66] |
Государственные записи
Записи состояния управляют графическими свойствами контекста устройства воспроизведения. [67]
Имя | Описание |
---|---|
META_ANIMATEPALETTE | Переопределяет записи в логической палитре, которая определена в контексте устройства воспроизведения с помощью указанного объекта палитры. [68] |
META_EXCLUDECLIPRECT | Устанавливает область отсечения, которая определена в контексте устройства воспроизведения, равной существующей области отсечения за вычетом указанного прямоугольника. [69] |
META_INTERSECTCLIPRECT | Устанавливает область отсечения, которая определена в контексте устройства воспроизведения, на пересечение существующей области отсечения и указанного прямоугольника. [70] |
META_MOVETO | Устанавливает позицию вывода в контексте устройства воспроизведения в указанную точку. [71] |
META_OFFSETCLIPRGN | Перемещает область отсечения, определенную в контексте устройства воспроизведения, на указанные смещения. [72] |
META_OFFSETVIEWPORTORG | Перемещает начало координат области просмотра в контексте устройства воспроизведения на заданные горизонтальные и вертикальные смещения. [73] |
META_OFFSETWINDOWORG | Перемещает исходную точку окна вывода в контексте устройства воспроизведения на заданные горизонтальные и вертикальные смещения. [74] |
META_REALIZEPALETTE | Сопоставляет записи из логической палитры, определенной в контексте устройства воспроизведения, с системной палитрой. [75] |
META_RESIZEPALETTE | Переопределяет размер логической палитры, определенной в контексте устройства воспроизведения. [76] |
META_RESTOREDC | Восстанавливает контекст устройства воспроизведения из ранее сохраненного контекста устройства. [77] |
META_SAVEDC | Сохраняет контекст устройства воспроизведения для последующего извлечения. [78] |
META_SCALEVIEWPORTEXT | Масштабирует горизонтальные и вертикальные пределы области просмотра, которая определена в контексте устройства воспроизведения, с использованием соотношений, образованных указанными множителями и делителями. [79] |
META_SCALEWINDOWEXT | Масштабирует горизонтальные и вертикальные пределы окна вывода, которое определено в контексте устройства воспроизведения, с использованием соотношений, образованных указанными множителями и делителями. [80] |
META_SETBKCOLOR | Устанавливает заданный цвет фона в контексте устройства воспроизведения. [81] |
META_SETBKMODE | Устанавливает режим фонового микширования в контексте устройства воспроизведения. [82] |
META_SETLAYOUT | Определяет ориентацию макета в контексте устройства воспроизведения. [83] |
META_SETMAPMODE | Определяет режим сопоставления в контексте устройства воспроизведения. [84] |
META_SETMAPPERFLAGS | Определяет алгоритм, который использует средство сопоставления шрифтов при сопоставлении логических шрифтов с физическими шрифтами. [85] |
META_SETPALENTRIES | Определяет значения цвета RGB в диапазоне записей в логической палитре, которая определяется в контексте устройства воспроизведения. [86] |
META_SETPOLYFILLMODE | Определяет режим заливки многоугольника в контексте устройства воспроизведения для графических операций, заполняющих многоугольники. [87] |
META_SETRELABS | Неиспользованная запись. [88] |
META_SETROP2 | Определяет режим смешивания работы с растром переднего плана в контексте устройства воспроизведения. [89] |
META_SETSTRETCHBLTMODE | Определяет режим растяжения растрового изображения в контексте устройства воспроизведения. [90] |
META_SETTEXTALIGN | Определяет значения выравнивания текста в контексте устройства воспроизведения. [91] |
META_SETTEXTCHAREXTRA | Определяет межсимвольный интервал для выравнивания текста в контексте устройства воспроизведения. [92] |
META_SETTEXTCOLOR | Определяет цвет текста переднего плана в контексте устройства воспроизведения. [93] |
META_SETTEXTJUSTIFICATION | Определяет количество места, которое нужно добавить для разрыва символов в строке выровненного текста. [94] |
META_SETVIEWPORTEXT | Определяет горизонтальную и вертикальную границы области просмотра в контексте устройства воспроизведения. [95] |
META_SETVIEWPORTORG | Определяет источник области просмотра в контексте устройства воспроизведения. [96] |
META_SETWINDOWEXT | Определяет размеры окна вывода по горизонтали и вертикали в контексте устройства воспроизведения. [97] |
META_SETWINDOWORG | Определяет источник окна вывода в контексте устройства воспроизведения. [98] |
Записи о побегах
Escape-записи - это средство расширения функциональности метафайлов с помощью записей, которые иначе не определены как тип записи WMF. Каждая escape-запись содержит функцию записи, escape-функцию и потенциально escape-данные.
Следующие escape-записи составляют файл WMF.
Имя | Описание |
---|---|
ABORTDOC | Останавливает обработку текущего документа. [99] |
BEGIN_PATH | Открывает путь. [100] |
CHECK_JPEGFORMAT | Определяет, может ли он обрабатывать данное изображение JPEG . [101] |
CHECK_PNGFORMAT | Определяет, может ли он обрабатывать данное изображение PNG . [102] |
CLIP_TO_PATH | Применяет функцию к текущему контуру обрезки PostScript . [103] |
CLOSE_CHANNEL | То же, что и ENDDOC. [104] |
DOWNLOAD_FACE | Устанавливает имя шрифта на устройстве вывода. [105] |
DOWNLOAD_HEADER | Загружает наборы процедур PostScript. [106] |
DRAW_PATTERNRECT | Рисует прямоугольник с заданным узором. [107] |
ENCAPSULATED_POSTSCRIPT | Отправляет произвольные инкапсулированные данные PostScript (EPS) непосредственно в драйвер принтера. [108] |
END_PATH | Заканчивает путь. [109] |
ENDDOC | Уведомляет драйвер принтера о завершении нового задания на печать. [110] |
EPS_PRINTING | Указывает начало и конец печати EPS. [111] |
EXTTEXTOUT | Рисует текст, используя текущий выбранный шрифт, цвет фона и цвет текста. [112] |
GET_COLORTABLE | Получает значения таблицы цветов из драйвера принтера. [113] |
GET_DEVICEUNITS | Получает единицы устройства, в настоящее время настроенные на устройстве вывода. [114] |
GET_EXTENDED_TEXTMETRICS | Получает расширенные текстовые метрики, которые в настоящее время настроены в драйвере принтера. [115] |
GET_FACENAME | Получает имя шрифта, настроенное в настоящее время на устройстве вывода. [116] |
GET_PAIRKERNTABLE | Получает таблицу ядра шрифтов, которая в настоящее время определена на устройстве вывода. [117] |
GET_PHYSPAGESIZE | Извлекает физический размер страницы, выбранный в данный момент на устройстве вывода. [118] |
GET_PRINTINGOFFSET | Извлекает смещение от верхнего левого угла физической страницы, где начинается фактическая печать или рисование. [119] |
GET_PS_FEATURESETTING | Запрашивает драйвер принтера для получения информации о функциях PostScript, поддерживаемых устройством вывода. [120] |
GET_SCALINGFACTOR | Извлекает коэффициенты масштабирования для оси x и оси y принтера. [121] |
META_ESCAPE_ENHANCED_METAFILE | Используется для встраивания метафайла EMF в метафайл WMF. [122] |
МЕТАФИЛЬ_ДРАЙВЕР | Запрашивает драйвер принтера о поддержке метафайлов на устройстве вывода. [123] |
NEWFRAME | Уведомляет драйвер принтера о том, что приложение завершило запись на страницу. [124] |
NEXTBAND | Уведомляет драйвер принтера о том, что приложение завершило запись в полосу. [125] |
ПРОЙТИ ЧЕРЕЗ | Передает произвольные данные драйверу принтера. [126] |
POSTSCRIPT_DATA | Отправляет произвольные данные PostScript на устройство вывода. [127] |
POSTSCRIPT_IDENTIFY | Устанавливает драйвер принтера в режим PostScript или GDI. [128] |
POSTSCRIPT_IGNORE | Сообщает устройству вывода игнорировать данные PostScript. [129] |
POSTSCRIPT_INJECTION | Вставляет блок необработанных данных в поток PostScript. [130] |
POSTSCRIPT_PASSTHROUGH | Отправляет произвольные данные непосредственно в драйвер принтера, который, как ожидается, будет обрабатывать эти данные только в режиме PostScript. [131] |
OPEN_CHANNEL | Действует так же, как STARTDOC, с пустым документом и выходным именем, а также данными в необработанном режиме. [132] |
QUERY_DIBSUPPORT | Запрашивает драйвер принтера о поддержке DIB на устройстве вывода. [133] |
QUERY_ESCSUPPORT | Запрашивает драйвер принтера, чтобы определить, поддерживается ли конкретная escape-функция WMF на устройстве вывода. [134] |
SET_COLORTABLE | Устанавливает значения таблицы цветов. [135] |
SET_COPYCOUNT | Устанавливает количество копий. [136] |
SET_LINECAP | Задает режим окончания строки для использования при выводе на устройство вывода. [137] |
SET_LINEJOIN | Задает режим соединения линий для использования при рисовании на устройстве вывода. [138] |
SET_MITERLIMIT | Устанавливает предел длины угловых соединений для использования в чертеже на устройстве вывода. [139] |
SPCLPASSTHROUGH2 | Позволяет документам включать частные процедуры и другие произвольные данные в документы. [140] |
STARTDOC | Уведомляет драйвер принтера о запуске нового задания на печать. [141] |
Была обнаружена серьезная уязвимость в escape-записях вокруг escape-записи Abort, которая хранит код процедуры отмены внутри самой записи. Это затронуло системы Windows (см. CVE - 2005-4560 ) и проект Wine (см. CVE - 2006-0106 ). Согласно Secunia , «уязвимость вызвана ошибкой в обработке файлов метафайлов Windows ('.wmf'), содержащих специально созданные записи SETABORTPROC 'Escape'. Такие записи позволяют выполнять произвольную пользовательскую функцию при отображении файл WMF не работает ". [142] Согласно документации Windows 3.1 SDK, escape-код SETABORTPROC был устаревшим и заменен одноименной функцией в Windows 3.1, задолго до того, как была обнаружена уязвимость WMF. [143] Однако устаревший escape-код был сохранен для совместимости с 16-битными программами, написанными для (или, по крайней мере, обратно совместимыми с) Windows 3.0. Это изменение произошло примерно в то же время, когда Microsoft создавала 32-битную повторную реализацию GDI для Windows NT, и вполне вероятно, что уязвимость возникла во время этой попытки.
После того, как Стив Гибсон обвинил Microsoft в преднамеренном внедрении бэкдора в свой код, [144] [145] Марк Руссинович представил опровержение и заявил, что:
... все было по-другому, когда создавался формат. В Windows 3.1 код модели «большой» памяти по своей природе не зависит от местоположения, и Windows никогда не обновлялась, поэтому и Windows, и приложение могли просто скопировать функцию приложения в файл WMF и предположить, что она будет работать при воспроизведении одним и тем же приложением в более поздний сеанс запуска. В любом случае неясно, предполагали ли разработчики приложения, создающие метафайлы на диске с процедурами прерывания. Кроме того, как Стивен Тулуза из Microsoft указал в опровержении заявлений Стива в Microsoft , ландшафт безопасности в начале 1990-х сильно отличался от сегодняшнего, и всему коду, включая тот, который хранится в файле WMF, по своей сути доверяли. [146]
Питер Ферри из Symantec Security Response, США, также не согласен с Гибсоном, отметив, что:
Гибсон утверждал, что создается поток для запуска обработчика SetAbortProc. Фактически, никакой поток не создается для запуска обработчика - это обратный вызов, который вызывается анализатором, и синтаксический анализатор должен ждать, пока обратный вызов не вернется, иначе весь смысл функции (чтобы прервать печать) теряется. . По его собственному признанию, Гибсон не читал документацию (на самом деле он утверждал, что не мог ее найти, хотя она находится в свободном доступе на веб-сайте Microsoft), и он утверждал, что контекст устройства недоступен для обработчика функций. . Конечно, контекст устройства доступен обработчику функции - это один из двух параметров, которые ему передаются (см. Выше), и он необходим для прерывания печати. Наконец, Гибсон заявил, что поток управления не может вернуться в Windows. Дело просто в том, что функция возвращает и отбрасывает параметры, которые были переданы в стек. Если запись сформирована правильно, Windows продолжит анализ файла, как и раньше. ... Гибсон признается, что догадывался о нескольких вещах. К сожалению, он плохо угадал. Думаю, теперь мы знаем лучше. [147]
ЭДС
Файлы EMF имеют три возможных версии заголовков. Исходные заголовки - это просто контейнер для изображений, вторая и третья версии инкапсулируют исходный заголовок и содержат запись формата пикселей и поддержку записей OpenGL, а третья версия инкапсулирует второе расширение заголовка и увеличивает точность EMF и масштабируемость EMF, поскольку это добавляет возможность измерения расстояний до поверхностей устройства в метрической системе. [148]
Каждый заголовок EMF начинается с записи EMR_HEADER и записывает соответствующие свойства устройства, на котором было записано изображение метафайла. Исходный заголовок EMF имеет 80-байтовый заголовок и дополнительную строку описания переменной длины. [149] Другие метафайлы содержат поля расширения, которые инкапсулируют исходный заголовок. EmfMetafileHeaderExtension1
- это запись, которая вставляется непосредственно после исходного заголовка EMF, указывает, есть ли дескриптор формата пикселей и смещение объекта дескриптора в заголовке, а также поле, которое указывает, существуют ли записи OpenGL в метафайле. [150] Дескриптор формата пикселя определяет возможности поверхности рисования и то, закодирован ли пиксель в RGBA или является индексом в таблице цветов. [151] EmfMetafileHeaderExtension2
- это запись, которая вставляется сразу после EmfMetafileHeaderExtension1
записи, и она содержит два поля со значениями X и Y для измерения поверхности устройства в микрометрах. [152]
Как и файлы WMF, записи можно классифицировать по функциям, однако в файлах EMF больше типов записей, чем в файлах WMF. Записи могут быть классифицированы как элементы управления, растровые изображения, обрезки, комментарии, рисование, экранирование, создание объекта, манипулирование объектами, OpenGL, скобки пути, записи состояния и преобразования.
ЭДС +
С выпуском Windows XP , в Enhanced Metafile Format Plus Extensions формат (EMF +) был введен. EMF + предоставляет способ сериализации вызовов API GDI + таким же образом, как WMF / EMF хранит вызовы GDI.
Существуют также сжатые версии метафайлов Windows, известные как сжатый метафайл Windows (WMZ) и сжатый расширенный метафайл Windows (EMZ) [153], которые в основном представляют собой сжатые с помощью gzip файлы WMF и EMF соответственно.
Реализации
Формат WMF был разработан для выполнения слоем Windows GDI для восстановления изображения , но поскольку двоичные файлы WMF содержат определение графических примитивов GDI, составляющих это изображение, можно разработать альтернативные библиотеки, которые отображают двоичный файл WMF. файлы или конвертировать их в другие графические форматы.
Смотрите также
- PostScript
- Язык векторной разметки (VML)
- Масштабируемая векторная графика (SVG)
Рекомендации
- ^ Формат метафайлов Windows (PDF) , Microsoft, стр. 16
- ^ «[MS-WMF]: формат метафайлов Windows» . MSDN . 2015-06-30 . Проверено 26 июля 2015 .
- ^ [MS-EMF]: расширенный формат метафайлов (PDF) , Microsoft, стр. 17
- ^ [MS-EMFPLUS]: Расширенный формат метафайлов плюс расширения (PDF) , Microsoft, стр. 19
- ^ Справочник программистов Microsoft Windows 3.1, ресурсы тома 4, Microsoft Press 1992, ISBN 1-55615-494-1 , глава 3, стр. 21-45
- ^ Каолан Макнамара. "Справочник по метафайлу окна (wmf)" . Проверено 1 июня 2008 .
Эти коды операций не реализованы по той причине, что я не знаю, что они собой представляют, нет известной документации.
- ^ «[MS-WMF]: спецификация формата метафайлов Windows» . Проверено 1 июня 2008 .
- ^ «Обещание открытой спецификации Microsoft» . Проверено 1 июня 2008 .
- ^ а б Расширенные метафайлы в Win32 , Microsoft Developer Network Technology Group, 10 июня 1993 г.
- ^ а б Леонард, Шон (сентябрь 2016 г.). «Метафайлы Windows» . Типы Windows Image Media . IETF . п. 1. дои : 10,17487 / RFC7903 . ISSN 2070-1721 . RFC 7903 . Проверено 8 февраля 2020 года .
- ^ "EMF" , FileFormat , Aspose Pty Ltd , получено 20 января 2020 г.
- ^ Петцольд, Чарльз (11 октября 1994 г.), "Метафайлы NT и объекты GDI" , журнал PC Magazine , стр. 343–347.
- ^ Поляков, Алексей; Брусенцев, Виталий (2005). Программирование графики с помощью GDI + и DirectX . Публикация A-List. п. 68. ISBN 1-931769-39-7.
- ^ «3.1.4.1 Таблица объектов WMF», [MS-WMF]: расширенный формат метафайлов (PDF) , Microsoft, стр. 187
- ^ «3.1.1.1 Таблица объектов EMF», [MS-EMF]: спецификация формата метафайлов Windows (PDF) , Microsoft, стр. 212-214
- ^ [MS-EMFPLUS]: Enhanced Metafile Format Plus Extensions (PDF) , Microsoft, стр. 204–205.
- ^ «Рисунок 1: Структуры исходных и размещаемых метафайлов Windows», Формат метафайлов Windows (PDF) , Microsoft, стр. 17
- ^ Q66949: ИНФОРМАЦИЯ: функции метафайлов Windows и размещаемые метафайлы Aldus , Microsoft - через архив базы знаний: архив ранней базы знаний Майкрософт
- ^ а б в «1.3.1 Структура метафайлов», Формат метафайлов Windows (PDF) , Microsoft, стр. 17
- ^ «2.3.2.3 Запись META_PLACEABLE», Формат метафайлов Windows (PDF) , Microsoft, стр. 115
- ^ Формат метафайлов Windows (PDF) , Microsoft, стр. 55,
<55> Раздел 2.3.2.3: Windows NT 3.1, Windows NT 3.5, Windows NT 3.51 и Windows 95: Эта функция не поддерживается.
- ^ «2.3.2.2 Запись MTF_HEADERRECORD», формат метафайлов Windows (PDF) , Microsoft, стр. 114
- ^ «2.3.2.2 Запись MTF_HEADERRECORD», формат метафайлов Windows (PDF) , Microsoft, стр. 114
- ^ «2.3.2.1 Запись MTF_EOF», Формат метафайлов Windows (PDF) , Microsoft, стр. 114
- ^ «1.1 Глоссарий», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , Microsoft, стр. 13 , дата обращения 24.01.2020
- ^ «2.3.1.1 Запись META_BITBLT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 101–103 , получено 24 января 2020 г.
- ^ «2.3.1.2 Запись META_DIBBITBLT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , Microsoft, стр. 103-106 , дата обращения 24.01.2020
- ^ «2.3.1.3 Запись META_DIBSTRETCHBITBLT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , Microsoft, стр. 106-108 , дата обращения 24.01.2020
- ^ «2.3.1.4 Запись META_SETDIBTODEV», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , Microsoft, стр. 108-109 , дата обращения 24.01.2020
- ^ «2.3.1.5 Запись META_STRETCHBLT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , Microsoft, стр. 109-110 , дата обращения 24.01.2020
- ^ «2.3.1.6 Запись META_STRETCHDIB», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , Microsoft, стр. 103-106 , дата обращения 24.01.2020
- ^ «2.3.3.1 Запись META_ARC», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 101–103 , получено 24 января 2020 г.
- ^ «2.3.3.2 Запись META_CHORD», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 117–118 , получено 24 января 2020 г.
- ^ «2.3.3.3 Запись META_ELLIPSE», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 119 , дата обращения 24.01.2020
- ^ «2.3.3.4 Запись META_EXTFLOODFILL», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 119–120 , получено 24 января 2020 г.
- ^ «2.3.3.5 Запись META_EXTTEXTOUT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 119–120 , получено 24 января 2020 г.
- ^ «2.3.3.6 Запись META_FILLREGION», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 121 , дата обращения 24.01.2020
- ^ «2.3.3.7 Запись META_FLOODFILL», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 119–120 , получено 24 января 2020 г.
- ^ «2.3.3.8 Запись META_FRAMEREGION», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 122–123 , получено 24 января 2020 г.
- ^ «2.3.3.9 Запись META_INVERTREGION», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 123 , дата обращения 24.01.2020
- ^ «2.3.3.10 Запись META_LINETO», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 123–124 , получено 24 января 2020 г.
- ^ «2.3.3.11 Запись META_PAINTREGION», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 124 , дата обращения 24.01.2020
- ^ «2.3.3.12 Запись META_PATBLT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 124–125 , получено 24 января 2020 г.
- ^ «2.3.3.13 Запись META_PIE», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 125–126 , получено 24 января 2020 г.
- ^ «2.3.3.14 Запись META_POLYLINE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 126 , дата обращения 24.01.2020
- ^ «2.3.3.15 Запись META_POLYGON», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 127 , дата обращения 24.01.2020
- ^ «2.3.3.16 Запись META_POLYPOLYGON», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 127–128 , получено 24 января 2020 г.
- ^ «2.3.3.17 Запись META_RECTANGLE», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 127–128 , получено 24 января 2020 г.
- ^ «2.3.3.18 META_ROUNDRECT Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 128–129 , получено 24 января 2020 г.
- ^ «2.3.3.19 META_SETPIXEL Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 129–130 , получено 24 января 2020 г.
- ^ «2.3.3.20 Запись META_TEXTOUT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 130 , дата обращения 24.01.2020
- ^ «2.2.2.2. Объект BitmapCoreHeader», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 85 , дата обращения 25.01.2020
- ^ «2.2.2.9. DeviceIndependentBitmap Object», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 91 , дата обращения 25.01.2020
- ^ а б «2.2.1. Графические объекты», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 79 , дата обращения 25.01.2020
- ^ «2.3.4.1 Запись META_CREATEBRUSHINDIRECT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 131–132 , получено 25 января 2020 г.
- ^ «2.3.4.2 Запись META_CREATEFONTINDIRECT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 132 , дата обращения 25.01.2020
- ^ «2.3.4.4 Запись META_CREATEPATTERNBRUSH», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 133–135 , получено 25 января 2020 г.
- ^ «2.3.4.3 Запись META_CREATEPALETTE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 132–133 , получено 25 января 2020 г.
- ^ «2.3.4.5 Запись META_CREATEPENINDIRECT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 134–135 , получено 25 января 2020 г.
- ^ «2.3.4.6 Запись META_CREATEREGION», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 135 , дата обращения 25.01.2020
- ^ «2.3.4.7 Запись META_DELETEOBJECT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 135 , дата обращения 25.01.2020
- ^ «2.3.4.8 Запись META_CREATEBRUSHINDIRECT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 135–136 , получено 25 января 2020 г.
- ^ «2.3.4.9 Запись META_DIBCREATEPATTERNBRUSH», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 136–137 , получено 25 января 2020 г.
- ^ «2.3.4.10 Запись META_SELECTCLIPREGION», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 137 , дата обращения 25.01.2020
- ^ «2.3.4.11 Запись META_SELECTOBJECT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 137–138 , получено 25 января 2020 г.
- ^ «2.3.4.11 Запись META_SELECTPLAETTE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 139 , дата обращения 25.01.2020
- ^ «2.3.5 Типы записей состояния», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 138 , проверено 28 января 2020 г.
- ^ «2.3.5.1 Запись META_ANIMATEPALETTE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 140 , проверено 28 января 2020 г.
- ^ «2.3.5.2 Запись META_EXCLUDECLIPRECT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 140–141 , получено 28 января 2020 г.
- ^ «2.3.5.3 Запись META_INTERSECTCLIPRECT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 141–142 , получено 28 января 2020 г.
- ^ «2.3.5.1 Запись META_MOVETO», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 142 , проверено 28 января 2020 г.
- ^ «2.3.5.4 Запись META_OFFSETCLIPRGN», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 142–143 , получено 28 января 2020 г.
- ^ «2.3.5.5 Запись META_OFFSETVIEWPORTORG», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 143 , проверено 28 января 2020 г.
- ^ «2.3.5.6 Запись META_OFFSETWINDOWORG», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 131–132 , получено 28 января 2020 г.
- ^ «2.3.5.7 Запись META_REALIZEPALETTE», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 143–144 , получено 28 января 2020 г.
- ^ «2.3.5.8 Запись META_RESIZEPALETTE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 144 , проверено 28 января 2020 г.
- ^ «2.3.5.9 Запись META_RESTOREDC», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 145 , проверено 28 января 2020 г.
- ^ «2.3.5.10 Запись META_SAVEDC», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 145 , проверено 28 января 2020 г.
- ^ «2.3.5.11 Запись META_SCALEVIEWPORTEXT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 145–146 , получено 28 января 2020 г.
- ^ «2.3.5.12 Запись META_SCALEWINDOWEXT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 146–147 , получено 28 января 2020 г.
- ^ «2.3.5.13 Запись META_SETBKCOLOR», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 147 , проверено 28 января 2020 г.
- ^ «2.3.5.14 Запись META_SETBKMODE», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 147–148 , получено 28 января 2020 г.
- ^ «2.3.5.15 Запись META_SETLAYOUT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 148 , проверено 28 января 2020 г.
- ^ «2.3.5.16 Запись META_SETMAPMODE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 148–149 , получено 28 января 2020 г.
- ^ «2.3.5.17 Запись META_SETMAPPERFLAGS», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 131–132 , получено 2020-01-28
- ^ «2.3.5.18 Запись META_ANIMATEPALETTE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 149 , проверено 28 января 2020 г.
- ^ «2.3.5.19 Запись META_SETPALENTRIES», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 149–150 , получено 2020-01-28
- ^ «2.3.5.20 Запись META_SETRELABS», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 150 , проверено 28 января 2020 г.
- ^ «2.3.5.21 Запись META_SETROP2», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 151 , проверено 28 января 2020 г.
- ^ «2.3.5.1 Запись META_SETSTRETCHBLTMODE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 151–152 , получено 28 января 2020 г.
- ^ «2.3.5.22 Запись META_SETTEXTALIGN», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 152 , проверено 28 января 2020 г.
- ^ «2.3.5.1 Запись META_SETTEXTCHAREXTRA», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 152–153 , получено 28 января 2020 г.
- ^ «2.3.5.23 Запись META_SETTEXTCOLOR», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 153 , проверено 28 января 2020 г.
- ^ «2.3.5.24 Запись META_SETTEXTJUSTIFICATION», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 153–154 , получено 28 января 2020 г.
- ^ «2.3.5.25 Запись META_SETVIEWPORTEXT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 154 , проверено 28 января 2020 г.
- ^ «2.3.5.26 Запись META_SETVIEWPORTORG», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 154–155 , получено 28 января 2020 г.
- ^ «2.3.5.27 Запись META_SETWINDOWEXT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 155 , проверено 28 января 2020 г.
- ^ «2.3.5.28 Запись META_SETWINDOWORG», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 155 , проверено 28 января 2020 г.
- ^ «2.3.6.2. Запись ABORTDOC», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 158–159 , получено 28 января 2020 г.
- ^ «2.3.6.3. Запись BEGIN_PATH», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 159 , проверено 28 января 2020 г.
- ^ «2.3.6.4. Запись CHECK_JPEGFORMAT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 159–160 , получено 2020-01-28
- ^ «2.3.6.5. Запись CHECK_PNGFORMAT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 160 , проверено 28 января 2020 г.
- ^ «2.3.6.6. Запись CLIP_TO_PATH», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 160 , проверено 28 января 2020 г.
- ^ «2.3.6.7. Запись CLOSE_CHANNEL», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 162 , проверено 28 января 2020 г.
- ^ «2.3.6.8. DOWNLOAD_FACE Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 162–163 , получено 2020-01-28
- ^ «2.3.6.9. Запись DOWNLOAD_HEADER», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 158–159 , получено 28 января 2020 г.
- ^ «2.3.6.10. Запись DRAW_PATTERNRECT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 163–164 , получено 28 января 2020 г.
- ^ «2.3.6.11. Запись ENCAPSULATED_POSTSCRIPT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 164 , проверено 28 января 2020 г.
- ^ «2.3.6.12. END_PATH Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 164–165 , получено 28 января 2020 г.
- ^ «2.3.6.13. Запись ENDDOC», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 165 , проверено 28 января 2020 г.
- ^ «2.3.6.14. EPS_PRINTING Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 165–166 , получено 28 января 2020 г.
- ^ «2.3.6.15. Запись EXTTEXTOUT», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 166–167 , получено 28 января 2020 г.
- ^ «2.3.6.16. GET_COLORTABLE Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 167–168 , получено 28 января 2020 г.
- ^ «2.3.6.17. Запись GET_DEVICEUNITS», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 168 , проверено 28 января 2020 г.
- ^ «2.3.6.18. GET_EXTENDED_TEXTMETRICS Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 168–169 , получено 28 января 2020 г.
- ^ «2.3.6.19. Запись GET_FACENAME», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 169 , проверено 28 января 2020 г.
- ^ «2.3.6.20. Запись GET_PAIRKERNTABLE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 169–170 , получено 2020-01-28
- ^ «2.3.6.21. Запись GET_PHYSPAGESIZE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 170 , проверено 28 января 2020 г.
- ^ «2.3.6.22. GET_PRINTINGOFFSET Record», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 170–171 , получено 2020-01-28
- ^ «2.3.6.23. Запись GET_PS_FEATURESETTING», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 171 , проверено 28 января 2020 г.
- ^ «2.3.6.24. GET_SCALINGFACTOR Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 171–172 , получено 2020-01-28
- ^ «2.3.6.25. Запись META_ESCAPE_ENHANCED_METAFILE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 172–173 , получено 28 января 2020 г.
- ^ «2.3.6.26. Запись METAFILE_DRIVER», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 173–174 , получено 2020-01-28
- ^ «2.3.6.27. Запись NEWFRAME», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 174–175 , получено 28 января 2020 г.
- ^ «2.3.6.28. Запись NEXTBAND», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 174–175 , получено 28 января 2020 г.
- ^ «2.3.6.29. PASSTHROUGH Record», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 175 , проверено 28 января 2020 г.
- ^ «2.3.6.30. Запись POSTSCRIPT_DATA», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 176 , проверено 28 января 2020 г.
- ^ «2.3.6.31. Запись POSTSCRIPT_IDENTIFY», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 176–177 , получено 2020-01-28
- ^ «2.3.6.32. Запись POSTSCRIPT_IGNORE», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 177 , проверено 28 января 2020 г.
- ^ «2.3.6.33. Запись POSTSCRIPT_INJECTION», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 177–178 , получено 28 января 2020 г.
- ^ «2.3.6.34. Запись POSTSCRIPT_PASSTHROUGH», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 178 , проверено 28 января 2020 г.
- ^ «2.3.6.35. Запись OPEN_CHANNEL», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 179 , проверено 28 января 2020 г.
- ^ «2.3.6.36. Запись QUERY_DIBSUPPORT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 179–180 , получено 2020-01-28
- ^ «2.3.6.37. Запись QUERY_ESCSUPPORT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 180 , дата обращения 28.01.2020
- ^ «2.3.6.38. SET_COLORTABLE Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 180–181 , получено 28 января 2020 г.
- ^ «2.3.6.39. Запись SET_COPYCOUNT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 181 , проверено 28 января 2020 г.
- ^ «2.3.6.40. SET_LINECAP Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 181–182 , получено 28 января 2020 г.
- ^ «2.3.6.41. SET_LINEJOIN Record», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 182–183 , получено 2020-01-28
- ^ «2.3.6.42. Запись SET_MITERLIMIT», [MS-WMF]: Спецификация формата метафайлов Windows (PDF) , стр. 183 , проверено 28 января 2020 г.
- ^ «2.3.6.43. Запись SPCLPASSTHROUGH2», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 183–184 , получено 28 января 2020 г.
- ^ «2.3.6.44. Запись STARTDOC», [MS-WMF]: спецификация формата метафайлов Windows (PDF) , стр. 184 , проверено 28 января 2020 г.
- ^ "Microsoft Windows WMF" SETABORTPROC "Выполнение произвольного кода" . Secunia . Консультации Secunia: SA18255. Архивировано из оригинала 2 января 2006 года.
- ^ Escape, поддерживаемые Pscript , Microsoft , получено 28 января 2020 г.
- ^ "Бэкдор Windows MetaFile?" . GRC Security сейчас! (Подкаст). Гибсон Исследовательская Корпорация . 12 января 2006 . Проверено 28 января 2020 .
- ^ Гибсон, Стив (12 января 2006 г.), «Re: Вы не захотите пропустить сегодняшний вечер Security Now !, # 22» , grc.news.feedback , получено 28 января 2020 г.
- ^ Руссинович, Марк (18 января 2006 г.), «Внутри бэкдора WMF» , TechNet , Microsoft - через Microsoft Tech Community
- ^ Ферри, Питер (2 февраля 2006 г.), Inside the Windows Meta File Format (PDF) , Virus Bulletin , получено 24 января 2020 г. - через Symantec
- ^ «1.3.1. Структура метафайлов», [MS-EMF]: расширенный формат метафайлов (PDF) , Microsoft, стр. 17–18
- ^ «2.3.4.2.1 Запись EmfMetafileHeader», [MS-EMF]: расширенный формат метафайлов (PDF) , Microsoft, стр. 120
- ^ «2.2.10 HeaderExtension1 Object», [MS-EMF]: расширенный формат метафайлов (PDF) , Microsoft, стр. 57–58
- ^ «2.2.22 PixelFormatDescriptor Object», [MS-EMF]: расширенный формат метафайлов (PDF) , Microsoft, стр. 68–71
- ^ «2.3.4.2.3 Запись EmfMetafileHeaderExtension2», [MS-EMF]: расширенный формат метафайлов (PDF) , Microsoft, стр. 122–124
- ^ «Вы получаете сообщение об ошибке« Этот файл представляет собой неподдерживаемый графический формат »при попытке вставить изображение в презентацию PowerPoint для Mac» . Microsoft . Архивировано из оригинала на 2014-04-19 . Проверено 19 апреля 2014 .
Внешние ссылки
- Спецификация формата метафайлов Windows от Microsoft
- Метафайлы - приложения Windows
- Сводка формата файла на fileformat.info
- Часто задаваемые вопросы по метафайлу Windows