# Liblouis: Danish table for 6 dots grade 1.5 (grade 2l) literary, forward translation only # # Copyright (C) 2014-2020, Bue Vester-Andersen # # 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 # . # # Version: Bue Vester-Andersen, 200302 ### 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: forward # 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 undefined 26 ### Braille indicators and special characters #hyphen - 36 letsign 6 noletsign Ii\x00df\x0149\x0152\x0153 # 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 68 # Used during back-translation to stop overflow of capsword multind 6-46 letsign capsletter multind 46-6 capsletter letsign multind 6-456 letsign begcapsword multind 68-6-46 endcapsword letsign capsletter multind 68-6-456 endcapsword letsign begcapsword multind 68-6 endcapsword letsign 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 "'" # Convert most single caps to lowercase #Special abbreviations with imbedded small letters. # Must be handled by case in this version of liblouis noback correct "KAbB" "KABB" noback correct "CUDiM" "CUDIM" swapcc UpperLower ABCDEFGHIJKLMNOPQRSTUVWXYZ\x00c0\x00c1\x00c2\x00c3\x00c4\x00c5\x00c6\x00c7\x00c8\x00c9\x00ca\x00cb\x00cc\x00cd\x00ce\x00cf\x00d0\x00d1\x00d2\x00d3\x00d4\x00d5\x00d6\x00d8\x00d9\x00da\x00db\x00dc\x00dd\x00de\x008a\x008c \ abcdefghijklmnopqrstuvwxyz\x00e0\x00e1\x00e2\x00e3\x00e4\x00e5\x00e6\x00e7\x00e8\x00e9\x00ea\x00eb\x00ec\x00ed\x00ee\x00ef\x00f0\x00f1\x00f2\x00f3\x00f4\x00f5\x00f6\x00f8\x00f9\x00fa\x00fb\x00fc\x00fd\x00fe\x009a\x009c swapcc UpperLowerExt \x0100\x0102\x0104\x0106\x0108\x010a\x010c\x010e\x0110\x0112\x0114\x0116\x0118\x011a\x011c\x011e\x0120\x0122\x0124\x0126\x0128\x012a\x012c\x012e\x0130\x0132\x0134\x0136\x0139\x013b\x013d\x013f\x0141\x0143\x0145\x0147\x014a\x014c\x014e\x0150\x0152\x0154\x0156\x0158\x015a\x015c\x015e\x0160\x0162\x0164\x0166\x0168\x016a\x016c\x016e\x0170\x0172\x0174\x0176\x0178\x0179\x017b\x017d\x0386\x0388\x0389\x038a\x038c\x038e\x038f\x0391\x0392\x0393\x0394\x0395\x0396\x0397\x0398\x0399\x039a\x039b\x039c\x039d\x039e\x039f\x03a0\x03a1\x03a3\x03a4\x03a5\x03a6\x03a7\x03a8\x03a9 \ \x0101\x0103\x0105\x0107\x0109\x010b\x010d\x010f\x0111\x0113\x0115\x0117\x0119\x011b\x011d\x011f\x0121\x0123\x0125\x0127\x0129\x012b\x012d\x012f\x0131\x0133\x0135\x0137\x013a\x013c\x013e\x0140\x0142\x0144\x0146\x0148\x014b\x014d\x014f\x0151\x0153\x0155\x0157\x0159\x015b\x015d\x015f\x0161\x0163\x0165\x0167\x0169\x016b\x016d\x016f\x0171\x0173\x0175\x0177\x00ff\x017a\x017c\x017e\x03ac\x03ad\x03ae\x03af\x03cc\x03cd\x03ce\x03b1\x03b2\x03b3\x03b4\x03b5\x03b6\x03b7\x03b8\x03b9\x03ba\x03bb\x03bc\x03bd\x03be\x03bf\x03c0\x03c1\x03c3\x03c4\x03c5\x03c6\x03c7\x03c8\x03c9 # I is a special case noback correct _$sp["I"]$sp "i" noback correct `["I"]$sp "i" noback correct _$sp["I"]~ "i" noback correct $sSpu[%UpperLower]$u %UpperLower noback correct `[%UpperLower]$u %UpperLower noback correct $sSpu[%UpperLowerExt]$u %UpperLowerExt noback correct `[%UpperLowerExt]$u %UpperLowerExt ### Pass 1 # 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-3456 # 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 after punctuation always ) 68-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 af/på 356-34-68-1234 word du/i 145-34-24 word du/i 145-34-68-24 word eller/og 15-34-14 word eller/og 15-34-68-14 word fra/til 235-34-2345 word fra/til 235-34-68-2345 word han/hun 13456-34-136 word han/hun 13456-34-68-136 word hun/han 136-34-13456 word hun/han 136-34-68-13456 word i/du 24-34-145 word i/du 24-34-68-145 word og/eller 14-34-15 word og/eller 14-34-68-15 word over/under 1346-34-12345 word over/under 1346-34-68-12345 word på/af 1234-34-356 word på/af 1234-34-68-356 word til/fra 2345-34-235 word til/fra 2345-34-68-235 word under/over 12345-34-1346 word under/over 12345-34-68-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 # Substitutions for joinnum rules with common math signs noback context $dy$s["-"$s]$dy @36 noback context $dy$s["+"$s]$dy @235 noback context $dy$s["\x00d7"$s]$dy @3 noback context $dy$s["\x00f7"$s]$dy @256 noback context $dy$s["="$s]$dy @2356 # Space on each side of = when between letters or punctuation. noback context $lp["="]$lp @0-2356-0 # 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 ### 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 # Show endcapsword as dot 6 (letsign) noback pass2 @68 @6 noback pass2 @6-5 @5 # no letsign before letters with accent 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 3 - forward translation # Ensure there is only one letsign noback pass3 @6-6 @6