liblouis 2.6.3 has been released

The liblouis developer team is proud to announce the liblouis release
2.6.3 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 and Orca. A companion project
liblouisutdml[2] deals with formatting of braille.

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

Given the release number you might think this is only a minor release.
However looking at the number of developers who contributed to it and
the number of pull requests and issues that were solved this turns out
to be a very impressive and solid release. Most prominently we have a
new function to discover tables based on meta data in table headers.
Also makeinfo is no longer required to build liblouis. And lastly we
have numerous improvements in Braille tables such as Korean,
Vietnamese and UEB to name just a few.

New features
~~~~~~~~~~~~

- [beta] The new function lou_findTable can be used for table
  discovery based on meta data in table headers. Thanks to Bert Frees.
- The Python API now has a new function to check tables aptly named
  `checkTable'. Thanks to Davy Kager.

Bug fixes
~~~~~~~~~

- Fixed a problem in resolveTable when using a Java resolver, thanks
  to Bert Frees

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

- The build dependency on makeinfo is now optional. If it is not
  installed we simply do not build the documentation.

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

- Improvements to Bengali, Devanagari, Kannada, Gujarati, Malayalam,
  Telugu and Oriya, thanks to Sreeja Param
- Corrections and improvements made to en-GB tables thanks to Paul
  Wood
- Vast restructuring to Korean tables. In 2006 the Institute for
  Korean Braille modified some dots in Korean Braille. Specifically,
  some punctuation dots are now based on English. To accommodate this
  change and to retain the old tables, the Korean table set was
  revised as follows:
  - Added three files: ko-chars, the Korean characters dictionary, and
    rules for g1 and g2.
  - ko-g1 and ko-g2 are now interface files that includes needed
    files.
  - Added three files for Korean Braille 2006 revision along with a
    test harness.
- New table for Polish 8 dot computer braille. Thanks to Karol Pecyna.
- New table for Vietnamese 6 dot. Thanks to Harri Pasanen.
- Corrections and improvements made to UEB tables thanks to Paul Wood
  - Typeform passage indicators
  - Degree sign
  - Dash signs
  - Math signs
  - Accent modifiers
  - Accented letters

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

The next release will be published on August 31 2015 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

