This file is indexed.

/usr/share/liblouis/tables/da-dk-g26l-lit.ctb is in liblouis-data 3.5.0-1ubuntu0.3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
# Liblouis: Danish table for 6 dots grade 1.5 (grade 2l) literary, forward translation only
#
#  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

#-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

### Character definitions

# 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)

# Definition of dot cells
space \s 0
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

# 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 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\x0160\x0152\x017d\x0178\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\x0161\x0153\x017e\x00ff\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

# 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

### 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-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