#
# fontconfig/fc-lang/da.orth
#
# Copyright © 2002 Keith Packard
#
# 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.
#
# Danish (DA)
#
# Sources:
#	www.evertype.com
#	www.eki.ee/letter
# Note:
#	The sources cited at www.evertype.com appear to have unified
#	all of the nordic languages making the orthography significantly
#	larger than needed for Danish.  The orthography used here is
#	just that from eki.ee with the evertype.com additions commented out
#	
0041-005a
0061-007a
#00ab
#00bb
#00C0		# LATIN CAPITAL LETTER A WITH GRAVE
00C1		# LATIN CAPITAL LETTER A WITH ACUTE
#00C2		# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
#00C4		# LATIN CAPITAL LETTER A WITH DIAERESIS
00C5		# LATIN CAPITAL LETTER A WITH RING ABOVE
00C6		# LATIN CAPITAL LETTER AE (ash) *
#00C7		# LATIN CAPITAL LETTER C WITH CEDILLA
#00C8		# LATIN CAPITAL LETTER E WITH GRAVE
00C9		# LATIN CAPITAL LETTER E WITH ACUTE
#00CA		# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
#00CB		# LATIN CAPITAL LETTER E WITH DIAERESIS
00CD		# LATIN CAPITAL LETTER I WITH ACUTE
#00D0		# LATIN CAPITAL LETTER ETH (Icelandic)
00D3		# LATIN CAPITAL LETTER O WITH ACUTE
#00D4		# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
#00D6		# LATIN CAPITAL LETTER O WITH DIAERESIS
00D8		# LATIN CAPITAL LETTER O WITH STROKE
00DA		# LATIN CAPITAL LETTER U WITH ACUTE
#00DC		# LATIN CAPITAL LETTER U WITH DIAERESIS
00DD		# LATIN CAPITAL LETTER Y WITH ACUTE
#00DE		# LATIN CAPITAL LETTER THORN (Icelandic)
#00E0		# LATIN SMALL LETTER A WITH GRAVE
00E1		# LATIN SMALL LETTER A WITH ACUTE
#00E2		# LATIN SMALL LETTER A WITH CIRCUMFLEX
#00E4		# LATIN SMALL LETTER A WITH DIAERESIS
00E5		# LATIN SMALL LETTER A WITH RING ABOVE
00E6		# LATIN SMALL LETTER AE (ash) *
#00E7		# LATIN SMALL LETTER C WITH CEDILLA
#00E8		# LATIN SMALL LETTER E WITH GRAVE
00E9		# LATIN SMALL LETTER E WITH ACUTE
#00EA		# LATIN SMALL LETTER E WITH CIRCUMFLEX
#00EB		# LATIN SMALL LETTER E WITH DIAERESIS
00ED		# LATIN SMALL LETTER I WITH ACUTE
#00F0		# LATIN SMALL LETTER ETH (Icelandic)
00F3		# LATIN SMALL LETTER O WITH ACUTE
#00F4		# LATIN SMALL LETTER O WITH CIRCUMFLEX
#00F6		# LATIN SMALL LETTER O WITH DIAERESIS
00F8		# LATIN SMALL LETTER O WITH STROKE
00FA		# LATIN SMALL LETTER U WITH ACUTE
#00FC		# LATIN SMALL LETTER U WITH DIAERESIS
00FD		# LATIN SMALL LETTER Y WITH ACUTE
#00FE		# LATIN SMALL LETTER THORN (Icelandic)
#0152		# LATIN CAPITAL LIGATURE OE
#0153		# LATIN SMALL LIGATURE OE
#01FA		# LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
#01FB		# LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
#01FC		# LATIN CAPITAL LETTER AE WITH ACUTE (ash) *
#01FD		# LATIN SMALL LETTER AE WITH ACUTE (ash) *
#01FE		# LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
#01FF		# LATIN SMALL LETTER O WITH STROKE AND ACUTE
#2039-203a	# angle quotes
