# liblouis: Persian  Grade 1 Braille table
#
# Copyright (C) 2011 by Mesar Hameed <mesar.hameed@gmail.com>
# Copyright (C) 2011 by Abdolamir Banisaeid <saedjan at gmail.com>
# Copyright (C) 2016 by Mohammadreza Rashad <mohammadreza5712@gmail.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/>.

# Fixed some conflicts in Persian Braille script and added
# Persian-specific signs which weren't available in previous table.

include braille-patterns.cti # unicode braille.


# ----------- define all chars --------------------------------------

space \t 0 tab
space \x000A 0
space \x000D 0
space \s 0 blank
punctuation ! 235
punctuation " 58
sign # 3456
sign $ 4-234
sign % 25-1234
sign & 123468
punctuation ' 3
punctuation ) 2356
punctuation ( 2356
sign * 246-135
math + 56-235
punctuation , 2
punctuation - 36
punctuation \x06D4 256
punctuation . 256
math / 348
punctuation : 25
punctuation ; 23
sign \x061B 23
math < 246
math = 56-2356
math > 135
punctuation ? 236
sign @ 4
punctuation [ 6-236
sign \\ 12568
punctuation ] 356-3
sign ^ 3468
sign _ 78
sign ` 48
punctuation { 5-236
sign | 4568-1237
punctuation } 356-2
math ~ 45
space \X00A0 0
sign \x00A2 4-14
sign \x00A3 4-123
sign \x00A5 4-13456
sign \x00A7 4-234-3
sign \x00A9 147-7
sign \x00AB 236
sign \x00AE 12357-7
punctuation \x00Ad 367
sign \x00B0 3568
sign \x00B5 46-134
sign \x00B6 4-1234-345
sign \x00BB 356
sign \x00BF 236
math \x00D7 56-236
math \x00F7 56-256
space \x200C 8
punctuation \x2010 368
punctuation \x2011 36-3
punctuation \x2013 6-36
punctuation	\x2018 236
punctuation	\x2019 356
punctuation	\x201C 6-12356
punctuation	\x201D 23456-3
punctuation	\x201E 123567
punctuation	\x201F 234568
punctuation \x2026 3-3-3
sign \x20AC 4-15
sign \x25CF 134678
math \x2212 56-36 (−)
sign \x2022 358 (•)
sign \x25E6 3578 (◦)
sign \x25FE 35678 (◾)

# English letters

uplow Aa 17,18
uplow Bb 127,128
uplow Cc 147,148
uplow Dd 1457,1458
uplow Ee 157,158
uplow Ff 1247,1248
uplow Gg 12457,12458
uplow Hh 1257,1258
uplow Ii 247,248
uplow Jj 2457,2458
uplow Kk 137,138
uplow Ll 1237,1238
uplow Mm 1347,1348
uplow Nn 13457,13458
uplow Oo 1357,1358
uplow Pp 12347,12348
uplow Qq 123457,123458
uplow Rr 12357,12358
uplow Ss 2347,2348
uplow Tt 23457,23458
uplow Uu 1367,1368
uplow Vv 12367,12368
uplow Ww 24567,24568
uplow Xx 13467,13468
uplow Yy 134567,134568
uplow Zz 13567,13568

# -------------------------- Arabic and Persian letters and symbols ---------------------------------

sign \x060C 2
sign \x061B 23
sign \x061F 236
sign \x0621 3
sign \x0622 345
sign \x0623 34
sign \x0624 1256
sign \x0625 34
sign \x0626 13456
sign \x0627 1
sign \x0628 12
sign \x067E 1234
sign \x0629 16
sign \x062A 2345
sign \x062B 1456
sign \x062C 245
sign \x0686 14
sign \x062D 156
sign \x062E 1346
sign \x062F 145
sign \x0630 2346
sign \x0631 1235
sign \x0632 1356
sign \x0698 346
sign \x0633 234
sign \x0634 146
sign \x0635 12346
sign \x0636 1246
sign \x0637 23456
sign \x0638 123456
sign \x0639 12356
sign \x063A 126
sign \x0640 6-3
sign \x0641 124
sign \x0642 12345
sign \x0643 13
sign \x06A9 13
sign \x06AF 1245
sign \x0644 123
sign \x0645 134
sign \x0646 1345
sign \x0648 2456
sign \x0647 125
sign \x064A 24
sign \x06CC 24
sign \x0649 135
sign \x064E 2
sign \x0650 15
sign \x064F 136
sign \x064B 23
sign \x064D 35
sign \x064C 26
sign \x0651 6
sign \x0652 25
sign \xFDFC 4-1235
sign \x066A 25-1234
sign \x066B 2
sign \x066C 3

# --------------------------- end definitions ---------------------------------

# include countries.cti


# Braille indicators

emphclass italic
emphclass underline
emphclass bold

begemph italic 46-46
endemph italic 46
begemph bold 456-456
endemph bold 4568
begemph underline 78-78
endemph underline 78

numsign 3456  number sign, just a dots operand
begnum # 3456-4 print number sign before number
midnum , 3
midnum ٬ 3

# the decimal digits
include digits6Dots.uti

# Arabic numerals

digit \x0660 245
digit \x0661 1
digit \x0662 12
digit \x0663 14
digit \x0664 145
digit \x0665 15
digit \x0666 124
digit \x0667 1245
digit \x0668 125
digit \x0669 24

# Persian numerals

digit \x06F0 245
digit \x06F1 1
digit \x06F2 12
digit \x06F3 14
digit \x06F4 145
digit \x06F5 15
digit \x06F6 124
digit \x06F7 1245
digit \x06F8 125
digit \x06F9 24

# punctuation

prepunc ) 2356
postpunc ( 2356
prepunc " 57
postpunc " 58
prepunc ' 2367
postpunc ' 3567
postpunc , 2
decpoint . 2
decpoint ٫ 2
midnum - 36
hyphen - 36
postpunc . 256
postpunc ; 23
postpunc : 25
postpunc ! 235
postpunc ? 236
endnum % 25-1234
prepunc ` 48
always ... 3-3-3

