#
# Copyright (C) 2010 by JJB Software, Inc. www.jjb-software.com
#
#  This file is part of liblouis.
#
#  liblouis is free software: you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as
#  published by the Free Software Foundation, either version 2.1 of the
#  License, or (at your option) any later version.
#
#  liblouis is distributed in the hope that it will be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#  Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with liblouis. If not, see
#  <http://www.gnu.org/licenses/>.

# These defintions prevouisly were hardcoded in the liblouis library
# itself. Now they are migrated to an external table which can be
# included by other tables. They are necesary for the proper operation
# of liblouis or liblouisutdml.

# Also this table defines all the space characters to be empty braille
# cells.

space \s     0		SPACE

sign  \x0000 0		NULL
space \x0009 0		CHARACTER TABULATION
space \x000a 0		LINE FEED (LF)
space \x000b 0		LINE TABULATION
space \x000c 0		FORM FEED (FF)
space \x000d 0		CARRIAGE RETURN (CR)
space \x00a0 0		NO-BREAK SPACE
space \x2000 0		EN QUAD
space \x2001 0		EM QUAD
space \x2002 0		EN SPACE
space \x2003 0		EM SPACE
space \x2004 0		THREE-PER-EM SPACE
space \x2005 0		FOUR-PER-EM SPACE
space \x2006 0		SIX-PER-EM SPACE
space \x2007 0		FIGURE SPACE
space \x2008 0		PUNCTUATION SPACE
space \x2009 0		THIN SPACE
space \x200a 0		HAIR SPACE
space \x200b 0		ZERO WIDTH SPACE
space \x2028 0		LINE SEPARATOR
space \x2029 0		PARAGRAPH SEPARATOR
space \x202f 0		NARROW NO-BREAK SPACE
space \x205f 0		MEDIUM MATHEMATICAL SPACE
space \x2060 0		WORD JOINER
space \x2800 0		BRAILLE PATTERN BLANK
space \xfeff 0		ZERO WIDTH NO-BREAK SPACE (also Unicode BOM)

# replace \x200b		ZERO WIDTH SPACE
noback correct "\x200b" ""

replace \x2060		WORD JOINER
replace \xfeff		ZERO WIDTH NO-BREAK SPACE (also Unicode BOM)

