dviread
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:
...
-
class matplotlib.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] -
Закрыть базовый файл, если он открыт.
-
-
class matplotlib.dviread.DviFont(scale, tfm, texname, vf)[source] -
Базы:
objectИнкапсуляция шрифта, на который может ссылаться файл DVI.
Этот класс хранит имя и размер шрифта TeX, поддерживает сравнение и знает ширины глифов в тех же единицах, что и файл AFM. Также есть внутренние атрибуты (для использования в dviread.py), которые не используются для сравнения.
Размер указан в пунктах Adobe (преобразованных из пунктов TeX).
Параметры: -
scale : float -
Коэффициент масштабирования шрифта от его естественного размера.
-
tfm : Tfm -
Метрики шрифта TeX для этого шрифта
-
texname : bytes -
Имя шрифта, используемое внутри TeX и его друзьями, в виде ASCII-байтовой строки. Обычно оно сильно отличается от любых внешних имён шрифтов, и
dviread.PsfontsMapможет использоваться для поиска внешнего имени шрифта. -
vf : Vf -
Файл шрифта TeX "виртуального шрифта", или None, если этот шрифт не виртуальный.
Атрибуты: -
texname : bytes -
size : float -
Размер шрифта в пунктах Adobe, преобразованный из немного меньших пунктов TeX.
-
widths : list -
Ширины глифов в единицах пространства глифов, обычно 1/1000-ые пункта размера.
-
size
-
texname
-
widths
-
-
class matplotlib.dviread.Encoding(filename)[source] -
Базы:
objectПарсит файл *.enc, на который ссылается файл стиля psfonts.map. Формат, который понимает этот класс, является очень ограниченным подмножеством PostScript.
Использование (может измениться):
for name in Encoding(filename): whatever(name)Параметры: -
filename : string or bytestring
Атрибуты: -
encoding : list -
Список имён символов
-
encoding
-
-
matplotlib.dviread.PsFont -
псевдоним
matplotlib.dviread.Font
-
class matplotlib.dviread.PsfontsMap[source] -
Базы:
objectФайл формата psfonts.map, сопоставляющий шрифты TeX с шрифтами PS.
Использование:
>>> 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Параметры: -
filename : string or bytestring
Примечания
По историческим причинам, 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» pdf. Но пользователь мог настроить эти файлы по-другому. -
-
class matplotlib.dviread.Tfm(filename)[source] -
Базы:
objectФайл метрик шрифта TeX.
Эта реализация охватывает только самое необходимое для класса Dvi.
Параметры: -
filename : string or bytestring
Атрибуты: -
checksum : int -
Используется для проверки против файла dvi.
-
design_size : int -
Размер шрифта по умолчанию (неизвестные единицы)
-
width, height, depth : dict -
Размеры каждого символа, необходимо масштабировать по коэффициенту, указанному в файле dvi. Это словари, потому что индексация может не начинаться с 0.
-
checksum
-
depth
-
design_size
-
height
-
width
-
-
class matplotlib.dviread.Vf(filename)[source] -
Базы:
matplotlib.dviread.DviВиртуальный шрифт (*.vf файл) содержащий подпрограммы для файлов dvi.
Использование:
vf = Vf(filename) glyph = vf[code] glyph.text, glyph.boxes, glyph.width
Параметры: -
filename : string or bytestring
Примечания
Формат виртуального шрифта — производный от dvi: http://mirrors.ctan.org/info/knuth/virtual-fonts Этот класс повторно использует часть механизма
Dvi, но заменяет цикл_readи механизм перенаправления. -
-
matplotlib.dviread.find_tex_file[source] -
Нахождение файла в дереве texmf.
Вызывает kpsewhich, который является интерфейсом к библиотеке kpathsea [1]. Большинство существующих дистрибутивов TeX на системах Unix-подобного типа используют kpathsea. Она также доступна в составе MikTeX, популярного дистрибутива для Windows.
Параметры: -
filename : string or bytestring -
format : string or bytestring -
Используется в качестве значения опции
--formatдля kpsewhich. Может быть, например, 'tfm' или 'vf', чтобы ограничить поиск этим типом файлов.
Ссылки
[1] (1, 2) Документация Kpathsea Библиотека, частью которой является kpsewhich. -
© 2012–2018 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/3.0.0/api/dviread.html