The SILE Typesetter
  • Home
  • What is SILE?
  • Examples
    • Global Scripts
    • Packages
  • Manual (PDF)
  • Lua API
  • Rust API
  • SIL Grammar
  • Download
GitHub

SILE v0.10.14 Is Released

03 Feb 2021 — Caleb Maclennan

Version v0.10.14 of SILE has been released and is available for download! See the included CHANGELOG.md or review the commit history for more explicit details.

Summary of Improvements

This release introduces a new dependency on an external Lua UTF-8 string handling library. By introducing proper string handling instead of our home grown functions we knocked out several bugs including invalid encoding in the output when error tracing was turned on. We also added some (ironically, home grown) UTF-16 string handling to sanitize output of Font meta data.

Features

  • core: Make luautf8 library available in global scope (ab7e745)

Bug Fixes

  • build: Run autoupdate to fix autoconf issues (ab8307b)

  • core: Decode UTF-16BE strings in Windows platform name entries (e7662f8)

  • debug: Use UTF8 safe substring function in trace stack (495a5bf)

  • manual: Small error (d738b62)

SILE v0.10.13 Is Released

30 Nov 2020 — Caleb Maclennan

Version v0.10.13 of SILE has been released and is available for download! See the included CHANGELOG.md or review the commit history for more explicit details.

Summary of Improvements

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.

Features

  • classes: Allow footnotes in plain class if package loaded (42c1ceb)
  • classes: Run deferred package init() on late load (0224fe3)

