#
# fontconfig/fc-lang/cs.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.
#
# Czech (CS)
#
# Sources:
#	www.evertype.com
#	www.eki.ee/letter
#
0041-005a
0061-007a
00C1		# LATIN CAPITAL LETTER A WITH ACUTE
#00C4		# LATIN CAPITAL LETTER A WITH DIAERESIS		evertype.com
00C9		# LATIN CAPITAL LETTER E WITH ACUTE
00CD		# LATIN CAPITAL LETTER I WITH ACUTE
00D3		# LATIN CAPITAL LETTER O WITH ACUTE
#00D6		# LATIN CAPITAL LETTER O WITH DIAERESIS		evertype.com
00DA		# LATIN CAPITAL LETTER U WITH ACUTE
#00DC		# LATIN CAPITAL LETTER U WITH DIAERESIS		evertype.com
00DD		# LATIN CAPITAL LETTER Y WITH ACUTE
00E1		# LATIN SMALL LETTER A WITH ACUTE
#00E4		# LATIN SMALL LETTER A WITH DIAERESIS		evertype.com
00E9		# LATIN SMALL LETTER E WITH ACUTE
00ED		# LATIN SMALL LETTER I WITH ACUTE
00F3		# LATIN SMALL LETTER O WITH ACUTE
#00F6		# LATIN SMALL LETTER O WITH DIAERESIS		evertype.com
00FA		# LATIN SMALL LETTER U WITH ACUTE
#00FC		# LATIN SMALL LETTER U WITH DIAERESIS		evertype.com
00FD		# LATIN SMALL LETTER Y WITH ACUTE
010C		# LATIN CAPITAL LETTER C WITH CARON
010D		# LATIN SMALL LETTER C WITH CARON
010E		# LATIN CAPITAL LETTER D WITH CARON
010F		# LATIN SMALL LETTER D WITH CARON
011A		# LATIN CAPITAL LETTER E WITH CARON
011B		# LATIN SMALL LETTER E WITH CARON
0147		# LATIN CAPITAL LETTER N WITH CARON
0148		# LATIN SMALL LETTER N WITH CARON
0158		# LATIN CAPITAL LETTER R WITH CARON
0159		# LATIN SMALL LETTER R WITH CARON
0160		# LATIN CAPITAL LETTER S WITH CARON
0161		# LATIN SMALL LETTER S WITH CARON
0164		# LATIN CAPITAL LETTER T WITH CARON
0165		# LATIN SMALL LETTER T WITH CARON
016E		# LATIN CAPITAL LETTER U WITH RING ABOVE
016F		# LATIN SMALL LETTER U WITH RING ABOVE
017D		# LATIN CAPITAL LETTER Z WITH CARON
017E		# LATIN SMALL LETTER Z WITH CARON
