matplotlib.dviread
Модуль для чтения файлов DVI, созданных TeX. Из-за ряда ограничений модуль пока не подходит для использования в качестве универсального препроцессора DVI, однако сейчас он используется PDF-бэкендом для обработки текста usetex.
Интерфейс:
with Dvi(filename, 72) as dvi:
# iterate over pages:
for page in dvi:
w, h, d = page.width, page.height, page.descent
for x, y, font, glyph, width in page.text:
fontname = font.texname
pointsize = font.size
...
for x, y, height, width in page.boxes:
...
- classmatplotlib.dviread.Dvi(filename, dpi)[source]
-
Базовые классы:
objectСредство чтения файла DVI («независимого от устройства»), созданного TeX.
Текущая реализация позволяет перебирать страницы только по порядку и даже не пытается проверять завершающую часть.
Этот класс можно использовать как менеджер контекста, чтобы закрыть базовый файл при выходе. Страницы можно читать с помощью итерации. Вот чрезвычайно простой способ извлечь текст, не пытаясь обнаруживать пробелы:
>>> with matplotlib.dviread.Dvi('input.dvi', 72) as dvi: ... for page in dvi: ... print(''.join(chr(t.glyph) for t in page.text))Прочитать данные из файла с именем filename и преобразовать внутренние единицы TeX в единицы, соответствующие dpi точкам на дюйм. dpi задаёт только единицы измерения и не ограничивает разрешение. Укажите None, чтобы вернуть внутренние единицы TeX.
- close()[source]
-
Закрыть базовый файл, если он открыт.
- classmatplotlib.dviread.DviFont(scale, tfm, texname, vf)[source]
-
Базовые классы:
objectИнкапсуляция шрифта, на который может ссылаться файл DVI.
Этот класс хранит имя texname и размер шрифта, поддерживает сравнение и содержит сведения о ширине глифов в тех же единицах, что и файл AFM. В классе также есть внутренние атрибуты (используемые dviread.py), которые не применяются при сравнении.
Размер указан в пунктах Adobe (преобразован из пунктов TeX).
- Параметры:
-
- scalefloat
-
Коэффициент масштабирования шрифта относительно его естественного размера.
- tfmTfm
-
Метрики шрифта TeX для этого шрифта
- texnamebytes
-
Имя шрифта, используемое внутри TeX и связанных программ, в виде ASCII-строки байтов. Обычно оно сильно отличается от любых внешних имён шрифтов; с помощью
PsfontsMapможно найти внешнее имя шрифта. - vfVf
-
Файл «виртуального шрифта» TeX или None, если этот шрифт не является виртуальным.
- Атрибуты:
-
- texnamebytes
- sizefloat
-
Размер шрифта в пунктах Adobe, преобразованный из немного меньших пунктов TeX.
- widthslist
-
Ширина глифов в единицах пространства глифов, обычно в тысячных долях размера шрифта в пунктах.
- size
- texname
- widths
- classmatplotlib.dviread.PsFont(texname, psname, effects, encoding, filename)[source]
-
Базовые классы:
tupleСоздать новый экземпляр PsFont(texname, psname, effects, encoding, filename)
- effects
-
Псевдоним для поля номер 2
- encoding
-
Псевдоним для поля номер 3
- filename
-
Псевдоним для поля номер 4
- psname
-
Псевдоним для поля номер 1
- texname
-
Псевдоним для поля номер 0
- classmatplotlib.dviread.PsfontsMap(filename)[source]
-
Базовые классы:
objectФайл в формате psfonts.map, сопоставляющий шрифты TeX со шрифтами PS.
- Параметры:
-
- filenamestr or path-like
Примечания
По историческим причинам TeX знает многие шрифты Type-1 под именами, отличными от тех, которые используются в остальном мире. (В частности, имена должны умещаться в восемь символов.) Кроме того, родные шрифты TeX — это не Type-1, а Metafont; преобразовать их в PostScript нетривиально, если не использовать растровое изображение. Хотя качественные преобразования в формат Type-1 существуют и поставляются с современными дистрибутивами TeX, нам нужно знать, какие шрифты Type-1 соответствуют каким родным шрифтам. По этим причинам требуется сопоставление внутренних имён шрифтов с именами файлов шрифтов.
Дерево texmf обычно содержит файлы сопоставлений, например
psfonts.map,pdftex.mapилиdvipdfm.map. Файлpsfonts.mapиспользуется программой dvips,pdftex.map— программой pdfTeX, аdvipdfm.map— программой dvipdfm.psfonts.mapможет не встраивать 35 шрифтов PostScript (то есть для них не указывать имя файла, как в приведённом выше примере Times-Bold), тогда как файлы, связанные с PDF, могут не встраивать только шрифты «Base 14». Однако пользователь мог настроить эти файлы иначе.Примеры
>>> map = PsfontsMap(find_tex_file('pdftex.map')) >>> entry = map[b'ptmbo8r'] >>> entry.texname b'ptmbo8r' >>> entry.psname b'Times-Bold' >>> entry.encoding '/usr/local/texlive/2008/texmf-dist/fonts/enc/dvips/base/8r.enc' >>> entry.effects {'slant': 0.16700000000000001} >>> entry.filename
- classmatplotlib.dviread.Tfm(filename)[source]
-
Базовые классы:
objectФайл метрик шрифта TeX.
Эта реализация охватывает только самый минимум, необходимый классу Dvi.
- Параметры:
-
- filenamestr or path-like
- Атрибуты:
-
- checksumint
-
Используется для проверки соответствия файлу DVI.
- design_sizeint
-
Проектный размер шрифта (единицы измерения неизвестны)
- width, height, depthdict
-
Размеры каждого символа; их нужно масштабировать с коэффициентом, указанным в файле DVI. Это словари, поскольку индексация может начинаться не с 0.
- checksum
- depth
- design_size
- height
- width
- classmatplotlib.dviread.Vf(filename)[source]
-
Базовые классы:
DviВиртуальный шрифт (файл *.vf), содержащий подпрограммы для файлов DVI.
- Параметры:
-
- filenamestr or path-like
Примечания
Формат виртуальных шрифтов является производным от DVI: http://mirrors.ctan.org/info/knuth/virtual-fonts Этот класс повторно использует некоторые механизмы класса
Dvi, но заменяет цикл_readи механизм диспетчеризации.Примеры
vf = Vf(filename) glyph = vf[code] glyph.text, glyph.boxes, glyph.width
Прочитать данные из файла с именем filename и преобразовать внутренние единицы TeX в единицы, соответствующие dpi точкам на дюйм. dpi задаёт только единицы измерения и не ограничивает разрешение. Укажите None, чтобы вернуть внутренние единицы TeX.
- matplotlib.dviread.find_tex_file(filename)[source]
-
Найти файл в дереве texmf с помощью kpathsea.
Библиотека kpathsea, входящая в состав большинства существующих дистрибутивов TeX как для Unix-подобных систем, так и для Windows (MikTeX), вызывается через долгоживущий процесс luatex, если luatex установлен, а в противном случае — через kpsewhich.
- Параметры:
-
- filenamestr or path-like
- Вызывает исключение:
-
- FileNotFoundError
-
Если файл не найден.
© 2012–2026 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/stable/api/dviread.html