[Dev-luatex] Snapshot 20070105
taco at elvenkind.com
Fri Jan 5 17:17:05 CET 2007
Almost a month after the previous snapshot, I have a released a
new one. The current snapshot is much more of a work-in-progress
than the previous one, so you can expect glitches and changes to
the offered new functionality. Also , I have not gotten round to
looking at Javier's problem with \lua inside OTPs yet, and there
is at least one known problem with the current snapshot: the
"output written to " message sometimes contains utter nonsense.
That said, this snapshot also fixes a big bug in the previous
version, as well as a few smaller ones. Noteworthy are:
* the calculations that converted lua strings into tex units
were horrendously wrong, this was discovered by Pawel.
* io.lines() was still using the old, line ending sensitive,
code from the lua core distribution
Most of the really new stuff is internal in nature, with only
a few bits user-visible. The big change is that all of the font
manupulation that is done by 'TeX proper' (the Knuthian bits)
is now isolated behind an internal API, with the implementation
(partially re) written in C.
This opens the road to a more extensible font machinery, but not
much of that is implemented at present yet. What has been done:
* The main font memory is allocated as needed^(1) instead of
* ligatures and kerns are separated completely from each other,
so use of \noligatures no longer inhibits kerning as well
* Metrics can be loaded using a callback: 'define_font'.
The value returned should be a lua table representing a tfm
* there is a new lua table: font. It has one function:
font.read_tfm() that returns a table reprentation of the tfm
contents, for use with the above mentioned callback
(1) Currently, there is still a upper limit of 5500 fonts, because
font identifiers like \tenrm need to point somewhere in the
equivalence table. This limitation will be removed soon.
Most likely things to be buggy or just wrong in this snapshot:
* the interaction between automatically inserted hyphenation
and ligatures (the function reconstitute(), for insiders)
* ligatures with word boundaries.
* I dropped suppport for "Level 1" OFM files. I would like
to have a try at those extended font files, but I lack
examples (fonts nor documents). I am not even sure such
fonts have ever existed in the 'real world'.
My focus for the following week(s) will be on the non-Knuth
parts of the font machinery (virtual fonts, mapfiles, pdf output
of wide fonts).
An unrelated change is the inclusion of version 0.2 of the Lua
"lpeg" library for string matching. See
for full details on usage.
And I've updated the manual, as always (pdf is inside the bz2 file)
Downloading and installation details:
If you go to
you will see that there are two new released files:
This is the source tree.
A cross-compiled (mingw) windows binary. This is a web2c
based binary, so it needs a texmf.cnf file (It will NOT
work if you have only miktex installed).
More information about the dev-luatex