(Note: This blog post was edited when the proof of concept example was moved from a package in an unreleased branch to this website’s example section.)
The ever-excellent xkcd has produced a table of full-width justification strategies:
Naturally, SILE can support snake-based justification.
Check out the code in the “Snake Justification” example on this site.
You can see the result in PDF form here, and it looks like this:
Because SILE is an extremely flexible typesetting engine, this took less than 20 lines of Lua code to implement.
We have been doing lots of other SILE development too, but snakes are fun.
For users on OS X, SILE has been added to the homebrew package manager. This means that the easiest way to install SILE is now:
- Install homebrew from the web site
- Run
brew install sile
- You’re done
Version v0.9.2 of SILE has been released and is available for download.
-
New packages for: rotated content, accessing OpenType features and ligatures, alternative input of Unicode characters, PDF bookmarks and links, input transformation.
-
Packages to help with typesetting chord sheets and bibles.
-
Experimental packages for bibliography management, typesetting URLs, Japanese vertical typesetting, balanced columns, and best-fit page breaking.
-
Support for quoted strings in the parameters to TeX-like commands.
-
Language support: Many fixes to Arabic; support for Tibetan and Kannada; hyphenation for many languages; much improved bidirectional typesetting.
-
Warn when frames are overfull.
-
Support for older versions of autotools, for Lua 5.3 and mingw32 environments.
-
Continuous integration and testing framework
-
Fixes to long-standing bugs in grid support, centering, ligatures, insertions and page breaking.
-
Better font handling and substitution.
-
Valid PDFs will still be generated on error/interruption.
-
Improved error handling and error messages.
-
Many miscellaneous bug fixes.
What’s Happening In SILE Development Valentines Edition
Here are a few interesting things that have been going on lately. If you are interested in SILE, you should probably try using SILE from the repository head.
-
Support has been added for OpenType features! SILE now supports all your historic ligatures, swash characters, stylistic sets, kerning, fractions, diacritics, CJK shaping and character width, and any other clever things that your font can do.
-
A subtle but pernicious bug in the line-breaking engine has been fixed! This only manifested itself when centering paragraphs. Previously, centered paragraphs would fill from the final line upwards, leaving a few orphaned words on the first line. Now, it correctly fills from the first line down.
-
Support has been added for compiling with older versions of autotools, libpng and so on; if you couldn’t get SILE to compile before, you should now.
-
SILE originally supported Lua version 5.1, but after adding compatibility for 5.2, main development broke 5.1. 5.1 compatibility has been restored, so SILE now works on both versions.
-
Simon gave a talk to the FOSDEM conference explaining SILE’s development and design philosophy. We’ll post the video as soon as it’s available.
Version v0.9.1 of SILE has been released and is available for download.
-
The main change in this release is a new shaper based on Harfbuzz and a new PDF creation engine. This has greatly improved the output quality on Linux, as well as bringing support for multilingual typesetting and allowing future support of interesting PDF features. (It’s also much faster.)
-
The new PDF library also allows images to be embedded in many different formats, rather than just PNG.
-
Documents can now be written in right-to-left languages such as Hebrew or Arabic, and it’s possible to mix left-to-right and right-to-left text arbitrarily. (Using the Unicode Bidirectional Algorithm.) Please see the examples to the left.
-
Initial support for languages such as Japanese which have different word/line breaking rules.
-
Frames can be grouped into a set called a "master", and masters can be used to set the frame layout of a given page.
-
Hopefully a much easier installation process, by bundling some of the required Lua modules and using the standard autoconf ./configure; make
strategy.
-
Support for Lua 5.2.