# liblouis: Persian  Grade 1 Braille table
#
# -----------
#-index-name: Persian
#-display-name: Persian braille
#
#+locale:fa
#+type:literary
#+contraction:no
#+grade:1
#
# TODO: Please correct the metadata above. It is not meant to be
# accurate nor complete. It hasn't been verified by the table
# author yet. It is merely an attempt by the liblouis maintainers
# to get some sensible initial values in place.
#
# TODO: Please add a reference to official documentation about
# the implemented braille code. Preferably submit the documents
# to https://github.com/liblouis/braille-specs.
# -----------
#
# 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.

space \x200C 8
space \x00a0 a
include spaces.uti

include braille-patterns.cti # unicode braille.

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

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
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
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

