# -----------
#-index-name: Portuguese, computer
#-display-name: Portuguese computer braille
#
#+locale:pt
#+type:computer
#+dots:8
#
# TODO: Please correct the metadata above. It is not meant to be
# accurate nor complete. It hasn't been verified by the table
# author yet. It is merely an attempt by the liblouis maintainers
# to get some sensible initial values in place.
#
# TODO: Please add a reference to official documentation about
# the implemented braille code. Preferably submit the documents
# to https://github.com/liblouis/braille-specs.
# -----------
#
# liblouis:  Portuguese 8 dot Computer braille table
#
#  Copyright (C) 2012 Rui Fontes <rui.fontes@tiflotecnia.com>
#  Copyright (C) 2012 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/>.

space \t 9 tab
space \s 0 blank
space \x00a0 a unbreakable space
sign \x000a 78 newline
space \x000d 0 carriage return
include digits8Dots.uti
include latinLetterDef8Dots.uti
punctuation , 2
punctuation ; 23
punctuation : 25
punctuation . 3
punctuation ! 2358
punctuation " 236
punctuation ' 6
punctuation ( 1268
punctuation ) 3458
punctuation - 36
sign _ 367
math < 2468
math = 2356
math > 1358
sign % 35678
math + 235
math ~ 2346
sign ` 14678
sign & 123468
sign $ 46
punctuation ? 26
punctuation { 1238
punctuation [ 123568
punctuation } 4567
punctuation ] 234568
sign ^ 234678
sign @ 156
sign # 3456
sign \\ 38
sign | 456
math / 256
sign * 35
uplow \x00c0\x00e0 12467,1246 # Àà
uplow \x00c1\x00e1 123567,12356 # Áá
uplow \x00c2\x00e2 167,16 # Ââ
uplow \x00c3\x00e3 3457,345 # Ãã
uplow \x00c4\x00e4 34578,3458 # Ää
uplow \x00c7\x00e7 123467,12346 # Çç
uplow \x00c8\x00e8 234678,23468 # Èè
uplow \x00c9\x00e9 1234567,123456 # Éé
uplow \x00ca\x00ea 1267,126 # Êê
uplow \x00cc\x00ec 14678,1468 # Ìì
uplow \x00cd\x00ed 347,34 # Íí
uplow \x00ce\x00ee 1467,146 # Îî 
uplow \x00d2\x00f2 245678,24568 # Òò
uplow \x00d3\x00f3 3467,346 # Óó
uplow \x00d4\x00f4 14567,1456 # Ôô
uplow \x00d5\x00f5 2467,246 # Õõ
uplow \x00d6\x00f6 2467,246 # Öö
uplow \x00d9\x00f9 15678,1568 # Ùù
uplow \x00da\x00fa 234567,23456 # Úú
uplow \x00dc\x00fc 12567,1256 # Üü
sign \x00ba 13578 # 
sign \x00aa 178 # ª
sign \x20ac 1578
sign \x00ae 12358
sign \x2122 1348
sign \x00ab 1235678 # «
sign \x00bb 2345678 # »
sign \x00a3 12378 # £
sign \x00a7 2348 # §
uplow \x00d1\x00f1 134578,13458 # Ññ

noback sign \x25CF 35	# 9679 black circle
