# liblouis: Letters with accents (without ä ö ü)
#
#  Copyright (C) 2009 SBS Schweizerische Bibliothek für Blinde und Sehbehinderte
#
#  This file is part of liblouis.
#
#  liblouis is free software: you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as
#  published by the Free Software Foundation, either version 2.1 of the
#  License, or (at your option) any later version.
#
#  liblouis is distributed in the hope that it will be useful, but
#  WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
#  Lesser General Public License for more details.
#
#  You should have received a copy of the GNU Lesser General Public
#  License along with liblouis. If not, see
#  <http://www.gnu.org/licenses/>.
#
#-------------------------------------------------------------------------------
#
#  Letters with accents (without ä ö ü) - Switzerland
#
#  Version 11-17-09
#  christian.waldvogel@sbszh.ch
#
#-------------------------------------------------------------------------------

uplow Àà 4-12356 \x00C0 &#192;  LATIN CAPITAL LETTER A WITH GRAVE
#            Áá                     \x00C1 &#193;  LATIN CAPITAL LETTER A WITH ACUTE
uplow Ââ 4-16 \x00C2 &#194;  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
#            Ãã                     \x00C3 &#195;  LATIN CAPITAL LETTER A WITH TILDE

#            Åå                     \x00C5 &#197;  LATIN CAPITAL LETTER A WITH RING ABOVE
#            Ææ                     \x00C6 &#198;  LATIN CAPITAL LETTER AE
uplow Çç 4-12346 \x00C7 &#199;  LATIN CAPITAL LETTER C WITH CEDILLA
uplow Èè 4-2346 \x00C8 &#200;  LATIN CAPITAL LETTER E WITH GRAVE
uplow Éé 4-123456 \x00C9 &#201;  LATIN CAPITAL LETTER E WITH ACUTE
uplow Êê 4-126 \x00CA &#202;  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
uplow Ëë 4-1246 \x00CB &#203;  LATIN CAPITAL LETTER E WITH DIAERESIS
uplow Ìì 4-34 \x00CC &#204;  LATIN CAPITAL LETTER I WITH GRAVE
#            Íí                     \x00CD &#205;  LATIN CAPITAL LETTER I WITH ACUTE
uplow Îî 4-146 \x00CE &#206;  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
uplow Ïï 4-12456 \x00CF &#207;  LATIN CAPITAL LETTER I WITH DIAERESIS
#            Ðð                     \x00D0 &#208;  LATIN CAPITAL LETTER ETH
#            Ññ                     \x00D1 &#209;  LATIN CAPITAL LETTER N WITH TILDE
uplow Òò 4-346 \x00D2 &#210;  LATIN CAPITAL LETTER O WITH GRAVE
#            Óó                     \x00D3 &#211;  LATIN CAPITAL LETTER O WITH ACUTE
uplow Ôô 4-1456 \x00D4 &#212;  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
#            Õõ                     \x00D5 &#213;  LATIN CAPITAL LETTER O WITH TILDE

#            Øø                     \x00D8 &#216;  LATIN CAPITAL LETTER O WITH STROKE
uplow Ùù 4-23456 \x00D9 &#217;  LATIN CAPITAL LETTER U WITH GRAVE
#            Úú                     \x00DA &#218;  LATIN CAPITAL LETTER U WITH ACUTE
uplow Ûû 4-156 \x00DB &#219;  LATIN CAPITAL LETTER U WITH CIRCUMFLEX

#            Ýý                     \x00DD &#221;  LATIN CAPITAL LETTER Y WITH ACUTE
#            Þþ                     \x00DE &#222;  LATIN CAPITAL LETTER THORN

#            ÿ      134568          \x00FF &#255;  LATIN SMALL LETTER Y WITH DIAERESIS

#            \x0152\x0153  OE              &#338;  LATIN CAPITAL LIGATURE OE
