Skip to content

05 Mar 2018 - Liblouis

This release has a number of Braille table improvements, cleanups and meta data enhancements. The most prominent new feature however is probably the much improved test coverage. This has helped in tracing and fixing a number of long standing bugs.

For a detailed list of all the changes refer to the list of closed issues.

New features

  • The same name can now be used in more than one class rule. The effect is that both set of characters become part of that one class.

Bug fixes

  • Fix a regression in inputPositions thanks to Bert Frees
  • Treat characters within the range compbrlStart and compbrlEnd as a special case. This fixes many if not most of the problems with cursor position and the compbrlAtCursor mode. Thanks to Dave Mielke.
  • Fix swapdd opcode thanks to Bert Frees
  • Fix negation of attribute matcher in multipass expressions thanks to Bert Frees

Braille table improvements

  • Add a display table that maps braille dots to brl/brf character set. For an in depth explanation see the corresponding github issue. Thanks to Rimas Kudelis
  • Major Improvements to Unified French Grade 2 thanks to André-Abush Clause
  • Fix braille number input for Greek Braille thanks to Dave Mielke
  • Add a fix for “phad” according to UEB Rule 10.7.3 thanks to Anthony Tibbs
  • Updates to the Urdu tables thanks to Jake Kyle from Compass Braille
  • Updates to the Chinese braille table (zh-tw.ctb) thanks to Bo-Cheng Jhan
  • IPA.utb now contains a more complete list of phonetic symbols, including some that might conflict with other tables. For this reason it is not suitable for inclusion in other tables. A separate table IPA-unicode-range.uti has been added for this purpose. Thanks to Ludovic Oger.
  • The Mongolian table has been improved and there is now also support for grade 2 thanks to Tsengel Maidar.
  • Minor updates to the Danish tables thanks to Bue Vester-Andersen
  • Fix back translation of numbers in Dutch, Finnish and Canadian French, thanks to Leonard de Ruijter.
  • New table for Ukrainian thanks to Sergiy Moskalets.

Other changes

Improved documentation

  • Extend the documentation on multipass opcodes. Thanks to Dave Mielke and Christian Egli.
  • Remove the deprecation note of the ‘=’ dots operand. While there are still problems with back-translation we will not remove support for it. See also the discussion in the github issue.

Improved meta data information in tables

The meta data in the tables such as locale, contraction grade, etc has been improved and is now also used when testing from a YAML test. Thanks to Bert Frees.

Major overhaul of the YAML test suite

Support for proper testing of cursor positions

Due to problems in the cursor position computation the YAML test suite was improved to support proper testing of cursor position also in combination with input, output position and modes. In essence all of the liblouis API is now supported and can be tested via the YAML tests. Thanks to Christian Egli.

Support for table selection via meta data query

The tables to be tested can now be specified via a meta data query in addition to specifying them by filename. See the documentation for more details. Internally the YAML tests have been split up into tests that test the braille translation for a particular locale (now located in tests/braille_specs) and tests that check a specific feature of liblouis. Thanks to Bert Frees.

Deprecation notice


Backwards incompatible changes

  • The translation mode comp8Dots has been removed as it was never really implemented anyway
  • Support for the pass1Only flag has now been removed. Thanks to Bue Vester-Andersen.
  • The old UEB tables UEBC-g1.ctb and UEBC-g2.ctb have been removed as the have been superseded by en-ueb-g1.ctb and en-ueb-g2.ctb.
  • The french tables fr-2007.ctb, fr-fr-g1.utb, fr-fr-g2.ctb, fr-ca-g1.utb and fr-ca-g2.ctb have been removed. Use fr-bfu-comp6.utb for 6 dots literary, fr-bfu-comp8.utb for 8 dots computer and fr-bfu-g2.ctb for contracted braille instead.

New, renamed or removed tables


  • IPA-unicode-range.uti
  • mn-MN-g2.ctb
  • uk.utb


  • mn-MN.utb -> mn-MN-g1.utb


  • fr-2007.ctb
  • fr-ca-g1.utb
  • Fr-Ca-g2.ctb
  • fr-fr-g1.utb
  • Fr-Fr-g2.ctb
  • UEBC-g1.ctb
  • UEBC-g2.ctb