#
# fontconfig/fc-lang/ga.orth
#
# Copyright © 2002 Keith Packard
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of the author(s) not be used in
# advertising or publicity pertaining to distribution of the software without
# specific, written prior permission.  The authors make no
# representations about the suitability of this software for any purpose.  It
# is provided "as is" without express or implied warranty.
#
# THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
# EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
# DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# Irish (GA)
#
# Sources:
#	www.evertype.com
#	www.eki.ee/letter
#
# The orthography from evertype.com includes the lenited consonants
# as indicated with seimhiu (dot above). I've included those here
# even though they're not present in the orthography listed from eki.ee;
# eki.ee mentions that the seimhiu form is still written but is
# often written by a following h instead.
#
0041-005a
0061-007a
#00C0		# LATIN CAPITAL LETTER A WITH GRAVE		evertype.com
00C1		# LATIN CAPITAL LETTER A WITH ACUTE
#00C7		# LATIN CAPITAL LETTER C WITH CEDILLA		evertype.com
#00C8		# LATIN CAPITAL LETTER E WITH GRAVE		evertype.com
00C9		# LATIN CAPITAL LETTER E WITH ACUTE
#00CC		# LATIN CAPITAL LETTER I WITH GRAVE		evertype.com
00CD		# LATIN CAPITAL LETTER I WITH ACUTE
#00D2		# LATIN CAPITAL LETTER O WITH GRAVE		evertype.com
00D3		# LATIN CAPITAL LETTER O WITH ACUTE
#00D9		# LATIN CAPITAL LETTER U WITH GRAVE		evertype.com
00DA		# LATIN CAPITAL LETTER U WITH ACUTE
#00E0		# LATIN SMALL LETTER A WITH GRAVE		evertype.com
00E1		# LATIN SMALL LETTER A WITH ACUTE
#00E7		# LATIN SMALL LETTER C WITH CEDILLA		evertype.com
#00E8		# LATIN SMALL LETTER E WITH GRAVE		evertype.com
00E9		# LATIN SMALL LETTER E WITH ACUTE
#00EC		# LATIN SMALL LETTER I WITH GRAVE
00ED		# LATIN SMALL LETTER I WITH ACUTE
#00F2		# LATIN SMALL LETTER O WITH GRAVE		evertype.com
00F3		# LATIN SMALL LETTER O WITH ACUTE
#00F9		# LATIN SMALL LETTER U WITH GRAVE		evertype.com
00FA		# LATIN SMALL LETTER U WITH ACUTE
010A		# LATIN CAPITAL LETTER C WITH DOT ABOVE
010B		# LATIN SMALL LETTER C WITH DOT ABOVE
0120		# LATIN CAPITAL LETTER G WITH DOT ABOVE
0121		# LATIN SMALL LETTER G WITH DOT ABOVE
#017F		# LATIN SMALL LETTER LONG S			evertype.com
#027C		# LATIN SMALL LETTER R WITH LONG LEG		evertype.com
1E02		# LATIN CAPITAL LETTER B WITH DOT ABOVE
1E03		# LATIN SMALL LETTER B WITH DOT ABOVE
1E0A		# LATIN CAPITAL LETTER D WITH DOT ABOVE
1E0B		# LATIN SMALL LETTER D WITH DOT ABOVE
1E1E		# LATIN CAPITAL LETTER F WITH DOT ABOVE
1E1F		# LATIN SMALL LETTER F WITH DOT ABOVE
1E40		# LATIN CAPITAL LETTER M WITH DOT ABOVE
1E41		# LATIN SMALL LETTER M WITH DOT ABOVE
1E56		# LATIN CAPITAL LETTER P WITH DOT ABOVE
1E57		# LATIN SMALL LETTER P WITH DOT ABOVE
1E60		# LATIN CAPITAL LETTER S WITH DOT ABOVE
1E61		# LATIN SMALL LETTER S WITH DOT ABOVE
1E6A		# LATIN CAPITAL LETTER T WITH DOT ABOVE
1E6B		# LATIN SMALL LETTER T WITH DOT ABOVE
#1E9B		# LATIN SMALL LETTER LONG S WITH DOT ABOVE	evertype.com
#1680-169c	# Ogham
#2018-2019	# single quotes
#201c-201d	# double quotes
#204a		# tironian sign et
