#
# fontconfig/fc-lang/az_az.orth
#
# Copyright © 2002 Keith Packard
# Copyright © 2009 Roozbeh Pournader
#
# 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 author(s) make(s) no
# representations about the suitability of this software for any purpose.  It
# is provided "as is" without express or implied warranty.
#
# THE AUTHOR(S) DISCLAIM(S) 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.
#
# Azerbaijani in Azerbaijan (az-AZ)
#
# The complete orthography was from http://www.evertype.com
#
# This had been verified with the latin and cyrillic orthographies found at
# http://www.eki.ee/letter
#
# Cyrillic was removed because the switch to Latin is almost finished.
# The letter “ä” is also deprecated and replaced with “ə” since 1992.
#
0041-005a
0061-007a
#00C4	# LATIN CAPITAL LETTER A WITH DIAERESIS
00C7	# LATIN CAPITAL LETTER C WITH CEDILLA
00D6	# LATIN CAPITAL LETTER O WITH DIAERESIS
00DC	# LATIN CAPITAL LETTER U WITH DIAERESIS
#00E4	# LATIN SMALL LETTER A WITH DIAERESIS
00E7	# LATIN SMALL LETTER C WITH CEDILLA
00F6	# LATIN SMALL LETTER O WITH DIAERESIS
00FC	# LATIN SMALL LETTER U WITH DIAERESIS
011E	# LATIN CAPITAL LETTER G WITH BREVE
011F	# LATIN SMALL LETTER G WITH BREVE
0130	# LATIN CAPITAL LETTER I WITH DOT ABOVE
0131	# LATIN SMALL LETTER DOTLESS I
015E	# LATIN CAPITAL LETTER S WITH CEDILLA
015F	# LATIN SMALL LETTER S WITH CEDILLA
018F	# LATIN CAPITAL LETTER SCHWA
0259	# LATIN SMALL LETTER SCHWA
#02BC	# MODIFIER LETTER APOSTROPHE
