# liblouis: Norwegian literary braille, 6-dot, contracted level 1
#
#-name: Norsk litterær punktskrift, 6-punkt, kortskrift nivå 1
#-index-name: Norwegian, contracted, grade 1
#-display-name: Norwegian grade 1 contracted braille
#
#+locale:no
#+type:literary
#+direction:both
#+contraction:partial
#+dots:6
#+grade:1
#
#  Copyright (C) 2005 ViewPlus Technologies, Inc. www.viewplus.com
#  Copyright (C) 2009-2014 Lars Bjørndal <lars@lamasti.net>
#
#-copyright: 2005, ViewPlus Technologies, Inc. www.viewplus.com
#-copyright: 2009-2014, Lars Bjørndal
#-license: LGPLv2.1
#
# Created June 9, 2005 by Leon Ungier <Leon.Ungier@ViewPlus.com> with
# help and guidance from Lars Bjørndal <lars@lamasti.net>.
# Modified Sep 30, 2005 by LU
# Heavily overworked by lars@lamasti.net, 2009.
#
#-author-name: Leon Ungier
#-author-email: Leon.Ungier@ViewPlus.com
#-author-url: www.viewplus.com
#
#-author-name: Lars Bjørndal
#-author-email: lars@lamasti.net
#-author-url: https://github.com/larsbjorndal
#
# Official norwegian braille specifications are collected here:
# http://liblouis.org/braille-specs/norwegian
# This specific table is based on the document "Kortskrift i norsk punktskrift - KS04".
#
#  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/>.
#

include no-no-g0.utb
capsnocont
#------------------------------------------------------
# -------------- level 1 contractions -----------------
#------------------------------------------------------
endword ar 3456
word at 1
word ble 12
word de 1456
endword de 1456
word du 145
word eg 1245
word eller 15
word ellers 15-234
word en 126
endword en 126
word ende 126-1456
endword ende 126-1456
word er 156
endword er 156
word et 346
endword et 346
word etter 1356
begword etter 1356
word etterat 1356-1
word ettersom 1356-234
word etterpå 1356-1234

word for 1246											# level 1 contractions
endword for 1246
begword for 1246
word forat 1246-1
word forfra 1246-124
word forover 1246-1346
word forlike 1246-123

word forhold 12346
endword forhold 12346
begword forhold 12346

word forholdsvis 12346-1236

word fra 124											# level 1 contractions
word før 246
word gjennom 12456
begword gjennom 12456
endword gjennom 12456
word gjennomfør 12456-246

word han 125
word hans 125-234
word har 1235
word hun 136
word hvor 2456
begword hvor 2456

word ikke 24-13										# level 1 contractions
word ikkje 24-13-245
word jeg 245
word kan 13
word like 123
word mange 134
word med 146
word mye 13456
word når 1345

word og 14												# level 1 contractions
word også 14-234
word oss 135										
word over 1346
begword over 1346
word overfor 1346-1246
word overpå 1346-1234
word overunder 1346-12345
word overfør 1346-246
word overvære 1346-345
word overvar 1346-3456

word på 1234
word som 234
word til 2345
word under 12345
begword under 12345
word underer 12345-345
word underet 12345-346
word underfra 12345-124
word undersom 12345-234
word undertil 12345-2345

word var 3456
word ved 1236
word være 345											# level 1 contractions

letsign 56
noletsign i
noletsign I
noletsign å
noletsign Å
noletsign à
noletsign á
#noletsignbefore '.
noletsignafter :.

# Remove dot 56 before e-post (email)
noback pass2 @56-15-36-1234-135-234-2345 @15-36-1234-135-234-2345
noback pass2 @56-6-15-36-1234-135-234-2345 @6-15-36-1234-135-234-2345

# -------------------------------------------------------------------
