#
#  Copyright (C) 2011 by Peter Engström <peter.engstrom@indexbraille.com>
#
#  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/>.
#
# -----------------------------------------------------------------------------
#
# 	SORANI (KURDISH)
#	================
# 	Author:		Peter Engström
# 	Company:	Index Braille
#
# 	Date: 		Note:
#	2011-02-08	Renamed _translation_ar-g1.ctb and changed first line to access this file.
#				Peter Engström, Index Braille.
#	2011-03-15	Updated by Peter Engström
#
# ---------------------------------------------------------------------------------------

always \x0644\x0627 123-1					#[Peter Engström 2011-02-08]
always \x0640\x0640\x0640\x064F 136
always \x0640\x0640\x0640\x064B 23
always \x0640\x0640\x0640\x064C 26


include countries.cti
#undefined 123456

# Braille indicators
numsign 3456  number sign, just a dots operand
multind 56-6 letsign capsletter
capsletter 6
begcapsword 6-6
endcapsword 6-3
emphclass italic
emphclass underline
emphclass bold
begemph italic 46
endemph italic 46-46
begemph bold 456
endemph bold 456-456
begcomp 456-346
endcomp 456-156

# the decimal digits
include litdigits6Dots.uti

# Letters are defined in en-chardefs
# punctuation

prepunc ) 356
postpunc ( 236

prepunc " 236	#[Peter Engström 2011-03-15]
postpunc " 236	#[Peter Engström 2011-03-15]

prepunc ' 3		#[Peter Engström 2011-03-15]
postpunc ' 3	#[Peter Engström 2011-03-15]
word 'em = 
word 'tis =
word 'twas =
begnum # 3456 print number sign before number #[Peter Engström 2011-03-15]
midnum , 46
postpunc , 46
decpoint . 46
midnum - 36
hyphen - 36
#capsnocont
postpunc . 256
postpunc ; 5		#[Peter Engström 2011-03-15]
midnum : 5-2		#[Peter Engström 2011-03-15]
postpunc : 5-2		#[Peter Engström 2011-03-15]
postpunc ! 235
midnum / 34
always / 34
#always < 0-135-0	#[Peter Engström 2011-03-15]
# always > 0-246-0
postpunc ? 1456		#[Peter Engström 2011-03-15]
endnum % 1234		#[Peter Engström 2011-03-15]
midnum ^ 346		#[Peter Engström 2011-03-15]
always ^ 45			#[Peter Engström 2011-03-15]
always ~ 45
always & 12346		#[Peter Engström 2011-03-15]
midnum * 16			#[Peter Engström 2011-03-15]
always * 16			#[Peter Engström 2011-03-15]
always [ 13456		#[Peter Engström 2011-03-15]
always ] 12346		#[Peter Engström 2011-03-15]
always { 135		#[Peter Engström 2011-03-15]
always } 246		#[Peter Engström 2011-03-15]
prepunc ` 6-236
always @ 4
always \\ 1256		#[Peter Engström 2011-03-15]
always | 1245
always ... 3-3-3
always .\s.\s. 3-3-3 . . .
always $ 1246		#[Peter Engström 2011-03-15]

# special character sequences
compbrl :// URLs
compbrl www.
compbrl .com
compbrl .edu
compbrl .gov
compbrl .mil
compbrl .net
compbrl .org
compbrl .doc
compbrl .htm
compbrl .html
compbrl .tex
compbrl .txt
compbrl .gif
compbrl .jpg
compbrl .png
compbrl .wav
compbrl .tar
compbrl .zip
