summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-11-21 22:35:02 +0000
committerKarl Berry <karl@freefriends.org>2014-11-21 22:35:02 +0000
commitf28a59950c355ca1760a49ea5309b10594155e4f (patch)
tree00356af27e3a1c6649f3a69e56b355bd038554f5
parentfb81739c4b532ef581722de5224fd2b9c6228aba (diff)
xepersian (21nov14)
git-svn-id: svn://tug.org/texlive/trunk@35639 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/xelatex/xepersian/README4
-rwxr-xr-xMaster/texmf-dist/doc/xelatex/xepersian/dkun-0.3.py468
-rwxr-xr-xMaster/texmf-dist/doc/xelatex/xepersian/dkun-0.4.py465
-rwxr-xr-xMaster/texmf-dist/doc/xelatex/xepersian/undk-0.6.py485
-rwxr-xr-xMaster/texmf-dist/doc/xelatex/xepersian/unldk-0.2.py445
-rw-r--r--Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdfbin901699 -> 901965 bytes
-rw-r--r--Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx69
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/flowfram-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/fontspec-xetex-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty55
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty2
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty6
64 files changed, 1972 insertions, 135 deletions
diff --git a/Master/texmf-dist/doc/xelatex/xepersian/README b/Master/texmf-dist/doc/xelatex/xepersian/README
index e2ad100e55d..510b661c16d 100644
--- a/Master/texmf-dist/doc/xelatex/xepersian/README
+++ b/Master/texmf-dist/doc/xelatex/xepersian/README
@@ -1,6 +1,6 @@
____________________
The XePersian package
-v15.5
+v15.6
XePersian is a package written for XeLaTeX that allows users to typeset
Persian easily.
@@ -20,7 +20,7 @@ In doing so, please always explain your issue well enough, always include
a minimal working example showing the issue, and always choose the appropriate
label for your query (i.e. if you are reporting any bugs, choose `Bug' label).
-Current version release date: 2014/11/17
+Current version release date: 2014/11/21
______________
Vafa Khalighi
persian-tex@tug.org
diff --git a/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.3.py b/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.3.py
new file mode 100755
index 00000000000..1789815763a
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.3.py
@@ -0,0 +1,468 @@
+#! /usr/bin/env python
+
+#########################################
+# General Public License #
+# Author: Mostafa Vahedi #
+# Date: 21 Apr. 2008 #
+# Version 0.3 #
+#########################################
+
+import codecs
+
+import sys
+
+
+dk_numerical = [
+chr(0x97), # Arabic Thoushads Seperator
+chr(0xA1) # ARABIC DECIMAL SEPARATOR
+]
+
+
+dk_vowels = [
+chr(0xAB), # ARABIC FATHA
+chr(0xAA), # ARABIC KASRA
+chr(0xA9), # ARABIC DAMMA
+chr(0xAC), # ARABIC FATHATAN
+chr(0xBA), # ARABIC SHADDA
+#chr(0x??), # ARABIC LETTER SUPERSCRIPT ALEF
+#chr(0x??), # ARABIC LETTER SUBSCRIPT ALEF
+chr(0xAD), # ARABIC HAMZA ABOVE
+chr(0xAE) # ARABIC SUKUN
+]
+
+dk_non_joiners = [
+chr(0xBC) # ARABIC LETTER HAMZA
+]
+
+dk_bidi_joiners_initial = [
+chr(0xE1), # ARABIC LETTER AIN, initial form
+chr(0xE5), # ARABIC LETTER GHAIN, initial form
+chr(0xF9) # ARABIC LETTER HEH, initial form
+]
+
+dk_bidi_joiners_medial = [
+chr(0xE3), # ARABIC LETTER AIN, medial form
+chr(0xE7), # ARABIC LETTER GHAIN, medial form
+chr(0xFB) # ARABIC LETTER HEH, medial form
+]
+
+dk_bidi_joiners_final = [
+chr(0xE2), # ARABIC LETTER AIN, final form
+chr(0xE6), # ARABIC LETTER GHAIN, final form
+chr(0xFE) # ARABIC LETTER FARSI YEH, final form
+]
+
+dk_bidi_joiners_isolated = [
+chr(0xE0), # ARABIC LETTER AIN, isolated form
+chr(0xE4), # ARABIC LETTER GHAIN, isolated form
+chr(0xFC) # ARABIC LETTER FARSI YEH, isolated form
+]
+
+dk_bidi_joiners_initial_medial = [
+chr(0x94), # ARABIC TATWEEL
+chr(0xFF), # ARABIC LETTER YEH WITH HAMZA ABOVE, initial-medial form
+chr(0xC0), # ARABIC LETTER BEH, initial-medial form
+chr(0xC2), # ARABIC LETTER PEH, initial-medial form
+chr(0xC4), # ARABIC LETTER TEH, initial-medial form
+chr(0xC6), # ARABIC LETTER THEH, initial-medial form
+chr(0xC8), # ARABIC LETTER JEEM, initial-medial form
+chr(0xCA), # ARABIC LETTER TCHEH, initial-medial form
+chr(0xCC), # ARABIC LETTER HAH, initial-medial form
+chr(0xCE), # ARABIC LETTER KHAH, initial-medial form
+chr(0xD5), # ARABIC LETTER SEEN, initial-medial form
+chr(0xD7), # ARABIC LETTER SHEEN, initial-medial form
+chr(0xD9), # ARABIC LETTER SAD, initial-medial form
+chr(0xDB), # ARABIC LETTER DAD, initial-medial form
+chr(0xDD), # ARABIC LETTER TAH, initial-medial form
+chr(0xDF), # ARABIC LETTER ZAH, initial-medial form
+chr(0xE9), # ARABIC LETTER FEH, initial-medial form
+chr(0xEB), # ARABIC LETTER QAF, initial-medial form
+chr(0xED), # ARABIC LETTER KEHEH, initial-medial form
+chr(0xEF), # ARABIC LETTER GAF, initial-medial form
+chr(0xF2), # ARABIC LETTER LAM, initial-medial form
+chr(0xF4), # ARABIC LETTER MEEM, initial-medial form
+chr(0xF6), # ARABIC LETTER NOON, initial-medial form
+chr(0xFD) # ARABIC LETTER FARSI YEH, initial-medial form
+]
+
+dk_bidi_joiners_final_isolated = [
+chr(0xBF), # ARABIC LETTER BEH, final-isolated form
+chr(0xC1), # ARABIC LETTER PEH, final-isolated form
+chr(0xC3), # ARABIC LETTER TEH, final-isolated form
+chr(0xC5), # ARABIC LETTER THEH, final-isolated form
+chr(0xC7), # ARABIC LETTER JEEM, final-isolated form
+chr(0xC9), # ARABIC LETTER TCHEH, final-isolated form
+chr(0xCB), # ARABIC LETTER HAH, final-isolated form
+chr(0xCD), # ARABIC LETTER KHAH, final-isolated form
+chr(0xD4), # ARABIC LETTER SEEN, final-isolated form
+chr(0xD6), # ARABIC LETTER SHEEN, final-isolated form
+chr(0xD8), # ARABIC LETTER SAD, final-isolated form
+chr(0xDA), # ARABIC LETTER DAD, final-isolated form
+chr(0xDC), # ARABIC LETTER TAH, final-isolated form
+chr(0xDE), # ARABIC LETTER ZAH, final-isolated form
+chr(0xE8), # ARABIC LETTER FEH, final-isolated form
+chr(0xEA), # ARABIC LETTER QAF, final-isolated form
+chr(0xEC), # ARABIC LETTER KEHEH, final-isolated form
+chr(0xEE), # ARABIC LETTER GAF, final-isolated form
+chr(0xF0), # ARABIC LETTER LAM, final-isolated form
+chr(0xF3), # ARABIC LETTER MEEM, final-isolated form
+chr(0xF5), # ARABIC LETTER NOON, final-isolated form
+chr(0xF8) # ARABIC LETTER HEH, final-isolated form
+]
+
+dk_right_joiners_final = [
+chr(0xBE) # ARABIC LETTER ALEF, final form
+]
+
+dk_right_joiners_isolated = [
+chr(0xBD) # ARABIC LETTER ALEF, isolated form
+]
+
+dk_right_joiners_final_isolated = [
+chr(0xBB), # ARABIC LETTER ALEF WITH MADDA ABOVE, isolated form
+chr(0xCF), # ARABIC LETTER DAL
+chr(0xD0), # ARABIC LETTER THAL
+chr(0xD1), # ARABIC LETTER REH
+chr(0xD2), # ARABIC LETTER ZAIN
+chr(0xD3), # ARABIC LETTER JEH
+#chr(0xBF), # ARABIC LETTER TEH MARBUTAH
+chr(0xF1), # ARABIC LIGATURE LAM WITH ALEF
+chr(0xF7) # ARABIC LETTER WAW
+]
+
+
+table_DK_UN = {
+chr(0xB0) : [u'\u06F0'], # EXTENDED ARABIC-INDIC DIGIT ZERO
+chr(0xB1) : [u'\u06F1'], # EXTENDED ARABIC-INDIC DIGIT ONE
+chr(0xB2) : [u'\u06F2'], # EXTENDED ARABIC-INDIC DIGIT TWO
+chr(0xB3) : [u'\u06F3'], # EXTENDED ARABIC-INDIC DIGIT THREE
+chr(0xB4) : [u'\u06F4'], # EXTENDED ARABIC-INDIC DIGIT FOUR
+chr(0xB5) : [u'\u06F5'], # EXTENDED ARABIC-INDIC DIGIT FIVE
+chr(0xB6) : [u'\u06F6'], # EXTENDED ARABIC-INDIC DIGIT SIX
+chr(0xB7) : [u'\u06F7'], # EXTENDED ARABIC-INDIC DIGIT SEVEN
+chr(0xB8) : [u'\u06F8'], # EXTENDED ARABIC-INDIC DIGIT EIGHT
+chr(0xB9) : [u'\u06F9'], # EXTENDED ARABIC-INDIC DIGIT NINE
+chr(0xA7) : [u'\u060C'], # ARABIC COMMA
+chr(0x94) : [u'\u0640'], # ARABIC TATWEEL
+chr(0xA3) : [u'\u061F'], # ARABIC QUESTION MARK
+chr(0xBB) : [u'\u0622'], # ARABIC LETTER ALEF WITH MADDA ABOVE, isolated form
+chr(0xFF) : [u'\u0626'], # ARABIC LETTER YEH WITH HAMZA ABOVE, initial-medial form
+chr(0xBC) : [u'\u0621'], # ARABIC LETTER HAMZA
+chr(0xBD) : [u'\u0627'], # ARABIC LETTER ALEF, isolated form
+chr(0xBE) : [u'\u0627'], # ARABIC LETTER ALEF, final form
+chr(0xBF) : [u'\u0628'], # ARABIC LETTER BEH, final-isolated form
+chr(0xC0) : [u'\u0628'], # ARABIC LETTER BEH, initial-medial form
+chr(0xC1) : [u'\u067E'], # ARABIC LETTER PEH, final-isolated form
+chr(0xC2) : [u'\u067E'], # ARABIC LETTER PEH, initial-medial form
+chr(0xC3) : [u'\u062A'], # ARABIC LETTER TEH, final-isolated form
+chr(0xC4) : [u'\u062A'], # ARABIC LETTER TEH, initial-medial form
+chr(0xC5) : [u'\u062B'], # ARABIC LETTER THEH, final-isolated form
+chr(0xC6) : [u'\u062B'], # ARABIC LETTER THEH, initial-medial form
+chr(0xC7) : [u'\u062C'], # ARABIC LETTER JEEM, final-isolated form
+chr(0xC8) : [u'\u062C'], # ARABIC LETTER JEEM, initial-medial form
+chr(0xC9) : [u'\u0686'], # ARABIC LETTER TCHEH, final-isolated form
+chr(0xCA) : [u'\u0686'], # ARABIC LETTER TCHEH, initial-medial form
+chr(0xCB) : [u'\u062D'], # ARABIC LETTER HAH, final-isolated form
+chr(0xCC) : [u'\u062D'], # ARABIC LETTER HAH, initial-medial form
+chr(0xCD) : [u'\u062E'], # ARABIC LETTER KHAH, final-isolated form
+chr(0xCE) : [u'\u062E'], # ARABIC LETTER KHAH, initial-medial form
+chr(0xCF) : [u'\u062F'], # ARABIC LETTER DAL
+chr(0xD0) : [u'\u0630'], # ARABIC LETTER THAL
+chr(0xD1) : [u'\u0631'], # ARABIC LETTER REH
+chr(0xD2) : [u'\u0632'], # ARABIC LETTER ZAIN
+chr(0xD3) : [u'\u0698'], # ARABIC LETTER JEH
+chr(0xD4) : [u'\u0633'], # ARABIC LETTER SEEN, final-isolated form
+chr(0xD5) : [u'\u0633'], # ARABIC LETTER SEEN, initial-medial form
+chr(0xD6) : [u'\u0634'], # ARABIC LETTER SHEEN, final-isolated form
+chr(0xD7) : [u'\u0634'], # ARABIC LETTER SHEEN, initial-medial form
+chr(0xD8) : [u'\u0635'], # ARABIC LETTER SAD, final-isolated form
+chr(0xD9) : [u'\u0635'], # ARABIC LETTER SAD, initial-medial form
+chr(0xDA) : [u'\u0636'], # ARABIC LETTER DAD, final-isolated form
+chr(0xDB) : [u'\u0636'], # ARABIC LETTER DAD, initial-medial form
+chr(0xDC) : [u'\u0637'], # ARABIC LETTER TAH, initial-medial form
+chr(0xAB) : [u'\u064E'], # ARABIC FATHA
+chr(0xAA) : [u'\u0650'], # ARABIC KASRA
+chr(0xA9) : [u'\u064F'], # ARABIC DAMMA
+chr(0xAC) : [u'\u064B'], # ARABIC FATHATAN
+chr(0xBA) : [u'\u0651'], # ARABIC SHADDA
+chr(0x95) : [u'\u0023'], # * #
+chr(0x83) : [u'\u0024'], # * $
+chr(0x96) : [u'\u066A'], # * %
+chr(0x87) : [u'\u0026'], # * &
+chr(0x9C) : [u'\u00D7'], # * ARABIC cross (times) x
+chr(0x97) : [u'\u066C'], # Arabic Thoushads Seperator
+#chr(0xBA) : [u'\u0670'], # ARABIC LETTER SUPERSCRIPT ALEF
+chr(0xAD) : [u'\u0654'], # ARABIC HAMZA ABOVE
+chr(0xA1) : [u'\u066B'], # ARABIC DECIMAL SEPARATOR
+chr(0x91) : [u'\u0028'], # * RIGHT PARENTHESIS
+chr(0x90) : [u'\u0029'], # * LEFT PARENTHESIS
+#chr(0xBF) : [u'\u0629'], # ARABIC LETTER TEH MARBUTAH
+chr(0x8E) : [u'\u00BB'], # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+chr(0xDD) : [u'\u0637'], # ARABIC LETTER TAH, final-isolated form
+chr(0xDE) : [u'\u0638'], # ARABIC LETTER ZAH, final-isolated form
+chr(0x8F) : [u'\u00AB'], # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+chr(0xAE) : [u'\u0652'], # ARABIC SUKUN
+chr(0x9F) : [u'\u002D'], # * -
+chr(0xA2) : [u'\u002E'], # * FULL STOP
+#chr(0xA1) : [u'\u002F'], # * /
+chr(0x82) : [u'\u002A'], # * *
+chr(0x86) : [u'\u007E'], # * ~
+chr(0xA5) : [u'\u003A'], # * COLON
+chr(0xA6) : [u'\u061B'], # ARABIC SEMICOLON
+chr(0x9A) : [u'\u003E'], # * GREATER-THAN SIGN
+chr(0x9E) : [u'\u002B'], # * +
+chr(0x99) : [u'\u003D'], # * =
+chr(0x98) : [u'\u003C'], # * LESS-THAN SIGN
+chr(0x81) : [u'\u0040'], # * @
+chr(0x92) : [u'\u005D'], # * [
+chr(0x9D) : [u'\u005C'], # * \
+chr(0x93) : [u'\u005B'], # * ]
+#chr(0xAE) : [u'\u005E'], # * ^
+#chr(0xD5) : [u'\u005F'], # * _
+chr(0xA8) : [u'\u0060'], # * `
+chr(0x8B) : [u'\u007D'], # * {
+chr(0xAF) : [u'\u007C'], # * |
+chr(0xA0) : [u'\u0020'], # * SPACE
+chr(0xA4) : [u'\u0021'], # * EXCLAMATION MARK
+chr(0x8C) : [u'\u007B'], # * }
+chr(0xDF) : [u'\u0638'], # ARABIC LETTER ZAH, initial-medial form
+chr(0xE0) : [u'\u0639'], # ARABIC LETTER AIN, isolated form
+chr(0xE1) : [u'\u0639'], # ARABIC LETTER AIN, final form
+chr(0xE2) : [u'\u0639'], # ARABIC LETTER AIN, medial form
+chr(0xE3) : [u'\u0639'], # ARABIC LETTER AIN, initial form
+chr(0xE4) : [u'\u063A'], # ARABIC LETTER GHAIN, isolated form
+chr(0xE5) : [u'\u063A'], # ARABIC LETTER GHAIN, final form
+chr(0xE6) : [u'\u063A'], # ARABIC LETTER GHAIN, medial form
+chr(0xE7) : [u'\u063A'], # ARABIC LETTER GHAIN, initial form
+chr(0xE8) : [u'\u0641'], # ARABIC LETTER FEH, final-isolated form
+chr(0xE9) : [u'\u0641'], # ARABIC LETTER FEH, initial-medial form
+chr(0xEA) : [u'\u0642'], # ARABIC LETTER QAF, final-isolated form
+chr(0xEB) : [u'\u0642'], # ARABIC LETTER QAF, initial-medial form
+chr(0xEC) : [u'\u06A9'], # ARABIC LETTER KEHEH, final-isolated form
+chr(0xED) : [u'\u06A9'], # ARABIC LETTER KEHEH, initial-medial form
+chr(0xEE) : [u'\u06AF'], # ARABIC LETTER GAF, final-isolated form
+chr(0xEF) : [u'\u06AF'], # ARABIC LETTER GAF, initial-medial form
+chr(0xF0) : [u'\u0644'], # ARABIC LETTER LAM, final-isolated form
+chr(0xF1) : [u'\u0644\u0627'], # ARABIC LIGATURE LAM WITH ALEF
+chr(0xF2) : [u'\u0644'], # ARABIC LETTER LAM, initial-medial form
+chr(0xF3) : [u'\u0645'], # ARABIC LETTER MEEM, final-isolated form
+chr(0xF4) : [u'\u0645'], # ARABIC LETTER MEEM, initial-medial form
+chr(0xF5) : [u'\u0646'], # ARABIC LETTER NOON, final-isolated form
+chr(0xF6) : [u'\u0646'], # ARABIC LETTER NOON, initial-medial form
+chr(0xF7) : [u'\u0648'], # ARABIC LETTER WAW
+chr(0xF8) : [u'\u0647'], # ARABIC LETTER HEH, final-isolated form
+chr(0xFB) : [u'\u0647'], # ARABIC LETTER HEH, medial form
+chr(0xF9) : [u'\u0647'], # ARABIC LETTER HEH, initial form
+chr(0xFE) : [u'\u06CC'], # ARABIC LETTER FARSI YEH, final form
+chr(0xFC) : [u'\u06CC'], # ARABIC LETTER FARSI YEH, isolated form
+chr(0xFD) : [u'\u06CC'] # ARABIC LETTER FARSI YEH, initial-medial form
+}
+
+
+def dk_is_numeric(ch):
+ if ((ch in dk_numerical) or
+ ((ch >= chr(0xB0)) and (ch <= chr(0xB9))) ):
+ return 1
+ return 0
+
+def dk_can_join_left(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_final) or
+ (ch in dk_bidi_joiners_isolated) or
+ (ch in dk_bidi_joiners_initial_medial) or
+ (ch in dk_bidi_joiners_final_isolated)):
+ return 1
+ return 0
+
+def dk_can_join_right(ch):
+ if (dk_can_join_left(ch) or
+ (ch in dk_right_joiners_final) or
+ (ch in dk_right_joiners_isolated) or
+ (ch in dk_right_joiners_final_isolated)):
+ return 1
+ return 0
+
+def dk_joining_left(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_initial_medial)):
+ return 1
+ return 0
+
+
+def dk_joining_right(ch):
+ if ((ch in dk_right_joiners_final) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_final)):
+ return 1
+ return 0
+
+def dk_not_right_joined(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_right_joiners_isolated) or
+ (ch in dk_bidi_joiners_isolated)):
+ return 1
+ return 0
+
+def dk_adjust_shaping(text, i):
+ current = text[i]
+ u = u''
+ try:
+ u = table_DK_UN[current][0]
+ except KeyError:
+ print 'ERROR: unmapped character'
+ return u''
+
+ #if you don't want shaping remove the following comment
+ #return u
+
+ if ((current in dk_vowels) or (dk_is_numeric(current))):
+ return u
+
+ #find next non-vowel character on the left
+ text_len = len(text)
+ next_index = i+1
+ while ((next_index < text_len) and (text[next_index] in dk_vowels)):
+ next_index += 1
+
+ if (next_index == text_len):
+ next = ''
+ else:
+ next = text[next_index]
+
+ # if current letter is joining from left but next letter is or can not joining
+ if (dk_joining_left(current)):
+ if (not dk_can_join_right(next)):
+ u += u'\u200D' #ZWJ
+ elif (dk_not_right_joined(next)):
+ u += u'\u200D\u200C' #ZWJ+ZWNJ
+ # if current letter can join but next letter is joining from right
+ elif (dk_can_join_left(current)):
+ if (dk_joining_right(next)):
+ u += u'\u200C\u200D' #ZWNJ+ZWJ
+ elif (dk_can_join_right(next)):
+ u += u'\u200C' #ZWNJ
+ return u
+
+def dk_adjust_number(text):
+ result = u''
+ i = len(text)-1
+ while (i >= 0):
+ result += dk_adjust_shaping(text, i)
+ i -= 1
+ return result
+
+
+def map_dk_unicode(text):
+ mapped_text = u''
+
+ i = 0
+ while (i < len(text)):
+ if (dk_is_numeric(text[i])):
+ next_index = i
+ while ((next_index+1 < len(text)) and
+ (dk_is_numeric(text[next_index+1]))):
+ next_index += 1
+ mapped_text += dk_adjust_number(text[i:next_index+1])
+ i = next_index+1
+ continue
+
+ mapped_text += dk_adjust_shaping(text, i)
+ i += 1
+ return mapped_text
+
+def dk_next_part(line, i):
+ j = i
+ language_flag = (line[j]<chr(0x80))
+ while ((j<line_len) and ((line[j]<chr(0x80)) == language_flag) ):
+ j += 1
+ return j
+
+
+def is_english_letter_number(c):
+ if ((c >= 'a') and (c <= 'z')) or ((c >= 'A') and (c <= 'Z')):
+ return 1
+ if (c >= '0') and (c <= '9'):
+ return 1
+ return 0
+
+def is_inbetween_chars(c):
+ if ((c == '.') or (c == '-') or (c == '_') or (c == '/')):
+ return 1
+ return 0
+
+def needs_english_wrapper(part):
+ part_len = len(part)
+ i = -1
+ while (i+1 < part_len):
+ i += 1
+ if (is_english_letter_number(part[i]) == 1):
+ continue
+ if (i>0) and (is_inbetween_chars(part[i]) == 1) and \
+ (part_len > i+1) and (is_english_letter_number(part[i+1]) == 1):
+ continue
+ return 1
+ return 0
+
+# Main body of the program
+if len(sys.argv) <= 2:
+ print 'usage: python dkun in_filename out_filename'
+ exit(0)
+
+filename = sys.argv[1]
+outfile = sys.argv[2]
+
+try:
+ f = open(filename, 'r')
+except IOError:
+ print "Can not open the input file: " + filename
+ exit(0)
+
+try:
+ of = codecs.open(outfile, encoding='utf-8', mode='w')
+except IOError:
+ print "Can not open the output file: " + outfile
+ exit(0)
+
+line_number = 0
+for line in f:
+ line_number += 1
+ output_line = u''
+ line_len = len(line)
+
+ put_end_of_line = 0
+ if ((line_len > 0) and (line[line_len-1] == '\n')):
+ put_end_of_line = 1
+ line_len = line_len - 1
+ if ((line_len > 0) and (line[line_len-1] == '\r')):
+ line_len = line_len - 1
+
+ i = 0
+
+ while (i<line_len):
+ next_part_index = dk_next_part(line, i)
+ next_part = line[i:next_part_index]
+ next_part_latin = (line[i]<chr(0x80))
+
+ if next_part_latin:
+ if (needs_english_wrapper(next_part[::-1]) == 1):
+ next_part = '\$e_'+next_part[::-1]+'\$f_'
+ else:
+ next_part = next_part[::-1]
+ output_line += next_part.encode( 'utf-8' )
+ else:
+ output_line += map_dk_unicode(next_part)
+ i = next_part_index
+ # end of while
+
+ if (put_end_of_line == 1):
+ output_line += u'\u000a'
+
+ # write the processed line
+ of.write(output_line)
+ # end of line processing
+# end of file processing
+
+of.close()
+f.close()
diff --git a/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.4.py b/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.4.py
new file mode 100755
index 00000000000..15877cb93eb
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/xepersian/dkun-0.4.py
@@ -0,0 +1,465 @@
+#! /usr/bin/env python
+
+#########################################
+# General Public License #
+# Author: Mostafa Vahedi #
+# Date: 24 Sep. 2012 #
+# Version 0.4 #
+#########################################
+
+import codecs
+
+import sys
+
+
+dk_numerical = [
+chr(0x97), # Arabic Thoushads Seperator
+chr(0xA1) # ARABIC DECIMAL SEPARATOR
+]
+
+
+dk_vowels = [
+chr(0xAB), # ARABIC FATHA
+chr(0xAA), # ARABIC KASRA
+chr(0xA9), # ARABIC DAMMA
+chr(0xAC), # ARABIC FATHATAN
+chr(0xBA), # ARABIC SHADDA
+#chr(0x??), # ARABIC LETTER SUPERSCRIPT ALEF
+#chr(0x??), # ARABIC LETTER SUBSCRIPT ALEF
+chr(0xAD), # ARABIC HAMZA ABOVE
+chr(0xAE) # ARABIC SUKUN
+]
+
+dk_non_joiners = [
+chr(0xBC) # ARABIC LETTER HAMZA
+]
+
+dk_bidi_joiners_initial = [
+chr(0xE1), # ARABIC LETTER AIN, initial form
+chr(0xE5), # ARABIC LETTER GHAIN, initial form
+chr(0xF9) # ARABIC LETTER HEH, initial form
+]
+
+dk_bidi_joiners_medial = [
+chr(0xE3), # ARABIC LETTER AIN, medial form
+chr(0xE7), # ARABIC LETTER GHAIN, medial form
+chr(0xFB) # ARABIC LETTER HEH, medial form
+]
+
+dk_bidi_joiners_final = [
+chr(0xE2), # ARABIC LETTER AIN, final form
+chr(0xE6), # ARABIC LETTER GHAIN, final form
+chr(0xFE) # ARABIC LETTER FARSI YEH, final form
+]
+
+dk_bidi_joiners_isolated = [
+chr(0xE0), # ARABIC LETTER AIN, isolated form
+chr(0xE4), # ARABIC LETTER GHAIN, isolated form
+chr(0xFC) # ARABIC LETTER FARSI YEH, isolated form
+]
+
+dk_bidi_joiners_initial_medial = [
+chr(0x94), # ARABIC TATWEEL
+chr(0xFF), # ARABIC LETTER YEH WITH HAMZA ABOVE, initial-medial form
+chr(0xC0), # ARABIC LETTER BEH, initial-medial form
+chr(0xC2), # ARABIC LETTER PEH, initial-medial form
+chr(0xC4), # ARABIC LETTER TEH, initial-medial form
+chr(0xC6), # ARABIC LETTER THEH, initial-medial form
+chr(0xC8), # ARABIC LETTER JEEM, initial-medial form
+chr(0xCA), # ARABIC LETTER TCHEH, initial-medial form
+chr(0xCC), # ARABIC LETTER HAH, initial-medial form
+chr(0xCE), # ARABIC LETTER KHAH, initial-medial form
+chr(0xD5), # ARABIC LETTER SEEN, initial-medial form
+chr(0xD7), # ARABIC LETTER SHEEN, initial-medial form
+chr(0xD9), # ARABIC LETTER SAD, initial-medial form
+chr(0xDB), # ARABIC LETTER DAD, initial-medial form
+chr(0xDD), # ARABIC LETTER TAH, initial-medial form
+chr(0xDF), # ARABIC LETTER ZAH, initial-medial form
+chr(0xE9), # ARABIC LETTER FEH, initial-medial form
+chr(0xEB), # ARABIC LETTER QAF, initial-medial form
+chr(0xED), # ARABIC LETTER KEHEH, initial-medial form
+chr(0xEF), # ARABIC LETTER GAF, initial-medial form
+chr(0xF2), # ARABIC LETTER LAM, initial-medial form
+chr(0xF4), # ARABIC LETTER MEEM, initial-medial form
+chr(0xF6), # ARABIC LETTER NOON, initial-medial form
+chr(0xFD) # ARABIC LETTER FARSI YEH, initial-medial form
+]
+
+dk_bidi_joiners_final_isolated = [
+chr(0xBF), # ARABIC LETTER BEH, final-isolated form
+chr(0xC1), # ARABIC LETTER PEH, final-isolated form
+chr(0xC3), # ARABIC LETTER TEH, final-isolated form
+chr(0xC5), # ARABIC LETTER THEH, final-isolated form
+chr(0xC7), # ARABIC LETTER JEEM, final-isolated form
+chr(0xC9), # ARABIC LETTER TCHEH, final-isolated form
+chr(0xCB), # ARABIC LETTER HAH, final-isolated form
+chr(0xCD), # ARABIC LETTER KHAH, final-isolated form
+chr(0xD4), # ARABIC LETTER SEEN, final-isolated form
+chr(0xD6), # ARABIC LETTER SHEEN, final-isolated form
+chr(0xD8), # ARABIC LETTER SAD, final-isolated form
+chr(0xDA), # ARABIC LETTER DAD, final-isolated form
+chr(0xDC), # ARABIC LETTER TAH, final-isolated form
+chr(0xDE), # ARABIC LETTER ZAH, final-isolated form
+chr(0xE8), # ARABIC LETTER FEH, final-isolated form
+chr(0xEA), # ARABIC LETTER QAF, final-isolated form
+chr(0xEC), # ARABIC LETTER KEHEH, final-isolated form
+chr(0xEE), # ARABIC LETTER GAF, final-isolated form
+chr(0xF0), # ARABIC LETTER LAM, final-isolated form
+chr(0xF3), # ARABIC LETTER MEEM, final-isolated form
+chr(0xF5), # ARABIC LETTER NOON, final-isolated form
+chr(0xF8) # ARABIC LETTER HEH, final-isolated form
+]
+
+dk_right_joiners_final = [
+chr(0xBE) # ARABIC LETTER ALEF, final form
+]
+
+dk_right_joiners_isolated = [
+chr(0xBD) # ARABIC LETTER ALEF, isolated form
+]
+
+dk_right_joiners_final_isolated = [
+chr(0xBB), # ARABIC LETTER ALEF WITH MADDA ABOVE, isolated form
+chr(0xCF), # ARABIC LETTER DAL
+chr(0xD0), # ARABIC LETTER THAL
+chr(0xD1), # ARABIC LETTER REH
+chr(0xD2), # ARABIC LETTER ZAIN
+chr(0xD3), # ARABIC LETTER JEH
+#chr(0xBF), # ARABIC LETTER TEH MARBUTAH
+chr(0xF1), # ARABIC LIGATURE LAM WITH ALEF
+chr(0xF7) # ARABIC LETTER WAW
+]
+
+
+table_DK_UN = {
+chr(0xB0) : [u'\u06F0'], # EXTENDED ARABIC-INDIC DIGIT ZERO
+chr(0xB1) : [u'\u06F1'], # EXTENDED ARABIC-INDIC DIGIT ONE
+chr(0xB2) : [u'\u06F2'], # EXTENDED ARABIC-INDIC DIGIT TWO
+chr(0xB3) : [u'\u06F3'], # EXTENDED ARABIC-INDIC DIGIT THREE
+chr(0xB4) : [u'\u06F4'], # EXTENDED ARABIC-INDIC DIGIT FOUR
+chr(0xB5) : [u'\u06F5'], # EXTENDED ARABIC-INDIC DIGIT FIVE
+chr(0xB6) : [u'\u06F6'], # EXTENDED ARABIC-INDIC DIGIT SIX
+chr(0xB7) : [u'\u06F7'], # EXTENDED ARABIC-INDIC DIGIT SEVEN
+chr(0xB8) : [u'\u06F8'], # EXTENDED ARABIC-INDIC DIGIT EIGHT
+chr(0xB9) : [u'\u06F9'], # EXTENDED ARABIC-INDIC DIGIT NINE
+chr(0xA7) : [u'\u060C'], # ARABIC COMMA
+chr(0x94) : [u'\u0640'], # ARABIC TATWEEL
+chr(0xA3) : [u'\u061F'], # ARABIC QUESTION MARK
+chr(0xBB) : [u'\u0622'], # ARABIC LETTER ALEF WITH MADDA ABOVE, isolated form
+chr(0xFF) : [u'\u0626'], # ARABIC LETTER YEH WITH HAMZA ABOVE, initial-medial form
+chr(0xBC) : [u'\u0621'], # ARABIC LETTER HAMZA
+chr(0xBD) : [u'\u0627'], # ARABIC LETTER ALEF, isolated form
+chr(0xBE) : [u'\u0627'], # ARABIC LETTER ALEF, final form
+chr(0xBF) : [u'\u0628'], # ARABIC LETTER BEH, final-isolated form
+chr(0xC0) : [u'\u0628'], # ARABIC LETTER BEH, initial-medial form
+chr(0xC1) : [u'\u067E'], # ARABIC LETTER PEH, final-isolated form
+chr(0xC2) : [u'\u067E'], # ARABIC LETTER PEH, initial-medial form
+chr(0xC3) : [u'\u062A'], # ARABIC LETTER TEH, final-isolated form
+chr(0xC4) : [u'\u062A'], # ARABIC LETTER TEH, initial-medial form
+chr(0xC5) : [u'\u062B'], # ARABIC LETTER THEH, final-isolated form
+chr(0xC6) : [u'\u062B'], # ARABIC LETTER THEH, initial-medial form
+chr(0xC7) : [u'\u062C'], # ARABIC LETTER JEEM, final-isolated form
+chr(0xC8) : [u'\u062C'], # ARABIC LETTER JEEM, initial-medial form
+chr(0xC9) : [u'\u0686'], # ARABIC LETTER TCHEH, final-isolated form
+chr(0xCA) : [u'\u0686'], # ARABIC LETTER TCHEH, initial-medial form
+chr(0xCB) : [u'\u062D'], # ARABIC LETTER HAH, final-isolated form
+chr(0xCC) : [u'\u062D'], # ARABIC LETTER HAH, initial-medial form
+chr(0xCD) : [u'\u062E'], # ARABIC LETTER KHAH, final-isolated form
+chr(0xCE) : [u'\u062E'], # ARABIC LETTER KHAH, initial-medial form
+chr(0xCF) : [u'\u062F'], # ARABIC LETTER DAL
+chr(0xD0) : [u'\u0630'], # ARABIC LETTER THAL
+chr(0xD1) : [u'\u0631'], # ARABIC LETTER REH
+chr(0xD2) : [u'\u0632'], # ARABIC LETTER ZAIN
+chr(0xD3) : [u'\u0698'], # ARABIC LETTER JEH
+chr(0xD4) : [u'\u0633'], # ARABIC LETTER SEEN, final-isolated form
+chr(0xD5) : [u'\u0633'], # ARABIC LETTER SEEN, initial-medial form
+chr(0xD6) : [u'\u0634'], # ARABIC LETTER SHEEN, final-isolated form
+chr(0xD7) : [u'\u0634'], # ARABIC LETTER SHEEN, initial-medial form
+chr(0xD8) : [u'\u0635'], # ARABIC LETTER SAD, final-isolated form
+chr(0xD9) : [u'\u0635'], # ARABIC LETTER SAD, initial-medial form
+chr(0xDA) : [u'\u0636'], # ARABIC LETTER DAD, final-isolated form
+chr(0xDB) : [u'\u0636'], # ARABIC LETTER DAD, initial-medial form
+chr(0xDC) : [u'\u0637'], # ARABIC LETTER TAH, initial-medial form
+chr(0xAB) : [u'\u064E'], # ARABIC FATHA
+chr(0xAA) : [u'\u0650'], # ARABIC KASRA
+chr(0xA9) : [u'\u064F'], # ARABIC DAMMA
+chr(0xAC) : [u'\u064B'], # ARABIC FATHATAN
+chr(0xBA) : [u'\u0651'], # ARABIC SHADDA
+chr(0x95) : [u'\u0023'], # * #
+chr(0x83) : [u'\u0024'], # * $
+chr(0x96) : [u'\u066A'], # * %
+chr(0x87) : [u'\u0026'], # * &
+chr(0x9C) : [u'\u00D7'], # * ARABIC cross (times) x
+chr(0x97) : [u'\u066C'], # Arabic Thoushads Seperator
+#chr(0xBA) : [u'\u0670'], # ARABIC LETTER SUPERSCRIPT ALEF
+chr(0xAD) : [u'\u0654'], # ARABIC HAMZA ABOVE
+chr(0xA1) : [u'\u066B'], # ARABIC DECIMAL SEPARATOR
+chr(0x91) : [u'\u0028'], # * RIGHT PARENTHESIS
+chr(0x90) : [u'\u0029'], # * LEFT PARENTHESIS
+#chr(0xBF) : [u'\u0629'], # ARABIC LETTER TEH MARBUTAH
+chr(0x8E) : [u'\u00BB'], # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+chr(0xDD) : [u'\u0637'], # ARABIC LETTER TAH, final-isolated form
+chr(0xDE) : [u'\u0638'], # ARABIC LETTER ZAH, final-isolated form
+chr(0x8F) : [u'\u00AB'], # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+chr(0xAE) : [u'\u0652'], # ARABIC SUKUN
+chr(0x9F) : [u'\u002D'], # * -
+chr(0xA2) : [u'\u002E'], # * FULL STOP
+#chr(0xA1) : [u'\u002F'], # * /
+chr(0x82) : [u'\u002A'], # * *
+chr(0x86) : [u'\u007E'], # * ~
+chr(0xA5) : [u'\u003A'], # * COLON
+chr(0xA6) : [u'\u061B'], # ARABIC SEMICOLON
+chr(0x9A) : [u'\u003E'], # * GREATER-THAN SIGN
+chr(0x9E) : [u'\u002B'], # * +
+chr(0x99) : [u'\u003D'], # * =
+chr(0x98) : [u'\u003C'], # * LESS-THAN SIGN
+chr(0x81) : [u'\u0040'], # * @
+chr(0x92) : [u'\u005D'], # * [
+chr(0x9D) : [u'\u005C'], # * \
+chr(0x93) : [u'\u005B'], # * ]
+#chr(0xAE) : [u'\u005E'], # * ^
+#chr(0xD5) : [u'\u005F'], # * _
+chr(0xA8) : [u'\u0060'], # * `
+chr(0x8B) : [u'\u007D'], # * {
+chr(0xAF) : [u'\u007C'], # * |
+chr(0xA0) : [u'\u0020'], # * SPACE
+chr(0xA4) : [u'\u0021'], # * EXCLAMATION MARK
+chr(0x8C) : [u'\u007B'], # * }
+chr(0xDF) : [u'\u0638'], # ARABIC LETTER ZAH, initial-medial form
+chr(0xE0) : [u'\u0639'], # ARABIC LETTER AIN, isolated form
+chr(0xE1) : [u'\u0639'], # ARABIC LETTER AIN, final form
+chr(0xE2) : [u'\u0639'], # ARABIC LETTER AIN, medial form
+chr(0xE3) : [u'\u0639'], # ARABIC LETTER AIN, initial form
+chr(0xE4) : [u'\u063A'], # ARABIC LETTER GHAIN, isolated form
+chr(0xE5) : [u'\u063A'], # ARABIC LETTER GHAIN, final form
+chr(0xE6) : [u'\u063A'], # ARABIC LETTER GHAIN, medial form
+chr(0xE7) : [u'\u063A'], # ARABIC LETTER GHAIN, initial form
+chr(0xE8) : [u'\u0641'], # ARABIC LETTER FEH, final-isolated form
+chr(0xE9) : [u'\u0641'], # ARABIC LETTER FEH, initial-medial form
+chr(0xEA) : [u'\u0642'], # ARABIC LETTER QAF, final-isolated form
+chr(0xEB) : [u'\u0642'], # ARABIC LETTER QAF, initial-medial form
+chr(0xEC) : [u'\u06A9'], # ARABIC LETTER KEHEH, final-isolated form
+chr(0xED) : [u'\u06A9'], # ARABIC LETTER KEHEH, initial-medial form
+chr(0xEE) : [u'\u06AF'], # ARABIC LETTER GAF, final-isolated form
+chr(0xEF) : [u'\u06AF'], # ARABIC LETTER GAF, initial-medial form
+chr(0xF0) : [u'\u0644'], # ARABIC LETTER LAM, final-isolated form
+chr(0xF1) : [u'\u0644\u0627'], # ARABIC LIGATURE LAM WITH ALEF
+chr(0xF2) : [u'\u0644'], # ARABIC LETTER LAM, initial-medial form
+chr(0xF3) : [u'\u0645'], # ARABIC LETTER MEEM, final-isolated form
+chr(0xF4) : [u'\u0645'], # ARABIC LETTER MEEM, initial-medial form
+chr(0xF5) : [u'\u0646'], # ARABIC LETTER NOON, final-isolated form
+chr(0xF6) : [u'\u0646'], # ARABIC LETTER NOON, initial-medial form
+chr(0xF7) : [u'\u0648'], # ARABIC LETTER WAW
+chr(0xF8) : [u'\u0647'], # ARABIC LETTER HEH, final-isolated form
+chr(0xFB) : [u'\u0647'], # ARABIC LETTER HEH, medial form
+chr(0xF9) : [u'\u0647'], # ARABIC LETTER HEH, initial form
+chr(0xFE) : [u'\u06CC'], # ARABIC LETTER FARSI YEH, final form
+chr(0xFC) : [u'\u06CC'], # ARABIC LETTER FARSI YEH, isolated form
+chr(0xFD) : [u'\u06CC'] # ARABIC LETTER FARSI YEH, initial-medial form
+}
+
+
+def dk_is_numeric(ch):
+ if ((ch in dk_numerical) or
+ ((ch >= chr(0xB0)) and (ch <= chr(0xB9))) ):
+ return 1
+ return 0
+
+def dk_can_join_left(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_final) or
+ (ch in dk_bidi_joiners_isolated) or
+ (ch in dk_bidi_joiners_initial_medial) or
+ (ch in dk_bidi_joiners_final_isolated)):
+ return 1
+ return 0
+
+def dk_can_join_right(ch):
+ if (dk_can_join_left(ch) or
+ (ch in dk_right_joiners_final) or
+ (ch in dk_right_joiners_isolated) or
+ (ch in dk_right_joiners_final_isolated)):
+ return 1
+ return 0
+
+def dk_joining_left(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_initial_medial)):
+ return 1
+ return 0
+
+
+def dk_joining_right(ch):
+ if ((ch in dk_right_joiners_final) or
+ (ch in dk_bidi_joiners_medial) or
+ (ch in dk_bidi_joiners_final)):
+ return 1
+ return 0
+
+def dk_not_right_joined(ch):
+ if ((ch in dk_bidi_joiners_initial) or
+ (ch in dk_right_joiners_isolated) or
+ (ch in dk_bidi_joiners_isolated)):
+ return 1
+ return 0
+
+def dk_adjust_shaping(text, i):
+ current = text[i]
+ u = u''
+ try:
+ u = table_DK_UN[current][0]
+ except KeyError:
+ print 'ERROR: unmapped character'
+ return u''
+
+ #if you don't want shaping remove the following comment
+ #return u
+
+ if ((current in dk_vowels) or (dk_is_numeric(current))):
+ return u
+
+ #find next non-vowel character on the left
+ text_len = len(text)
+ next_index = i+1
+ while ((next_index < text_len) and (text[next_index] in dk_vowels)):
+ next_index += 1
+
+ if (next_index == text_len):
+ next = ''
+ else:
+ next = text[next_index]
+
+ # if current letter is joining from left but next letter is or can not joining
+ if (dk_joining_left(current)):
+ if (not dk_can_join_right(next)):
+ u += u'\u200D' #ZWJ
+ elif (dk_not_right_joined(next)):
+ u += u'\u200D\u200C' #ZWJ+ZWNJ
+ # if current letter can join but next letter is joining from right
+ elif (dk_can_join_left(current)):
+ if (dk_joining_right(next)):
+ u += u'\u200C\u200D' #ZWNJ+ZWJ
+ elif (dk_can_join_right(next)):
+ u += u'\u200C' #ZWNJ
+ return u
+
+def dk_adjust_number(text):
+ result = u''
+ i = len(text)-1
+ while (i >= 0):
+ result += dk_adjust_shaping(text, i)
+ i -= 1
+ return result
+
+
+def map_dk_unicode(text):
+ mapped_text = u''
+
+ i = 0
+ while (i < len(text)):
+ if (dk_is_numeric(text[i])):
+ next_index = i
+ while ((next_index+1 < len(text)) and
+ (dk_is_numeric(text[next_index+1]))):
+ next_index += 1
+ mapped_text += dk_adjust_number(text[i:next_index+1])
+ i = next_index+1
+ continue
+
+ mapped_text += dk_adjust_shaping(text, i)
+ i += 1
+ return mapped_text
+
+def dk_next_part(line, i):
+ j = i
+ language_flag = (line[j]<chr(0x80))
+ while ((j<line_len) and ((line[j]<chr(0x80)) == language_flag) ):
+ j += 1
+ return j
+
+
+def is_english_letter_number(c):
+ if ((c >= 'a') and (c <= 'z')) or ((c >= 'A') and (c <= 'Z')):
+ return 1
+ if (c >= '0') and (c <= '9'):
+ return 1
+ return 0
+
+def is_inbetween_chars(c):
+ if ((c == '.') or (c == '-') or (c == '_') or (c == '/')):
+ return 1
+ return 0
+
+def needs_english_wrapper(part):
+ part_len = len(part)
+ i = -1
+ while (i+1 < part_len):
+ i += 1
+ if (is_english_letter_number(part[i]) == 1):
+ continue
+ if (i>0) and (is_inbetween_chars(part[i]) == 1) and \
+ (part_len > i+1) and (is_english_letter_number(part[i+1]) == 1):
+ continue
+ return 1
+ return 0
+
+# Main body of the program
+if len(sys.argv) <= 2:
+ print 'usage: python dkun in_filename out_filename'
+ exit(0)
+
+filename = sys.argv[1]
+outfile = sys.argv[2]
+
+try:
+ f = open(filename, 'r')
+except IOError:
+ print "Can not open the input file: " + filename
+ exit(0)
+
+try:
+ of = codecs.open(outfile, encoding='utf-8', mode='w')
+except IOError:
+ print "Can not open the output file: " + outfile
+ exit(0)
+
+line_number = 0
+for line in f:
+ line_number += 1
+ output_line = u''
+ line_len = len(line)
+
+ put_end_of_line = 0
+ if ((line_len > 0) and (line[line_len-1] == '\n')):
+ put_end_of_line = 1
+ line_len = line_len - 1
+ if ((line_len > 0) and (line[line_len-1] == '\r')):
+ line_len = line_len - 1
+
+ i = 0
+
+ while (i<line_len):
+ next_part_index = dk_next_part(line, i)
+ next_part = line[i:next_part_index]
+ next_part_latin = (line[i]<chr(0x80))
+
+ if next_part_latin:
+ next_part = next_part[::-1]
+ output_line += next_part.encode( 'utf-8' )
+ else:
+ output_line += map_dk_unicode(next_part)
+ i = next_part_index
+ # end of while
+
+ if (put_end_of_line == 1):
+ output_line += u'\u000a'
+
+ # write the processed line
+ of.write(output_line)
+ # end of line processing
+# end of file processing
+
+of.close()
+f.close()
diff --git a/Master/texmf-dist/doc/xelatex/xepersian/undk-0.6.py b/Master/texmf-dist/doc/xelatex/xepersian/undk-0.6.py
new file mode 100755
index 00000000000..a824887ef31
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/xepersian/undk-0.6.py
@@ -0,0 +1,485 @@
+#! /usr/bin/env python
+#########################################
+# General Public License #
+# Author: Mostafa Vahedi #
+# Date: 25 Apr. 2008 #
+# Version 0.6 #
+#########################################
+
+import codecs
+
+import sys
+
+bidi_joiners = [
+u'\u0626', u'\u0628', u'\u062a', u'\u062b', u'\u062c', u'\u062d', u'\u062e',
+u'\u0633', u'\u0634', u'\u0635', u'\u0636', u'\u0637', u'\u0638', u'\u0639', u'\u063a',
+u'\u0640', u'\u0641', u'\u0642', u'\u0643', u'\u0644', u'\u0645', u'\u0646', u'\u0647',
+u'\u0649', u'\u064a', u'\u067e', u'\u0686', u'\u06a9', u'\u06af', u'\u200d',
+u'\u06cc']
+
+right_joiners = [
+u'\u0622', u'\u0623', u'\u0624', u'\u0625', u'\u0627', u'\u0629', u'\u062f', u'\u0630', u'\u0631',
+u'\u0632', u'\u0648', u'\u0671', u'\u0600', u'\u0698']
+
+
+#form_numbers, isolated, final, medial, initial
+table_UN_DK = {
+u'\n' : [1, '\n'],
+#case u'\u0020' - 0xA0 : #space
+u' ' : [1, chr(0xA0)],
+#case u'\u0021' - 0xA4 : #exclamation
+u'!' : [1, chr(0xA4)],
+## case u'\u0022' - 0x?? : #quotation
+#case u'\u0023' - 0x95 : #number sign
+u'#' : [1, chr(0x95)],
+#case u'\u0024' - 0x83 : #?? dollar sign
+u'$' : [1, chr(0x83)],
+#case u'\u0025' - 0x96 : #percent sign
+u'%' : [1, chr(0x96)],
+#case u'\u0026' - 0x87 : #?? ampersand
+u'&' : [1, chr(0x87)],
+#case u'\u0027' - 0xa9 : #apostrophe
+u'\'' : [1, chr(0xa9)],
+#case u'\u0028' - 0x90 : #left parenthesis
+u'(' : [1, chr(0x91)],
+#case u'\u0029' - 0x91 : #right parenthesis
+u')' : [1, chr(0x90)],
+#case u'\u002a' - 0x82 : #asterisk
+u'*' : [1, chr(0x82)],
+#case u'\u002b' - 0x9e : #plus sign
+u'+' : [1, chr(0x9e)],
+#case u'\u002c' - 0x97 : #comma
+u',' : [1, chr(0x2C)],
+#case u'\u002d' - 0x9f : #hyphen-minus
+u'-' : [1, chr(0x9f)],
+#case u'\u002e' - 0xA2 : #full stop
+u'.' : [1, chr(0xA2)],
+#case u'\u002f' - 0xa1 : #solidus
+u'/' : [1, chr(0xa1)],
+# #-- digits 0..9 B0 - B9
+#case u'\u003a' - 0xa5 : #colon
+u':' : [1, chr(0xa5)],
+## case u'\u003b' - 0xa6 : #handled in >128: semicolon
+#case u'\u003c' - 0x98 : #less than sign
+u'<' : [1, chr(0x98)],
+#case u'\u003d' - 0x99 : #equal sign
+u'=' : [1, chr(0x99)],
+#case u'\u003e' - 0x9a : #more than sign
+u'>' : [1, chr(0x9a)],
+## case u'\u003f' - 0xa3 : #handled in >128: question mark
+#case u'\u0040' - 0x81 : #commercialat
+u'@' : [1, chr(0x81)],
+##-- letters A..Z
+#case u'\u005b' - 0x92 : #left square bracket
+u'[' : [1, chr(0x93)],
+#case u'\u005c' - 0x9d : #reverse solidus
+u'\\' : [1, chr(0x9d)],
+#case u'\u005d' - 0x93 : #right square bracket
+u']' : [1, chr(0x92)],
+#case u'\u005e' - 0xAE : #circumflex accent
+u'^' : [1, chr(0xAE)],
+## case u'\u005f' - 0x?? : #?? low line
+#case u'\u0060' - 0xa8 : #grave accent
+u'`' : [1, chr(0xa8)],
+# #-- letters a..z
+#case u'\u007b' - 0x8b : #left curly bracket
+u'{' : [1, chr(0x8c)],
+#case u'\u007c' - 0xaf : #vertical line
+u'|' : [1, chr(0xaf)],
+#case u'\u007d' - 0x8c : #right curly bracket
+u'}' : [1, chr(0x8b)],
+#case u'\u007e' - 0x86 : #tilde
+u'~' : [1, chr(0x86)],
+#case u'\u00BB' - 0x8E : #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+u'\u00BB' : [1, chr(0x8E)],
+#case u'\u00AB' - 0x8F : #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+u'\u00AB' : [1, chr(0x8F)],
+#case u'\u00D7' - 0x9c : #times
+u'\u00D7' : [1, chr(0x9c)],
+#case u'\u200C' #ZWJ
+u'\u200C' : [1, ''],
+#case u'\u200D' #ZWNJ
+u'\u200D' : [1, ''],
+
+#060C - 0xA7 : arabic comma
+u'\u060C' : [1, chr(0xA7)],
+#061B - 0xA6 : arabic semicolon
+u'\u061B' : [1, chr(0xA6)],
+#061F - 0XA3 : arabic question mark
+u'\u061F' : [1, chr(0xA3)],
+#0621 - 0xBC hamza
+u'\u0621' : [1, chr(0xBC)],
+#0622 - 0xBB : alef + madda, the kernel joins it if should joined!!!
+u'\u0622' : [1, chr(0xBB)],
+#0623 - 0xBD+0xAD - 0xBE+0xAD : alef + hamza above
+u'\u0623' : [2, chr(0xBD)+chr(0xAD), chr(0xBE)+chr(0xAD)],
+#0624 - 0xF7+0xAD : waw + hamza above
+u'\u0624' : [1, chr(0xF7)+chr(0xAD)],
+#0625 - 0xBD+\hamzabelow - 0xBE+\hamzabelow : alef + hamza below
+u'\u0625' : [2, chr(0xBD)+'\\hamzabelow', chr(0xBE)+'\\hamzabelow'],
+#0626 - 0xFF - 0xFC+0xAD : yeh + hamza above
+u'\u0626' : [3, chr(0xFC)+chr(0xAD), chr(0xFE)+chr(0xAD), chr(0xFF)],
+#0627 - 0xBD - 0xBE : alef
+u'\u0627' : [2, chr(0xBD), chr(0xBE)],
+#0628 - 0xBF - 0xC0 : beh
+u'\u0628' : [2, chr(0xBF), chr(0xC0)],
+#0629 - \0xF8 : teh marbuta
+u'\u0629' : [1, '\\'+chr(0xF8)],
+#062a - 0xC3 - 0xC4 : teh
+u'\u062a' : [2, chr(0xC3), chr(0xC4)],
+#062b - 0xC5 - 0xC6 : theh
+u'\u062b' : [2, chr(0xC5), chr(0xC6)],
+#062c - 0xC7 - 0xC8 : jeem
+u'\u062c' : [2, chr(0xC7), chr(0xC8)],
+#062d - 0xCB - 0xCC : hah
+u'\u062d' : [2, chr(0xCB), chr(0xCC)],
+#062e - 0xCD - 0xCE : khah
+u'\u062e' : [2, chr(0xCD), chr(0xCE)],
+#062f - 0xCF : dal
+u'\u062f' : [1, chr(0xCF)],
+#0630 - 0xD0 : thal
+u'\u0630' : [1, chr(0xD0)],
+#0631 - 0xD1 : reh
+u'\u0631' : [1, chr(0xD1)],
+#0632 - 0xD2 : zain
+u'\u0632' : [1, chr(0xD2)],
+#0633 - 0xD4 - 0xD5 : seen
+u'\u0633' : [2, chr(0xD4), chr(0xD5)],
+#0634 - 0xD6 - 0xD7 : sheen
+u'\u0634' : [2, chr(0xD6), chr(0xD7)],
+#0635 - 0xD8 - 0xD9 : sad
+u'\u0635' : [2, chr(0xD8), chr(0xD9)],
+#0636 - 0xDA - 0xDB : dad
+u'\u0636' : [2, chr(0xDA), chr(0xDB)],
+#0637 - 0xDC - 0xDD : tah
+u'\u0637' : [2, chr(0xDC), chr(0xDD)],
+#0638 - 0xDE - 0xDF : zah
+u'\u0638' : [2, chr(0xDE), chr(0xDF)],
+#0639 - 0xE0 - 0xE1 - 0xE2 - 0xE3 : ain
+u'\u0639' : [4, chr(0xE0), chr(0xE2), chr(0xE3), chr(0xE1)],
+#063a - 0xE4 - 0xE5 - 0xE6 - 0xE7 : ghain
+u'\u063a' : [4, chr(0xE4), chr(0xE6), chr(0xE7), chr(0xE5)],
+#0640 - 0x94 : tatweel
+u'\u0640' : [1, chr(0x94)],
+#0641 - 0xE8 - 0xE9 : feh
+u'\u0641' : [2, chr(0xE8), chr(0xE9)],
+#0642 - 0xEA - 0xEB : Qaf
+u'\u0642' : [2, chr(0xEA), chr(0xEB)],
+#0643 - \arabkeh - 0xED : arabic ke
+u'\u0643' : [2, '\\arabkeh', chr(0xED)],
+#0644 - 0xF0 - 0xF2 : lam
+u'\u0644' : [2, chr(0xF0), chr(0xF2)],
+#0645 - 0xF3 - 0xF4 : meem
+u'\u0645' : [2, chr(0xF3), chr(0xF4)],
+#0646 - 0xF5 - 0xF6 : noon
+u'\u0646' : [2, chr(0xF5), chr(0xF6)],
+#0647 - 0xF8 - 0xF9 - 0xFB : heh
+u'\u0647' : [3, chr(0xF8), chr(0xFB), chr(0xF9)],
+#0648 - 0xF7 : waw
+u'\u0648' : [1, chr(0xF7)],
+#0649 - \alefmaq - \alefmaqjd : alef maksura
+u'\u0649' : [2, '\\alefmaq', '\\alefmaqjd'],
+#064a - \arabyeh - \arabyehjd - 0xFD : arabic yeh
+u'\u064a' : [3, '\\arabyeh', '\\arabyehjd', chr(0xFD)],
+
+#064b - 0xAC : nasb
+u'\u064b' : [1, chr(0xAC)],
+#064c - \raf : raf
+u'\u064c' : [1, '\\'+chr(0xA9)],
+#064d - \jar : jar
+u'\u064d' : [1, '\\'+chr(0xAA)],
+#064e - 0xAB : fatha
+u'\u064e' : [1, chr(0xAB)],
+#064f - 0xA9 : zamma
+u'\u064f' : [1, chr(0xA9)],
+#0650 - 0xAA : kasra
+u'\u0650' : [1, chr(0xAA)],
+#0651 - 0xBA : shadda
+u'\u0651' : [1, chr(0xBA)],
+#0652 - 0xAE : sokun
+u'\u0652' : [1, chr(0xAE)],
+#0653 - \mad : madda
+u'\u0653' : [1, '\\'+chr(0x86)],
+#0654 - 0xAD : hamza above
+u'\u0654' : [1, chr(0xAD)],
+#0655 - \hamzabelow : hamza below
+u'\u0655' : [1, '\\hamzabelow'],
+#0656 - \alefkootahpayyn : alef subscript
+u'\u0656' : [1, '\\'+chr(0xBD)+chr(0xFC)+chr(0xA0)],
+
+#066a - 0x96 : arabic percent sign
+u'\u066a' : [1, chr(0x96)],
+#066b - 0xA1 : arabic decimal seperator
+u'\u066b' : [1, chr(0xA1)],
+#066c - 0x97 : arabic thousands seperator
+u'\u066c' : [1, chr(0x97)],
+
+#0670 - \alefkootahbala : alef superscript
+u'\u0670' : [1, '\\'+chr(0xBB)],
+
+#067e - 0xC1 - 0xC2 : peh
+u'\u067e' : [2, chr(0xC1), chr(0xC2)],
+#0686 - 0xC9 - 0xCA : cheh
+u'\u0686' : [2, chr(0xC9), chr(0xCA)],
+#0698 - 0xD3 : jeh
+u'\u0698' : [1, chr(0xD3)],
+#06a9 - 0xEC - 0xED : farsi keh
+u'\u06a9' : [2, chr(0xEC), chr(0xED)],
+#06af - 0xEE - 0xEF : gaf
+u'\u06af' : [2, chr(0xEE), chr(0xEF)],
+#06cc - 0xFC - 0xFD - 0xFE : farsi yeh
+u'\u06cc' : [3, chr(0xFC), chr(0xFE), chr(0xFD)],
+
+#arabic-indic digits
+u'\u06F0' : [1, chr(0xB0)],
+u'\u06F1' : [1, chr(0xB1)],
+u'\u06F2' : [1, chr(0xB2)],
+u'\u06F3' : [1, chr(0xB3)],
+u'\u06F4' : [1, chr(0xB4)],
+u'\u06F5' : [1, chr(0xB5)],
+u'\u06F6' : [1, chr(0xB6)],
+u'\u06F7' : [1, chr(0xB7)],
+u'\u06F8' : [1, chr(0xB8)],
+u'\u06F9' : [1, chr(0xB9)],
+
+#arabic digits
+u'\u0660' : [1, chr(0xB0)],
+u'\u0661' : [1, chr(0xB1)],
+u'\u0662' : [1, chr(0xB2)],
+u'\u0663' : [1, chr(0xB3)],
+u'\u0664' : [1, '\\arabfour'],
+u'\u0665' : [1, '\\arabfive'],
+u'\u0666' : [1, '\\arabsix'],
+u'\u0667' : [1, chr(0xB7)],
+u'\u0668' : [1, chr(0xB8)],
+u'\u0669' : [1, chr(0xB9)],
+
+#0644_#0627 - 0xF1 : lam+alef
+u'\u0600' : [1, chr(0xF1)]
+}
+
+def is_right_joinable(c):
+ if (c in bidi_joiners) or (c in right_joiners):
+ return 1
+ return 0
+
+def is_left_joinable(c):
+ if (c in bidi_joiners):
+ return 1
+ return 0
+
+def is_nonend_vowel(vowel):
+ if (vowel >= u'\u064e') and (vowel <= u'\u0656'):
+ return 1
+ if (vowel == u'\u0670'):
+ return 1
+ return 0
+
+def is_vowel(vowel):
+ if (vowel >= u'\u064b') and (vowel <= u'\u0656'):
+ return 1
+ if (vowel == u'\u0670'):
+ return 1
+ return 0
+
+def is_six_vowel(vowel):
+ if (vowel >= u'\u064b') and (vowel <= u'\u0650'):
+ return 1
+ return 0
+
+
+def is_right_joinable_v(line, i):
+ if (i>0) and (is_right_joinable(line[i])):
+ j = i-1
+ if is_vowel(line[j]):
+ while ((j>=0) and (is_vowel(line[j]) == 1)):
+ j -= 1
+ if (j == -1) or not(is_left_joinable(line[j])):
+ return 0
+ return 1
+ return 0
+
+def is_left_joinable_v(line, i):
+ line_len = len (line)
+ if (line_len>0) and (i<line_len-1) and (is_left_joinable(line[i])):
+ j = i+1
+ if is_vowel(line[j]):
+ while ((j<line_len) and (is_vowel(line[j]) == 1)):
+ j += 1
+ if (j == line_len) or not(is_right_joinable(line[j])):
+ return 0
+ return 1
+ return 0
+
+#isolated 0, final 1, medial 2, initial 3
+def find_form(line, i):
+ j_r = is_right_joinable_v(line, i)
+ j_l = is_left_joinable_v(line, i)
+
+ if (j_r == 0) and (j_l == 0):
+ return 0
+ if (j_r == 1) and (j_l == 0):
+ return 1
+ if (j_r == 1) and (j_l == 1):
+ return 2
+ # Therefore (j_r == 0) and (j_l == 1):
+ return 3
+
+def map_char_unicode_DK(c, form):
+ try:
+ n = table_UN_DK[c][0]
+ except KeyError:
+ return c.encode('latin-1')
+ if (n == 1):
+ return table_UN_DK[c][1]
+ elif (n == 2):
+ if (c in right_joiners):
+ return table_UN_DK[c][1 + form]
+ else:
+ return table_UN_DK[c][1 + form/2]
+ elif (n == 4):
+ return table_UN_DK[c][1 + form]
+ # farsi yeh (farsi or arabic or +hamza)
+ if (c == u'\u06cc') or (c == u'\u0626') or (c == u'\u064a'):
+ if (form >= 2):
+ return table_UN_DK[c][3]
+ return table_UN_DK[c][1 + form]
+ elif (c == u'\u0647'): # heh
+ if (form < 2):
+ return table_UN_DK[c][1]
+ return table_UN_DK[c][form]
+ return c
+
+def is_english_letter_number(c):
+ if ((c >= u'a') and (c <= u'z')) or ((c >= u'A') and (c <= u'Z')):
+ return 1
+ if (c >= u'0') and (c <= u'9'):
+ return 1
+ if (c == u',') or (c == u'?'):
+ return 1
+ return 0
+
+def is_inbetween_chars(c):
+ if ((c == u'.') or (c == u'-') or (c == u'_') or (c == u'/')):
+ return 1
+ return 0
+
+def is_farsi_numerical(c):
+ if ((c >= u'\u06F0') and (c <= u'\u06F9')) or (c == u'\u066b') or (c == u'\u066c'):
+ return 1
+ return 0
+
+# Main body of the program
+if len(sys.argv) <= 2:
+ print 'usage: python undk in_filename out_filename'
+ exit(0)
+
+filename = sys.argv[1]
+outfile = sys.argv[2]
+
+try:
+ f = codecs.open(filename, 'r', 'utf-8')
+except IOError:
+ print "Can not open the input file: " + filename
+ exit(0)
+
+try:
+ of = open(outfile, 'w')
+except IOError:
+ print "Can not open the output file: " + outfile
+ exit(0)
+
+# this is an option
+autoEnglish = 1
+
+inAutoEnglish = 0
+inFarsi = 1
+inFarsiNumber = 0
+for line in f:
+ this_line = ''
+ line_len = len (line)
+
+ # to remove the Byte Order Mark = BOM
+ start = 0
+ if line[0] == unicode( codecs.BOM_UTF8, "utf8"):
+ start = 1
+ # end of BOM removal
+
+ i = start
+ english_part = ''
+ auto_english_part = ''
+ number_part = ''
+ while i < line_len:
+ # find the \$f_ or \$e_
+ if line[i] == u'\\':
+ if line[i+1:i+4] == "$f_":
+ inFarsi = 1
+ i += 4
+ this_line += english_part[::-1]
+ english_part = ''
+ elif line[i+1:i+4] == "$e_":
+ inFarsi = 0
+ i += 4
+ # The following situation should not happen !!!!
+ if (autoEnglish == 1) and (inAutoEnglish == 1):
+ this_line += auto_english_part[::-1]
+ auto_english_part = ''
+ inAutoEnglish = 0
+ print 'Warning: mixed Auto-English and Forced-English'
+ if (inFarsiNumber == 1):
+ this_line += number_part[::-1]
+ number_part = ''
+ inFarsiNubmer = 0
+ # end of character processing
+ if inFarsi == 0:
+ english_part += line[i].encode('ascii')
+ # Therefore we are in FarsiMode
+ else:
+ # when we are in AutoEnglish mode and the current character
+ # is '.', '-', '_', or '/' and the next character
+ # is English AlphaNumberic then consider the current character
+ # as an English character
+ if (autoEnglish == 1) and (inAutoEnglish == 1) and \
+ (is_inbetween_chars(line[i]) == 1) and \
+ (line_len > i+1) and (is_english_letter_number(line[i+1]) == 1):
+ auto_english_part += line[i].encode('ascii')
+ elif (is_english_letter_number(line[i]) == 1) and (autoEnglish == 1):
+ if (inFarsiNumber == 1):
+ this_line += number_part[::-1]
+ number_part = ''
+ inFarsiNubmer = 0
+ inAutoEnglish = 1
+ auto_english_part += line[i].encode('ascii')
+ else:
+ if (autoEnglish == 1) and (inAutoEnglish == 1):
+ this_line += auto_english_part[::-1]
+ auto_english_part = ''
+ inAutoEnglish = 0
+ if (is_farsi_numerical(line[i]) == 1):
+ inFarsiNumber = 1
+ number_part += map_char_unicode_DK(line[i], 0)
+ else:
+ if (inFarsiNumber == 1):
+ this_line += number_part[::-1]
+ number_part = ''
+ inFarsiNubmer = 0
+ which_form = find_form(line, i)
+ if (i+1 < line_len) and (line[i] == u'\u0644') and (line[i+1] == u'\u0627'):
+ which_form = 1
+ this_line += map_char_unicode_DK(u'\u0600', which_form)
+ i = i + 1
+ else:
+ this_line += map_char_unicode_DK(line[i], which_form)
+ i += 1
+ # end of while
+ if inFarsi == 0:
+ this_line += english_part[::-1]
+ english_part = ''
+
+ # write the processed line
+ of.write(this_line)
+ # end of line processing
+# end of file processing
+
+of.close()
+f.close()
diff --git a/Master/texmf-dist/doc/xelatex/xepersian/unldk-0.2.py b/Master/texmf-dist/doc/xelatex/xepersian/unldk-0.2.py
new file mode 100755
index 00000000000..b91c183cdd8
--- /dev/null
+++ b/Master/texmf-dist/doc/xelatex/xepersian/unldk-0.2.py
@@ -0,0 +1,445 @@
+#! /usr/bin/env python
+#########################################
+# General Public License #
+# Author: Mostafa Vahedi #
+# Date: 22 Apr. 2007 #
+# Version 0.2 #
+#########################################
+
+import codecs
+
+import sys
+
+bidi_joiners = [
+u'\u0626', u'\u0628', u'\u062a', u'\u062b', u'\u062c', u'\u062d', u'\u062e',
+u'\u0633', u'\u0634', u'\u0635', u'\u0636', u'\u0637', u'\u0638', u'\u0639', u'\u063a',
+u'\u0640', u'\u0641', u'\u0642', u'\u0643', u'\u0644', u'\u0645', u'\u0646', u'\u0647',
+u'\u0649', u'\u064a', u'\u067e', u'\u0686', u'\u06a9', u'\u06af', u'\u200d',
+u'\u06cc']
+
+right_joiners = [
+u'\u0622', u'\u0623', u'\u0624', u'\u0625', u'\u0627', u'\u0629', u'\u062f', u'\u0630', u'\u0631',
+u'\u0632', u'\u0648', u'\u0671', u'\u0600', u'\u0698']
+
+
+#form_numbers, isolated, final, medial, initial
+table_UN_DK = {
+u'\n' : [1, '\n'],
+#case u'\u0020' - 0xA0 : #space
+u' ' : [1, chr(0xA0)],
+#case u'\u0021' - 0xA4 : #exclamation
+u'!' : [1, chr(0xA4)],
+## case u'\u0022' - 0x?? : #quotation
+#case u'\u0023' - 0x95 : #number sign
+u'#' : [1, chr(0x95)],
+#case u'\u0024' - 0x83 : #?? dollar sign
+u'$' : [1, chr(0x83)],
+#case u'\u0025' - 0x96 : #percent sign
+u'%' : [1, chr(0x96)],
+#case u'\u0026' - 0x87 : #?? ampersand
+u'&' : [1, chr(0x87)],
+#case u'\u0027' - 0xa9 : #apostrophe
+u'\'' : [1, chr(0xa9)],
+#case u'\u0028' - 0x90 : #left parenthesis
+u'(' : [1, chr(0x91)],
+#case u'\u0029' - 0x91 : #right parenthesis
+u')' : [1, chr(0x90)],
+#case u'\u002a' - 0x82 : #asterisk
+u'*' : [1, chr(0x82)],
+#case u'\u002b' - 0x9e : #plus sign
+u'+' : [1, chr(0x9e)],
+#case u'\u002c' - 0x97 : #comma
+u',' : [1, chr(0x97)],
+#case u'\u002d' - 0x9f : #hyphen-minus
+u'-' : [1, chr(0x9f)],
+#case u'\u002e' - 0xA2 : #full stop
+u'.' : [1, chr(0xA2)],
+#case u'\u002f' - 0xa1 : #solidus
+u'/' : [1, chr(0xa1)],
+# #-- digits 0..9 B0 - B9
+#case u'\u003a' - 0xa5 : #colon
+u':' : [1, chr(0xa5)],
+## case u'\u003b' - 0xa6 : #handled in >128: semicolon
+#case u'\u003c' - 0x98 : #less than sign
+u'<' : [1, chr(0x98)],
+#case u'\u003d' - 0x99 : #equal sign
+u'=' : [1, chr(0x99)],
+#case u'\u003e' - 0x9a : #more than sign
+u'>' : [1, chr(0x9a)],
+## case u'\u003f' - 0xa3 : #handled in >128: question mark
+#case u'\u0040' - 0x81 : #commercialat
+u'@' : [1, chr(0x81)],
+##-- letters A..Z
+#case u'\u005b' - 0x92 : #left square bracket
+u'[' : [1, chr(0x93)],
+#case u'\u005c' - 0x9d : #reverse solidus
+u'\\' : [1, chr(0x9d)],
+#case u'\u005d' - 0x93 : #right square bracket
+u']' : [1, chr(0x92)],
+#case u'\u005e' - 0xAE : #circumflex accent
+u'^' : [1, chr(0xAE)],
+## case u'\u005f' - 0x?? : #?? low line
+#case u'\u0060' - 0xa8 : #grave accent
+u'`' : [1, chr(0xa8)],
+# #-- letters a..z
+#case u'\u007b' - 0x8b : #left curly bracket
+u'{' : [1, chr(0x8c)],
+#case u'\u007c' - 0xaf : #vertical line
+u'|' : [1, chr(0xaf)],
+#case u'\u007d' - 0x8c : #right curly bracket
+u'}' : [1, chr(0x8b)],
+#case u'\u007e' - 0x86 : #tilde
+u'~' : [1, chr(0x86)],
+#case u'\u00BB' - 0x8E : #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+u'\u00BB' : [1, chr(0x8E)],
+#case u'\u00AB' - 0x8F : #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+u'\u00AB' : [1, chr(0x8F)],
+#case u'\u00D7' - 0x9c : #times
+u'\u00D7' : [1, chr(0x9c)],
+#case u'\u200C' #ZWJ
+u'\u200C' : [1, ''],
+#case u'\u200D' #ZWNJ
+u'\u200D' : [1, ''],
+
+#060C - 0xA7 : arabic comma
+u'\u060C' : [1, chr(0xA7)],
+#061B - 0xA6 : arabic semicolon
+u'\u061B' : [1, chr(0xA6)],
+#061F - 0XA3 : arabic question mark
+u'\u061F' : [1, chr(0xA3)],
+#0621 - 0xBC hamza
+u'\u0621' : [1, chr(0xBC)],
+#0622 - 0xBB : alef + madda, the kernel joins it if should joined!!!
+u'\u0622' : [1, chr(0xBB)],
+#0623 - 0xBD+0xAD - 0xBE+0xAD : alef + hamza above
+u'\u0623' : [2, chr(0xBD)+chr(0xAD), chr(0xBE)+chr(0xAD)],
+#0624 - 0xF7+0xAD : waw + hamza above
+u'\u0624' : [1, chr(0xF7)+chr(0xAD)],
+#0625 - 0xBD+\hamzabelow - 0xBE+\hamzabelow : alef + hamza below
+u'\u0625' : [2, chr(0xBD)+'\\hamzabelow', chr(0xBE)+'\\hamzabelow'],
+#0626 - 0xFF - 0xFC+0xAD : yeh + hamza above
+u'\u0626' : [3, chr(0xFC)+chr(0xAD), chr(0xFE)+chr(0xAD), chr(0xFF)],
+#0627 - 0xBD - 0xBE : alef
+u'\u0627' : [2, chr(0xBD), chr(0xBE)],
+#0628 - 0xBF - 0xC0 : beh
+u'\u0628' : [2, chr(0xBF), chr(0xC0)],
+#0629 - \0xF8 : teh marbuta
+u'\u0629' : [1, '\\'+chr(0xF8)],
+#062a - 0xC3 - 0xC4 : teh
+u'\u062a' : [2, chr(0xC3), chr(0xC4)],
+#062b - 0xC5 - 0xC6 : theh
+u'\u062b' : [2, chr(0xC5), chr(0xC6)],
+#062c - 0xC7 - 0xC8 : jeem
+u'\u062c' : [2, chr(0xC7), chr(0xC8)],
+#062d - 0xCB - 0xCC : hah
+u'\u062d' : [2, chr(0xCB), chr(0xCC)],
+#062e - 0xCD - 0xCE : khah
+u'\u062e' : [2, chr(0xCD), chr(0xCE)],
+#062f - 0xCF : dal
+u'\u062f' : [1, chr(0xCF)],
+#0630 - 0xD0 : thal
+u'\u0630' : [1, chr(0xD0)],
+#0631 - 0xD1 : reh
+u'\u0631' : [1, chr(0xD1)],
+#0632 - 0xD2 : zain
+u'\u0632' : [1, chr(0xD2)],
+#0633 - 0xD4 - 0xD5 : seen
+u'\u0633' : [2, chr(0xD4), chr(0xD5)],
+#0634 - 0xD6 - 0xD7 : sheen
+u'\u0634' : [2, chr(0xD6), chr(0xD7)],
+#0635 - 0xD8 - 0xD9 : sad
+u'\u0635' : [2, chr(0xD8), chr(0xD9)],
+#0636 - 0xDA - 0xDB : dad
+u'\u0636' : [2, chr(0xDA), chr(0xDB)],
+#0637 - 0xDC - 0xDD : tah
+u'\u0637' : [2, chr(0xDC), chr(0xDD)],
+#0638 - 0xDE - 0xDF : zah
+u'\u0638' : [2, chr(0xDE), chr(0xDF)],
+#0639 - 0xE0 - 0xE1 - 0xE2 - 0xE3 : ain
+u'\u0639' : [4, chr(0xE0), chr(0xE2), chr(0xE3), chr(0xE1)],
+#063a - 0xE4 - 0xE5 - 0xE6 - 0xE7 : ghain
+u'\u063a' : [4, chr(0xE4), chr(0xE6), chr(0xE7), chr(0xE5)],
+#0640 - 0x94 : tatweel
+u'\u0640' : [1, chr(0x94)],
+#0641 - 0xE8 - 0xE9 : feh
+u'\u0641' : [2, chr(0xE8), chr(0xE9)],
+#0642 - 0xEA - 0xEB : Qaf
+u'\u0642' : [2, chr(0xEA), chr(0xEB)],
+#0643 - \arabkeh - 0xED : arabic ke
+u'\u0643' : [2, '\\arabkeh', chr(0xED)],
+#0644 - 0xF0 - 0xF2 : lam
+u'\u0644' : [2, chr(0xF0), chr(0xF2)],
+#0645 - 0xF3 - 0xF4 : meem
+u'\u0645' : [2, chr(0xF3), chr(0xF4)],
+#0646 - 0xF5 - 0xF6 : noon
+u'\u0646' : [2, chr(0xF5), chr(0xF6)],
+#0647 - 0xF8 - 0xF9 - 0xFB : heh
+u'\u0647' : [3, chr(0xF8), chr(0xFB), chr(0xF9)],
+#0648 - 0xF7 : waw
+u'\u0648' : [1, chr(0xF7)],
+#0649 - \alefmaq - \alefmaqjd : alef maksura
+u'\u0649' : [2, '\\alefmaq', '\\alefmaqjd'],
+#064a - \arabyeh - \arabyehjd - 0xFD : arabic yeh
+u'\u064a' : [3, '\\arabyeh', '\\arabyehjd', chr(0xFD)],
+
+#064b - 0xAC : nasb
+u'\u064b' : [1, chr(0xAC)],
+#064c - \raf : raf
+u'\u064c' : [1, '\\'+chr(0xA9)],
+#064d - \jar : jar
+u'\u064d' : [1, '\\'+chr(0xAA)],
+#064e - 0xAB : fatha
+u'\u064e' : [1, chr(0xAB)],
+#064f - 0xA9 : zamma
+u'\u064f' : [1, chr(0xA9)],
+#0650 - 0xAA : kasra
+u'\u0650' : [1, chr(0xAA)],
+#0651 - 0xBA : shadda
+u'\u0651' : [1, chr(0xBA)],
+#0652 - 0xAE : sokun
+u'\u0652' : [1, chr(0xAE)],
+#0653 - \mad : madda
+u'\u0653' : [1, '\\'+chr(0x86)],
+#0654 - 0xAD : hamza above
+u'\u0654' : [1, chr(0xAD)],
+#0655 - \hamzabelow : hamza below
+u'\u0655' : [1, '\\hamzabelow'],
+#0656 - \alefkootahpayyn : alef subscript
+u'\u0656' : [1, '\\'+chr(0xBD)+chr(0xFC)+chr(0xA0)],
+
+#066a - 0x96 : arabic percent sign
+u'\u066a' : [1, chr(0x96)],
+#066b - 0xA1 : arabic decimal seperator
+u'\u066b' : [1, chr(0xA1)],
+#066c - 0x97 : arabic thousands seperator
+u'\u066c' : [1, chr(0x97)],
+
+#0670 - \alefkootahbala : alef superscript
+u'\u0670' : [1, '\\'+chr(0xBB)],
+
+#067e - 0xC1 - 0xC2 : peh
+u'\u067e' : [2, chr(0xC1), chr(0xC2)],
+#0686 - 0xC9 - 0xCA : cheh
+u'\u0686' : [2, chr(0xC9), chr(0xCA)],
+#0698 - 0xD3 : jeh
+u'\u0698' : [1, chr(0xD3)],
+#06a9 - 0xEC - 0xED : farsi keh
+u'\u06a9' : [2, chr(0xEC), chr(0xED)],
+#06af - 0xEE - 0xEF : gaf
+u'\u06af' : [2, chr(0xEE), chr(0xEF)],
+#06cc - 0xFC - 0xFD - 0xFE : farsi yeh
+u'\u06cc' : [3, chr(0xFC), chr(0xFE), chr(0xFD)],
+
+#arabic-indic digits
+u'\u06F0' : [1, chr(0xB0)],
+u'\u06F1' : [1, chr(0xB1)],
+u'\u06F2' : [1, chr(0xB2)],
+u'\u06F3' : [1, chr(0xB3)],
+u'\u06F4' : [1, chr(0xB4)],
+u'\u06F5' : [1, chr(0xB5)],
+u'\u06F6' : [1, chr(0xB6)],
+u'\u06F7' : [1, chr(0xB7)],
+u'\u06F8' : [1, chr(0xB8)],
+u'\u06F9' : [1, chr(0xB9)],
+
+#arabic digits
+u'\u0660' : [1, chr(0xB0)],
+u'\u0661' : [1, chr(0xB1)],
+u'\u0662' : [1, chr(0xB2)],
+u'\u0663' : [1, chr(0xB3)],
+u'\u0664' : [1, '\\arabfour'],
+u'\u0665' : [1, '\\arabfive'],
+u'\u0666' : [1, '\\arabsix'],
+u'\u0667' : [1, chr(0xB7)],
+u'\u0668' : [1, chr(0xB8)],
+u'\u0669' : [1, chr(0xB9)],
+
+#0644_#0627 - 0xF1 : lam+alef
+u'\u0600' : [1, chr(0xF1)]
+}
+
+def is_right_joinable(c):
+ if (c in bidi_joiners) or (c in right_joiners):
+ return 1
+ return 0
+
+def is_left_joinable(c):
+ if (c in bidi_joiners):
+ return 1
+ return 0
+
+def is_nonend_vowel(vowel):
+ if (vowel >= u'\u064e') and (vowel <= u'\u0656'):
+ return 1
+ if (vowel == u'\u0670'):
+ return 1
+ return 0
+
+def is_vowel(vowel):
+ if (vowel >= u'\u064b') and (vowel <= u'\u0656'):
+ return 1
+ if (vowel == u'\u0670'):
+ return 1
+ return 0
+
+def is_six_vowel(vowel):
+ if (vowel >= u'\u064b') and (vowel <= u'\u0650'):
+ return 1
+ return 0
+
+
+def is_right_joinable_v(line, i):
+ if (i>0) and (is_right_joinable(line[i])):
+ j = i-1
+ if is_vowel(line[j]):
+ while ((j>=0) and (is_vowel(line[j]) == 1)):
+ j -= 1
+ if (j == -1) or not(is_left_joinable(line[j])):
+ return 0
+ return 1
+ return 0
+
+def is_left_joinable_v(line, i):
+ line_len = len (line)
+ if (line_len>0) and (i<line_len-1) and (is_left_joinable(line[i])):
+ j = i+1
+ if is_vowel(line[j]):
+ while ((j<line_len) and (is_vowel(line[j]) == 1)):
+ j += 1
+ if (j == line_len) or not(is_right_joinable(line[j])):
+ return 0
+ return 1
+ return 0
+
+#isolated 0, final 1, medial 2, initial 3
+def find_form(line, i):
+ j_r = is_right_joinable_v(line, i)
+ j_l = is_left_joinable_v(line, i)
+
+ if (j_r == 0) and (j_l == 0):
+ return 0
+ if (j_r == 1) and (j_l == 0):
+ return 1
+ if (j_r == 1) and (j_l == 1):
+ return 2
+ # Therefore (j_r == 0) and (j_l == 1):
+ return 3
+
+def map_char_unicode_DK(c, form):
+ try:
+ n = table_UN_DK[c][0]
+ except KeyError:
+ return c.encode('latin-1')
+ if (n == 1):
+ return table_UN_DK[c][1]
+ elif (n == 2):
+ if (c in right_joiners):
+ return table_UN_DK[c][1 + form]
+ else:
+ return table_UN_DK[c][1 + form/2]
+ elif (n == 4):
+ return table_UN_DK[c][1 + form]
+ # farsi yeh (farsi or arabic or +hamza)
+ if (c == u'\u06cc') or (c == u'\u0626') or (c == u'\u064a'):
+ if (form >= 2):
+ return table_UN_DK[c][3]
+ return table_UN_DK[c][1 + form]
+ elif (c == u'\u0647'): # heh
+ if (form < 2):
+ return table_UN_DK[c][1]
+ return table_UN_DK[c][form]
+ return c
+
+def is_english_letter_number(c):
+ if ((c >= u'a') and (c <= u'z')) or ((c >= u'A') and (c <= u'Z')):
+ return 1
+ if (c >= u'0') and (c <= u'9'):
+ return 1
+ return 0
+
+def is_farsi_numerical(c):
+ if ((c >= u'\u06F0') and (c <= u'\u06F9')) or (c == u'\u066b') or (c == u'\u066c'):
+ return 1
+ return 0
+
+# Main body of the program
+if len(sys.argv) <= 2:
+ print 'usage: python unldk in_filename out_filename'
+ exit(0)
+
+filename = sys.argv[1]
+outfile = sys.argv[2]
+
+try:
+ f = codecs.open(filename, 'r', 'utf-8')
+except IOError:
+ print "Can not open the input file: " + filename
+ exit(0)
+
+try:
+ of = open(outfile, 'w')
+except IOError:
+ print "Can not open the output file: " + outfile
+ exit(0)
+
+inFarsi = 0
+inFarsiNumber = 0
+for line in f:
+ this_line = ''
+ line_len = len (line)
+
+ # to remove the Byte Order Mark = BOM
+ start = 0
+ if line[0] == unicode( codecs.BOM_UTF8, "utf8"):
+ start = 1
+ # end of BOM removal
+
+ i = start
+ farsi_part = ''
+ while i < line_len:
+ # find the \$f_ or \$e_
+ if line[i] == u'\\':
+ if line[i+1:i+4] == "$f_":
+ inFarsi = 1
+ i += 4
+ elif line[i+1:i+4] == "$e_":
+ if (inFarsiNumber == 1):
+ farsi_part += number_part[::-1]
+ number_part = ''
+ inFarsiNubmer = 0
+ this_line += farsi_part[::-1]
+ fasi_part = ''
+ inFarsi = 0
+ i += 4
+ # end of character processing
+ if inFarsi == 0:
+ this_line += line[i].encode('ascii')
+ else:
+ if (is_farsi_numerical(line[i]) == 1):
+ inFarsiNumber = 1
+ number_part += map_char_unicode_DK(line[i], 0)
+ else:
+ if (inFarsiNumber == 1):
+ farsi_part += number_part[::-1]
+ number_part = ''
+ inFarsiNubmer = 0
+ which_form = find_form(line, i)
+ if (i+1 < line_len) and (line[i] == u'\u0644') and (line[i+1] == u'\u0627'):
+ which_form = 1
+ farsi_part += map_char_unicode_DK(u'\u0600', which_form)
+ i = i + 1
+ else:
+ farsi_part += map_char_unicode_DK(line[i], which_form)
+ i += 1
+ # end of while
+ if inFarsi == 1:
+ this_line += farsi_part[::-1]
+ farsi_part = ''
+
+ # write the processed line
+ of.write(this_line)
+ # end of line processing
+# end of file processing
+
+of.close()
+f.close()
diff --git a/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf b/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf
index acdbd27d81d..3c304fbb2cf 100644
--- a/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf
+++ b/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx b/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx
index 85188005fc9..bf9e257389f 100644
--- a/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx
+++ b/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx
@@ -5,7 +5,7 @@
%<*readme>
____________________
The XePersian package
-v15.5
+v15.6
XePersian is a package written for XeLaTeX that allows users to typeset
Persian easily.
@@ -28,7 +28,7 @@ a minimal working example showing the issue, and always choose the appropriate
label for your query (i.e. if you are reporting any bugs, choose `Bug' label).
-Current version release date: 2014/11/17
+Current version release date: 2014/11/21
______________
Vafa Khalighi
persian-tex@tug.org
@@ -271,7 +271,7 @@ by Vafa Khalighi.
%\changes{v13.1}{2013/09/23}{Added implementation of the package.}
% \title{\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}}\\
%\LARGE Persian for \LaTeXe, using {\XeTeX} engine\\[5pt]
-%\large Documentation for \textcolor{blue!65!black}{version 15.5}}
+%\large Documentation for \textcolor{blue!65!black}{version 15.6}}
% \author{Vafa Khalighi\\
% \url{persian-tex@tug.org}}
%\setcounter{page}{0}
@@ -282,7 +282,7 @@ by Vafa Khalighi.
%\textcolor{blue!65!black}{\Huge The \textsf{\XePersian} \textit{Package}}
%
%\Large
-%Documentation for \textcolor{blue!65!black}{version 15.5}}
+%Documentation for \textcolor{blue!65!black}{version 15.6}}
%
%\vskip 0pt plus 3fill
%\textit{\large to my Master, \textbf{Ferdowsi The Great}}
@@ -337,7 +337,7 @@ by Vafa Khalighi.
%*
%* Copyright © 2008–2014 Vafa Khalighi
%*
-%* v15.5, 2014/11/17
+%* v15.6, 2014/11/21
%*
%* License: LaTeX Project Public License, version
%* 1.3c or higher (your choice)
@@ -2358,7 +2358,7 @@ by Vafa Khalighi.
%\iffalse
%<*table>
%\fi
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -5665,8 +5665,8 @@ U+003E U+003E <> U+00BB ; >> -> RIGHT POINTING GUILLEMET
% \subsection{\textsf{xepersian.sty}}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\def\xepersianversion{v15.5}
-\def\xepersiandate{2014/11/17}
+\def\xepersianversion{v15.6}
+\def\xepersiandate{2014/11/21}
\ProvidesPackage{xepersian}[\xepersiandate\space \xepersianversion\space
Persian typesetting in XeLaTeX]
\RequirePackage{fontspec}
@@ -7300,7 +7300,7 @@ indexblock environment may only appear inside frontpage environment.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{xepersian-mathsdigitspec}
- [2014/11/04 v1.0.9 Unicode Persian maths digits in XeLaTeX]
+ [2014/11/21 v1.1.0 Unicode Persian maths digits in XeLaTeX]
\def\new@mathgroup{\alloc@8\mathgroup\chardef\@cclvi}
\let\newfam\new@mathgroup
\def\select@group#1#2#3#4{%
@@ -7355,39 +7355,26 @@ indexblock environment may only appear inside frontpage environment.
}
\ExplSyntaxOn
\bool_set_false:N \g__fontspec_math_bool
+\tl_map_inline:nn
+ {
+ \new@mathgroup\cdp@list\cdp@elt\DeclareMathSizes
+ \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@
+ \DeclareMathVersion\define@mathalphabet\define@mathgroup\addtoversion
+ \version@list\version@elt\alpha@list\alpha@elt
+ \restore@mathversion\init@restore@version\dorestore@version\process@table
+ \new@mathversion\DeclareSymbolFont\group@list\group@elt
+ \new@symbolfont\SetSymbolFont\SetSymbolFont@\get@cdp
+ \DeclareMathAlphabet\new@mathalphabet\SetMathAlphabet\SetMathAlphabet@
+ \DeclareMathAccent\set@mathaccent\DeclareMathSymbol\set@mathchar
+ \set@mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
+ \@DeclareMathDelimiter\@xDeclareMathDelimiter\set@mathdelimiter
+ \set@@mathdelimiter\DeclareMathRadical\mathchar@type
+ \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
+ }
+ {
+ \tl_remove_once:Nn \@preamblecmds {\do#1}
+ }
\ExplSyntaxOff
-\def\@preamblecmds{}
-\newcommand\xepersian@not@onlypreamble[1]{{%
- \def\do##1{\ifx#1##1\else\noexpand\do\noexpand##1\fi}%
- \xdef\@preamblecmds{\@preamblecmds}}}
-\xepersian@not@onlypreamble\@preamblecmds
-\def\xepersian@notprerr{ can be used only in preamble (\on@line)}
-\AtBeginDocument{%
- \def\do#1{\noexpand\do\noexpand#1}%
- \edef\@preamblecmds{%
- \def\noexpand\do##1{%
- \def##1{\noexpand\xepersian@NotprerrMessage##1}\noexpand\@eha}}%
- \@preamblecmds}
-\def\xepersian@NotprerrMessage#1{%
- \PackageError{xepersian}%
- {\noexpand\string#1 \noexpand\xepersian@notprerr}{}%
-}
-\@ifpackageloaded{natbib}{%
-\renewcommand\nocite[1]{\@bsphack
- \@for\@citeb:=#1\do{%
- \@safe@activestrue
- \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
- \@safe@activesfalse
- \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
- \if*\@citeb\else
- \@ifundefined{b@\@citeb\@extra@b@citeb}{%
- \NAT@citeundefined \PackageWarning{natbib}%
- {Citation `\@citeb' undefined}}{}\fi}%
- \@esphack}%
-}{%
-\def\nocite#1{%
- \@bsphack{\setbox0=\hbox{\cite{#1}}}\@esphack}%
-}
\newcommand\xepersian@PackageInfo[1]{\PackageInfo{xepersian-mathsdigitspec}{#1}}
\newcommand\SetMathCode[4]{%
\Umathcode#1="\mathchar@type#2 \csname sym#3\endcsname #4\relax}
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def
index 8849c04d68d..47550d2cd7e 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def
index d44748609b2..a2275266134 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def
index 897fd4c6982..54281885cd1 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/amsart-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def
index 34886c538ed..9e5ca6268f4 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def
index 1a7386dfdfe..6cd2de202e7 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/article-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def
index 757bf8363de..7ff201086b7 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def
index 76ecad6ad91..82e7386a827 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def
index 488bf9d350f..407f5a7d853 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def
index 99a2f33c996..c85f4622f50 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/backref-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def
index b97aa494ef1..eb6a0ffcf7c 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def
index 858ec5de6c3..03e1441aa0d 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def
index 90e5825b38a..82fada939a4 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/boek-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def
index 61b8ca6fe8a..036693e7f11 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/boek3-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def
index 3972763dd87..86c471b0532 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/book-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def
index bc8beb2e27f..ee48263ee11 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/bookest-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def
index 4778befcc36..b0424a8d418 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/breqn-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def
index 304e9a3e2bc..380b6b4d093 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/color-localise-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def
index 5e1e221bdce..2d1660a1926 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def
index 611a3e7a1fb..6f7a002a15e 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def
index 11bb005ea6a..a595918b4a1 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/extbook-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def
index 420ed520043..2e57d961228 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def
index defe8c68453..1a5a0f35ff8 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/extreport-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/flowfram-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/flowfram-xepersian.def
index f03acb1aac3..2b3e8bdfbee 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/flowfram-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/flowfram-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/fontspec-xetex-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/fontspec-xetex-xepersian.def
index 23b25b5a0af..19308ce2af0 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/fontspec-xetex-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/fontspec-xetex-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def
index eaaa8bd7e41..07fbabf7843 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/footnote-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def
index 778c4a6a1fa..dc17bfe6da2 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/framed-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def
index 57e6e87f1fb..d951c48d1ed 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def
index 6821a2767f5..bf22576ae7a 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def
index 6a850ba8a56..5acee7879b3 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def
index 67e88433162..4627f447cda 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/kashida-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def
index 0d4ccc963b3..81f20a3fd2d 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-commands-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def
index dbc35e83fed..fbaf020d497 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-environments-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def
index 31733183b33..c0192137b82 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-messages-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def
index 3d85def234d..ea388bb02da 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/latex-localise-misc-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def
index 664c8020744..57e91f293e9 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/listings-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def
index 89b05d0f394..0840d87e811 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/loadingorder-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def
index c13f912b5e8..be63e9a0d41 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/localise-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def
index 67d5d8c1128..745a7bb5bdf 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/memoir-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def
index 10f34e412b9..7a2813e7e30 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def
index b54703a290a..a45c4bd974b 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/natbib-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def
index 1260bbd29d8..a36d0eb42e9 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/packages-localise-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def
index 5fba9b5ed15..bc962942839 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def
index 487abd08ab9..40a120bfe8d 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def
index e13b36f4f49..390179735cc 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/refrep-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def
index 8535a70acba..1100e8ca28d 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/report-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def
index 7e90809560b..2441b06ea1f 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def
index 6edbcad42ad..8a52ea8fbdf 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def
index 08cd0819a7b..3910c817f7d 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def
index 3219a8b5d6d..ecfed290db9 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def
index 5e09b591b49..f9e20361c60 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def
index d13262df308..823004cf218 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-commands-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def
index b2bb5b7ff5b..827ae204205 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localise-environments-xepersian.def
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls
index 61905b4a83f..c0de0bbb76d 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty
index 1ebc014a00f..c7b43f90ffe 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathsdigitspec.sty
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -36,7 +36,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{xepersian-mathsdigitspec}
- [2014/11/04 v1.0.9 Unicode Persian maths digits in XeLaTeX]
+ [2014/11/21 v1.1.0 Unicode Persian maths digits in XeLaTeX]
\def\new@mathgroup{\alloc@8\mathgroup\chardef\@cclvi}
\let\newfam\new@mathgroup
\def\select@group#1#2#3#4{%
@@ -91,39 +91,26 @@
}
\ExplSyntaxOn
\bool_set_false:N \g__fontspec_math_bool
+\tl_map_inline:nn
+ {
+ \new@mathgroup\cdp@list\cdp@elt\DeclareMathSizes
+ \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@
+ \DeclareMathVersion\define@mathalphabet\define@mathgroup\addtoversion
+ \version@list\version@elt\alpha@list\alpha@elt
+ \restore@mathversion\init@restore@version\dorestore@version\process@table
+ \new@mathversion\DeclareSymbolFont\group@list\group@elt
+ \new@symbolfont\SetSymbolFont\SetSymbolFont@\get@cdp
+ \DeclareMathAlphabet\new@mathalphabet\SetMathAlphabet\SetMathAlphabet@
+ \DeclareMathAccent\set@mathaccent\DeclareMathSymbol\set@mathchar
+ \set@mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
+ \@DeclareMathDelimiter\@xDeclareMathDelimiter\set@mathdelimiter
+ \set@@mathdelimiter\DeclareMathRadical\mathchar@type
+ \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
+ }
+ {
+ \tl_remove_once:Nn \@preamblecmds {\do#1}
+ }
\ExplSyntaxOff
-\def\@preamblecmds{}
-\newcommand\xepersian@not@onlypreamble[1]{{%
- \def\do##1{\ifx#1##1\else\noexpand\do\noexpand##1\fi}%
- \xdef\@preamblecmds{\@preamblecmds}}}
-\xepersian@not@onlypreamble\@preamblecmds
-\def\xepersian@notprerr{ can be used only in preamble (\on@line)}
-\AtBeginDocument{%
- \def\do#1{\noexpand\do\noexpand#1}%
- \edef\@preamblecmds{%
- \def\noexpand\do##1{%
- \def##1{\noexpand\xepersian@NotprerrMessage##1}\noexpand\@eha}}%
- \@preamblecmds}
-\def\xepersian@NotprerrMessage#1{%
- \PackageError{xepersian}%
- {\noexpand\string#1 \noexpand\xepersian@notprerr}{}%
-}
-\@ifpackageloaded{natbib}{%
-\renewcommand\nocite[1]{\@bsphack
- \@for\@citeb:=#1\do{%
- \@safe@activestrue
- \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
- \@safe@activesfalse
- \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
- \if*\@citeb\else
- \@ifundefined{b@\@citeb\@extra@b@citeb}{%
- \NAT@citeundefined \PackageWarning{natbib}%
- {Citation `\@citeb' undefined}}{}\fi}%
- \@esphack}%
-}{%
-\def\nocite#1{%
- \@bsphack{\setbox0=\hbox{\cite{#1}}}\@esphack}%
-}
\newcommand\xepersian@PackageInfo[1]{\PackageInfo{xepersian-mathsdigitspec}{#1}}
\newcommand\SetMathCode[4]{%
\Umathcode#1="\mathchar@type#2 \csname sym#3\endcsname #4\relax}
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty
index c6c467ae3ce..1bb0059e78e 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
index 36de716b6c9..fd97cc5004f 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty
index 1310532e324..e85d0370c3a 100644
--- a/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty
@@ -17,7 +17,7 @@
%% by Vafa Khalighi.
%%
%%
-%% \CheckSum{10026}
+%% \CheckSum{9992}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -35,8 +35,8 @@
%% Right brace \} Tilde \~}
%%
\NeedsTeXFormat{LaTeX2e}
-\def\xepersianversion{v15.5}
-\def\xepersiandate{2014/11/17}
+\def\xepersianversion{v15.6}
+\def\xepersiandate{2014/11/21}
\ProvidesPackage{xepersian}[\xepersiandate\space \xepersianversion\space
Persian typesetting in XeLaTeX]
\RequirePackage{fontspec}