Para escribir en braille se utilizan seis puntos para representar los símbolos del alfabeto, los números y caracteres de control.
Cada carácter esta compuesto de seis puntos, para poder especificar los relieves del carácter usualmente se utiliza siguiente nomenclatura:
1 4 2 5 3 6
Además de la forma con relieves o visual podemos representar los caracteres mediante los números de sus relieves, ejemplo:
. o o o --> 245 . .
o . o o --> 1235 o .
Podemos representar los relieves del carácter mediante el sistema binario, de manera que el bit menos significativo represente el relieve con la posición mas baja:
- el relieve 1 es el bit 0
- el relieve 2 es el bit 1
- el relieve 3 es el bit 2
- etc…
1 4 0 3 2 5 --> 1 4 3 6 2 5
Entonces en memoria los caracteres se verían representados de la siguiente manera:
Carácter | Braille | BrailleCell |
---|---|---|
a | 1 | 000001 |
b | 12 | 000011 |
j | 245 | 011010 |
r | 1235 | 010111 |
Para conocer el estado de cada relieve solo basta con crear una mascara con la posición del relieve que nos interesa conocer, cabe recordar que los relieves empiezan desde la posición cero:
char get_dot(BrailleCell character, char dot_pos) {
return (character.dots & 1 << dot_pos);
}
BrailleCell get_braille_char(int pos)
Retorna el caracter correspondiente a la posicion en el charset.char get_dot(BrailleCell character, char dot_pos)
Retorna el estado del punto en cada posición.char dots(BrailleCell character)
Retorna el valor numerico de los relieves.char is_numeric(unsigned int ch)
Verifica que el carácter representa un numero.is_alphabetic
Valida si el carácter es alguna de las letras del alfabeto (ascii).char is_capital(unsigned int chr)
Validar si un carácter es mayúscula (ascii).BrailleCell char_to_braille(unsigned int chr)
Convierte un carácter ascii en su equivalente en BrailleCell.
ID | BrailleCell | Character |
---|---|---|
0 | 0b000001 | a - 1 |
1 | 0b000011 | b - 2 |
2 | 0b001001 | c - 3 |
3 | 0b011001 | d - 4 |
4 | 0b010001 | e - 5 |
5 | 0b001011 | f - 6 |
6 | 0b011011 | g - 7 |
7 | 0b010011 | h - 8 |
8 | 0b001010 | i - 9 |
9 | 0b011010 | j - 0 |
10 | 0b000101 | k |
11 | 0b000111 | l |
12 | 0b001101 | m |
13 | 0b011101 | n |
14 | 0b010101 | o |
15 | 0b001111 | p |
16 | 0b011111 | q |
17 | 0b010111 | r |
18 | 0b001110 | s |
19 | 0b011110 | t |
20 | 0b100101 | u |
21 | 0b100111 | v |
22 | 0b111010 | w |
23 | 0b101101 | x |
24 | 0b111101 | y |
25 | 0b110101 | z |
26 | 0b111100 | prefijo numerico |
27 | 0b101000 | mayusculas |
28 | 0b010000 | interruptor de numero |
29 | 0b111111 | espacio |
30 | 0b010110 | ! |
31 | 0b100110 | ” |
32 | 0b111100 | # |
33 | 0b110010 | $ |
34 | 0b111000 | % |
35 | 0b111111 | & |
36 | 0b100110 | ’ |
37 | 0b100011 | ( |
38 | 0b011100 | ) |
39 | 0b010100 | * |
40 | 0b010110 | + |
41 | 0b000010 | , |
42 | 0b100100 | - (menos) |
43 | 0b000100 | . (punto) |
44 | 0b001100 | / |
45 | 0b010010 | |
46 | 0b000110 | ; |
47 | 0b101010 | < |
48 | 0b110110 | = |
49 | 0b010101 | > |
50 | 0b100010 | ¿? |
51 | 0b010000 | @ |
52 | 0b111011 | ñ |
53 | 0b110111 | á |
54 | 0b101110 | é |
55 | 0b001100 | í |
56 | 0b101100 | ó |
57 | 0b111110 | ú |
58 | 0b110011 | ü |