Bug Fixes

  • backends: Add complex shaping data to debug backend (a1a6509)

  • backends: Don't crash if debug output precedes regular (19c21f2)

  • build: Don't abuse libtool internals (for NetBSD packaging) (#1084) (048c8b5)

  • classes: Define \strong weight=700, not 600 (#1097) (68abf91)

  • packages: Add default options to simpletable (1f10c97)

  • packages: Correct math operations on grid spacing (5286188)

  • packages: Turn off complex flag for items in \latin-in-tate (b20690f)

SILE v0.10.12 Is Released

10 Oct 2020 — Caleb Maclennan

Version v0.10.12 of SILE has been released and is available for download! See the included CHANGELOG.md or review the commit history for more explicit details.

Summary of Improvements

This release fixes just two bugs. The simpler of the stops custom styles in verbatim blocks. Much more urgently, a backend fix correctly accounts for offsets calculated during the shaping process and stops resetting the PDF cursor position. This issue primarily broke Arabic, but typesetting any fonts with cursive positioning or mark placement rules were affected.

Bug Fixes

  • backends: _drawString should take an offset (#1079) (594ae03), closes #1078

  • packages: \verbatim:font can process text (#1076) (eb4fb1a)

SILE v0.10.11 Is Released

25 Sep 2020 — Caleb Maclennan

Version v0.10.11 of SILE has been released and is available for download! See the included CHANGELOG.md or review the commit history for more explicit details.

Summary of Improvements

This release supports versions of Lua Penlight newer than 1.8.0. Previous releases of Penlight have contained a long-standing bug in the class inheritance system that we were side-stepping with our own workaround. In one case our workaround was actually relying on a side-effect of said Penlight bug and never should have worked. With a proper fix finally implemented in Penlight, our workaround started to fail. This release includes an emergency patch so that SILE can be made to work on systems with the latest Penlight release. Future releases will likely remove our workarounds entirely and require a recent version of Penlight with the fixed class inheritance system.

Additionally, this is the first release that officially supports running SILE as a GitHub Action. You can now call SILE directly in CI workflows on your own projects.

Other cleanup work now allows classes to specify their own framesets without inheriting the default ones. This has no visible effect for most documents but it does make debugging framesets a lot easier because there aren’t a bunch of empty frames behind the scenes inherited from other classes.

With special thanks to contributions from Fredrick Brennan, SVG support is much improved in this release. Specifically, shapes with holes now actually render as holes. Also, thanks to Johannes Maibaum’s contributions and careful eye, many examples from the manual which had fallen behind or had typos now actually work as documented.

Features

  • actions: Add configuration file to run as GitHub Action (ee2d509)
  • backends: Modify setCursor() to handle relative movements (7caa9c8)
  • classes: Make it possible to not use parent class framesets (99b9f50)
  • cli: Add Lua interpreter info to --version (bf5210d)

Bug Fixes

  • backends: Properly switch between normal and debug fonts (b53896e)
  • classes: Identify triglot class as triglot not diglot (495654a)
  • classes: Make declareFrames() workable by passing ids (27b6b4a)
  • classes: Move class setup code into deferred class:init() (6f470d7)
  • core: Patch Penlight 1.9.0 compatibility issue (1eb4290)
  • packages: Allow Hanmen frame creation to use optional ID arg (7853d5a)
  • packages: Fix hole drawing from svg in PDF (6521fd0)
  • packages: Remove extra space in \code in url (b90cd37), closes #1056
  • tooling: Expand variables so fonts are known dependencies of tests (88ac888)

Performance Improvements

  • backends: Reuse variables instead of recalculating values (02cce40)

SILE v0.10.10 Is Released

14 Aug 2020 — Caleb Maclennan

Version v0.10.10 of SILE has been released and is available for download! See the included CHANGELOG.md or review the commit history for more explicit details.

Summary of Improvements

This release is the first to fully support LuaJIT. For systems with a LuaJIT interpreter available this brings a full 2× speed improvement to rendering your documents over standard Lua interpreters. This speed increase is not without downsides though. Most available JIT versions do not have full Lua debugging functionality built in, limiting the usefulness of some of SILE’s warning messages and especially the trace functionality. A LuaJIT build is probably what you want to use when working on content and re-rendering your documents over and over, but it may not be the best choice for doing development work, coding up your classes and functions, and so forth. To make the switch, add the configuration flag ./configure --with-luajit, then compile and install as usual. In the event you want to keep both versions around, it is actually possible to install both. SILE fully supports GNU Automake’s program name transformations, you can specify a prefix, suffix, or complete alternate name to install under. See ./configure --help for details, but --program-suffix=-luajit is one way to get a sile-luajit executable that could be used alongside sile.

A few functions have been renamed and their old versions deprecated. If any of your code calls outputter functions directly these calls will need to be modified to be uniformly serf-referential method calls (i.e. :method() instead of .method()). This makes the outputter API consistent between backends, but may be a breaking change for some. Several other functions have been renamed and their old names deprecated. For these warning messages will be thrown for now, and the next version series (0.11.x) will deprecate them entirely. The most notable rename is \include-svg-file is now just \svg. In addition to the rename you can now specify a desired size by width instead of only by height.

In smaller news a large number of small fixes now draw frame debugging lines in exactly the right place instead of next to the right place, mark PDF bookmark locations at the top of the current line instead of the bottom, draw rules in the correct writing and advance directions for RTL and BTT frames. Other fixes include keeping Japanese language and tate functions from taking over documents. The \center command now disables line indentation so content is centered as expected, and attempting to set indentation after the start of a paragraph will throw a useful warning.

Features

  • build: Detect and use luajit first (601dfc4)
  • build: Detect LuaJIT if explicitly configured to want it (c3e8089)
  • classes: Add warning to \noindent if called after input (f29b9d9)
  • packages: Allow scaling SVGs by width or height (44588b5)
  • settings: Add a way to reset single setting to defaults (f318cdf)
  • settings: Bring Lua settings.set to parity with \set (d73b08c)

Bug Fixes

  • classes: Reset parindent's inside \center command (7b62f74)

  • core: Always compare like-types so LuaJIT can run (c608090)

  • core: Don't read zero-length name table entries (bcd9a9e), closes #1015

  • examples: Properly center title in showoff document (55717fb)

  • frames: Discard content (usually whitespace) inside \pagetemplate (3b7085b)

  • frames: Draw frame debug lines exactly on frame lines (db92edc)

  • languages: Stop Japanese resetting global chapter post macro (836f199)

  • packages: Align pullquote ending mark with outside margin (8b808db)

  • packages: Draw rules in the writing direction (18bca68)

  • packages: Error if asked to add bogus dependencies (59e2b56)

  • packages: Fix indentation of second paragraph in pullquotes (a8525e5)

  • packages: List \include files in makedeps (bf670ab)

  • packages: Orient rules for all 8 directions (bc4a33a)

  • packages: Place PDF bookmarks at top of current line (ce30d83)

  • utilities: Use deterministic sort for sorted pairs (99e2b59)

« Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Next »