texlive[73697] Master/texmf-dist: xepersian (2feb25)

commits+karl at tug.org commits+karl at tug.org
Sun Feb 2 21:55:11 CET 2025


Revision: 73697
          https://tug.org/svn/texlive?view=revision&revision=73697
Author:   karl
Date:     2025-02-02 21:55:11 +0100 (Sun, 02 Feb 2025)
Log Message:
-----------
xepersian (2feb25)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/xelatex/xepersian/README
    trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf
    trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf
    trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx
    trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx
    trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx
    trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx
    trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.ins
    trunk/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/amsart-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/appendix-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/article-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/backref-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/beamer-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/boek-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/boek3-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/book-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/bookest-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/breqn-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/color-localize-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/extbook-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xetex-bidi-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/extreport-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/footnote-xetex-bidi-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/framed-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-commands-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-environments-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-misc-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/listings-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/localize-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/memoir-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/natbib-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/packages-localize-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/refrep-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/report-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/soul-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/url-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/varioref-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-commands-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-environments-xetex-xepersian.def
    trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls
    trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty
    trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
    trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/xelatex/xepersian/unicode-persianmath.sty

Removed Paths:
-------------
    trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty

Modified: trunk/Master/texmf-dist/doc/xelatex/xepersian/README
===================================================================
--- trunk/Master/texmf-dist/doc/xelatex/xepersian/README	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/doc/xelatex/xepersian/README	2025-02-02 20:55:11 UTC (rev 73697)
@@ -1,6 +1,6 @@
 ____________________
 The XePersian package
-v26.2
+v25.2.2
 
 The xepersian package provides a convenient interface for
 typesetting Persian and English texts in LaTeX, using XeTeX
@@ -25,7 +25,7 @@
 also appear in the Discussions space under the Announcements
 category.
 
-Current version release date: 2025/01/16
+Current version release date: 2025/02/02
 ___________________________________________
 Vafa Khalighi
 

Modified: trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/xelatex/xepersian/xepersian.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-intro.ltx	2025-02-02 20:55:11 UTC (rev 73697)
@@ -25,7 +25,7 @@
 * Copyright (c) 2008--2025 Vafa Khalighi
 * Copyright (c) 2018--2020 bidi-tex GitHub Organization
 * 
-* v26.2 (Release Persian Gate), 2025/01/16
+* v25.2.2 (Release Persian Gate), 2025/02/02
 * 
 * License: LaTeX Project Public License, version
 * 1.3c or higher (your choice)

Modified: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc-title.ltx	2025-02-02 20:55:11 UTC (rev 73697)
@@ -3,7 +3,7 @@
 \begin{document}
  \title{\textcolor{xepersianblue}{\Huge The \textsf{\XePersian} \textit{Package}}\\
 \LARGE Persian for \LaTeXe, using {\XeTeX} engine\\[5pt]
-\large User documentation for \textcolor{xepersianblue}{version 26.2}}
+\large User documentation for \textcolor{xepersianblue}{version 25.2.2}}
 \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the  {\LaTeX} team for maintaining the package in the period 2018--2020.}}
 \setcounter{page}{0}
 \thispagestyle{empty}
@@ -13,7 +13,7 @@
 \textcolor{xepersianblue}{\Huge The \textsf{\XePersian} \textit{Package}}
 
 \Large
-User documentation for \textcolor{xepersianblue}{version 26.2}}
+User documentation for \textcolor{xepersianblue}{version 25.2.2}}
 
 \vskip 0pt plus 3fill
 \textit{\large to my Master, \textbf{Ferdowsi The Great}}

