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:
...
- классmatplotlib.dviread.Dvi(filename, dpi)[source]
-
Базы:
objectЧитатель файла dvi ("device-independent"), как он создается 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]
-
Закрыть базовый файл, если он открыт.
- классmatplotlib.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
-
Ширина глифов в единицах пространства глифов, обычно 1/1000 часть размера точки.
- size
- texname
- widths
- классmatplotlib.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
- классmatplotlib.dviread.PsfontsMap(filename)[source]
-
Базы:
objectФайл формата psfonts.map, сопоставляющий шрифты TeX с шрифтами PS.
- Параметры:
-
- filenamestr или объект пути
Примечания
По историческим причинам 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, возможно, избегают только шрифтов 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]
-
Bases:
objectФайл метрик шрифта TeX.
Эта реализация охватывает только минимум, необходимый классу Dvi.
- Параметры:
-
- filenamestr или путь
- Атрибуты:
-
- checksumint
-
Используется для проверки с файлом dvi.
- design_sizeint
-
Размер шрифта по умолчанию (единицы неизвестны)
- width, height, depthdict
-
Размеры каждого символа, которые необходимо масштабировать с коэффициентом, указанным в файле dvi. Это словари, поскольку индексация может не начинаться с 0.
- checksum
- depth
- design_size
- height
- width
- classmatplotlib.dviread.Vf(filename)[source]
-
Bases:
DviВиртуальный шрифт (*.vf-файл), содержащий подпрограммы для файлов dvi.
- Параметры:
-
- filenamestr или путь
Примечания
Формат виртуального шрифта является производным от 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 или путь
- Исключения:
-
- FileNotFoundError
-
Если файл не найден.
© 2012–2023 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/stable/api/dviread.html