Rewriting fmtutil in Perl

TeX Live 2015 is still a few months of, but one of the things I am planning for it is to rewrite fmtutil in Perl, and change its functionality slightly. This follows the rewrite of updmap in the last years. The main user-visible change will be that fmtutil, like updmap will go “multi”, that means it will read all fmtutil.cnf files instead of only the first.


Up to now we are generating the final fmtutil.cnf from the information in the texlive.tlpdb, merged/overridden by fmtutil-local.cnf. This approach has worked for years, but I wouldn’t call it standard, and it needs special treatment of the -local.cnf file. Furthermore, user-specific adaptions are not possible.

Font configuration had the same problem, and we solved it by reading all available updmap.cfg files. This allows for

  • separation of the information into the trees where the respective files are provided
  • easier upgradability with preserving of changes
  • per-user font configuration can easily be handled.

For a more detailed explanation on how multi-updmap works, see this post.

The same reasoning actually applies to formats, and in addition we wanted to unify the sources. At the moment there is a shell script for Unix, and an executable (compiled) fmtutil for Windows. By rewriting it in perl we can use the same script on both Windows and Unix, and new features can easily be applied and shipped.

I am developing this (and some other scripts) in my GitHub project texlive-rewrite, in case you are interested, or want to contribute.

Current status: working on both Windows and Unix on normal invocations, but I want to create also a test suite to check all command line options. As soon as the new Perl script is operational, I will publish a detailed explanation following the one for updmap.

Hope you enjoy it!

2 Responses

  1. Anonymous says:

    We live in 2015. Wouldn’t Python be nicer? Jihn

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>