Modified: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian-doc.ltx	2025-02-02 20:55:11 UTC (rev 73697)
@@ -1,7 +1,7 @@
 \documentclass{ltxdoc}
 \input{xepersian-doc-preamble.ltx}
 \hypersetup{%
-  pdftitle={User documentation for version 26.2 of the XePersian
+  pdftitle={User documentation for version 25.2.2 of the XePersian
                 package}%
 }
 \begin{document}

Modified: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.dtx	2025-02-02 20:55:11 UTC (rev 73697)
@@ -5,7 +5,7 @@
 %<*readme>
 ____________________
 The XePersian package
-v26.2
+v25.2.2
 
 The xepersian package provides a convenient interface for 
 typesetting Persian and English texts in LaTeX, using XeTeX 
@@ -31,7 +31,7 @@
 category.
   
   
-Current version release date: 2025/01/16
+Current version release date: 2025/02/02
 ___________________________________________
 Vafa Khalighi
 
@@ -127,6 +127,12 @@
 \usepostamble\mapping at postamble
 \generate{\file{persian-tex-text.map}{\from{\jobname.dtx}{persian-tex-text.map}}}
 \generate{\file{persian-tex-text-nonumbers.map}{\from{\jobname.dtx}{persian-tex-text-nonumbers.map}}}
+\def\MetaPrefix{--}
+\def\mapping at postamble{%
+  \MetaPrefix ^^J%
+  \MetaPrefix\space End of file `\outFileName'.%
+}
+\generate{\file{persian-tex-ligs.lua}{\from{\jobname.dtx}{persian-tex-ligs.lua}}}
 \let\MetaPrefix\DoubleperCent
 \usepostamble\org at postamble
 \generate{\file{rapport1-xetex-xepersian.def}{\from{\jobname.dtx}{table,rapport1-xetex-xepersian.def}}}
@@ -142,7 +148,7 @@
 \generate{\file{varioref-xetex-xepersian.def}{\from{\jobname.dtx}{table,varioref-xetex-xepersian.def}}}
 \generate{\file{xepersian.sty}{\from{\jobname.dtx}{table,xepersian.sty}}}
 \generate{\file{xepersian-magazine.cls}{\from{\jobname.dtx}{table,xepersian-magazine.cls}}}
-\generate{\file{xepersian-mathdigitspec.sty}{\from{\jobname.dtx}{table,xepersian-mathdigitspec.sty}}}
+\generate{\file{unicode-persianmath.sty}{\from{\jobname.dtx}{table,unicode-persianmath.sty}}}
 \generate{\file{xepersian-multiplechoice.sty}{\from{\jobname.dtx}{table,xepersian-multiplechoice.sty}}}
 \generate{\file{xepersian-persiancal.sty}{\from{\jobname.dtx}{table,xepersian-persiancal.sty}}}
 %</batchfile>
@@ -167,7 +173,7 @@
 \documentclass{ltxdoc}
 \input{xepersian-doc-preamble.ltx}
 \hypersetup{%
-  pdftitle={Source documentation for version 26.2 of the XePersian
+  pdftitle={Source documentation for version 25.2.2 of the XePersian
                 package}%
 }
 \EnableCrossrefs
@@ -186,7 +192,7 @@
 % \GetFileInfo{\jobname.dtx}
 % \title{\textcolor{xepersianblue}{\Huge The \textsf{\XePersian} \textit{Package}}\\
 %\LARGE Persian for \LaTeXe, using {\XeTeX} engine\\[5pt]
-%\large Source documentation for \textcolor{xepersianblue}{version 26.2}}
+%\large Source documentation for \textcolor{xepersianblue}{version 25.2.2}}
 % \author{Vafa Khalighi\thanks{Thanks to the bidi-tex GitHub organization consisted of David Carlisle and other members of the  {\LaTeX} team for maintaining the package in the period 2018--2020.}}
 %\setcounter{page}{0}
 %\thispagestyle{empty}
@@ -196,7 +202,7 @@
 %\textcolor{xepersianblue}{\Huge The \textsf{\XePersian} \textit{Package}}
 %
 %\Large
-%Source documentation for \textcolor{xepersianblue}{version 26.2}}
+%Source documentation for \textcolor{xepersianblue}{version 25.2.2}}
 %
 %\vskip 0pt plus 3fill
 %\textit{\large to my Master, \textbf{Ferdowsi The Great}}
@@ -244,7 +250,7 @@
 %\iffalse
 %<*table>
 %\fi
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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
@@ -3131,6 +3137,223 @@
 %    \end{macrocode}
 % \iffalse
 %</persian-tex-text-nonumbers.map>
+%<*persian-tex-ligs.lua>
+%\fi
+% \section{File \texttt{persian-tex-ligs.lua}}
+%    \begin{macrocode}
+local otf = fonts.handlers.otf
+local registerotffeature = otf.features.register
+local addotffeature = otf.addfeature
+
+local persiantexlig = {
+  {
+    type = "substitution",
+    order = {"persiantexlig"},
+    prepend = true,
+    data = {
+      [0x0030] = 0x06F0,
+      [0x0031] = 0x06F1,
+      [0x0032] = 0x06F2,
+      [0x0033] = 0x06F3,
+      [0x0034] = 0x06F4,
+      [0x0035] = 0x06F5,
+      [0x0036] = 0x06F6,
+      [0x0037] = 0x06F7,
+      [0x0038] = 0x06F8,
+      [0x0039] = 0x06F9,
+      [0x002C] = 0x060C, -- comma ­> arabic comma
+      [0x003F] = 0x061F, -- question mark -> arabic qm
+      [0x003B] = 0x061B, -- semicolon -> arabic semicolon
+      [0x0027] = 0x2019, -- ' -> right single quote
+      [0x0022] = 0x201D, -- " -> right double quote
+      [0x0060] = 0x2018 -- ` -> left single quote
+  }
+  },
+  {
+    type = "ligature",
+    order = {"persiantexlig"},
+    prepend = true,
+    data = {
+      -- ligatures from Knuth's original CMR fonts
+      [0x2013] = {0x002D, 0x002D}, -- -- -> en dash
+      [0x2014] = {0x002D, 0x002D, 0x002D}, -- --- -> em dash
+      [0x201D] = {0x0027, 0x0027}, -- '' -> right double quote
+      [0x201C] = {0x0060, 0x0060}, -- `` -> left double quote
+      [0x00A1] = {0x0021, 0x0060}, -- !` -> inverted exclam
+      [0x00BF] = {0x003F, 0x0060}, -- ?` -> inverted question
+      -- additions supported in T1 encoding
+      [0x201E] = {0x002C, 0x002C}, -- ,, -> DOUBLE LOW-9 QUOTATION MARK
+      [0x00AB] = {0x003C, 0x003C}, -- << -> LEFT POINTING GUILLEMET
+      [0x00BB] = {0x003E, 0x003E} -- >> -> RIGHT POINTING GUILLEMET
+  }
+  }
+}
+
+local persiantexlignonum = {
+  {
+    type = "substitution",
+    order = {"persiantexlignonum"},
+    prepend = true,
+    data = {
+      [0x002C] = 0x060C, -- comma ­> arabic comma
+      [0x003F] = 0x061F, -- question mark -> arabic qm
+      [0x003B] = 0x061B, -- semicolon -> arabic semicolon
+      [0x0027] = 0x2019, -- ' -> right single quote
+      [0x0022] = 0x201D, -- " -> right double quote
+      [0x0060] = 0x2018 -- ` -> left single quote
+  }
+  },
+  {
+    type = "ligature",
+    order = {"persiantexlignonum"},
+    prepend = true,
+    data = {
+      -- ligatures from Knuth's original CMR fonts
+      [0x2013] = {0x002D, 0x002D}, -- -- -> en dash
+      [0x2014] = {0x002D, 0x002D, 0x002D}, -- --- -> em dash
+      [0x201D] = {0x0027, 0x0027}, -- '' -> right double quote
+      [0x201C] = {0x0060, 0x0060}, -- `` -> left double quote
+      [0x00A1] = {0x0021, 0x0060}, -- !` -> inverted exclam
+      [0x00BF] = {0x003F, 0x0060}, -- ?` -> inverted question
+      -- additions supported in T1 encoding
+      [0x201E] = {0x002C, 0x002C}, -- ,, -> DOUBLE LOW-9 QUOTATION MARK
+      [0x00AB] = {0x003C, 0x003C}, -- << -> LEFT POINTING GUILLEMET
+      [0x00BB] = {0x003E, 0x003E} -- >> -> RIGHT POINTING GUILLEMET
+  }
+  }
+}
+
+addotffeature("persiantexlignonum", persiantexlignonum)
+addotffeature("persiantexlig", persiantexlig)
+
+registerotffeature {name = "persiantexlig", description = "Persian TeX ligatures"}
+registerotffeature {name = "persiantexlignonum", description = "Persian TeX ligatures without numbers"}
+
+-- We implement persiantexlig and persiantexlignonum for HarfBuzz too
+local direct = node.direct
+local otfregister = fonts.constructors.features.otf.register
+
+local getdisc = direct.getdisc
+local getnext = direct.getnext
+local is_char = direct.is_char
+local setchar = direct.setchar
+
+local persiandigits = {
+  [0x0030] = 0x06F0,
+  [0x0031] = 0x06F1,
+  [0x0032] = 0x06F2,
+  [0x0033] = 0x06F3,
+  [0x0034] = 0x06F4,
+  [0x0035] = 0x06F5,
+  [0x0036] = 0x06F6,
+  [0x0037] = 0x06F7,
+  [0x0038] = 0x06F8,
+  [0x0039] = 0x06F9
+}
+
+local persianpuncts = {
+  [0x002C] = 0x060C, -- comma ­> arabic comma
+  [0x003F] = 0x061F, -- question mark -> arabic qm
+  [0x003B] = 0x061B, -- semicolon -> arabic semicolon
+  [0x0027] = 0x2019, -- ' -> right single quote
+  [0x0022] = 0x201D, -- " -> right double quote
+  [0x0060] = 0x2018 -- ` -> left single quote
+}
+
+local persiantexlig = {
+  [0x002D] = {[0x002D] = {char = 0x2013}}, -- -- -> en dash
+  [0x2013] = {[0x002D] = {char = 0x2014}}, -- --- -> em dash
+  [0x0027] = {[0x0027] = {char = 0x201D}}, -- '' -> right double quote
+  [0x0060] = {[0x0060] = {char = 0x201C}}, -- `` -> left double quote
+  [0x0021] = {[0x0060] = {char = 0x00A1}}, -- !` -> inverted exclam
+  [0x003F] = {[0x0060] = {char = 0x00BF}}, -- ?` -> inverted question
+  -- additions supported in T1 encoding
+  [0x002C] = {[0x002C] = {char = 0x201E}}, -- ,, -> DOUBLE LOW-9 QUOTATION MARK
+  [0x003C] = {[0x003C] = {char = 0x00AB}}, -- << -> LEFT POINTING GUILLEMET
+  [0x003E] = {[0x003E] = {char = 0x00BB}} -- >> -> RIGHT POINTING GUILLEMET
+}
+
+local function persiantexligprocessor(head, font)
+  local n = head
+  while n do
+    local c, id = is_char(n, font)
+    local persiannum = persiandigits[c]
+    local persianpunct = persianpuncts[c]
+    if persiannum then
+      setchar(n, persiannum)
+    elseif persianpunct then
+      setchar(n, persianpunct)
+    elseif id == disc_t then
+      local pre, post, replace = getdisc(n)
+      persiantexligprocessor(pre, font)
+      persiantexligprocessor(post, font)
+      persiantexligprocessor(replace, font)
+    end
+    n = getnext(n)
+  end
+end
+
+otfregister {
+  name = 'persiantexlig',
+  description = 'Persian TeX ligatures',
+  default = false,
+  manipulators = {
+    plug = function(tfmdata, _, value)
+      local characters = tfmdata.characters
+      for codepoint, ligatures in next, persiantexlig do
+        local char = characters[codepoint]
+        if char then
+          char.ligatures = ligatures
+        end
+      end
+    end,
+  },
+  processors = {
+    position=1,
+    plug = persiantexligprocessor,
+  },
+}
+
+local function persiantexlignonumprocessor(head, font)
+  local n = head
+  while n do
+    local c, id = is_char(n, font)
+    local persianpunct = persianpuncts[c]
+    if persianpunct then
+      setchar(n, persianpunct)
+    elseif id == disc_t then
+      local pre, post, replace = getdisc(n)
+      persiantexlignonumprocessor(pre, font)
+      persiantexlignonumprocessor(post, font)
+      persiantexlignonumprocessor(replace, font)
+    end
+    n = getnext(n)
+  end
+end
+
+otfregister {
+  name = 'persiantexlignonum',
+  description = 'Persian TeX ligatures without numbers',
+  default = false,
+  manipulators = {
+    plug = function(tfmdata, _, value)
+      local characters = tfmdata.characters
+      for codepoint, ligatures in next, persiantexlig do
+        local char = characters[codepoint]
+        if char then
+          char.ligatures = ligatures
+        end
+      end
+    end,
+  },
+  processors = {
+    position=1,
+    plug = persiantexlignonumprocessor,
+  },
+}
+%    \end{macrocode}
+% \iffalse
+%</persian-tex-ligs.lua>
 %<*rapport1-xetex-xepersian.def>
 %\fi
 % \section{File \texttt{rapport1-xetex-xepersian.def}}
@@ -3516,8 +3739,8 @@
 % \section{File \texttt{xepersian.sty}}
 %    \begin{macrocode}
 \NeedsTeXFormat{LaTeX2e}
-\def\xepersian at version{26.2}
-\def\xepersiandate{2025/01/16}
+\def\xepersian at version{25.2.2}
+\def\xepersiandate{2025/02/02}
 \def\xepersian at releasename{Persian Gate}
 \def\xepersian at persian@@releasename{دربند پارس}
 \newcommand*{\xepersianreleasename}{\if at RTL\xepersian at persian@@releasename\else\xepersian at releasename\fi}
@@ -3718,7 +3941,7 @@
 \fi
 \RequirePackage{fontspec}
 \RequirePackage{xepersian-persiancal}
-\RequirePackage{xepersian-mathdigitspec}
+\RequirePackage{unicode-persianmath}
 \RequirePackage[%
   documentdirection=righttoleft,%
   tabledirection=righttoleft,%
@@ -3728,24 +3951,6 @@
 ]{bidi}
 \newcommand*{\xepersianversion}
   {\ensuremath\xepersian at version}
-\newcommand*{\IfxepersianPackageVersionLater}[1]{%
-  \ifdim\xepersian at version pt > #1 pt %
-    \expandafter\@firstoftwo
-  \else
-    \expandafter\@secondoftwo
-  \fi}
-\newcommand*{\IfxepersianPackageVersionBefore}[1]{%
-  \ifdim\xepersian at version pt < #1 pt %
-    \expandafter\@firstoftwo
-  \else
-    \expandafter\@secondoftwo
-  \fi}
-\newcommand*{\IfxepersianPackageVersion}[1]{%
-  \ifdim\xepersian at version pt = #1 pt %
-    \expandafter\@firstoftwo
-  \else
-    \expandafter\@secondoftwo
-  \fi}  
 \def\prq{«}
 \def\plq{»}
 \def\xepersian at cmds@temp#1{%
@@ -4539,7 +4744,7 @@
 
 \newcommand*{\@xepersian at pdfcustomproperties}{%
   This is the xepersian package, Version \xepersian at version\space (Release \xepersian at releasename),
-  Released January 16, 2025. 
+  Released February 2, 2025. 
 }
 
 \newcommand\twocolumnstableofcontents{%
@@ -5881,13 +6086,13 @@
 %    \end{macrocode}
 % \iffalse
 %</xepersian-magazine.cls>
-%<*xepersian-mathdigitspec.sty>
+%<*unicode-persianmath.sty>
 %\fi
-% \section{File \texttt{xepersian-mathdigitspec.sty}}
+% \section{File \texttt{unicode-persianmath.sty}}
 %    \begin{macrocode}
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{xepersian-mathdigitspec}
-  [2025/01/08 v1.2.2 Unicode Persian math digits in XeLaTeX]
+\ProvidesPackage{unicode-persianmath}
+  [2025/02/02 v1.2.3 Unicode Persian math]
 \def\new at mathgroup{\alloc at 8\mathgroup\chardef\@cclvi}
 \let\newfam\new at mathgroup
 \def\select at group#1#2#3#4{%
@@ -5962,7 +6167,7 @@
   \tl_remove_once:Nn \@preamblecmds {\do#1}
  }
 \ExplSyntaxOff
-\newcommand\xepersian at PackageInfo[1]{\PackageInfo{xepersian-mathdigitspec}{#1}}
+\newcommand\xepersian at PackageInfo[1]{\PackageInfo{unicode-persianmath}{#1}}
 \newcommand\SetMathCode[4]{%
   \Umathcode#1="\mathchar at type#2 \csname sym#3\endcsname #4\relax}
 \newcommand\SetMathCharDef[4]{%
@@ -5976,50 +6181,40 @@
 %\int_const:Nn \c_one_int { 1 }
 \NewDocumentCommand \new at mathbf { m } {
  \orig_mathbf:n {
-   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-     \mathcode ##1 = \numexpr "100 * \symnew at mathbf@font at digits + ##1 \relax
-   }
+   \SetPersianMathDigitsCode{\mathord}{persianoperatorsbf}
    #1
  }
 }
 \NewDocumentCommand \new at mathit { m } {
  \orig_mathit:n {
-   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-     \mathcode ##1 = \numexpr "100 * \symnew at mathit@font at digits + ##1 \relax
-   }
+   \SetPersianMathDigitsCode{\mathord}{persianoperatorsit}
    #1
  }
 }
 \NewDocumentCommand \new at mathrm { m } {
  \orig_mathrm:n {
-   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-     \mathcode ##1 = \numexpr "100 * \symnew at mathrm@font at digits + ##1 \relax
-   }
+   \SetPersianMathDigitsCode{\mathord}{persianoperators}
    #1
  }
 }
 \NewDocumentCommand \new at mathsf{ m } {
  \orig_mathsf:n {
-   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-     \mathcode ##1 = \numexpr "100 * \symnew at mathsf@font at digits + ##1 \relax
-   }
+   \SetPersianMathDigitsCode{\mathord}{persianoperatorssf}
    #1
  }
 }
 \NewDocumentCommand \new at mathtt{ m } {
  \orig_mathtt:n {
-   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-     \mathcode ##1 = \numexpr "100 * \symnew at mathtt@font at digits + ##1 \relax
-   }
+   \SetPersianMathDigitsCode{\mathord}{persianoperatorstt}
    #1
  }
 }
 
-\cs_new:Npn \__xepersian_mathdigitspec_error:nxx    { \msg_error:nnxx    {xepersian-mathdigitspec} }
+\cs_new:Npn \__xepersian_mathdigitspec_error:nxx    { \msg_error:nnxx    {unicode-persianmath} }
 \cs_new:Nn \__xepersian_mathdigitspec_msg_new:nnnn
   { \msg_new:nnxx {#1} {#2} { \tl_trim_spaces:n {#3} } { \tl_trim_spaces:n {#4} } }
 \char_set_catcode_space:n {32}
-\__xepersian_mathdigitspec_msg_new:nnnn {xepersian-mathdigitspec} {char-not-exist}
+\__xepersian_mathdigitspec_msg_new:nnnn {unicode-persianmath} {char-not-exist}
  {
   The font "#1" does not contain U+#2.
  }
@@ -6071,6 +6266,20 @@
       06F9 , 066A , 066B
     } { #1 }                         
  }
+ 
+\NewDocumentCommand \SetPersianMathDigitsCode { m m }
+  {
+    \SetMathCode{`0}{#1}{#2}{`۰}
+    \SetMathCode{`1}{#1}{#2}{`۱}
+    \SetMathCode{`2}{#1}{#2}{`۲}
+    \SetMathCode{`3}{#1}{#2}{`۳}
+    \SetMathCode{`4}{#1}{#2}{`۴}
+    \SetMathCode{`5}{#1}{#2}{`۵}
+    \SetMathCode{`6}{#1}{#2}{`۶}
+    \SetMathCode{`7}{#1}{#2}{`۷}
+    \SetMathCode{`8}{#1}{#2}{`۸}
+    \SetMathCode{`9}{#1}{#2}{`۹}
+  }
 
 \DeclareDocumentCommand \setmathdigitfont { O{} m O{} }
   {
@@ -6079,30 +6288,21 @@
 \cs_new:Nn \__xepersian_main_setmathdigitfont:nn
  {
   \let\glb at currsize\relax
-  \fontspec_set_family:Nnn \g__xepersian_mathdigitsfamily_tl {Ligatures=PersianTeX,#1} {#2}
+  \fontspec_set_family:Nnn \g__xepersian_mathdigitsfamily_tl {#1} {#2}
   \__xepersian_setmathdigitfont_hook:nn {#1} {#2}
     \xepersian at PackageInfo{Defining the default Persian math digits font as '#2'}
-  \DeclareSymbolFont{OPERATORS}   {\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl} {m}{n}
-  \DeclareSymbolFont{new at mathbf@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{bx}{n}
-  \DeclareSymbolFont{new at mathit@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{m}{it}
-  \DeclareSymbolFont{new at mathrm@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{m}{n}
+  \DeclareSymbolFont{persianoperators}   {\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl} {m}{n}
+  \DeclareSymbolFont{persianoperatorsbf}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{bx}{n}
+  \DeclareSymbolFont{persianoperatorsit}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{m}{it}
   \__xepersian_mathdigitspec_char_not_exist_error:n { #2 }
   \def\persianmathdigits{%
-  \SetMathCode{`0}{\mathalpha}{OPERATORS}{`0}
-  \SetMathCode{`1}{\mathalpha}{OPERATORS}{`1}
-  \SetMathCode{`2}{\mathalpha}{OPERATORS}{`2}
-  \SetMathCode{`3}{\mathalpha}{OPERATORS}{`3}
-  \SetMathCode{`4}{\mathalpha}{OPERATORS}{`4}
-  \SetMathCode{`5}{\mathalpha}{OPERATORS}{`5}
-  \SetMathCode{`6}{\mathalpha}{OPERATORS}{`6}
-  \SetMathCode{`7}{\mathalpha}{OPERATORS}{`7}
-  \SetMathCode{`8}{\mathalpha}{OPERATORS}{`8}
-  \SetMathCode{`9}{\mathalpha}{OPERATORS}{`9}
-  \SetMathCode{`\%}{\mathbin}{OPERATORS}{`٪}
-  \SetMathCharDef{\persiandecimalseparator}{\mathord}{OPERATORS}{"066B}
-  \tl_set_eq:NN \mathbf \new at mathbf
-  \tl_set_eq:NN \mathit \new at mathit
-  \tl_set_eq:NN \mathrm \new at mathrm}
+    \SetPersianMathDigitsCode{\mathalpha}{persianoperators}
+    \SetMathCode{`\%}{\mathord}{persianoperators}{`٪}
+    \SetMathCharDef{\persiandecimalseparator}{\mathord}{persianoperators}{`٫}
+    \tl_set_eq:NN \mathbf \new at mathbf
+    \tl_set_eq:NN \mathit \new at mathit
+    \tl_set_eq:NN \mathrm \new at mathrm
+  }
  }
 
 \cs_set_eq:NN \__xepersian_setmathdigitfont_hook:nn     \use_none:nn
@@ -6113,9 +6313,9 @@
   }
 \cs_new:Nn \__xepersian_main_setmathsfdigitfont:nn
  {
-  \fontspec_set_family:Nnn \g__xepersian_mathsfdigitfamily_tl {Ligatures=PersianTeX,#1} {#2}
+  \fontspec_set_family:Nnn \g__xepersian_mathsfdigitfamily_tl {#1} {#2}
   \__xepersian_setmathsfdigitfont_hook:nn {#1} {#2}
-      \DeclareSymbolFont{new at mathsf@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathsfdigitfamily_tl}{m}{n}
+      \DeclareSymbolFont{persianoperatorssf}{\g_fontspec_encoding_tl}{\g__xepersian_mathsfdigitfamily_tl}{m}{n}
       \__xepersian_mathdigitspec_char_not_exist_error:n { #2 }
     \def\persianmathsfdigits{\tl_set_eq:NN \mathsf \new at mathsf}
  }
@@ -6128,9 +6328,9 @@
   }
 \cs_new:Nn \__xepersian_main_setmathttdigitfont:nn
  {
-  \fontspec_set_family:Nnn \g__xepersian_mathttdigitfamily_tl {Ligatures=PersianTeX,#1} {#2}
+  \fontspec_set_family:Nnn \g__xepersian_mathttdigitfamily_tl {#1} {#2}
   \__xepersian_setmathttdigitfont_hook:nn {#1} {#2}
-      \DeclareSymbolFont{new at mathtt@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathttdigitfamily_tl}{m}{n}
+      \DeclareSymbolFont{persianoperatorstt}{\g_fontspec_encoding_tl}{\g__xepersian_mathttdigitfamily_tl}{m}{n}
       \__xepersian_mathdigitspec_char_not_exist_error:n { #2 }
     \def\persianmathttdigits{\tl_set_eq:NN \mathtt \new at mathtt}
  }
@@ -6223,7 +6423,7 @@
   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
     \SetMathCode{##1}{\mathalpha}{operators}{##1}
   }
-  \SetMathCode{`\%}{\mathbin}{operators}{`\%}
+  \SetMathCode{`\%}{\mathord}{operators}{`\%}
   \tl_set_eq:NN \MathDecimalSeparator \DefaultMathDecimalSeparator
   \tl_set_eq:NN \mathbf \orig_mathbf:n
   \tl_set_eq:NN \mathit \orig_mathit:n
@@ -6233,10 +6433,8 @@
 }
 
 \NewDocumentCommand \SwitchToPersianMathDigits {  } {
-  \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-    \SetMathCode{##1}{\mathalpha}{OPERATORS}{##1}
-  }
-  \SetMathCode{`\%}{\mathbin}{OPERATORS}{`٪}
+  \SetPersianMathDigitsCode{\mathalpha}{persianoperators}
+  \SetMathCode{`\%}{\mathord}{persianoperators}{`٪}
   \tl_set_eq:NN \MathDecimalSeparator \orig_MathDecimalSeparator
   \tl_set_eq:NN \mathbf \new at mathbf
   \tl_set_eq:NN \mathit \new at mathit
@@ -6247,7 +6445,7 @@
 \ExplSyntaxOff
 %    \end{macrocode}
 % \iffalse
-%</xepersian-mathdigitspec.sty>
+%</unicode-persianmath.sty>
 %<*xepersian-multiplechoice.sty>
 %\fi
 % \section{File \texttt{xepersian-multiplechoice.sty}}

Modified: trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.ins
===================================================================
--- trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.ins	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/source/xelatex/xepersian/xepersian.ins	2025-02-02 20:55:11 UTC (rev 73697)
@@ -95,6 +95,12 @@
 \usepostamble\mapping at postamble
 \generate{\file{persian-tex-text.map}{\from{\jobname.dtx}{persian-tex-text.map}}}
 \generate{\file{persian-tex-text-nonumbers.map}{\from{\jobname.dtx}{persian-tex-text-nonumbers.map}}}
+\def\MetaPrefix{--}
+\def\mapping at postamble{%
+  \MetaPrefix ^^J%
+  \MetaPrefix\space End of file `\outFileName'.%
+}
+\generate{\file{persian-tex-ligs.lua}{\from{\jobname.dtx}{persian-tex-ligs.lua}}}
 \let\MetaPrefix\DoubleperCent
 \usepostamble\org at postamble
 \generate{\file{rapport1-xetex-xepersian.def}{\from{\jobname.dtx}{table,rapport1-xetex-xepersian.def}}}
@@ -110,7 +116,7 @@
 \generate{\file{varioref-xetex-xepersian.def}{\from{\jobname.dtx}{table,varioref-xetex-xepersian.def}}}
 \generate{\file{xepersian.sty}{\from{\jobname.dtx}{table,xepersian.sty}}}
 \generate{\file{xepersian-magazine.cls}{\from{\jobname.dtx}{table,xepersian-magazine.cls}}}
-\generate{\file{xepersian-mathdigitspec.sty}{\from{\jobname.dtx}{table,xepersian-mathdigitspec.sty}}}
+\generate{\file{unicode-persianmath.sty}{\from{\jobname.dtx}{table,unicode-persianmath.sty}}}
 \generate{\file{xepersian-multiplechoice.sty}{\from{\jobname.dtx}{table,xepersian-multiplechoice.sty}}}
 \generate{\file{xepersian-persiancal.sty}{\from{\jobname.dtx}{table,xepersian-persiancal.sty}}}
 \endbatchfile

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/algorithm-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/algorithmic-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/amsart-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/amsart-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/amsart-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/amsbook-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/appendix-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/appendix-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/appendix-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/article-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/article-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/article-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel1-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel2-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/artikel3-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/backref-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/backref-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/backref-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/beamer-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/beamer-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/beamer-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/beamerbasetranslator-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/bidimoderncv-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/bidituftesidenote-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/boek-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/boek-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/boek-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/boek3-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/boek3-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/boek3-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/book-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/book-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/book-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/bookest-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/bookest-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/bookest-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/breqn-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/breqn-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/breqn-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/color-localize-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/color-localize-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/color-localize-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/enumerate-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/enumitem-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/extarticle-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/extbook-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/extbook-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/extbook-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xetex-bidi-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xetex-bidi-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/extrafootnotefeatures-xetex-bidi-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/extreport-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/extreport-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/extreport-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/fancyref-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/footnote-xetex-bidi-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/footnote-xetex-bidi-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/footnote-xetex-bidi-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/framed-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/framed-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/framed-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/glossaries-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/hyperref-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/imsproc-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-commands-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-commands-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-commands-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-environments-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-environments-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-environments-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-messages-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-misc-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-misc-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/latex-localize-misc-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/listings-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/listings-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/listings-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/localize-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/localize-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/localize-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/memoir-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/memoir-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/memoir-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/minitoc-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/natbib-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/natbib-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/natbib-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/packages-localize-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/packages-localize-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/packages-localize-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/rapport1-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/rapport3-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/refrep-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/refrep-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/refrep-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/report-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/report-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/report-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/scrartcl-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/scrbook-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/scrreprt-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/soul-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/soul-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/soul-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/tkz-linknodes-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/tocloft-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Added: trunk/Master/texmf-dist/tex/xelatex/xepersian/unicode-persianmath.sty
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/unicode-persianmath.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/unicode-persianmath.sty	2025-02-02 20:55:11 UTC (rev 73697)
@@ -0,0 +1,390 @@
+%%
+%% This is file `unicode-persianmath.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xepersian.dtx  (with options: `table,unicode-persianmath.sty')
+%% 
+%%   __________________________________________________
+%%   Vafa Khalighi
+%% 
+%%   Copyright (c) 2008--2025  Vafa Khalighi
+%%   Copyright (c) 2018--2020 bidi-tex GitHub Organization
+%% 
+%%   It may be distributed and/or modified under the LaTeX Project Public License,
+%%   version 1.3c or higher (your choice). The latest version of
+%%   this license is at: http://www.latex-project.org/lppl.txt
+%% 
+%%   This work is “author-maintained” (as per LPPL maintenance status)
+%%   by Vafa Khalighi.
+%% 
+%% 
+%% \CheckSum{10792}
+%% \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
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{unicode-persianmath}
+  [2025/02/02 v1.2.3 Unicode Persian math]
+\def\new at mathgroup{\alloc at 8\mathgroup\chardef\@cclvi}
+\let\newfam\new at mathgroup
+\def\select at group#1#2#3#4{%
+ \ifx\math at bgroup\bgroup\else\relax\expandafter\@firstofone\fi
+ {%
+ \ifmmode
+  \ifnum\csname c at mv@\math at version\endcsname<\@cclvi
+     \begingroup
+       \escapechar\m at ne
+       \getanddefine at fonts{\csname c at mv@\math at version\endcsname}#3%
+       \globaldefs\@ne  \math at fonts
+     \endgroup
+     \init at restore@version
+     \xdef#1{\noexpand\use at mathgroup\noexpand#2%
+             {\number\csname c at mv@\math at version\endcsname}}%
+     \global\advance\csname c at mv@\math at version\endcsname\@ne
+   \else
+     \let#1\relax
+     \@latex at error{Too many math alphabets used in
+                   version \math at version}%
+        \@eha
+   \fi
+ \else \expandafter\non at alpherr\fi
+ #1{#4}%
+ }%
+}
+\def\document at select@group#1#2#3#4{%
+ \ifx\math at bgroup\bgroup\else\relax\expandafter\@firstofone\fi
+ {%
+ \ifmmode
+   \ifnum\csname c at mv@\math at version\endcsname<\@cclvi
+     \begingroup
+       \escapechar\m at ne
+       \getanddefine at fonts{\csname c at mv@\math at version\endcsname}#3%
+       \globaldefs\@ne  \math at fonts
+     \endgroup
+     \expandafter\extract at alph@from at version
+         \csname mv@\math at version\expandafter\endcsname
+         \expandafter{\number\csname
+                       c at mv@\math at version\endcsname}%
+          #1%
+     \global\advance\csname c at mv@\math at version\endcsname\@ne
+   \else
+     \let#1\relax
+     \@latex at error{Too many math alphabets used
+                   in version \math at version}%
+        \@eha
+  \fi
+ \else \expandafter\non at alpherr\fi
+ #1{#4}%
+ }%
+}
+\ExplSyntaxOn
+\bool_set_false:N \g__fontspec_math_bool
+\tl_map_inline:nn
+ {
+  \new at mathgroup\cdp at list\cdp at elt\DeclareMathSizes
+  \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@
+  \DeclareMathVersion\define at mathalphabet\define at mathgroup\addtoversion
+  \version at list\version at elt\alpha at list\alpha at elt
+  \restore at mathversion\init at restore@version\dorestore at version\process at table
+  \new at mathversion\DeclareSymbolFont\group at list\group at elt
+  \new at symbolfont\SetSymbolFont\SetSymbolFont@\get at cdp
+  \DeclareMathAlphabet\new at mathalphabet\SetMathAlphabet\SetMathAlphabet@
+  \DeclareMathAccent\set at mathaccent\DeclareMathSymbol\set at mathchar
+  \set at mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
+  \@DeclareMathDelimiter\@xDeclareMathDelimiter\set at mathdelimiter
+  \set@@mathdelimiter\DeclareMathRadical\mathchar at type
+  \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
+ }
+ {
+  \tl_remove_once:Nn \@preamblecmds {\do#1}
+ }
+\ExplSyntaxOff
+\newcommand\xepersian at PackageInfo[1]{\PackageInfo{unicode-persianmath}{#1}}
+\newcommand\SetMathCode[4]{%
+  \Umathcode#1="\mathchar at type#2 \csname sym#3\endcsname #4\relax}
+\newcommand\SetMathCharDef[4]{%
+  \Umathchardef#1="\mathchar at type#2 \csname sym#3\endcsname #4\relax}
+\ExplSyntaxOn
+\cs_new_eq:NN \orig_mathbf:n \mathbf
+\cs_new_eq:NN \orig_mathit:n \mathit
+\cs_new_eq:NN \orig_mathrm:n \mathrm
+\cs_new_eq:NN \orig_mathsf:n \mathsf
+\cs_new_eq:NN \orig_mathtt:n \mathtt
+\NewDocumentCommand \new at mathbf { m } {
+ \orig_mathbf:n {
+   \SetPersianMathDigitsCode{\mathord}{persianoperatorsbf}
+   #1
+ }
+}
+\NewDocumentCommand \new at mathit { m } {
+ \orig_mathit:n {
+   \SetPersianMathDigitsCode{\mathord}{persianoperatorsit}
+   #1
+ }
+}
+\NewDocumentCommand \new at mathrm { m } {
+ \orig_mathrm:n {
+   \SetPersianMathDigitsCode{\mathord}{persianoperators}
+   #1
+ }
+}
+\NewDocumentCommand \new at mathsf{ m } {
+ \orig_mathsf:n {
+   \SetPersianMathDigitsCode{\mathord}{persianoperatorssf}
+   #1
+ }
+}
+\NewDocumentCommand \new at mathtt{ m } {
+ \orig_mathtt:n {
+   \SetPersianMathDigitsCode{\mathord}{persianoperatorstt}
+   #1
+ }
+}
+
+\cs_new:Npn \__xepersian_mathdigitspec_error:nxx    { \msg_error:nnxx    {unicode-persianmath} }
+\cs_new:Nn \__xepersian_mathdigitspec_msg_new:nnnn
+  { \msg_new:nnxx {#1} {#2} { \tl_trim_spaces:n {#3} } { \tl_trim_spaces:n {#4} } }
+\char_set_catcode_space:n {32}
+\__xepersian_mathdigitspec_msg_new:nnnn {unicode-persianmath} {char-not-exist}
+ {
+  The font "#1" does not contain U+#2.
+ }
+ {
+  Select another font and rerun xelatex.
+ }
+\char_set_catcode_ignore:n {32}
+
+\prg_new_conditional:Nnn \__xepersian_mathdigitspec_primitive_font_char_if_exist:n {p,TF,T,F}
+  {
+    \tex_iffontchar:D \l_fontspec_font "#1 \scan_stop:
+      \prg_return_true:
+    \else:
+      \prg_return_false:
+    \fi:
+  }
+
+\clist_new:N \l_xepersian_mathdigitspec_char_clist
+
+\cs_new:Nn \__xepersian_mathdigitspec_char_set_not_exist_error:nn
+ {
+    \clist_set:Nn \l_xepersian_mathdigitspec_char_clist { #1 }
+    \clist_map_inline:Nn \l_xepersian_mathdigitspec_char_clist {
+      \__xepersian_mathdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } }
+    }
+ }
+
+\cs_new:Nn \__xepersian_mathdigitspec_char_prepend_not_exist_error:nn
+ {
+    \clist_put_left:Nn \l_xepersian_mathdigitspec_char_clist { #1 }
+    \clist_map_inline:Nn \l_xepersian_mathdigitspec_char_clist {
+      \__xepersian_mathdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } }
+    }
+ }
+
+\cs_new:Nn \__xepersian_mathdigitspec_char_append_not_exist_error:nn
+ {
+    \clist_put_right:Nn \l_xepersian_mathdigitspec_char_clist { #1 }
+    \clist_map_inline:Nn \l_xepersian_mathdigitspec_char_clist {
+      \__xepersian_mathdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } }
+    }
+ }
+
+\cs_new:Nn \__xepersian_mathdigitspec_char_not_exist_error:n
+ {
+    \__xepersian_mathdigitspec_char_set_not_exist_error:nn {
+      06F0 , 06F1 , 06F2 , 06F3 , 06F4 , 06F5 , 06F6 , 06F7 , 06F8 ,
+      06F9 , 066A , 066B
+    } { #1 }
+ }
+
+\NewDocumentCommand \SetPersianMathDigitsCode { m m }
+  {
+    \SetMathCode{`0}{#1}{#2}{`۰}
+    \SetMathCode{`1}{#1}{#2}{`۱}
+    \SetMathCode{`2}{#1}{#2}{`۲}
+    \SetMathCode{`3}{#1}{#2}{`۳}
+    \SetMathCode{`4}{#1}{#2}{`۴}
+    \SetMathCode{`5}{#1}{#2}{`۵}
+    \SetMathCode{`6}{#1}{#2}{`۶}
+    \SetMathCode{`7}{#1}{#2}{`۷}
+    \SetMathCode{`8}{#1}{#2}{`۸}
+    \SetMathCode{`9}{#1}{#2}{`۹}
+  }
+
+\DeclareDocumentCommand \setmathdigitfont { O{} m O{} }
+  {
+    \__xepersian_main_setmathdigitfont:nn {#1,#3} {#2}
+  }
+\cs_new:Nn \__xepersian_main_setmathdigitfont:nn
+ {
+  \let\glb at currsize\relax
+  \fontspec_set_family:Nnn \g__xepersian_mathdigitsfamily_tl {#1} {#2}
+  \__xepersian_setmathdigitfont_hook:nn {#1} {#2}
+    \xepersian at PackageInfo{Defining the default Persian math digits font as '#2'}
+  \DeclareSymbolFont{persianoperators}   {\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl} {m}{n}
+  \DeclareSymbolFont{persianoperatorsbf}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{bx}{n}
+  \DeclareSymbolFont{persianoperatorsit}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{m}{it}
+  \__xepersian_mathdigitspec_char_not_exist_error:n { #2 }
+  \def\persianmathdigits{%
+    \SetPersianMathDigitsCode{\mathalpha}{persianoperators}
+    \SetMathCode{`\%}{\mathord}{persianoperators}{`٪}
+    \SetMathCharDef{\persiandecimalseparator}{\mathord}{persianoperators}{`٫}
+    \tl_set_eq:NN \mathbf \new at mathbf
+    \tl_set_eq:NN \mathit \new at mathit
+    \tl_set_eq:NN \mathrm \new at mathrm
+  }
+ }
+
+\cs_set_eq:NN \__xepersian_setmathdigitfont_hook:nn     \use_none:nn
+
+\DeclareDocumentCommand \setmathsfdigitfont { O{} m O{} }
+  {
+    \__xepersian_main_setmathsfdigitfont:nn {#1,#3} {#2}
+  }
+\cs_new:Nn \__xepersian_main_setmathsfdigitfont:nn
+ {
+  \fontspec_set_family:Nnn \g__xepersian_mathsfdigitfamily_tl {#1} {#2}
+  \__xepersian_setmathsfdigitfont_hook:nn {#1} {#2}
+      \DeclareSymbolFont{persianoperatorssf}{\g_fontspec_encoding_tl}{\g__xepersian_mathsfdigitfamily_tl}{m}{n}
+      \__xepersian_mathdigitspec_char_not_exist_error:n { #2 }
+    \def\persianmathsfdigits{\tl_set_eq:NN \mathsf \new at mathsf}
+ }
+
+\cs_set_eq:NN \__xepersian_setmathsfdigitfont_hook:nn     \use_none:nn
+
+\DeclareDocumentCommand \setmathttdigitfont { O{} m O{} }
+  {
+    \__xepersian_main_setmathttdigitfont:nn {#1,#3} {#2}
+  }
+\cs_new:Nn \__xepersian_main_setmathttdigitfont:nn
+ {
+  \fontspec_set_family:Nnn \g__xepersian_mathttdigitfamily_tl {#1} {#2}
+  \__xepersian_setmathttdigitfont_hook:nn {#1} {#2}
+      \DeclareSymbolFont{persianoperatorstt}{\g_fontspec_encoding_tl}{\g__xepersian_mathttdigitfamily_tl}{m}{n}
+      \__xepersian_mathdigitspec_char_not_exist_error:n { #2 }
+    \def\persianmathttdigits{\tl_set_eq:NN \mathtt \new at mathtt}
+ }
+
+\cs_set_eq:NN \__xepersian_setmathttdigitfont_hook:nn     \use_none:nn
+
+\ExplSyntaxOff
+\mathchardef\decimalseparator at point="013A
+\bgroup
+  \uccode`\~`\.%
+  \uppercase{%
+\egroup
+  \def~}{\begingroup\obeyspaces\futurelet\@let at decimalsep@token\decimalseparator at pointcheck}
+\def\decimalseparator at pointcheck{\decimalseparator at check\MathDecimalSeparator\decimalseparator at point}
+\def\decimalseparator at check#1#2{%
+  \ifx\@let at decimalsep@token1\endgroup#1\else
+    \ifx\@let at decimalsep@token2\endgroup#1\else
+      \ifx\@let at decimalsep@token3\endgroup#1\else
+        \ifx\@let at decimalsep@token4\endgroup#1\else
+          \ifx\@let at decimalsep@token5\endgroup#1\else
+            \ifx\@let at decimalsep@token6\endgroup#1\else
+              \ifx\@let at decimalsep@token7\endgroup#1\else
+                \ifx\@let at decimalsep@token8\endgroup#1\else
+                  \ifx\@let at decimalsep@token9\endgroup#1\else
+                    \ifx\@let at decimalsep@token0\endgroup#1\else
+                     \ifx\@let at decimalsep@token\dot\endgroup#1\else
+                       \ifx\@let at decimalsep@token\overline\endgroup#1\else
+                         \endgroup#2%
+                       \fi
+                    \fi
+                  \fi
+                \fi
+              \fi
+            \fi
+          \fi
+        \fi
+      \fi
+    \fi
+   \fi
+ \fi}
+\AtBeginDocument{\mathcode`.="8000\relax}
+\def\MathDecimalSeparator{\ifx\persiandecimalseparator\undefined .\else \persiandecimalseparator\fi}
+\def\DefaultMathDecimalSeparator{.}
+\def\DefaultInlineMathDigits{\def\SetInlineMathDigits{}}
+\def\DefaultDisplayMathDigits{\def\SetDisplayMathDigits{}}
+\def\DefaultMathDigits{%
+  \DefaultInlineMathDigits%
+  \DefaultDisplayMathDigits%
+}
+\def\PersianInlineMathDigits{\def\SetInlineMathDigits{%
+\ifx\persianmathdigits\undefined\else\persianmathdigits\fi%
+\ifx\persianmathsfdigits\undefined\else\persianmathsfdigits\fi%
+\ifx\persianmathttdigits\undefined\else\persianmathttdigits\fi}}
+\def\PersianDisplayMathDigits{\def\SetDisplayMathDigits{%
+\ifx\persianmathdigits\undefined\else\persianmathdigits\fi%
+\ifx\persianmathsfdigits\undefined\else\persianmathsfdigits\fi%
+\ifx\persianmathttdigits\undefined\else\persianmathttdigits\fi}}
+\def\PersianMathDigits{%
+  \PersianInlineMathDigits%
+  \PersianDisplayMathDigits%
+}
+\def\AutoInlineMathDigits{\def\SetInlineMathDigits{%
+\ifx\persianmathdigits\undefined\else\if at nonlatin\persianmathdigits\fi\fi%
+\ifx\persianmathsfdigits\undefined\else\if at nonlatin\persianmathsfdigits\fi\fi%
+\ifx\persianmathttdigits\undefined\else\if at nonlatin\persianmathttdigits\fi\fi}}
+\def\AutoDisplayMathDigits{\def\SetDisplayMathDigits{%
+\ifx\persianmathdigits\undefined\else\if at nonlatin\persianmathdigits\fi\fi%
+\ifx\persianmathsfdigits\undefined\else\if at nonlatin\persianmathsfdigits\fi\fi%
+\ifx\persianmathttdigits\undefined\else\if at nonlatin\persianmathttdigits\fi\fi}}
+\def\AutoMathDigits{%
+  \AutoInlineMathDigits%
+  \AutoDisplayMathDigits%
+}
+\AutoMathDigits
+\everymath\expandafter{\the\everymath\SetInlineMathDigits%
+  \let\SetDisplayMathDigits\relax%
+}
+\everydisplay\expandafter{%
+  \the\everydisplay\SetDisplayMathDigits%
+  \let\SetInlineMathDigits\relax%
+}
+
+\ExplSyntaxOn
+\cs_new_eq:NN \orig_MathDecimalSeparator \MathDecimalSeparator
+
+\NewDocumentCommand \SwitchToDefaultMathDigits {  } {
+  \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
+    \SetMathCode{##1}{\mathalpha}{operators}{##1}
+  }
+  \SetMathCode{`\%}{\mathord}{operators}{`\%}
+  \tl_set_eq:NN \MathDecimalSeparator \DefaultMathDecimalSeparator
+  \tl_set_eq:NN \mathbf \orig_mathbf:n
+  \tl_set_eq:NN \mathit \orig_mathit:n
+  \tl_set_eq:NN \mathrm \orig_mathrm:n
+  \tl_set_eq:NN \mathsf \orig_mathsf:n
+  \tl_set_eq:NN \mathtt \orig_mathtt:n
+}
+
+\NewDocumentCommand \SwitchToPersianMathDigits {  } {
+  \SetPersianMathDigitsCode{\mathalpha}{persianoperators}
+  \SetMathCode{`\%}{\mathord}{persianoperators}{`٪}
+  \tl_set_eq:NN \MathDecimalSeparator \orig_MathDecimalSeparator
+  \tl_set_eq:NN \mathbf \new at mathbf
+  \tl_set_eq:NN \mathit \new at mathit
+  \tl_set_eq:NN \mathrm \new at mathrm
+  \tl_set_eq:NN \mathsf \new at mathsf
+  \tl_set_eq:NN \mathtt \new at mathtt
+}
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `unicode-persianmath.sty'.


Property changes on: trunk/Master/texmf-dist/tex/xelatex/xepersian/unicode-persianmath.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/url-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/url-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/url-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/varioref-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/varioref-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/varioref-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-commands-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-commands-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-commands-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-environments-xetex-xepersian.def
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-environments-xetex-xepersian.def	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-localize-environments-xetex-xepersian.def	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-magazine.cls	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Deleted: trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-mathdigitspec.sty	2025-02-02 20:55:11 UTC (rev 73697)
@@ -1,397 +0,0 @@
-%%
-%% This is file `xepersian-mathdigitspec.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% xepersian.dtx  (with options: `table,xepersian-mathdigitspec.sty')
-%% 
-%%   __________________________________________________
-%%   Vafa Khalighi
-%% 
-%%   Copyright (c) 2008--2025  Vafa Khalighi
-%%   Copyright (c) 2018--2020 bidi-tex GitHub Organization
-%% 
-%%   It may be distributed and/or modified under the LaTeX Project Public License,
-%%   version 1.3c or higher (your choice). The latest version of
-%%   this license is at: http://www.latex-project.org/lppl.txt
-%% 
-%%   This work is “author-maintained” (as per LPPL maintenance status)
-%%   by Vafa Khalighi.
-%% 
-%% 
-%% \CheckSum{10853}
-%% \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
-%%   Digits        \0\1\2\3\4\5\6\7\8\9
-%%   Exclamation   \!     Double quote  \"     Hash (number) \#
-%%   Dollar        \$     Percent       \%     Ampersand     \&
-%%   Acute accent  \'     Left paren    \(     Right paren   \)
-%%   Asterisk      \*     Plus          \+     Comma         \,
-%%   Minus         \-     Point         \.     Solidus       \/
-%%   Colon         \:     Semicolon     \;     Less than     \<
-%%   Equals        \=     Greater than  \>     Question mark \?
-%%   Commercial at \@     Left bracket  \[     Backslash     \\
-%%   Right bracket \]     Circumflex    \^     Underscore    \_
-%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
-%%   Right brace   \}     Tilde         \~}
-%%
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{xepersian-mathdigitspec}
-  [2025/01/08 v1.2.2 Unicode Persian math digits in XeLaTeX]
-\def\new at mathgroup{\alloc at 8\mathgroup\chardef\@cclvi}
-\let\newfam\new at mathgroup
-\def\select at group#1#2#3#4{%
- \ifx\math at bgroup\bgroup\else\relax\expandafter\@firstofone\fi
- {%
- \ifmmode
-  \ifnum\csname c at mv@\math at version\endcsname<\@cclvi
-     \begingroup
-       \escapechar\m at ne
-       \getanddefine at fonts{\csname c at mv@\math at version\endcsname}#3%
-       \globaldefs\@ne  \math at fonts
-     \endgroup
-     \init at restore@version
-     \xdef#1{\noexpand\use at mathgroup\noexpand#2%
-             {\number\csname c at mv@\math at version\endcsname}}%
-     \global\advance\csname c at mv@\math at version\endcsname\@ne
-   \else
-     \let#1\relax
-     \@latex at error{Too many math alphabets used in
-                   version \math at version}%
-        \@eha
-   \fi
- \else \expandafter\non at alpherr\fi
- #1{#4}%
- }%
-}
-\def\document at select@group#1#2#3#4{%
- \ifx\math at bgroup\bgroup\else\relax\expandafter\@firstofone\fi
- {%
- \ifmmode
-   \ifnum\csname c at mv@\math at version\endcsname<\@cclvi
-     \begingroup
-       \escapechar\m at ne
-       \getanddefine at fonts{\csname c at mv@\math at version\endcsname}#3%
-       \globaldefs\@ne  \math at fonts
-     \endgroup
-     \expandafter\extract at alph@from at version
-         \csname mv@\math at version\expandafter\endcsname
-         \expandafter{\number\csname
-                       c at mv@\math at version\endcsname}%
-          #1%
-     \global\advance\csname c at mv@\math at version\endcsname\@ne
-   \else
-     \let#1\relax
-     \@latex at error{Too many math alphabets used
-                   in version \math at version}%
-        \@eha
-  \fi
- \else \expandafter\non at alpherr\fi
- #1{#4}%
- }%
-}
-\ExplSyntaxOn
-\bool_set_false:N \g__fontspec_math_bool
-\tl_map_inline:nn
- {
-  \new at mathgroup\cdp at list\cdp at elt\DeclareMathSizes
-  \@DeclareMathSizes\newmathalphabet\newmathalphabet@@\newmathalphabet@@@
-  \DeclareMathVersion\define at mathalphabet\define at mathgroup\addtoversion
-  \version at list\version at elt\alpha at list\alpha at elt
-  \restore at mathversion\init at restore@version\dorestore at version\process at table
-  \new at mathversion\DeclareSymbolFont\group at list\group at elt
-  \new at symbolfont\SetSymbolFont\SetSymbolFont@\get at cdp
-  \DeclareMathAlphabet\new at mathalphabet\SetMathAlphabet\SetMathAlphabet@
-  \DeclareMathAccent\set at mathaccent\DeclareMathSymbol\set at mathchar
-  \set at mathsymbol\DeclareMathDelimiter\@xxDeclareMathDelimiter
-  \@DeclareMathDelimiter\@xDeclareMathDelimiter\set at mathdelimiter
-  \set@@mathdelimiter\DeclareMathRadical\mathchar at type
-  \DeclareSymbolFontAlphabet\DeclareSymbolFontAlphabet@
- }
- {
-  \tl_remove_once:Nn \@preamblecmds {\do#1}
- }
-\ExplSyntaxOff
-\newcommand\xepersian at PackageInfo[1]{\PackageInfo{xepersian-mathdigitspec}{#1}}
-\newcommand\SetMathCode[4]{%
-  \Umathcode#1="\mathchar at type#2 \csname sym#3\endcsname #4\relax}
-\newcommand\SetMathCharDef[4]{%
-  \Umathchardef#1="\mathchar at type#2 \csname sym#3\endcsname #4\relax}
-\ExplSyntaxOn
-\cs_new_eq:NN \orig_mathbf:n \mathbf
-\cs_new_eq:NN \orig_mathit:n \mathit
-\cs_new_eq:NN \orig_mathrm:n \mathrm
-\cs_new_eq:NN \orig_mathsf:n \mathsf
-\cs_new_eq:NN \orig_mathtt:n \mathtt
-\NewDocumentCommand \new at mathbf { m } {
- \orig_mathbf:n {
-   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-     \mathcode ##1 = \numexpr "100 * \symnew at mathbf@font at digits + ##1 \relax
-   }
-   #1
- }
-}
-\NewDocumentCommand \new at mathit { m } {
- \orig_mathit:n {
-   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-     \mathcode ##1 = \numexpr "100 * \symnew at mathit@font at digits + ##1 \relax
-   }
-   #1
- }
-}
-\NewDocumentCommand \new at mathrm { m } {
- \orig_mathrm:n {
-   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-     \mathcode ##1 = \numexpr "100 * \symnew at mathrm@font at digits + ##1 \relax
-   }
-   #1
- }
-}
-\NewDocumentCommand \new at mathsf{ m } {
- \orig_mathsf:n {
-   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-     \mathcode ##1 = \numexpr "100 * \symnew at mathsf@font at digits + ##1 \relax
-   }
-   #1
- }
-}
-\NewDocumentCommand \new at mathtt{ m } {
- \orig_mathtt:n {
-   \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-     \mathcode ##1 = \numexpr "100 * \symnew at mathtt@font at digits + ##1 \relax
-   }
-   #1
- }
-}
-
-\cs_new:Npn \__xepersian_mathdigitspec_error:nxx    { \msg_error:nnxx    {xepersian-mathdigitspec} }
-\cs_new:Nn \__xepersian_mathdigitspec_msg_new:nnnn
-  { \msg_new:nnxx {#1} {#2} { \tl_trim_spaces:n {#3} } { \tl_trim_spaces:n {#4} } }
-\char_set_catcode_space:n {32}
-\__xepersian_mathdigitspec_msg_new:nnnn {xepersian-mathdigitspec} {char-not-exist}
- {
-  The font "#1" does not contain U+#2.
- }
- {
-  Select another font and rerun xelatex.
- }
-\char_set_catcode_ignore:n {32}
-
-\prg_new_conditional:Nnn \__xepersian_mathdigitspec_primitive_font_char_if_exist:n {p,TF,T,F}
-  {
-    \tex_iffontchar:D \l_fontspec_font "#1 \scan_stop:
-      \prg_return_true:
-    \else:
-      \prg_return_false:
-    \fi:
-  }
-
-\clist_new:N \l_xepersian_mathdigitspec_char_clist
-
-\cs_new:Nn \__xepersian_mathdigitspec_char_set_not_exist_error:nn
- {
-    \clist_set:Nn \l_xepersian_mathdigitspec_char_clist { #1 }
-    \clist_map_inline:Nn \l_xepersian_mathdigitspec_char_clist {
-      \__xepersian_mathdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } }
-    }
- }
-
-\cs_new:Nn \__xepersian_mathdigitspec_char_prepend_not_exist_error:nn
- {
-    \clist_put_left:Nn \l_xepersian_mathdigitspec_char_clist { #1 }
-    \clist_map_inline:Nn \l_xepersian_mathdigitspec_char_clist {
-      \__xepersian_mathdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } }
-    }
- }
-
-\cs_new:Nn \__xepersian_mathdigitspec_char_append_not_exist_error:nn
- {
-    \clist_put_right:Nn \l_xepersian_mathdigitspec_char_clist { #1 }
-    \clist_map_inline:Nn \l_xepersian_mathdigitspec_char_clist {
-      \__xepersian_mathdigitspec_primitive_font_char_if_exist:nF { ##1 }{ \__xepersian_mathdigitspec_error:nxx {char-not-exist} { #2 } { ##1 } }
-    }
- }
-
-\cs_new:Nn \__xepersian_mathdigitspec_char_not_exist_error:n
- {
-    \__xepersian_mathdigitspec_char_set_not_exist_error:nn {
-      06F0 , 06F1 , 06F2 , 06F3 , 06F4 , 06F5 , 06F6 , 06F7 , 06F8 ,
-      06F9 , 066A , 066B
-    } { #1 }
- }
-
-\DeclareDocumentCommand \setmathdigitfont { O{} m O{} }
-  {
-    \__xepersian_main_setmathdigitfont:nn {#1,#3} {#2}
-  }
-\cs_new:Nn \__xepersian_main_setmathdigitfont:nn
- {
-  \let\glb at currsize\relax
-  \fontspec_set_family:Nnn \g__xepersian_mathdigitsfamily_tl {Ligatures=PersianTeX,#1} {#2}
-  \__xepersian_setmathdigitfont_hook:nn {#1} {#2}
-    \xepersian at PackageInfo{Defining the default Persian math digits font as '#2'}
-  \DeclareSymbolFont{OPERATORS}   {\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl} {m}{n}
-  \DeclareSymbolFont{new at mathbf@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{bx}{n}
-  \DeclareSymbolFont{new at mathit@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{m}{it}
-  \DeclareSymbolFont{new at mathrm@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathdigitsfamily_tl}{m}{n}
-  \__xepersian_mathdigitspec_char_not_exist_error:n { #2 }
-  \def\persianmathdigits{%
-  \SetMathCode{`0}{\mathalpha}{OPERATORS}{`0}
-  \SetMathCode{`1}{\mathalpha}{OPERATORS}{`1}
-  \SetMathCode{`2}{\mathalpha}{OPERATORS}{`2}
-  \SetMathCode{`3}{\mathalpha}{OPERATORS}{`3}
-  \SetMathCode{`4}{\mathalpha}{OPERATORS}{`4}
-  \SetMathCode{`5}{\mathalpha}{OPERATORS}{`5}
-  \SetMathCode{`6}{\mathalpha}{OPERATORS}{`6}
-  \SetMathCode{`7}{\mathalpha}{OPERATORS}{`7}
-  \SetMathCode{`8}{\mathalpha}{OPERATORS}{`8}
-  \SetMathCode{`9}{\mathalpha}{OPERATORS}{`9}
-  \SetMathCode{`\%}{\mathbin}{OPERATORS}{`٪}
-  \SetMathCharDef{\persiandecimalseparator}{\mathord}{OPERATORS}{"066B}
-  \tl_set_eq:NN \mathbf \new at mathbf
-  \tl_set_eq:NN \mathit \new at mathit
-  \tl_set_eq:NN \mathrm \new at mathrm}
- }
-
-\cs_set_eq:NN \__xepersian_setmathdigitfont_hook:nn     \use_none:nn
-
-\DeclareDocumentCommand \setmathsfdigitfont { O{} m O{} }
-  {
-    \__xepersian_main_setmathsfdigitfont:nn {#1,#3} {#2}
-  }
-\cs_new:Nn \__xepersian_main_setmathsfdigitfont:nn
- {
-  \fontspec_set_family:Nnn \g__xepersian_mathsfdigitfamily_tl {Ligatures=PersianTeX,#1} {#2}
-  \__xepersian_setmathsfdigitfont_hook:nn {#1} {#2}
-      \DeclareSymbolFont{new at mathsf@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathsfdigitfamily_tl}{m}{n}
-      \__xepersian_mathdigitspec_char_not_exist_error:n { #2 }
-    \def\persianmathsfdigits{\tl_set_eq:NN \mathsf \new at mathsf}
- }
-
-\cs_set_eq:NN \__xepersian_setmathsfdigitfont_hook:nn     \use_none:nn
-
-\DeclareDocumentCommand \setmathttdigitfont { O{} m O{} }
-  {
-    \__xepersian_main_setmathttdigitfont:nn {#1,#3} {#2}
-  }
-\cs_new:Nn \__xepersian_main_setmathttdigitfont:nn
- {
-  \fontspec_set_family:Nnn \g__xepersian_mathttdigitfamily_tl {Ligatures=PersianTeX,#1} {#2}
-  \__xepersian_setmathttdigitfont_hook:nn {#1} {#2}
-      \DeclareSymbolFont{new at mathtt@font at digits}{\g_fontspec_encoding_tl}{\g__xepersian_mathttdigitfamily_tl}{m}{n}
-      \__xepersian_mathdigitspec_char_not_exist_error:n { #2 }
-    \def\persianmathttdigits{\tl_set_eq:NN \mathtt \new at mathtt}
- }
-
-\cs_set_eq:NN \__xepersian_setmathttdigitfont_hook:nn     \use_none:nn
-
-\ExplSyntaxOff
-\mathchardef\decimalseparator at point="013A
-\bgroup
-  \uccode`\~`\.%
-  \uppercase{%
-\egroup
-  \def~}{\begingroup\obeyspaces\futurelet\@let at decimalsep@token\decimalseparator at pointcheck}
-\def\decimalseparator at pointcheck{\decimalseparator at check\MathDecimalSeparator\decimalseparator at point}
-\def\decimalseparator at check#1#2{%
-  \ifx\@let at decimalsep@token1\endgroup#1\else
-    \ifx\@let at decimalsep@token2\endgroup#1\else
-      \ifx\@let at decimalsep@token3\endgroup#1\else
-        \ifx\@let at decimalsep@token4\endgroup#1\else
-          \ifx\@let at decimalsep@token5\endgroup#1\else
-            \ifx\@let at decimalsep@token6\endgroup#1\else
-              \ifx\@let at decimalsep@token7\endgroup#1\else
-                \ifx\@let at decimalsep@token8\endgroup#1\else
-                  \ifx\@let at decimalsep@token9\endgroup#1\else
-                    \ifx\@let at decimalsep@token0\endgroup#1\else
-                     \ifx\@let at decimalsep@token\dot\endgroup#1\else
-                       \ifx\@let at decimalsep@token\overline\endgroup#1\else
-                         \endgroup#2%
-                       \fi
-                    \fi
-                  \fi
-                \fi
-              \fi
-            \fi
-          \fi
-        \fi
-      \fi
-    \fi
-   \fi
- \fi}
-\AtBeginDocument{\mathcode`.="8000\relax}
-\def\MathDecimalSeparator{\ifx\persiandecimalseparator\undefined .\else \persiandecimalseparator\fi}
-\def\DefaultMathDecimalSeparator{.}
-\def\DefaultInlineMathDigits{\def\SetInlineMathDigits{}}
-\def\DefaultDisplayMathDigits{\def\SetDisplayMathDigits{}}
-\def\DefaultMathDigits{%
-  \DefaultInlineMathDigits%
-  \DefaultDisplayMathDigits%
-}
-\def\PersianInlineMathDigits{\def\SetInlineMathDigits{%
-\ifx\persianmathdigits\undefined\else\persianmathdigits\fi%
-\ifx\persianmathsfdigits\undefined\else\persianmathsfdigits\fi%
-\ifx\persianmathttdigits\undefined\else\persianmathttdigits\fi}}
-\def\PersianDisplayMathDigits{\def\SetDisplayMathDigits{%
-\ifx\persianmathdigits\undefined\else\persianmathdigits\fi%
-\ifx\persianmathsfdigits\undefined\else\persianmathsfdigits\fi%
-\ifx\persianmathttdigits\undefined\else\persianmathttdigits\fi}}
-\def\PersianMathDigits{%
-  \PersianInlineMathDigits%
-  \PersianDisplayMathDigits%
-}
-\def\AutoInlineMathDigits{\def\SetInlineMathDigits{%
-\ifx\persianmathdigits\undefined\else\if at nonlatin\persianmathdigits\fi\fi%
-\ifx\persianmathsfdigits\undefined\else\if at nonlatin\persianmathsfdigits\fi\fi%
-\ifx\persianmathttdigits\undefined\else\if at nonlatin\persianmathttdigits\fi\fi}}
-\def\AutoDisplayMathDigits{\def\SetDisplayMathDigits{%
-\ifx\persianmathdigits\undefined\else\if at nonlatin\persianmathdigits\fi\fi%
-\ifx\persianmathsfdigits\undefined\else\if at nonlatin\persianmathsfdigits\fi\fi%
-\ifx\persianmathttdigits\undefined\else\if at nonlatin\persianmathttdigits\fi\fi}}
-\def\AutoMathDigits{%
-  \AutoInlineMathDigits%
-  \AutoDisplayMathDigits%
-}
-\AutoMathDigits
-\everymath\expandafter{\the\everymath\SetInlineMathDigits%
-  \let\SetDisplayMathDigits\relax%
-}
-\everydisplay\expandafter{%
-  \the\everydisplay\SetDisplayMathDigits%
-  \let\SetInlineMathDigits\relax%
-}
-
-\ExplSyntaxOn
-\cs_new_eq:NN \orig_MathDecimalSeparator \MathDecimalSeparator
-
-\NewDocumentCommand \SwitchToDefaultMathDigits {  } {
-  \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-    \SetMathCode{##1}{\mathalpha}{operators}{##1}
-  }
-  \SetMathCode{`\%}{\mathbin}{operators}{`\%}
-  \tl_set_eq:NN \MathDecimalSeparator \DefaultMathDecimalSeparator
-  \tl_set_eq:NN \mathbf \orig_mathbf:n
-  \tl_set_eq:NN \mathit \orig_mathit:n
-  \tl_set_eq:NN \mathrm \orig_mathrm:n
-  \tl_set_eq:NN \mathsf \orig_mathsf:n
-  \tl_set_eq:NN \mathtt \orig_mathtt:n
-}
-
-\NewDocumentCommand \SwitchToPersianMathDigits {  } {
-  \int_step_inline:nnnn { `0 } { \c_one_int } { `9 } {
-    \SetMathCode{##1}{\mathalpha}{OPERATORS}{##1}
-  }
-  \SetMathCode{`\%}{\mathbin}{OPERATORS}{`٪}
-  \tl_set_eq:NN \MathDecimalSeparator \orig_MathDecimalSeparator
-  \tl_set_eq:NN \mathbf \new at mathbf
-  \tl_set_eq:NN \mathit \new at mathit
-  \tl_set_eq:NN \mathrm \new at mathrm
-  \tl_set_eq:NN \mathsf \new at mathsf
-  \tl_set_eq:NN \mathtt \new at mathtt
-}
-\ExplSyntaxOff
-\endinput
-%%
-%% End of file `xepersian-mathdigitspec.sty'.

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-multiplechoice.sty	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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

Modified: trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty
===================================================================
--- trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty	2025-02-02 18:10:50 UTC (rev 73696)
+++ trunk/Master/texmf-dist/tex/xelatex/xepersian/xepersian.sty	2025-02-02 20:55:11 UTC (rev 73697)
@@ -20,7 +20,7 @@
 %%   by Vafa Khalighi.
 %% 
 %% 
-%% \CheckSum{10853}
+%% \CheckSum{10792}
 %% \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
@@ -38,8 +38,8 @@
 %%   Right brace   \}     Tilde         \~}
 %%
 \NeedsTeXFormat{LaTeX2e}
-\def\xepersian at version{26.2}
-\def\xepersiandate{2025/01/16}
+\def\xepersian at version{25.2.2}
+\def\xepersiandate{2025/02/02}
 \def\xepersian at releasename{Persian Gate}
 \def\xepersian at persian@@releasename{دربند پارس}
 \newcommand*{\xepersianreleasename}{\if at RTL\xepersian at persian@@releasename\else\xepersian at releasename\fi}
@@ -240,7 +240,7 @@
 \fi
 \RequirePackage{fontspec}
 \RequirePackage{xepersian-persiancal}
-\RequirePackage{xepersian-mathdigitspec}
+\RequirePackage{unicode-persianmath}
 \RequirePackage[%
   documentdirection=righttoleft,%
   tabledirection=righttoleft,%
@@ -250,24 +250,6 @@
 ]{bidi}
 \newcommand*{\xepersianversion}
   {\ensuremath\xepersian at version}
-\newcommand*{\IfxepersianPackageVersionLater}[1]{%
-  \ifdim\xepersian at version pt > #1 pt %
-    \expandafter\@firstoftwo
-  \else
-    \expandafter\@secondoftwo
-  \fi}
-\newcommand*{\IfxepersianPackageVersionBefore}[1]{%
-  \ifdim\xepersian at version pt < #1 pt %
-    \expandafter\@firstoftwo
-  \else
-    \expandafter\@secondoftwo
-  \fi}
-\newcommand*{\IfxepersianPackageVersion}[1]{%
-  \ifdim\xepersian at version pt = #1 pt %
-    \expandafter\@firstoftwo
-  \else
-    \expandafter\@secondoftwo
-  \fi}
 \def\prq{«}
 \def\plq{»}
 \def\xepersian at cmds@temp#1{%
@@ -1054,7 +1036,7 @@
 
 \newcommand*{\@xepersian at pdfcustomproperties}{%
   This is the xepersian package, Version \xepersian at version\space (Release \xepersian at releasename),
-  Released January 16, 2025.
+  Released February 2, 2025.
 }
 
 \newcommand\twocolumnstableofcontents{%



More information about the tex-live-commits mailing list.