# liblouis: Arabic Grade 1 table without math character definitions

# Based on the official Unified Arabic Braille Project website
# <https://mip.qa/braille>: a comprehensive resource containing all
# details about Arabic braille, including complete references,
# tutorials and awareness articles. It also provides a platform for
# suggestions and comments to improve Arabic braille further.

# This table was originally built by Leon Ungier
# <Leon.Ungier@ViewPlus.com> with help and guidance from Mohammed
# R. Ramadan <mramadan@nattiq.com>, and improved over the years.

# Copyright (C) 1995-2004 by The BRLTTY Team. 
# Copyright (C) 2004 by ViewPlus Technologies, Inc.,  www.viewplustech.com
# Copyright (C) 2004 by Computers to Help People, Inc., www.chpi.org  
# Copyright (C) 2011-2012 by Mesar Hameed <mesar.hameed@gmail.com>
# Copyright (C) 2018,2020 by Ikrami Ahmad <ikrami.ahmad@gmail.com>
# Copyright (C) 2020 Mada, Qatar Assistive Technology Center <Braille@mada.org.qa>

# This file 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.

# This file 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 this file; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

include text_nabcc.dis All display opcodes
include spaces.uti
include braille-patterns.cti # unicode braille.

# Arabic characters
letter ء 3 # arabic individual hamza (\x0621)
letter آ 345 # arabic alef madd (\x0622)
letter أ 34 # arabic hamza above alef (\x0623)
letter ؤ 1256 # arabic hamza on waw (\x0624)
letter إ 46 # arabic hamza below alef (\x0625)
letter ئ 13456 # arabic hamza on iaa (\x0626)
letter ا 1 # arabic Alef (\x0626)
letter ب 12 # arabic baa (\x0628)
letter ة 16 # arabic taa marbuta (\x0629)
letter ث 1456 # arabic thaa (\x062B)
letter ت 2345 # arabic Taa (\x062A)
letter ج 245 # arabic jeem (\x062C)
letter ح 156 # arabic strong haa (\x062D)
letter خ 1346 # arabic Khaa (\x062E)
letter د 145 # arabic dal (\x062F)
letter ذ 2346 # arabic thal (\x0630)
letter ر 1235 # arabic raa (\x0631)
letter ز 1356 # arabic zaai (\x0632)
letter س 234 # arabic seen (\x0633)
letter ش 146 # arabic sheen (\x0634)
letter ص 12346 # arabic saad (\x0635)
letter ض 1246 # arabic dhaad (\x0636)
letter ط 23456 # arabic strong taa (\x0637)
letter ظ 123456 # arabic strong thaa (\x0638)
letter ع 12356 # arabic ayn (\x0639)
letter غ 126 # arabic ghayn (\x063A)
letter ف 124 # arabic faa (\x0641)
letter ق 12345 # arabic strong qaaf (\x0642)
letter ك 13 # arabic kaaf (\x0643)
letter ل 123 # arabic laam (\x0644)
letter م 134 # arabic meem (\x0645)
letter ن 1345 # arabic noon (\x0646)
letter ه 125 # arabic soft haa (\x0647)
letter و 2456 # arabic waaw (\x0648)
letter ى 135 # arabic alef maqsoora (\x0649)
letter ي 24 # arabic iaa (\x064A)
letter َ 2 # arabic diacritic symbol fathah (\x064E)
letter ِ 15 # arabic diacritic symbol kasrah (\x0650)
letter ً 23 # arabic diacritic symbol tanween fath (\x064B)
letter ٌ 26 # arabic diacritic symbol tanween dham (\x064C)
letter ٍ 35 # arabic diacritic symbol tanween kasr (\x064D)
letter ُ 136 # arabic diacritic symbol dhamma (\x064F)
letter ّ 6 # arabic diacritic symbol shadda (\x0651)
letter ْ 25 # arabic diacritic symbol sukoon (\x0652)
#additional forms
letter \x067E 12 #Arabic letter Peh
letter \x0686 245 # arabic letter gtcheh چ
letter \x06a4 124 # arabic letter Veh ڤ
letter \x06af 13 # arabic letter gaf گ

