Spec-Zone.ru › Matplotlib

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API