~~~~~~~~~~~~~~~~~~
Contraction Tables
~~~~~~~~~~~~~~~~~~

.. include:: prologue.rst

Description
===========

Files with names of the form ``*.ctb`` are contraction tables, and with names
of the form ``*.cti`` are contraction subtables. They are used by BRLTTY to
translate character sequences on the screen into their corresponding contracted
braille representations.

Contraction tables can usually be found in the ``/etc/brltty/Contraction/``
directory (see |README.Customize| for more details). SEe
`Contraction Table list`_ for a list of BRLTTY's contraction tables.

A contraction table consists of a sequence of directives, one per line, that 
define how character sequences are to be represented in contracted braille.
UTF-8 character encoding must be used. Whitespace (blanks, tabs) at the
beginning of a line, as well as before and/or after any operand, is ignored.
Lines containing only whitespace are ignored. If the first non-whitespace
character of a line is ``#`` then that line is a comment and is ignored.

Contraction Directives
======================

The format of a contraction directive is:

.. parsed-literal:: *directive* *operand* ... *comment*

Each directive has a specific number of operands. Any text beyond the last 
operand of a directive is interpreted as a comment. This commenting capability
is often used to list some of the words that make the directive necessary.

The order of the directives within a contraction table is, in general, anything
that is convenient for its maintainer(s). A directive that defines an entity,
e.g. `The Class Directive`_, must precede all references to that entity.

Directives that match character sequences are automatically rearranged such
that longer sequences are matched first. If more than one directive matches the
same character sequence then their original table ordering is maintained.

Whenever a character needs to be written, its representation as defined via
`The Always Directive`_ is used. In principle, this means that every character
within the *representation* operand of every contraction directive should be
explicitly defined via `The Always Directive`_. If a character's representation
hasn't been defined then the Unicode Replacement Character (U+FFFD) is used -
if it's representation hasn't been defined then all eight dots are used.

The Literal Directive
---------------------

.. parsed-literal:: literal *characters*

Translate the entire whitespace-bounded text containing the character sequence
into computer braille.

The Always Directive
--------------------

.. parsed-literal:: always *characters* *representation*

Unconditionally translate the characters no matter where they appear. If
there's only one character, then, in addition, define the default
representation for that character.

The Repeatable Directive
------------------------

.. parsed-literal:: repeatable *characters* *representation*

Unconditionally translate the characters no matter where they appear. Ignore
any consecutive repetitions of the same sequence.

The LargeSign Directive
-----------------------

.. parsed-literal:: largeSign *characters* *representation*

Unconditionally translate the characters no matter where they appear. Remove
whitespace between consecutive words matched by this directive.

The LastLargeSign Directive
---------------------------

.. parsed-literal:: lastLargeSign *characters* *representation*

Unconditionally translate the characters no matter where they appear. Remove
preceding whitespace if the previous word was matched by
`The LargeSign Directive`_.

The Word Directive
------------------

.. parsed-literal:: word *characters* *representation*

Translate the characters if they're a word.

The JoinWord Directive
----------------------

.. parsed-literal:: joinWord *characters* *representation*

Translate the characters if they're a word. Remove the following whitespace if
the first character after it is a letter.

The LowWord Directive
---------------------

.. parsed-literal:: lowWord *characters* *representation*

Translate the characters if they're a whitespace-bounded word.

The Contraction Directive
-------------------------

.. parsed-literal:: contraction *characters*

Prefix the characters with a letter sign (see
`The LetSign Directive`_) if they're a word.

The SufWord Directive
---------------------

.. parsed-literal:: sufWord *characters* *representation*

Translate the characters if they're either a word or at the beginning of a
word.

The PrfWord Directive
---------------------

.. parsed-literal:: prfWord *characters* *representation*

Translate the characters if they're either a word or at the end of a word.

The BegWord Directive
---------------------

.. parsed-literal:: begWord *characters* *representation*

Translate the characters if they're at the beginning of a word.

The BegMidWord Directive
------------------------

.. parsed-literal:: begMidWord *characters* *representation*

