# liblouis: German grade 0 braille
#
#  Copyright (C) 2009 SBS Schweizerische Bibliothek für Blinde und Sehbehinderte
#
#  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/>.
#
#-------------------------------------------------------------------------------
#
#  DEUTSCHE BASISSCHRIFT - German grade 0 braille
#
#  Version 11-17-09
#  christian.waldvogel@sbszh.ch
#
#-------------------------------------------------------------------------------

include countries.cti

# --- Braille indicator opcodes ------------------------------------------------

# letsign 6

# capsletter 46
begcapsword 45
endcapsword 6

numsign 3456

# --- Emphasis opcodes ---------------------------------------------------------

emphclass italic
emphclass underline
emphclass bold

endemphphrase italic after 6-3
lenemphphrase italic 1
begemphword italic 6-456
endemphword italic 6-3
emphletter italic 456

endemphphrase bold after 6-3
lenemphphrase bold 1
begemphword bold 6-456
endemphword bold 6-3
emphletter bold 456

endemphphrase underline after 6-3
lenemphphrase underline 1
begemphword underline 6-456
endemphword underline 6-3
emphletter underline 456

begcomp 6-46
# endcomp 6-3         # Omitted here (only to be used when longer than one word)

# --- Special Symbol Opcodes ---------------------------------------------------

hyphen - 36

# --- Special Processing Opcodes -----------------------------------------------

capsnocont

# --- Translation opcodes ------------------------------------------------------

# Mehrfach-Leerschläge eliminieren

midnum , 2 Komma
endnum ; 6-23 Strichpunkt
endnum : 6-25
endnum ? 6-26 Fragezeichen
endnum ! 6-235 Ausrufezeichen
always ! 235
midword ( 6-2356 Runde Klammer auf
midnum ( 6-2356-3456
endnum ( 6-2356
always ( 2356
midword ) 6-2356 Runde Klammer zu
midnum ) 6-2356-3456
endnum ) 6-2356
always ) 2356
prepunc " 236 Anführungszeichen am Anfang
prepunc « 236
prepunc » 236
endnum " 6-356 Anführungszeichen am Ende
postpunc " 356
postpunc » 356
postpunc « 356
midnum . 3 Punkt
always .\s.\s. 3-3-3
midnum ' 3 Apostroph (Gliederung grosser Zahlen)

always ** 6-35-35 Anmerkungssternchen
always *** 6-35-35-35
prepunc \x2039 6-236 Halbes Anführungszeichen am Anfang
prepunc \x203a 6-236
prepunc \x2018 6-236
prepunc \x2019 6-236
postpunc \x2039 6-356 Halbes Anführungszeichen am Ende
postpunc \x203a 6-356
postpunc \x2018 6-356
postpunc \x2019 6-356

always \x2192 0-25-25-135-0 Pfeil nach rechts
always \x2190 0-246-25-25-0 Pfeil nach links
always \x2194 0-246-25-25-135-0 Pfeil nach links und rechts
always & 5-136 Et-Zeichen

include litdigits6Dots.uti

midnum ' 3

endnum a 6-1
endnum b 6-12
endnum c 6-14
endnum d 6-145
endnum e 6-15
endnum f 6-124
endnum g 6-1245
endnum h 6-125
endnum i 6-24
endnum j 6-245

always % 3456-245-356 Prozent
always \s% 3456-245-356
always \s\x2030 3456-245-356-356 Promille 0/00
always \s\x2031 3456-245-356-356-356 0/000
always \s° 4-356 Grad
always \s\x2032 4-35 Winkelminute
always \s\x2033 4-35-35 Winkelsekunde

begnum § 346 Paragrafzeichen
joinnum § 346

endnum .-- 3-36-36
endnum ,-- 2-36-36

always \s-\s 6-36-0 Gedankenstrich
always \s-- 6-36
always -- 6-36 Streckenstrich
always \s\x2013 6-36 EN DASH
always \s\x2014 6-36 EM DASH

always / 5-2 Schrägstrich
always | 0-456-123-0 Senkrechter Strich

joinnum £ 4-123 Pfund
joinnum $ 4-234 Dollar
always $ 4-234 Dollar
joinnum ¢ 4-14 Cent
joinnum ¥ 4-13456 Yen
joinnum Fr. 124-1235-3 Franken    !!! TUT NICHT !!!
joinnum Fr 124-1235
joinnum F 124

