# liblouis: sub table for Latin letter definition, 8 dots.
#
#  Copyright (C) 2012-2014 Mesar Hameed <mesar.hameed@gmail.com>
#
#  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/>.

# Latin letters a-z with dot 7 as capital indicator.
# Usually included to form a 8 dots table.

uplow Aa 17,1
uplow Bb 127,12
uplow Cc 147,14
uplow Dd 1457,145
uplow Ee 157,15
uplow Ff 1247,124
uplow Gg 12457,1245
uplow Hh 1257,125
uplow Ii 247,24
uplow Jj 2457,245
uplow Kk 137,13
uplow Ll 1237,123
uplow Mm 1347,134
uplow Nn 13457,1345
uplow Oo 1357,135
uplow Pp 12347,1234
uplow Qq 123457,12345
uplow Rr 12357,1235
uplow Ss 2347,234
uplow Tt 23457,2345
uplow Uu 1367,136
uplow Vv 12367,1236
uplow Ww 24567,2456
uplow Xx 13467,1346
uplow Yy 134567,13456
uplow Zz 13567,1356
