#
# fontconfig/fc-lang/ee.orth
#
# 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.
#
# Ewe (ee)
#
# Sources:
# * http://www.uni-koeln.de/phil-fak/afrikanistik/down/publikationen/basic_ewe.pdf
# * http://en.wikipedia.org/wiki/Ewe_language
# * http://www.omniglot.com/writing/ewe.htm
# * http://www.panafril10n.org/wikidoc/pmwiki.php/PanAfrLoc/Gbe
#
# We amend the main alphabet with tone marks over each vowel, but some
# combinations lack precomposed forms in Unicode, so we also add indiviual
# combining marks.
#
# Sources also differ on the notation used for the fourth tone: circumflex
# vs combining line above (U+030D). At the moment, we are not including any
# of the two.
#
# There is also a nasalization mark for vowels (combining tilde), but there
# is a need for more research to find which vowels it's used with. The
# combination of nasalization and tones may also exist, resulting in double
# accents.
#
# C, J, and Q are not used.
#
0041-005A
0061-007A
00C0-00C1
00C8-00C9
00CC-00CD
00D2-00D3
00D9-00DA
00E0-00E1
00E8-00E9
00EC-00ED
00F2-00F3
00F9-00FA
011A-011B
014A-014B
0186
0189
# 018A # according to Unicode characters notes for U+0257
0190-0192
0194
01B2
01CD-01D4
0254
0256
# 0257 # according to Unicode character notes
025B
0263
028B
0300-0301 # to be used with open e and open o
# 0303 # combining tilde
030C # to be used with open e and open o
# 030D # combining vertical line above