# Plus:
midnum \s+\s 0-4-235-3456
midnum \s+ 0-4-235-3456
midnum + 0-4-235-3456
always + 4-235
# Minus:
begnum \s- 0-4-36-3456
always \s- 0-6-36
midnum \s\x2212\s 0-4-36-3456
midnum \s\x2212 0-4-36-3456
midnum \x2212 0-4-36-3456
always \x2212 4-36
# Plus Minus:
midnum \s±\s 0-4-235-36-3456
midnum \s± 0-4-235-36-3456
midnum ± 0-4-235-36-3456
always ± 4-235-36
# Gleich:
midnum \s=\s 0-4-2356-3456
midnum \s= 0-4-2356-3456
midnum = 0-4-2356-3456
always = 4-2356
# Ungleich:
midnum \s\x2260\s 0-4-35-2356-3456
midnum \s\x2260 0-4-35-2356-3456
midnum \x2260 0-4-35-2356-3456
always \x2260 4-35-2356
# Identisch gleich:
midnum \s\x2261\s 0-4-2356-2356-3456
midnum \s\x2261 0-4-2356-2356-3456
midnum \x2261 0-4-2356-2356-3456
always \x2261 4-2356-2356
# Äquivalent:
midnum \s\x2259\s 0-4-26-3456
midnum \s\x2259 0-4-26-3456
midnum \x2259 0-4-26-3456
always \x2259 4-26
# Ungefähr gleich:
midnum \s\x2245\s 0-4-26-26-3456
midnum \s\x2245 0-4-26-26-3456
midnum \x2245 0-4-26-26-3456
always \x2245 4-26-26
# Mal(-Kreuz):
midnum \s×\s 0-4-236-3456
midnum \s× 0-4-236-3456
midnum × 0-4-236-3456
always × 4-236
# Mal(-Stern):
midnum \s\x2217\s 3-3456
midnum \s\x2217 3-3456
midnum \x2217 3-3456
midnum \s*\s 3-3456
midnum \s* 3-3456
midnum * 3-3456
# Anmerkungssternchen:
always * 6-35
# Mal(-Punkt):
midnum \s\x22c5\s 3-3456
midnum \s\x22c5 3-3456
midnum \x22c5 3-3456
# Mal(-Stern):
midnum \s\x22c6\s 3-3456
midnum \s\x22c6 3-3456
midnum \x22c6 3-3456
# Doppelpunkt (dividiert durch, verhält sich zu):
midnum \s:\s 4-25-3456
midnum \s: 4-25-3456
midnum : 4-25-3456
midnum \s÷\s 0-4-25-3456
midnum \s÷ 0-4-25-3456
midnum ÷ 0-4-25-3456
always ÷ 4-25
midnum \s\x2215\s 0-4-25-3456
midnum \s\x2215 0-4-25-3456
midnum \x2215 0-4-25-3456
always \x2215 4-25
# Proportional:
midnum \s~\s 0-4-25-25-3456
midnum \s~ 0-4-25-25-3456
midnum ~ 0-4-25-25-3456
always ~ 4-25-25
midnum \s\x223C\s 0-4-25-25-3456
midnum \s\x223C 0-4-25-25-3456
midnum \x223C 0-4-25-25-3456
always \x223C 4-25-25
# Kleiner als:
midnum \s<\s 0-4-246-3-3456
midnum \s< 0-4-246-3-3456
midnum < 0-4-246-3-3456
always < 4-246-3
# Kleiner oder gleich:
midnum \s\x2264\s 0-4-246-2356-3456
midnum \s\x2264 0-4-246-2356-3456
midnum \x2264 0-4-246-2356-3456
always \x2264 4-246-2356
midnum \s\x2266\s 0-4-246-2356-3456
midnum \s\x2266 0-4-246-2356-3456
midnum \x2266 0-4-246-2356-3456
always \x2266 4-246-2356
# Grösser als:
midnum \s>\s 0-4-135-2-3456
midnum \s> 0-4-135-2-3456
midnum > 0-4-135-2-3456
always > 4-135-2
# Grösser oder gleich:
midnum \s\x2265\s 0-4-135-2356-3456
midnum \s\x2265 0-4-135-2356-3456
midnum \x2265 0-4-135-2356-3456
always \x2265 4-135-2356
midnum \s\x2267\s 0-4-135-2356-3456
midnum \s\x2267 0-4-135-2356-3456
midnum \x2267 0-4-135-2356-3456
always \x2267 4-135-2356


# special character sequences

literal :// URLs
literal www.
literal @ Mail-address

literal .com
literal .edu
literal .gov
literal .mil
literal .net
literal .org

literal .doc
literal .htm
literal .html
literal .tex
literal .txt

literal .gif
literal .jpg
literal .png
literal .wav

literal .tar
literal .zip


