The history of luaTEX 2006–2009 / v 0.50 - Pragma ADE
The history of luaTEX 2006–2009 / v 0.50 - Pragma ADE The history of luaTEX 2006–2009 / v 0.50 - Pragma ADE
Math. Because the TEX Gyre math project is not yet up to speed MkIV currently uses virtual variants of these fonts that are created at run time. The missing pieces in for instance Latin Modern and friends are compensated for by means of virtual characters. Because it is now possible to parse the intermediate noad lists MkIV can do some manipulations before the formula is typeset. This is for instance used for alphabet remapping, forcing sizes, and spacing around punctuation. Although MkIV already supports most of the math that users expect there is still room for improvement once there is even more control over the machinery. This is possible because MkIV is not bound to downward compatibility. As with all other LuaTEX related MkIV code, it is expected that we will have to rewrite most of the current code a few times as we proceed, so MkIV math support is not yet stable either. We can take such drastic measures because MkIV is still experimental and because users are willing to do frequent synchronous updating of macros and engine. In the process we hope to get away from all ad--hoc boxing and kerning and whatever solutions for creating constructs, by using the new accent, delimiter, and radical primitives. tracing and testing Whenever possible we add tracing and visualization features to ConTEXt because the progress reports and articles need them. Recent extensions concerned tracing math and tracing OpenType processing. The OpenType tracing options are a great help in stepwise reaching the goals of the Oriental TEX project. This project gave the LuaTEX project its initial boost and aims at high quality right-to-left typesetting. In the process complex (test) fonts are made which, combined with the tracing mentioned, help us to reveal the secrets of OpenType. 312 Halfway
XXXVI Where do we stand In the previous chapter we discussed the state of LuaTEX in the beginning of 2009, the prelude to version 0.50. We consider the release of the 0.50 version to be a really important, both for LuaTEX and for MkIV so here I will reect on the state around this release. I will do this from the perspective of processing documents because useability is an important measure. There are several reasons why LuaTEX 0.50 is an important release, both for LuaTEX and for MkIV. Let's start with LuaTEX. • Apart from a couple of bug xes, the current version is pretty usable and stable. Details of what we've reached so far have been presented previously. • The code base has been converted from Pascal to C, and as a result the source tree has become simpler (being cweb compliant happens around 0.60). This transition also opens up the possibility to start looking into some of the more tricky internals, like page building. • Most of the front end has been opened up and the new backend code is getting into shape. As the backend was partly already done in C the moment has come to do a real cleanup. Keep in mind that we started with pdfTEX and that much of its extra functionality is rather interwoven with traditional TEX code. If we look at ConTEXt, we've also reached a crucial point in the upgrade. • The code base is now divided into MkII and MkIV. This permits us not only to reimplement bits and pieces (something that was already in progress) but also to clean up the code (only MkIV). • If you kept up with the development you already know the kind of tasks we can (and do) delegate to Lua. Just to mention a few: le handling, font loading and Open- Type processing, casing and some spacing issues, everything related to graphics and MetaPost, language support, color and other attributes, input regimes, xml, multipass data, etc. • Recently all backend related code was moved to Lua and the code dealing with hyperlinks, widgets and alike is now mostly moved away from TEX. The related cleanup was possible because we no longer have to deal with a mix of dvi drivers too. • Everything related to structure (which includes numbering and multi-pass data like tables of contents and registers) is now delegated to Lua. We move around way more information and will extend these mechanisms in the near future. Where do we stand 313
- Page 264 and 265: esult: 1: [+TRT] U+6DD: [-TRT]
- Page 266 and 267: 2: [+TRT] U+F01DD: [-TRT] The
- Page 268 and 269: Pro. Dr. Donld E. Knuth feature cal
- Page 270 and 271: 268 Tracking
- Page 272 and 273: The order in which this happens now
- Page 274 and 275: normalizers characters words fonts
- Page 276 and 277: local function hyphenation(head,tai
- Page 278 and 279: 276 The order of things
- Page 280 and 281: of LuaTEX Taco and I worked in para
- Page 282 and 283: Next we see (scaled) Latin Modern:
- Page 284 and 285: As you can see, it is possible to a
- Page 286 and 287: next: U+FF008 { => U+FF06E { => U+F
- Page 288 and 289: end } commands = { { "slot", 1, bas
- Page 290 and 291: (a,b) = (1.20,3.40) So we don't nee
- Page 292 and 293: } description = "SOLIDUS", directio
- Page 294 and 295: ⎧ ⎪ ⎪ ⎪ ⎨ ⎪ ⎪ ⎪ ⎩
- Page 296 and 297: 840 italic 60 top_accent (0,1020) f
- Page 298 and 299: 296 Unicode math
- Page 300 and 301: tex.print("access") else tex.print(
- Page 302 and 303: 300 User code
- Page 304 and 305: namespace with code not coming from
- Page 306 and 307: • The code denes a few global tab
- Page 308 and 309: ut this now refers to an index in a
- Page 310 and 311: On the agenda is xing some ‘hyphe
- Page 312 and 313: We also use the opportunity to slow
- Page 316 and 317: Tracing on Taco's machine has shown
- Page 318 and 319: node list callback tasks - 4 unique
- Page 320 and 321: pdftex 1.28 (23) 2.07 (144) 6.96 (2
- Page 322 and 323: July 19, 2009 - The number of files
- Page 324 and 325: July 19, 2009 - The relative number
XXXVI Where do we stand<br />
In the previous chapter we discussed the state <strong>of</strong> LuaTEX in the beginning <strong>of</strong> 2009, the prelude<br />
to version <strong>0.50</strong>. We consider the release <strong>of</strong> the <strong>0.50</strong> version to be a really important,<br />
both for LuaTEX and for MkIV so here I will reect on the state around this release. I will<br />
do this from the perspective <strong>of</strong> processing documents because useability is an important<br />
measure.<br />
<strong>The</strong>re are several reasons why LuaTEX <strong>0.50</strong> is an important release, both for LuaTEX and<br />
for MkIV. Let's start with LuaTEX.<br />
• Apart from a couple <strong>of</strong> bug xes, the current version is pretty usable and stable. Details<br />
<strong>of</strong> what we've reached so far have been presented previously.<br />
• <strong>The</strong> code base has been converted from Pascal to C, and as a result the source tree<br />
has become simpler (being cweb compliant happens around 0.60). This transition<br />
also opens up the possibility to start looking into some <strong>of</strong> the more tricky internals,<br />
like page building.<br />
• Most <strong>of</strong> the front end has been opened up and the new backend code is getting into<br />
shape. As the backend was partly already done in C the moment has come to do<br />
a real cleanup. Keep in mind that we started with pdfTEX and that much <strong>of</strong> its extra<br />
functionality is rather interwoven with traditional TEX code.<br />
If we look at ConTEXt, we've also reached a crucial point in the upgrade.<br />
• <strong>The</strong> code base is now divided into MkII and MkIV. This permits us not only to reimplement<br />
bits and pieces (something that was already in progress) but also to clean up<br />
the code (only MkIV).<br />
• If you kept up with the development you already know the kind <strong>of</strong> tasks we can (and<br />
do) delegate to Lua. Just to mention a few: le handling, font loading and Open-<br />
Type processing, casing and some spacing issues, everything related to graphics and<br />
MetaPost, language support, color and other attributes, input regimes, xml, multipass<br />
data, etc.<br />
• Recently all backend related code was moved to Lua and the code dealing with hyperlinks,<br />
widgets and alike is now mostly moved away from TEX. <strong>The</strong> related cleanup<br />
was possible because we no longer have to deal with a mix <strong>of</strong> dvi drivers too.<br />
• Everything related to structure (which includes numbering and multi-pass data like<br />
tables <strong>of</strong> contents and registers) is now delegated to Lua. We move around way more<br />
information and will extend these mechanisms in the near future.<br />
Where do we stand 313