#
# fontconfig/fc-lang/ug.orth
#
# Copyright © 2010
# UKIJ - Uyghur Computer Science Association (http://www.ukij.org/)
# Ubuntu Uyghur Translation Team (https://launchpad.net/~ubuntu-l10n-ug)
# Kenjisoft (http://kenjisoft.homelinux.com/)
# Bilik (http://www.bilik.cn/)
#
# 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 makes 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.
#
# Uyghur (UG)
#
# Uyghur is written in a modified Persian-Arabic script. For detailed
# information, refer to http://en.wikipedia.org/wiki/Uyghur_language
#
0626-0628
062A
062C
062E-062F
0631-0634
063A
0641-0646
0648-064A
067E
0686
0698
06AD
06AF
06BE
06C6-06C8
06CB
06D0
06D5
