diff options
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 Binary files differindex acdbd27d81d..3c304fbb2cf 100644 --- a/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf +++ b/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf 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} |