Private Homepage of Hartmut Henkel

Experimental PdfTeX Patch: Speeding up Mapfile Reading and Font Search by AVL Trees.


This information is obsolete, as the described patch, in modified form, is now part of pdftex-1.20a.

Newest Patch

For description and changelog please see file 00-README-AVL.TXT included.


This is just an informal write-up of my private/spare-time fiddling with pdfTeX (it's for fun). The text below is only a rough and partially outdated version. Current info you find in the 00-README-AVL.TXT in the .tgz bundles above.

With this patch the fm_tab array in pdfTeX is replaced by two AVL trees, one with sort criteria tfm_name and expand, and the other with sort criteria ps_name, slant, and extend. Both trees access the same fm_entry data structures. The goal was to speed up the mapfile reading and font lookup, and to have a modern method to read/overwrite/delete fm_entry entries.


Details see 00-README-AVL.TXT.

The Code

Snapshot of the patch: See the top of the page. Beware, the code may be buggy, there are loose ends in. The patch touches several source files, as the fm_tab array is widely used in the pdftex system.


The patch seems to work as long as one does nothing very special. Apparently the file entries from teTeX-2.0.2 are scanned correctly, and the provided fonts can be used; also the ones with ExtendFont and SlantFont parameter. The HZ-algorithm runs with MM fonts and with Type1 fonts. PDF files with HZ fonts can be embedded; the expanded fonts are found, when a proper entry with ExtendFont parameter is given in the mapline.

End Remark

Help, advice, critics greatly welcome! Have fun!

This page first put online 23 February 2003.