A library to read and process DVI (DeVice Independent) files, the native output of TeX. The source code provides also a PNG converter and a viewer featuring an hardware acceleration based on the OpenGL API.
The official PyDvi Home Page is located at http://fabricesalvaire.github.io/PyDVI
Written by Fabrice Salvaire.
PyDvi is also able to read most of the file formats associated to the TeX world like packed font, virtual font, TeX font metric, font map and font encoding. It can also read Adobe Font Metrics files.
Basically a DVI file describes the layout of a page by a list of opcodes that interact with a register machine to update the position on the page, to load fonts and to paint glyphs and rules. In short it contains the glyphs and their positions on the page. Since TeX was designed to layout the series of books The Art of Computer Programming at the beginning of the eighties, it focuses on texts and mathematical expressions. Thus DVI is much simpler than Postscript or its successor PDF which are designed for graphics. However we can extend the capabilities of DVI using the special opcode which can contain any text like Postscript snippets.
A DVI stream can come from a file or a TeX daemon in order to render TeX inputs on-the-fly.
The DVI parser of PyDvi builds a program from a DVI stream that could be later processed by the provided DVI machine which is designed to be subclassed by the user.
The source code includes an experimental DVI viewer as exemple which uses the OpenGL API for the rendering and thus feature an hardware accelerated rendering. PyDvi and the viewer can be used as a platform to experiment complex text rendering on GPU.
The source code includes also a clone of the dvipng tool to render DVI to PNG image. This tool is mainly intended to check the compliance of PyDvi by image comparison.
PyDvi can be used for several purpose, we will review them in the followings:
TeX is a major and historical typesetting program. PyDvi can serve to read and process its output using Python. The user can be a curious pearson who want to lean TeX or somebody interested by TeX postprocessing.
The installation of PyDvi by itself is quite simple. However it will be easier to get the dependencies on a Linux desktop.
PyDvi requires the following dependencies:
The OpenGL DVI viewer requires these additional dependencies:
The DVI to PNG tool requires these additional dependencies:
Also it is recommanded to have these Python modules:
For development, you will need in addition:
Installation from PyPi Repository
Run this command to install the last release:
pip install PyDvi
Installation from Source
The PyDvi source code is hosted at https://github.com/FabriceSalvaire/PyDVI
To clone the Git repository, run this command in a terminal:
git clone firstname.lastname@example.org:FabriceSalvaire/PyDvi.git
Then to build and install PyDvi run these commands:
python setup.py build python setup.py install