noback sign ـ 25-25 # arabic tatweel (\x0640)

always \x0644\x0627 1236 # to join lam and alef together in one cell if they come in one word
midendword \x0651 6 # to indicate that Shadda can never come at the beginning of a word
midendword \x0652 25 # arabic diacritic symbol sukoon (\x0652)
midendword َ 2

#the following to correct Shadda symbol, which should be written before the character in Arabic braille code. this will consists of every arabic character followed by the Shadda diacritic symbol, and a dot pattern of the braille shadda followed by the character.
noback always ءّ 6-3
noback always آّ 6-345
noback always أّ 6-34
noback always ؤّ 6-1256
noback always إّ 6-46
noback always ئّ 6-13456
noback always اّ 6-1
noback always بّ 6-12
noback always ةّ 6-16
noback always ثّ 6-1456
noback always تّ 6-2345
noback always جّ 6-245
noback always حّ 6-156
noback always خّ 6-1346
noback always دّ 6-145
noback always ذّ 6-2346
noback always رّ 6-1235
noback always زّ 6-1356
noback always سّ 6-234
noback always شّ 6-146
noback always صّ 6-12346
noback always ضّ 6-1246
noback always طّ 6-23456
noback always ظّ 6-123456
noback always عّ 6-12356
noback always غّ 6-126
noback always فّ 6-124
noback always قّ 6-12345
noback always كّ 6-13
noback always لّ 6-123
noback always مّ 6-134
noback always نّ 6-1345
noback always هّ 6-125
noback always وّ 6-2456
noback always يّ 6-24
noback always لاّ 6-1236

