| # Liblouis: Danish table for 6 dots grade 1.5 (grade 2l) forward and backward translation |
| # |
| # Copyright (C) 2014-2017, Bue Vester-Andersen <bue@vester-andersen.dk> |
| # |
| # 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/>. |
| # |
| # Version: Bue Vester-Andersen, 170604 |
| |
| ### Table Metadata |
| |
| #-index-name: Danish, partially contracted, 6-dot |
| #-display-name: Danish 6-dot partially contracted braille |
| |
| #+locale: da |
| #+type: literary |
| #+contraction: partial |
| #+grade: 1.5 |
| #+dots: 6 |
| #+direction: both |
| |
| # Display opcodes |
| include da-dk-octobraille.dis |
| |
| ### Spaces |
| |
| # These ctrl-chars have to have a representation, so that they can be properly converted back and forth. |
| space \t 2478 CHARACTER TABULATION |
| space \n 678 LINE FEED (LF) |
| space \v 1368 LINE TABULATION |
| space \f 12378 FORM FEED (FF) |
| space \r 257 CARRIAGE RETURN (CR) |
| space \x00a0 a |
| |
| include spaces.uti |
| |
| ### Character definitions |
| |
| # Definition of dot cells |
| punctuation ! 235 EXCLAMATION MARK |
| punctuation " 2356 QUOTATION MARK |
| punctuation ' 4 APOSTROPHE |
| punctuation ( 236 LEFT PARENTHESIS |
| punctuation ) 356 RIGHT PARENTHESIS |
| punctuation , 2 COMMA |
| punctuation - 36 HYPHEN-MINUS |
| punctuation . 3 FULL STOP |
| punctuation / 34 SLASH |
| punctuation : 25 COLON |
| punctuation ; 23 SEMICOLON |
| punctuation ? 26 QUESTION MARK |
| uplow Aa 1 |
| uplow Bb 12 |
| uplow Cc 14 |
| uplow Dd 145 |
| uplow Ee 15 |
| uplow Ff 124 |
| uplow Gg 1245 |
| uplow Hh 125 |
| uplow Ii 24 |
| uplow Jj 245 |
| uplow Kk 13 |
| uplow Ll 123 |
| uplow Mm 134 |
| uplow Nn 1345 |
| uplow Oo 135 |
| uplow Pp 1234 |
| uplow Rr 1235 |
| uplow Ss 234 |
| uplow Tt 2345 |
| uplow Uu 136 |
| uplow Vv 1236 |
| uplow Yy 13456 |
| |
| #use 8 dots for the following chars to avoid conflict with indicators |
| uplow Qq 123457 |
| uplow Ww 24567 |
| uplow Xx 13467 |
| uplow Zz 13567 |
| punctuation | 4568 VERTICAL LINE |
| punctuation ~ 467 TILDE (changed by pass 2 to not conflict with indicators |
| uplow \x00dc\x00fc 12567 |
| |
| include digits6Dots.uti |
| |
| punctuation \x00a7 346 SECTION SIGN (0xa7) |
| |
| uplow \x00c5\x00e5 16 LATIN LETTER A WITH RING ABOVE |
| uplow \x00c6\x00e6 345 LATIN LETTER AE |
| uplow \x00d8\x00f8 246 LATIN LETTER O WITH STROKE |
| |
| # cover all other Braille patterns |
| include braille-patterns.cti |
| |
| # Characters with two or more cells |
| |
| punctuation # 45-3456 NUMBER SIGN |
| sign $ 45-256 DOLLAR SIGN |
| math % 245-356 PERCENT SIGN |
| sign & 6-12346 AMPERSAND |
| punctuation * 6-35 ASTERISK |
| math + 45-235 PLUS SIGN |
| math < 45-134 LESS-THAN SIGN |
| math = 45-2356 EQUALS SIGN |
| math > 45-234 GREATER-THAN SIGN |
| sign @ 45-1 COMMERCIAL AT |
| punctuation [ 5-236 LEFT SQUARE BRACKET |
| punctuation \\ 45-16 REVERSE SLASH |
| punctuation ] 5-356 RIGHT SQUARE BRACKET |
| punctuation ^ 45-346 CIRCUMFLEX ACCENT |
| punctuation _ 45-36 LOW LINE |
| punctuation ` 4 GRAVE ACCENT |
| punctuation { 45-246 LEFT CURLY BRACKET |
| punctuation } 45-135 RIGHT CURLY BRACKET |
| math \x00f7 45-256 DIVISION SIGN |
| |
| # Misc unicode characters |
| include da-dk-6miscChars.cti |
| |
| # Litdigits |
| include litdigits6Dots.uti |
| midendnumericmodechars /,.:^ |
| |
| undefined 26 |
| |
| ### Braille indicators and special characters |
| |
| #hyphen - 36 |
| |
| letsign 6 |
| |
| # No letsign before capital letters or letters with accents |
| |
| noletsign I\x0160\x0152\x017d\x0178\x00c0\x00c1\x00c2\x00c3\x00c7\x00c8\x00c9\x00ca\x00cb\x00cc\x00cd\x00ce\x00cf\x00d0\x00d1\x00d2\x00d3\x00d4\x00d5\x00d9\x00da\x00db\x00dc\x00dd\x00de\x008a\x008c\x008e |
| noletsign i\x0161\x0153\x017e\x00ff\x00df\x00e0\x00e1\x00e2\x00e3\x00e7\x00e8\x00e9\x00ea\x00eb\x00ec\x00ed\x00ee\x00ef\x00f0\x00f1\x00f2\x00f3\x00f4\x00f5\x00f9\x00fa\x00fb\x00fd\x00fe\x009a\x009c |
| |
| # Emphasis opcodes |
| emphclass italic |
| emphclass underline |
| emphclass bold |
| |
| begemphphrase italic 56 |
| endemphphrase italic after 56 |
| begemphword italic 56 |
| endemphword italic 56 |
| |
| begemphphrase bold 56 |
| endemphphrase bold after 56 |
| begemphword bold 56 |
| endemphword bold 56 |
| |
| begemphphrase underline 56 |
| endemphphrase underline after 56 |
| begemphword underline 56 |
| endemphword underline 56 |
| |
| capsletter 46 |
| begcapsword 456 |
| endcapsword 6 |
| multind 6-46 letsign capsletter |
| multind 46-6 capsletter letsign |
| multind 6-456 letsign begcapsword |
| |
| numsign 3456 |
| multind 6-3456 letsign numsign |
| |
| #class of none-space characters that demand double dashes |
| # Used in context lines later. |
| #must be the first class defined. |
| class charsWDoubleDash .,?!/:"'() # class w |
| |
| ### Correct - forward translation |
| |
| # Chars that don't require a space before percent and permille: |
| class charsBeforePercent "(\x201e\x0084\x201c\x0093\x201d\x0094\x00ab\x00bb #class x |
| noback correct `["%"] * |
| noback correct !$sx["%"] " %" |
| noback correct `["\x2030"] * |
| noback correct !$sx["\x2030"] " \x2030" |
| noback correct `["\x0089"] * |
| noback correct !$sx["\x0089"] " \x2030" |
| |
| # Chars to be treated like digits when switching back to letter mode |
| class extraDigits \x00bc\x00bd\x00be |
| |
| #Use the "correct" opcode to convert chars that can't be back-translated |
| # and make the table more simple. |
| |
| # Dashes |
| class dashes \x2013\x2014\x0096\x0097\x00ad |
| noback correct %dashes "-" |
| |
| class quotes \x201e\x0084\x201c\x0093\x201d\x0094\x00ab\x00bb |
| noback correct %quotes "\"" |
| |
| class apostrophes `\x201a\x0082\x2039\x008b\x2018\x0091\x2019\x0092\x203a\x009b\x00b4 |
| noback correct %apostrophes "'" |
| |
| ### Correct - backward translation |
| |
| # characters that may get mangled by the insertion of extra letsigns |
| nofor correct "\x2818" "~" |
| #nofor correct "\x282f" "&" |
| #nofor correct "\x2814" "*" |
| |
| # Try to distinguish between times (\x00d7) and bullit (\x2022), |
| # which share the same Braille representation. |
| nofor correct `["\x00d7"] "\x2022" |
| # nofor correct $d["\s\x00d7\s"]$d * #apparently doesn't work now |
| nofor correct ["\x00d7"]!$d "\x2022" |
| nofor correct !$d["\x00d7"] "\x2022" |
| |
| nofor correct "\x28a0" ? # Extraneous endcaps signs |
| #nofor correct "\x2820" ? |
| nofor correct "~\\456/" "|" |
| |
| ### Pass 1 - Forward and backward |
| |
| # Punctuations, math and numbers |
| #midnum , 2 |
| #midnum . 3 |
| #midnum - 36 |
| endnum - 36 |
| #midnum / 34 |
| #midnum : 25 |
| nofor midnum ^ 346 |
| nofor midnum ^ 45-346 |
| |
| midnum ^ 45-346 |
| midnum \x00d7 45-3 |
| |
| # various back rules for math signs etc. |
| nofor midnum % 0-245-356-0-3456 |
| nofor endnum % 0-245-356 |
| nofor endnum \x2030 0-245-356-356 |
| nofor midnum \s 3456 |
| nofor midnum \x00d7 45-3-3456 |
| nofor midnum \x00d7 45-3 |
| nofor midnum \x00d7 3-3456 |
| |
| # Punctuation |
| prepunc " 2356 |
| postpunc " 2356 |
| always /\s 6-34-0 |
| always \s/ 0-6-34 |
| nofor always / 6-34 |
| prepunc - 36 |
| postpunc - 36 |
| nofor always \s-\s 0-36-36-0 |
| always :- 25-36 |
| always ;- 23-36 |
| always --- 36-36-36 |
| always ---- 36-36-36-36 |
| always ----- 36-36-36-36-36 |
| # Star enclosed by parentheses |
| always (*) 236-35-356 |
| |
| before punctuation before sign always ( 6-236 |
| |
| # these characters must be separated from ")" by a letsign. |
| class SepToRightpar Jj%'\x2030\x0089\x201a\x0082\x2039\x009b\x2018\x0091\x2019\x0092\x203a\x009b |
| after SepToRightpar always ) 6-356 |
| |
| prepunc ( 236 |
| postpunc ) 356 |
| always .) 3-356 |
| always ( 6-236 |
| always ) 6-356 |
| |
| # extra back rules for ")" |
| nofor after punctuation always ) 356 |
| nofor always \x00b0 4-356 |
| nofor always ') 4-6-356 |
| nofor always ") 2356-356 |
| nofor endword j) 245-356 |
| nofor always ) 6-356 |
| |
| always ... 3-3-3 |
| |
| #inverted exclamation |
| always \x00a1 6-256 |
| |
| ### Contractions ### |
| |
| #Special sequences, urls emails and file names. |
| |
| nocont $ |
| nocont \x005c |
| nocont @ |
| nocont :// |
| nocont www |
| nocont .com |
| nocont .dk |
| nocont .eu |
| nocont .edu |
| nocont .gov |
| nocont .mil |
| nocont .net |
| nocont .org |
| nocont .uk |
| nocont .doc |
| nocont .exe |
| nocont .htm |
| nocont .tex |
| nocont .txt |
| nocont .gif |
| nocont .jpg |
| nocont .png |
| nocont .wav |
| nocont .tar |
| nocont .zip |
| |
| #Words |
| word at 1 |
| word bliver 12 |
| word den 12346 |
| word der 23456 |
| word det 2346 |
| word de 1456 |
| word du 145 |
| word efter 1356 |
| word eller 15 |
| word en 126 |
| word er 156 |
| word et 346 |
| word for 124 |
| word før 246 |
| word gennem 12456 |
| word gør 1245 |
| word han 13456 |
| word har 125 |
| word hun 136 |
| word hvad 2456 |
| word hvor 34 |
| word jeg 245 |
| word kan 13 |
| word lige 123 |
| word med 134 |
| word men 146 |
| word ned 1246 |
| word når 1345 |
| word og 14 |
| word op 135 |
| word over 1346 |
| word på 1234 |
| word ret 12356 |
| word rigtig 1235 |
| word skal 123456 |
| word som 234 |
| word så 16 |
| word te 1256 |
| word til 2345 |
| word under 12345 |
| word ve 3456 |
| word ved 1236 |
| word være 345 |
| |
| # Common combinations of one word contractions with slash |
| word af/på 356-34-1234 |
| word du/i 145-34-24 |
| word eller/og 15-34-14 |
| word fra/til 235-34-2345 |
| word han/hun 13456-34-136 |
| word hun/han 136-34-13456 |
| word i/du 24-34-145 |
| word og/eller 14-34-15 |
| word over/under 1346-34-12345 |
| word på/af 1234-34-356 |
| word til/fra 2345-34-235 |
| word under/over 12345-34-1346 |
| |
| # no backtrans of ^1 and `2. use contractions |
| nofor always eta 346-1 |
| nofor always etb 346-12 |
| always etc 346-14 |
| |
| # Ensure no one-letter word contraction before or after a dash |
| |
| endword -af 36-1-124 |
| begword af- 1-124-36 |
| endword -altid 36-1-2345-145 |
| begword altid- 1-2345-145-36 |
| endword -at 36-1-2345 |
| endword -a 36-6-1 |
| begword at- 1-2345-36 |
| endword -og 36-135-1245 |
| endword -c 36-6-14 |
| begword og- 135-1245-36 |
| endword -du 36-145-136 |
| endword -d 36-6-145 |
| begword du- 145-136-36 |
| endword -efter 36-15-124-2345-156 |
| endword -z 36-6-1356 |
| begword efter- 15-124-2345-156-36 |
| midword -efter- 36-1356-36 |
| endword -e 36-6-15 |
| endword -for 36-124-1346 |
| endword -f 36-6-124 |
| begword for- 124-1346-36 |
| endword -fra 36-124-1235-1 |
| begword fra- 124-1235-1-36 |
| endword -g 36-6-1245 |
| endword -gennem 36-1245-126-1246-134 |
| begword gennem- 1245-126-1246-134-36 |
| endword -ham 36-125-1-134 |
| begword ham- 125-1-134-36 |
| endword -han 36-125-1-1345 |
| endword -y 36-6-13456 |
| begword han- 125-1-1345-36 |
| endword -har 36-125-1-1235 |
| endword -h 36-6-125 |
| begword har- 125-1-1235-36 |
| endword -hun 36-125-136-1345 |
| endword -u 36-6-136 |
| begword hun- 125-136-1345-36 |
| endword -j 36-6-245 |
| endword -kan 36-13-1-1345 |
| endword -k 36-6-13 |
| begword kan- 13-1-1345-36 |
| endword -lige 36-123-24-12456 |
| endword -l 36-6-123 |
| begword lige- 123-24-12456-36 |
| endword -med 36-146-145 |
| endword -m 36-6-134 |
| begword med- 146-145-36 |
| endword -men 36-134-126 |
| begword men- 134-126-36 |
| endword -ned 36-1246-145 |
| begword ned- 1246-145-36 |
| endword -når 36-1345-16-1235 |
| endword -n 36-6-1345 |
| begword når- 1345-16-1235-36 |
| endword -op 36-135-1234 |
| endword -o 36-6-135 |
| begword op- 135-1234-36 |
| endword -over 36-135-1236-156 |
| endword -x 36-6-1346 |
| begword over- 135-1236-156-36 |
| endword -på 36-1234-16 |
| endword -p 36-6-1234 |
| begword på- 1234-16-36 |
| midword -på- 36-1234-36 |
| endword -ret 36-1235-346 |
| begword ret- 1235-346-36 |
| midword -ret- 36-12356-36 |
| endword -rigtig 36-1235-35-2345-35 |
| endword -r 36-6-1235 |
| begword rigtig- 1235-35-2345-35-36 |
| midword -rigtig- 36-1235-36 |
| endword -skal 36-123456-1-123 |
| begword skal- 123456-1-123-36 |
| midword -skal- 36-123456-36 |
| endword -som 36-234-135-134 |
| endword -s 36-6-234 |
| begword som- 234-135-134-36 |
| midword -som- 36-234-36 |
| endword -så 36-234-16 |
| endword -å 36-6-16 |
| begword så- 234-16-36 |
| endword -til 36-2345-24-123 |
| endword -t 36-6-2345 |
| begword til- 2345-24-123-36 |
| midword -til- 36-2345-36 |
| endword -under 36-136-1345-23456 |
| begword under- 136-1345-23456-36 |
| midword -under- 36-12345-36 |
| endword -ved 36-1236-15-145 |
| endword -v 36-6-1236 |
| begword ved- 1236-15-145-36 |
| midword -ved- 36-1236-36 |
| |
| |
| ### Context rules - forward translation |
| |
| # Exclamation at beginning of string |
| noback context `["!"] @6-235 |
| |
| # Ensure two dashes where appropriate. |
| noback context $w["-"]$w @36 |
| noback context $sw["-"]$sw @36-36 |
| noback context `["-"]$sw @36-36 |
| noback context $sw["-"]~ @36-36 |
| noback context !$sw["-"]~ @36 |
| noback context `["-"]~ @36-36 |
| |
| # Ensure letsign between letter and numsign |
| noback context $l[]$D @6 |
| |
| # No "nd", "hv", "or", or "st" after a digit and a letsign |
| noback context $dy["hv"] @6-125-1236 |
| noback context $dy$Spm["hv"] @6-125-1236 |
| noback context $dy["nd"] @6-1345-145 |
| noback context $dy$Spm["nd"] @6-1345-145 |
| noback context $dy["or"] @6-135-1235 |
| noback context $dy$Spm["or"] @6-135-1235 |
| noback context $dy["st"] @6-234-2345 |
| noback context $dy$Spm["st"] @6-234-2345 |
| noback context $dy["te"] @6-2345-15 |
| noback context $dy$Spm["te"] @6-2345-15 |
| |
| |
| #ensure dot 6 between a digit and a letter |
| noback context $dy[]$u @6 |
| noback context $dy$Spm.[]$u @6 |
| |
| ### context - backward translation |
| |
| # Ensure the correct number of dashes |
| nofor context @36[@36-36] "--" |
| nofor context [@36-36]@36 "--" |
| nofor context $w[@36-36]$w "--" |
| nofor context $sw[@36-36]$sw "-" |
| nofor context `[@36-36]$sw "-" |
| nofor context $sw[@36-36]~ "-" |
| nofor context `@36-36~ "-" |
| |
| |
| ### Pass 2 - forward translation |
| |
| # Correct chars defined as 8 dots because they include letsign |
| noback pass2 @467 @45-6 |
| noback pass2 @4568 @45-456 |
| noback pass2 @123457 @6-12345 |
| noback pass2 @24567 @6-2456 |
| noback pass2 @13467 @6-1346 |
| noback pass2 @13567 @6-1356 |
| noback pass2 @12567 @6-1256 |
| |
| noback pass2 @6-46-5 @46-5 # no letsign before cap letters with accent |
| noback pass2 _$D[@6-46-6] * |
| noback pass2 _$D[@6-46] * |
| noback pass2 @6-46-6 @46-6 # Ensure correct order and no double letsign |
| noback pass2 @6-46 @46-6 # Ensure correct order |
| |
| ### Pass 2 - backward |
| |
| # Insert letsign between number (with extra punctuation) and capsletter sign |
| #nofor pass2 @3456$l.$Spm$l.@3$l.@3[]@46 @6 |
| #nofor pass2 @3456$l.$Spm$l.@3[]@46 @6 |
| #nofor pass2 @3456$l.$Spm$Spm[]@46 @6 |
| #nofor pass2 @3456$l.$Spm[]@46 @6 |
| |
| ## Insert letsign between number (with extra punctuation) and capsword sign |
| #nofor pass2 @3456$l.$Spm$l.@3$l.@3[]@456 @6 |
| #nofor pass2 @3456$l.$Spm$l.@34$l.@34[]@456 @6 |
| #nofor pass2 @3456$l.$Spm$l.@36$l.@36[]@456 @6 |
| #nofor pass2 @3456$l.$Spm$l.@3[]@456 @6 |
| #nofor pass2 @3456$l.$Spm$l.@34[]@456 @6 |
| #nofor pass2 @3456$l.$Spm$l.@36[]@456 @6 |
| #nofor pass2 @3456$l.$Spm$Spm[]@456 @6 |
| #nofor pass2 @3456$l.$Spm[]@456 @6 |
| #nofor pass2 @3456$l.[]@456 @6 |
| |
| ### Pass 3 - forward translation |
| |
| # Ensure there is only one letsign |
| noback pass3 @6-6 @6 |
| |
| |
| ### Pass 3 - backward translation |
| |
| # Save letters that have been defined with letsign as part of their definitions |
| nofor pass3 @6-12345 @6-123457 |
| nofor pass3 @6-2456 @6-24567 |
| nofor pass3 @6-1346 @6-13467 |
| nofor pass3 @6-1356 @13567 |
| nofor pass3 @6-1256 @6-12567 |
| |
| # save ~ and | before inserting extra letsigns and endcapsword in pass 2. |
| nofor pass3 @45-6 @467 # Create alternative representation of "~" |
| nofor pass3 @45-456 @4568 |