#
# fontconfig/fc-lang/sl.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.
#
# Slovenian (SL)
#
# Sources:
#	www.evertype.com
#	www.eki.ee/letter
#
0041-005a
0061-007a
#
# Included in eki.ee 
#
#00C4	LATIN CAPITAL LETTER A WITH DIAERESIS
#00D6	LATIN CAPITAL LETTER O WITH DIAERESIS
#00DC	LATIN CAPITAL LETTER U WITH DIAERESIS
#00E4	LATIN SMALL LETTER A WITH DIAERESIS
#00F6	LATIN SMALL LETTER O WITH DIAERESIS
#00FC	LATIN SMALL LETTER U WITH DIAERESIS
0106	LATIN CAPITAL LETTER C WITH ACUTE
0107	LATIN SMALL LETTER C WITH ACUTE
010C	LATIN CAPITAL LETTER C WITH CARON
010D	LATIN SMALL LETTER C WITH CARON
0110	LATIN CAPITAL LETTER D WITH STROKE
0111	LATIN SMALL LETTER D WITH STROKE
0160	LATIN CAPITAL LETTER S WITH CARON
0161	LATIN SMALL LETTER S WITH CARON
017D	LATIN CAPITAL LETTER Z WITH CARON
017E	LATIN SMALL LETTER Z WITH CARON
#
# According to evertype.com:
#
# In slovenian, these letters are often used to transliterate
# Serbian and Macedonian letters
#
#01C5	LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
#01C6	LATIN SMALL LETTER DZ WITH CARON
#01C8	LATIN CAPITAL LETTER L WITH SMALL LETTER J
#01C9	LATIN SMALL LETTER LJ
#01CB	LATIN CAPITAL LETTER N WITH SMALL LETTER J
#01CC	LATIN SMALL LETTER NJ
#01F2	LATIN CAPITAL LETTER D WITH SMALL LETTER Z
#01F3	LATIN SMALL LETTER DZ
#01F4	LATIN CAPITAL LETTER G WITH ACUTE
#01F5	LATIN SMALL LETTER G WITH ACUTE
#1E30	LATIN CAPITAL LETTER K WITH ACUTE
#1E31	LATIN SMALL LETTER K WITH ACUTE
#
# These are the transliteration target letters which are
# not used in Slovenian at all
#
#0402	CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
#0403	CYRILLIC CAPITAL LETTER GJE
#0405	CYRILLIC CAPITAL LETTER DZE
#0409	CYRILLIC CAPITAL LETTER LJE
#040A	CYRILLIC CAPITAL LETTER NJE
#040B	CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
#040C	CYRILLIC CAPITAL LETTER KJE
#040F	CYRILLIC CAPITAL LETTER DZHE
#0452	CYRILLIC SMALL LETTER DJE (Serbocroatian)
#0453	CYRILLIC SMALL LETTER GJE
#0455	CYRILLIC SMALL LETTER DZE
#0459	CYRILLIC SMALL LETTER LJE
#045A	CYRILLIC SMALL LETTER NJE
#045B	CYRILLIC SMALL LETTER TSHE (Serbocroatian)
#045C	CYRILLIC SMALL LETTER KJE
#045F	CYRILLIC SMALL LETTER DZHE
