matplotlib.dviread
#
一个用于读取 TeX 输出的 DVI 文件的模块。由于一些限制,它目前不能用作通用的 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)[源代码]#
基类:
object
一个用于读取由 TeX 生成的 DVI(“设备无关”)文件的读取器。
当前的实现只能按顺序迭代页面,并且甚至不尝试验证后置码(postamble)。
此类别可用作上下文管理器,以便在退出时关闭底层文件。页面可以通过迭代读取。以下是一种过于简单的方法,用于提取文本而不尝试检测空格:
>>> 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 的内部单位。
- 类 matplotlib.dviread.DviFont(scale, tfm, texname, vf)[源代码]#
基类:
object
DVI 文件可以引用的字体的封装。
此类别包含字体的 texname 和大小,支持比较,并知道字形宽度与 AFM 文件使用相同的单位。还有一些内部属性(供 dviread.py 使用)不用于比较。
大小以 Adobe 点为单位(从 TeX 点转换而来)。
- 参数:
- scale浮点数
字体相对于其自然大小的缩放因子。
- tfmTfm
此字体的 TeX 字体指标。
- texname字节串
TeX 及其相关工具内部使用的字体名称,以 ASCII 字节串表示。这通常与任何外部字体名称大不相同;
PsfontsMap
可用于查找字体的外部名称。- vfVf
一个 TeX “虚拟字体”文件,如果此字体不是虚拟字体,则为 None。
- 属性:
- texname字节串
- size浮点数
字体大小以 Adobe 点为单位,从略小的 TeX 点转换而来。
- widths列表
字形宽度以字形空间单位表示,通常是磅值的 1/1000。
- size#
- texname#
- widths#
- 类 matplotlib.dviread.PsFont(texname, psname, effects, encoding, filename)[源代码]#
基类:
tuple
创建 PsFont(texname, psname, effects, encoding, filename) 的新实例
- effects#
字段编号 2 的别名
- encoding#
字段编号 3 的别名
- filename#
字段编号 4 的别名
- psname#
字段编号 1 的别名
- texname#
字段编号 0 的别名
- 类 matplotlib.dviread.PsfontsMap(filename)[源代码]#
基类:
object
一个 psfonts.map 格式的文件,用于将 TeX 字体映射到 PS 字体。
- 参数:
- filename字符串或路径类对象
备注
由于历史原因,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 字体。但用户可能对这些文件进行了不同的配置。示例
>>> 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
- 类 matplotlib.dviread.Tfm(filename)[源代码]#
基类:
object
一个 TeX 字体度量文件。
此实现仅涵盖 Dvi 类所需的最低限度。
- 参数:
- filename字符串或路径类对象
- 属性:
- checksum整型
用于对照 dvi 文件进行验证。
- design_size整型
字体设计大小(单位未知)
- width, height, depth字典
每个字符的尺寸,需要根据 dvi 文件中指定的因子进行缩放。这些是字典,因为索引可能不从 0 开始。
- checksum#
- depth#
- design_size#
- height#
- width#
- 类 matplotlib.dviread.Vf(filename)[源代码]#
基类:
Dvi
一个包含 DVI 文件子例程的虚拟字体(*.vf 文件)。
- 参数:
- filename字符串或路径类对象
备注
虚拟字体格式是 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 的内部单位。