Что такое формат файла DVI?
Файл .dvi - это двоичный сверстанный документ, созданный системами верстки TeX и LaTeX. Название расшифровывается как «Device Independent» (аппаратно-независимый), что отражает цель разработки: формат точно кодирует положение каждого глифа и линейки на каждой странице, не привязываясь к конкретному устройству вывода - принтеру, экрану или фотонаборному автомату.
Файлы DVI представляют собой последовательные потоки кодов операций (опкодов). Первый байт всегда 0xF7 (опкод преамбулы pre), а второй байт - версия формата: 0x02 для стандартного DVI или 0x03 для расширенного варианта Omega/Lambda с поддержкой двунаправленного текста. Блоки страниц, ограниченные опкодами bop и eop, записывают абсолютные координаты глифов, выбор шрифтов и правила блоков. Далее следует постамбула, содержащая таблицу шрифтов и размеры страниц, а завершающие байты 0xDF дополняют файл до четырехбайтовой границы.
Критическая особенность: файлы DVI ссылаются на шрифты по имени и контрольной сумме TFM, но не встраивают их. Просмотрщик или конвертер должен иметь доступ к указанным шрифтам локально - обычно через дистрибутив TeX. Это отличает его от PDF, который встраивает подмножества шрифтов для автономного рендеринга.
Современные движки TeX все чаще полностью обходят .dvi: pdfLaTeX и LuaLaTeX создают PDF напрямую; XeTeX генерирует промежуточный расширенный файл DVI - .xdv. Классическая цепочка - .tex → .dvi → dvips → .ps → PDF - остается полностью функциональной в TeX Live и MiKTeX. Plain TeX и стандартный LaTeX (движки без поддержки PDF) продолжают выдавать .dvi в качестве нативного формата.
Безопасность и защита
РИСК: LOWФайлы DVI не содержат встроенных скриптов или макросов. Команды «xxx» (special) встраивают строки для конкретных драйверов (например, спецкоманды PostScript через dvips), но они интерпретируются только драйвером DVI и не исполняются как код. Формат с низким уровнем риска, используемый исключительно в академической среде и контексте TeX.
Детали формата
в двух словах- Digital Video Interface (аппаратный разъем) - DVI также относится к стандарту видеоразъемов (DVI-D, DVI-I, DVI-A) - это совершенно не связано; это оборудование, а не формат файла.
Программы, открывающие файлы DVI
Технические подробности
глубокая спецификация| Кодирование | Двоичный поток опкодов; многобайтовые целые числа в формате big-endian |
| Магические байты | 0xF7 по смещению 0 (опкод преамбулы pre); 0x02 по смещению 1 для стандартной версии формата DVI |
| Варианты формата | Байт версии 0x02 = стандартный DVI; 0x03 = расширенный DVI Omega/Lambda (двунаправленный RTL/LTR); XDV = расширение XeTeX |
| Структура файла | Преамбула → блоки страниц (опкоды bop/eop) → постамбула (таблица шрифтов, количество страниц, размеры) → заполняющие байты 0xDF |
| Работа со шрифтами | Ссылки на шрифты по имени и контрольной сумме TFM; не встраиваются - просмотрщику требуется локальная установка шрифтов |
| Контрольная сумма шрифта | Контрольная сумма TFM встроена в каждую запись определения шрифта; несоответствие вызывает предупреждение просмотрщика |
| Завершение файла | Замыкающие байты 0xDF дополняют общую длину файла до кратной 4 байтам |
| Типичный размер файла | 10 КБ - 5 МБ (от научной статьи до целой книги) |
| Система координат | Размеры в единицах DVI (1 единица DVI = 100 нм при стандартном увеличении 1000); абсолютное позиционирование на странице |
| Связанные ОС | Linux, Windows, macOS, Unix (кроссплатформенность через TeX Live, MiKTeX, MacTeX) |
| Цепочка постобработки | dvips конвертирует в PostScript; dvipdfm/dvipdfmx конвертирует в PDF; dvisvgm конвертирует в SVG |
| Порядок байтов | Big-endian для всех многобайтовых целых чисел внутри опкодов DVI |
| Выпущен | 1979 (with TeX; first described in TUGboat 1982) |
| Последняя версия | DVI format 2 (standard); format 3 = DVItype with mixed RTL/LTR (Omega/Lambda); XDV = extended DVI used by XeTeX |
| Открыть стандартное | Да · без роялти |
| Спецификация | www.mn.uio.no |
Конвертации DVI
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах DVI.