punctuation ، 5 # Arabic comma (\x060C)
# Arabic semi-colon: in the old standard it was dots 56; had to be changed to make way for the implementation of the
# grade 1 indicator.
punctuation \x061B 5-23
noback punctuation ; 5-23
punctuation : 5-2
punctuation \x061F 236 # Arabic question mark ؟
noback punctuation ? 236
punctuation \x06D4 256 # Arabic Full stop
punctuation . 256
noback punctuation , 2
punctuation ! 235
punctuation " 2356
# number sign: the old standard mapped it to 3456, but had to be changed in order to distinguish other uses beside
# preceding numbers.
sign # 456-35
# dollar sign: in the old standard it is mapped to dots 12456 but this would conflict with the contraction هم in grade 2.
sign $ 4-256
punctuation % 25-1234
sign & 4-12346
noback punctuation ' 3 # apostrophe
punctuation ) 356
punctuation ( 236
sign * 56-35
math + 56-235
punctuation - 36-36
nofor punctuation - 36-0
# forward slash: originally mapped to dots 34; had to be changed so that it does not conflict with the letter \x0623
# (arabic hamza above alef)
math / 456-36

# Arabic numbers
digit \x0660 245 # 0 (٠)
digit \x0661 1 # 1 (١)
digit \x0662 12 # 2 (٢)
digit \x0663 14 # 3 (٣)
digit \x0664 145 # 4 (٤)
digit \x0665 15 # 5 (٥)
digit \x0666 124 # 6 (٦)
digit \x0667 1245 # 7 (٧)
digit \x0668 125 # 8 (٨)
digit \x0669 24 # 9 (٩)
litdigit \x0660 245 # 0 (٠)
litdigit \x0661 1 # 1 (١)
litdigit \x0662 12 # 2 (٢)
litdigit \x0663 14 # 3 (٣)
litdigit \x0664 145 # 4 (٤)
litdigit \x0665 15 # 5 (٥)
litdigit \x0666 124 # 6 (٦)
litdigit \x0667 1245 # 7 (٧)
litdigit \x0668 125 # 8 (٨)
litdigit \x0669 24 # 9 (٩)

# Latin numbers
include loweredDigits6Dots.uti
include litdigits6Dots.uti

# less than sign: the old standard mapped it to dots 246, which conflicted with a contraction in grade 2
math < 45-26
math = 56-2356 
# greater than sign: the old standard mapped it to dots 135, which conflicted with a character and a contraction
math > 45-35
# at sign: the old standard used dot 4; it was changed to match the UEB representation, in order to make it readable
# also in grade 2
sign @ 4-1

include latinLetterDef6Dots.uti
punctuation [ 6-236
sign \\ 45-36 # not mentioned in the Unified arabic braille code.
punctuation ] 356-3 
# caret sign: changed to match the UEB representation because dots 346 is used as a prefix for many math symbols
sign ^ 4-26
sign _ 6-36 # underscore
noback sign ` 4 # grave accent
punctuation { 5-236
# vertical bar: changed so that it can not be confused with latin letter g or the contraction of the word كان
sign | 456-25
punctuation } 356-2
# tilde: the old standard mapped it to dots 45; had to be changed so that it can be read in grade 2 context
math ~ 45-25

punctuation \x00Ad 36-36 # soft hyphen

sign \x00AB 6-2356 # LEFT-POINTING DOUBLE ANGLE QUOTATION
sign \x00BB 2356-3 # RIGHT-POINTING DOUBLE ANGLE QUOTATION
noback punctuation \x2018 3 # smart single left quotation mark
noback punctuation \x2019 3 # smart single right quotation mark
punctuation \x201C 2356 # smart opening double quote
punctuation \x201D 2356 # smart closing double quote
punctuation \x201E 2356 # smart double low quotation mark
punctuation \x201F 2356 # smart double high reverse quotation mark
sign \x2329 2356 〈
sign \x232A 2356 〉
math \x3008 2356 〈
math \x3009 2356 〉

punctuation \x00bf 45-56-236 ¿
sign \x00a1 45-56-235 ¡
math \x2212 56-36 # − minus الطرح
math \x00D7 56-236 # × multiplication sign
math \x2715 56-236 MULTIPLICATION SIGN
math \x00F7 56-256 # ÷ division sign

sign \x200C 9 # ZERO WIDTH NON-JOINER
punctuation \x2010 36-36 # hyphen
punctuation \x2011 36-36 #  non-breaking hyphen
punctuation \x2013 5-36-36 –
punctuation \x2014 45-36-36 —
punctuation \x2015 456-36-36 ―

# smart ellipsis: was changed from dots 3-3-3, so as to keep consistency with the period
punctuation \x2026 256-256-256
sign \x2022 456-256 •   bullet
noback sign \x25CF 35 # BLACK CIRCLE not representing filled circle shape as it is mostly used in password fields to represent hidden characters

#additional rules
postpunc ) 356
prepunc ( 236
begnum # 456-35
midnum . 256
# the old standard assigned the math comma to dot 3, which is awkward; changed to match other braille codes and to be in
# the upper part of the cell like the numbers
midnum , 2
noback postpunc , 2
decpoint . 256
midnum - 36-36
hyphen - 36-36
postpunc ، 5 # Arabic comma (\x060C)
postpunc . 256
postpunc \x06D4 256 # Arabic Full stop
postpunc ; 5-23
postpunc \x061B 5-23 # Arabic semiColon
midnum : 5-2
postpunc : 5-2
midnum / 456-36
postpunc \x061F 236 # Arabic question mark ؟
postpunc ? 236
endnum % 25-1234
midnum ^ 4-26

# Braille indicators
numsign 3456  number sign, just a dots operand
numericmodechars .,
nocontractsign 56
numericnocontchars ابدِبهيجabcdefghij

noback multind 56-6 letsign capsletter
noback capsletter 6
noback begcapsword 6-6
noback endcapsword 6-3
emphclass italic
emphclass underline
emphclass bold
noback begemph italic 46
noback endemph italic 46-46
noback begemph bold 456
noback endemph bold 456-456