Translate the characters if they're either at the beginning or in the middle of
a word.

The MidWord Directive
---------------------

.. parsed-literal:: midWord *characters* *representation*

Translate the characters if they're in the middle of a word.

The MidEndWord Directive
------------------------

.. parsed-literal:: midEndWord *characters* *representation*

Translate the characters if they're either in the middle or at the end of a
word.

The EndWord Directive
---------------------

.. parsed-literal:: endWord *characters* *representation*

Translate the characters if they're at the end of a word.

The PrePunc Directive
---------------------

.. parsed-literal:: prePunc *characters* *representation*

Translate the characters if they're part of punctuation at the beginning of a
word.

The PostPunc Directive
----------------------

.. parsed-literal:: postPunc *characters* *representation*

Translate the characters if they're part of punctuation at the end of a word.

The BegNum Directive
--------------------

.. parsed-literal:: begNum *characters* *representation*

Translate the characters if they're at the beginning of a number.

The MidNum Directive
--------------------

.. parsed-literal:: midNum *characters* *representation*

Translate the characters if they're in the middle of a number.

The EndNum Directive
--------------------

.. parsed-literal:: endNum *characters* *representation*

Translate the characters if they're at the end of a number.

Character Classes
=================

The Class Directive
-------------------

.. parsed-literal:: class *name* *characters*

Define a new character class. A character class may not be used until it has
been defined.

The After Directive
-------------------

.. parsed-literal:: after *class* *directive*

The specified directive is further constrained in that the matched character
sequence must be immediately preceded by a character belonging to the specified
class. If this directive is used more than once on the same line then the union
of the characters in all the classes is used.

The Before Directive
--------------------

.. parsed-literal:: before *class* *directive*

The specified directive is further constrained in that the matched character
sequence must be immediately followed by a character belonging to the specified
class. If this directive is used more than once on the same line then the union
of the characters in all the classes is used.

Indicator Specification
=======================

The CapSign Directive
---------------------

.. parsed-literal:: capSign *representation*

Define the symbol which capitalizes a single letter.

The BegCaps Directive
---------------------

.. parsed-literal:: begCaps *representation*

Define the symbol which begins a block of capital letters within a word.

The EndCaps Directive
---------------------

.. parsed-literal:: endCaps *representation*

Define the symbol which ends a block of capital letters within a word.

The LetSign Directive
---------------------

.. parsed-literal:: letSign *representation*

Define the symbol which marks a letter which isn't part of a word.

The NumSign Directive
---------------------

.. parsed-literal:: numSign *representation*

Define the symbol which marks the beginning of a number.

Special Directives
==================

The Replace Directive
---------------------

.. parsed-literal:: replace *characters* *characters*

Translate the first character sequence into the second character sequence.
The replacement characters are then recontracted.

The Emoji Directive
-------------------

.. parsed-literal:: emoji *language*

Translate an emoji character sequence into its description in the specified
language. The language operand is an ISO 639 two-letter language code.

This directive only works if at least ICU version 57 is installed.

This directive relies on data provided by the CLDR package.
CLDR stands for the Common Locale Data Repository project.
Knoqwn names for this package include:

* cldr-emoji-annotation
* unicode-cldr

At the time of this writing, this project is maintained at
`<https://github.com/unicode-org/cldr>`_.

Standard Directives
===================

.. include:: nesting-directives.rst

Operands
========

.. include:: string-operand.rst

The Representation Operand
--------------------------

The contracted braille representation of a character sequence. Braille cells
are separated from one another by a minus (``-``) sign. Each braille cell is
specified as a sequence of one to eight dot numbers. A dot number is a digit
within the range ``1``-``8`` as defined by the standard braille dot numbering
convention (see |README.BrailleDots| for details). The special dot number
``0`` means no dots, and may not be used in conjunction with any other dot
numbers.

The equals (``=``) sign , when used all by itself, means that the *characters*
operand of the contraction directive is to be written without any translation.

Contraction Table List
======================

.. csv-table::
   :header-rows: 1
   :file: contraction-table.csv

