The SILE Typesetter — Simon’s Improved Layout Engine
MIT License
Bot releases are hidden (Show)
This release brings a few bug fixes, most notably unscrambling Arabic (and some other complex script) shaping. Since current work in process includes significant changes to the document class API and these fixes have been sitting around for a while I figured it was time to give them a release number before anything potentially more disruptive lands.
Feature-wise the only significant improvement is complete coverage for all element types in the Pandoc document AST, enabling any converted documents to compile without errors. They might not be pretty out of the box yet, but at least they render and can be styled by adding or modifying commands.
Published by alerque over 4 years ago
Most of the changes in this maintenance release are related to the build and packaging system, with a notable exception of the manual. Many more packages have been documented and the manual has seen quite a bit of copy-editing. For users of the docbook class, the default monospace font has changed from Dejavu Sans to Hack.
One new feature added to the TeXlike input language now allows single quotes to be escaped (\"
) to appear in the value of options passed to a command.
In the installation department, two new option flags for ./configure
have been added, --with-manual
and --with-examples
. Both are off by default. Enabling these flags will cause a copy of the manual and examples respectively to be installed to your system's $docsdir
. These PDFs are included pre-built in the source package, but not installed anywhere by default.
make busted
as PHONY so it always runs (23b81ac)make dist
on systems without native lua packages (5758085)Published by alerque over 4 years ago
This maintenance release fixes a number of small bugs that have cropped up in production use of the v0.10 series. Using the frametricks package no longer causes crashes, your table of contents justification won't be wonky, and passing functions as content is working as expected again. As an added bonus it is possible to process the content passed to functions / macros more than once if desired.
One minor new feature slipped in as well. In addition to the letter-space system that added glue nodes between every glyph there is now a setting for true tracking (that won't break hyphenation or other features). Packages might also appreciate the improved dependency detection and quick self-check that verifies everything is in working order without running the whole test suite.
Note that while Lua 5.4.0 was released a couple days ago, this release officially only supports Lua through the latest 5.3 release. It may or may not work on Lua 5.4 yet, we haven't tested.
make check
fast self-check target, fixes #835 (89cefef)Published by alerque over 4 years ago
Most of the changes in this release are either related to the tooling to build and package it smoothly or minor. Some English users might appreciate that their Table of Contents headers for otherwise English books aren't localized in Turkish, and Japanese users will have an easier time with their Tate layouts because they cooperate with the new measurement systems introduced in v0.10.
Not properly mentioned in the ChangeLog is a tweak that allows Glues to be cast to Lengths. This makes it much easier to create measurements based on existing nodes as references.
typesetter.breakwidth
a measurement (721280d)Published by alerque over 4 years ago
This release is essentially the same as v0.10.2, but with all the Lua module dependencies bundled again. The previous release would only build either with system provided Lua dependencies or with internet access to download them via luarocks
; it was not fully self contained and hence could not be built on some systems.
Published by alerque over 4 years ago
This release primarily fixes minor packaging issues. The biggest change is this will be the first release with an officially supported Ubuntu PPA!
Published by alerque over 4 years ago
See the included CHANGELOG.md or review the commit history for more explicit details.
This is a small follow up to the v0.10.0 release last week to fix a regression that cropped up and add deprecation warning messages. The last release went out with several major changes, particularly to the node and length APIs. Compatibility shims are in place so that old code still works for now, but this adds warning messages to make it easier to find and track down things that need updating.
Additionally since the last release cycle Docker images have been made available, and now support mapping system fonts into the Docker image.
Published by alerque almost 5 years ago
See the included CHANGELOG.md or review the commit history for more explicit details.
Most of the many, many improvements in this release are under the hood.
The build and test systems have been significantly overhauled, the release process has been streamlined and partially automated, continuous integration now tests code quality and commit messages, and there has been an enormous amount of code refactoring.
All of these things make for a more readable code base and a more reliable and maintainable development environment, which we hope will facilitate SILE development in the future.
Creating installers should be easier for most platforms than in previous releases, and we hope future releases will come with more pre-built packages.
There are also some user-facing improvements:
luarocks
or their system's package manager, use the --with-system-luarocks
argument to ./configure
.--trace
option) the stack of commands it took to get there.nth
, and as words using the string
display type.text
backend is available to dump a text-only version of the rendering process.sile -m
will output a Makefile snippet showing all the files required to build a SILE document.toc=false
option to a book section or subsection will cause it not to be added to the table of contents.This removes the auto-guessing file extension mechanism that allowed *.sil files to be loaded without specifying the full file name with extensions.
A command like sile test
will no longer find and build sile.sil, you must run sile test.sil
.
The mechanism that was doing this was a hack than only worked in some scenarios anyway, and dropping it instead of trying to cover all the edge cases will make it that much easier to use and document.
Importantly it avoids edge cases where both *.xml, *.sil, and/or *.lua files all have the same name and the loader really has so idea which one you mean.
Note that packages may still be loaded with no file extension, this does not affect the require()
mechanism that looks for *.lua and various other incantations by default.
This release renames and deprecates many internal functions and classes.
Most notably the default library used for class models has changed from std
to penlight
.
Old methods are still available for now, but those developing external Lua packages and classes will want to check the wiki for instructions on how to update their code.
The next release cycle will start throwing warnings when these deprecated functions are called, and the following cycle will remove them entirely.
Published by simoncozens almost 6 years ago
New in v0.9.5:
Experimental package manager.
The "smart" bare percent unit (where SILE guessed whether you meant height or width) has now moved from deprecated to error. Replace with %pw
etc.
Language support: variable spaces in Amharic (and other languages if enabled with the shaper.variablespaces
setting), improvements to Japanese Ruby processing, Uyghur hyphenation revisited and improved, Armenian hyphenation added.
You can now set the stretch and shrink values of a space using the shaper.spaceenlargementfactor
, shaper.spaceshrinkfactor
and shaper.spacestretchfactor
settings.
You can use -
as input filename to pipe in from standard input, and -
as output filename to pipe generated PDF to standard output.
New letter
class.
New commands: \neverindent
and \cr
New units: ps
(parskip) and bs
(baselineskip)
Links generated via the url
package are hyperlinked in the PDF.
You can now style folios (page numbers) by overriding the \foliostyle
macro.
Languages may define their own counting functions by providing a counter
function; you may also lean on ICU's number formatting to format numbers.
ICU is now required for correct Unicode processing.
Experimental support for SVG graphics and fonts. (see tests/simplesvg.sil
)
Users may select the Harfbuzz subshaping system used (coretext
, graphite
, fallback
etc.) by setting the harfbuzz.subshapers
setting.
Fix typos in documentation (Thanks to Sean Leather, David Rowe).
Most other changes in this release are internal and non-user-visible, including:
Introduced vertical kern nodes.
Various fixes to pushback (end of page) logic, bidi implementation. ICU is now used for bidi.
Updated various examples to work with current internals.
Many and varied internal fixes and speedups, and improved coding style.
Published by simoncozens about 8 years ago
Nearly 600 changes, including:
width=50%
etc.)and much more besides.
Published by simoncozens about 9 years ago
Published by simoncozens over 9 years ago
./configure; make
strategy.