#
# fontconfig/fc-lang/fil.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.
#
# Filipino (fil)
#
# Sources:
# * Paul Morrow, "A Brief Guide to Filipino Pronunciation",
# http://www.mts.net/~pmorrow/filpro.htm
# * Komisyon sa Wikang Filipino, "Ang Ortograpiya ng Wikang Pambansa",
# http://wika.pbwiki.com/f/ORTOPDF.pdf (in Filipino)
# * CLDR exemplar set for Filipino:
# http://unicode.org/cldr/data/common/main/fil.xml
#
0041-005A
0061-007A
00C0-00C2
00C8-00CA
00CC-00CE
00D1-00D4
00D9-00DB
00E0-00E2
00E8-00EA
00EC-00EE
00F1-00F4
00F9-00FB
