Optical letter spacing

optical-letter-spacingInasmuch as “Optical letter spacing for new printing systems” by David Kindersley (London: The Wynkyn de Worde Society, 1976, 2nd revised edition) was described as a significant book by the website from where I bought it, I was disappointed that, for all its significance, it reports only inconclusive, intermediate results of experiments on determining optical letter spacing. I was surprised, therefore, to see “but a method of proportionate letter-spacing by computer has been explained by David Kindersley” in “Methods of Book Design” (3rd Edition, Yale University Press, 1983) by Hugh Williamson.  Maybe there’s something in it that others can see but I can’t.

Towards the end, it says “I would like to say that there has never been a moment like today where perfect spacing was more possible.”  That statement from the second edition has probably been true for every year since the first, 1966 edition.  However, we have computing power today that was undreamed of in either 1966 or 1976, so you’d think that by now we would have moved from optical letter spacing being ‘more possible’ to it being practical everywhere.

Type can be an aesthetic delight

Inasmuch as the “Type” in the opening sentence of The Relationship between Type and Illustration by A. P. Tedesco illustrates what the text is saying, I was quite taken by it:

Type alone when used properly with correct sizes, proper leading and proportioned well on the page and carefully printed, can be an aesthetic delight, because of its beauty, color and harmony. The typographer can embellish type with many available type borders and typographic ornaments which add a decorative touch to the printed page.

It also illustrates a use of initial capitals (to use the term very loosely, since it’s an initial word) that you can’t achieve with either XSL-FO or CSS. You could do it manually with XSL-FO by using side floats to push text out of the way of the initial “Type”, and even creating that would need a few iterations if you’re going to correctly optically align the stem of the “T” with the left edge of the text block.

You could, of course, argue that the aesthetics would have been better if the “Type” was slightly smaller so that the bottom of the descenders on “yp” aligns with the baseline of the third text line. However, we’ll never know whether the “Type” is the size it is because that was the best size available or if, for the sake of aesthetics, they pushed the size of the “Type” to the maximum to minimize the white-space between “Type” and the “alone” on the first line.

AH Formatter MathML fonts on Linux

Inasmuch as AH Formatter supports MathML 3.0 but on Linux ships with a minimal font-config.xml file, if you are formatting non-trivial MathML on Linux, then you’ll probably need to add some mathematical fonts to your font-config.xml.

identity-matrixIf x2y2 counts as trivial because you could do it with “ordinary” fonts, then non-trivial would include anything requiring “stretchy” characters, such as the identity matrix example from the MathML 3.0 spec that is shown on the right rendered without and with mathematical fonts. AH Formatter on Linux uses the STIX fonts by default, so the simplest way to get your MathML rendering correctly is to make sure that the STIX fonts are installed and that AH Formatter will use them. Continue reading

VMware guest screensaver on Linux host

Inasmuch as it’s annoying when the VMware guest’s screensaver controls screen blanking only up until your mouse strays off the guest’s window and then the host’s screensaver kicks in and blanks the screen again, you can add this to /etc/vmware/config on a Linux host:

mks.fullscreen.allowScreenSaver = "yes"
mks.windowed.allowScreenSaver = "yes"
mks.x.screenSaverTimeout = 590

From Setting Linux Host Screensaver Options in the Workstation Global Configuration File, mks.fullscreen.allowScreenSaver and mks.windowed.allowScreenSaver enable the host screensaver in full screen and windowed modes, respectively, and a mks.x.screenSaverTimeout of 590 seconds sets VMware to ‘ungrab’ the keyboard and mouse shortly before the host screensaver kicks in after 10 minutes of inactivity.

No more competing screensavers, but after VMware ‘ungrabs’ the keyboard and mouse, you do need to click the mouse in the VMware guest’s window so it will ‘grab’ them again, and you can then use the guest as normal.

Validating XSL-FO

Inasmuch as it’s something that people ask for, I demoed in the DemoJam at XML Prague that I’d been working on a Relax NG schema and Schematron rules for validating XSL-FO. Most of both the schema and the Schematron were generated directly from the XML source for the XSL 1.1 Recommendation. Additionally, the Schematron used a parser written in XSLT for handling the XSL-FO expression language, so the Schematron could evaluate property values rather than just matching on property value strings.

Relax NG and Schematron validation in oXygen

There was also an oXygen add-on framework in the works, and, naturally, the schema and Schematron also covered Antenna House extensions.

If you look at the screenshot, you’ll see:

  • Schematron error for the interrelated <axf:document-info> elements.
  • No error for ‘column-count="-1 - -2"‘ because the value evaluates as a positive integer.
  • oXygen ‘tooltip’ information for fo:block extracted from the XML for the XSL 1.1 Recommendation.
  • The ‘neutral’ and ‘out-of-line’ formatting objects, as well as the XSL 1.1 ‘point’ fo:change-bar-begin and fo:change-bar-end formatting objects that can appear anywhere inside a fo:flow, are available where they are allowed.
  • Schematron error for the invalid font-size value.