#
# fontconfig/fc-lang/ne.orth
#
# Copyright © 2002 Keith Packard
# Copyright © 2012 Parag Nemade, Pravin Satpute <psatpute@redhat.com>
#
# 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.
#
# Nepali (ne)
#
# Source: http://www.panl10n.net/english/Outputs%20Phase%202/CCs/Nepal/MPP/Papers/2007/0702/mpp_reports_pdf/report_character_encoding_constraints_nepali.pdf
#
0901-0903	# Various Signs
0905-090b	# Independent vowels
090f-0910	# Independent vowels
0913-0914	# Independent vowels
0915-0928	# Consonants
092a-0930	# Consonants
0932		# Consonants
0935-0939	# Consonants
093e-0943	# Various and Dependent vowel signs
0947-0948	# Dependent vowel signs
094b-094d	# Dependent vowel signs and virama
0950		# Sign and vedic tone marks
0964-0965	# Punctuations
0966-096F	# Digits
0970		# Abbrevation sign
