liblouis 3.4.0 has been released

The liblouis developer team is proud to announce the liblouis release
3.4.0. The release is available for download at:

    https://github.com/liblouis/liblouis/releases

Introduction
============

Liblouis is an open-source braille translator and back-translator. It
features support for computer, literary and math braille, supports
contracted and uncontracted translation for many, many languages[1].
It plays an important role in an open source accessibility stack and
is used by screenreaders such as NVDA, Orca and JAWS. A companion
project liblouisutdml[2] deals with formatting of braille.

Changes in this release
=======================

This release brings together a lot of work by lots of different
people. Probably the most prominent fix is the work on output
positions by Bue and Bert. NVDA should benefit from this. Then there
are new and massively improved tables like the Lithuanian 6-dot table
by Rimas or the improved back-translation for French by Michel and
André-Abush to name just a few. There are too many contributors to
name them here, thanks to them all.

For a detailed list of all the changes refer to

    https://github.com/liblouis/liblouis/milestone/14?closed=1

New features
~~~~~~~~~~~~
- Add support for `inputPos' and `outputPos' checking in
  `lou_checkyaml' thanks to Bue Vester-Andersen. See the manual for
  details and examples.


Bug fixes
~~~~~~~~~
- output positions (`outputPos') are now calculated based on input
  positions (`inputPos') thanks to Bert Frees. This avoids a whole
  class of bugs that previously plagued the output positions. This fix
  also obviates the need for the `pass1Only' flag. See below for the
  deprecation notice.


Braille table improvements
~~~~~~~~~~~~~~~~~~~~~~~~~~

- Addition of Nemeth and Kangxi radical characters and other
  improvements to Chinese braille (`zh-tw.ctb') thanks to Bo-Cheng
  Jhan and 黃偉豪.
- Improvements to the Spanish chardefs table thanks to Luis Lorente
  Barajas and Simon Aittamaa.
- Fixed a lowercase ó in Spanish first reported for NVDA thanks to
  Sukil Etxenike.
- New Norwegian 6-dot display braille table for Braillo embossers
  thanks to Lars Bjørndal
- Added a bunch of whitespace-like codepoints as spaces thanks to
  Rimas Kudelis
- Added Lithuanian 6-dot table thanks to Rimas Kudelis.
- Addition of more characters to the French tables thanks to Samuel
  Thibault
- Improvements to the Hungarian tables thanks to Attila Hammer
- Improvements to the Mongolian tables thanks to Tsengel Maidar
- Fix some math signs in Czech Braille (`cs-chardefs.cti'). Thanks to
  Christian Herden of ViewPlus for reporting this.
- Updates to the SEB British Braille Tables thanks to Paul Wood
- Massive improvements to French back-translation thanks to Michel
  Such and André-Abush Clause

Other changes
~~~~~~~~~~~~~

Improved documentation
----------------------
- Bue Vester-Andersen added some notes about back-translation and
  documented all possible values of the `mode' parameter. Also the
  description of `decpoint' and `litdigit' was improved.
- The `match' opcode is now documented thanks to Mike Gray and
  Christian Egli.


lou_maketable
-------------
Numerous bug fixes and performance enhancements thanks to Bert Frees


Code refactoring
----------------
Many global variables have been removed thanks to Bert Frees


Code formatting
---------------
Thanks to clang-format There is now a uniform coding style over the
whole code base


Fix broken NMakefile
--------------------
Thanks to Davy Kager building with nmake should work again


Deprecation notice
~~~~~~~~~~~~~~~~~~
The `pass1Only' flag has been deprecated. Its use should be avoided,
and it will be completely removed from the code in the next version of
Liblouis. When using the `pass1Only' flag in this release you will get
a warning.


Backwards incompatible changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
None


New, renamed or removed tables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

New
---
- no-no-braillo-047-01.dis
- lt-6dot.utb


Renamed
-------
None


Removed
-------
None

Next release
============

The next release will be published on March 5 2018 so please keep up
the excellent work and keep those improvements coming.

Share and Enjoy!

-- Christian Egli, on behalf of the liblouis developers

Footnotes
=========

[1]  See https://github.com/liblouis/liblouis/tree/master/tables
[2]  See https://github.com/liblouis/liblouisutdml
