617 lines
15 KiB
Plaintext
617 lines
15 KiB
Plaintext
# Liblouis: Danish table for 6 dots grade 1.5 (grade 2l) forward and backward translation
|
|
#
|
|
# Copyright (C) 2014-2020, 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, 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: 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
|
|
lowercase a 1
|
|
lowercase b 12
|
|
lowercase c 14
|
|
lowercase d 145
|
|
lowercase e 15
|
|
lowercase f 124
|
|
lowercase g 1245
|
|
lowercase h 125
|
|
lowercase i 24
|
|
lowercase j 245
|
|
lowercase k 13
|
|
lowercase l 123
|
|
lowercase m 134
|
|
lowercase n 1345
|
|
lowercase o 135
|
|
lowercase p 1234
|
|
lowercase r 1235
|
|
lowercase s 234
|
|
lowercase t 2345
|
|
lowercase u 136
|
|
lowercase v 1236
|
|
lowercase y 13456
|
|
|
|
#use 8 dots for the following chars to avoid conflict with indicators
|
|
lowercase q 123457
|
|
lowercase w 24567
|
|
lowercase x 13467
|
|
lowercase z 13567
|
|
punctuation | 4568 VERTICAL LINE
|
|
punctuation ~ 467 TILDE (changed by pass 2 to not conflict with indicators
|
|
lowercase \x00fc 12567
|
|
|
|
include digits6Dots.uti
|
|
|
|
punctuation \x00a7 346 SECTION SIGN (0xa7)
|
|
|
|
lowercase \x00e5 16 LATIN LETTER A WITH RING ABOVE
|
|
lowercase \x00e6 345 LATIN LETTER AE
|
|
lowercase \x00f8 246 LATIN LETTER O WITH STROKE
|
|
|
|
# Uppercase letters
|
|
base uppercase A a
|
|
base uppercase B b 1
|
|
base uppercase C c 1
|
|
base uppercase D d 14
|
|
base uppercase E e 1
|
|
base uppercase F f 12
|
|
base uppercase G g 124
|
|
base uppercase H h 12
|
|
base uppercase I i 2
|
|
base uppercase J j 24
|
|
base uppercase K k 1
|
|
base uppercase L l 12
|
|
base uppercase M m 13
|
|
base uppercase N n 134
|
|
base uppercase O o 13
|
|
base uppercase P p 123
|
|
base uppercase R r 123
|
|
base uppercase S s 23
|
|
base uppercase T t 234
|
|
base uppercase U u 13
|
|
base uppercase V v 123
|
|
base uppercase Y y 13456
|
|
base uppercase Q q 12345
|
|
base uppercase W w 2456
|
|
base uppercase X x 1346
|
|
base uppercase Z z 1356
|
|
base uppercase \x00dc \x00fc 12567
|
|
base uppercase \x00c5 \x00e5 LATIN LETTER A WITH RING ABOVE
|
|
base uppercase \x00c6 \x00e6 LATIN LETTER AE
|
|
base uppercase \x00d8 \x00f8 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 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 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.
|
|
attribute charsWDoubleDash .,?!/:"'() # class w
|
|
|
|
### Correct - forward translation
|
|
|
|
# Chars that don't require a space before percent and permille:
|
|
attribute 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
|
|
attribute extraDigits \x00bc\x00bd\x00be
|
|
|
|
#Use the "correct" opcode to convert chars that can't be back-translated
|
|
# and make the table more simple.
|
|
|
|
# Dashes
|
|
attribute dashes \x2013\x2014\x0096\x0097\x00ad
|
|
noback correct %dashes "-"
|
|
|
|
attribute quotes \x201e\x0084\x201c\x0093\x201d\x0094\x00ab\x00bb
|
|
noback correct %quotes "\""
|
|
|
|
attribute 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.
|
|
attribute 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-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 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
|