texlive[44754] Master/texmf-dist: arabluatex (5jul17)

commits+karl at tug.org commits+karl at tug.org
Wed Jul 5 23:09:03 CEST 2017


Revision: 44754
          http://tug.org/svn/texlive?view=revision&revision=44754
Author:   karl
Date:     2017-07-05 23:09:03 +0200 (Wed, 05 Jul 2017)
Log Message:
-----------
arabluatex (5jul17)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf
    trunk/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf
    trunk/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf
    trunk/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx
    trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
    trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty
    trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua
    trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua
    trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua

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

Modified: trunk/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx	2017-07-05 00:21:08 UTC (rev 44753)
+++ trunk/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx	2017-07-05 21:09:03 UTC (rev 44754)
@@ -27,7 +27,7 @@
 %<package-info>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
 %<package-info>\ProvidesPackage{arabluatex}
 %<*package-info>
-    [2017/06/20 v1.8.5 An ArabTeX-like interface for LuaLaTeX]
+    [2017/07/05 v1.9 An ArabTeX-like interface for LuaLaTeX]
 %</package-info>
 %
 %<*driver>
@@ -109,7 +109,7 @@
   title =	 {Information and Documentation - Romanization of the
                   Arabic Alphabet for Arabic, Ottoman-Turkish,
                   Persian, Kurdish, Urdu and Pushto},
-  date =	 {2011/07},
+  date =	 {2011-07},
   url =		 {http://www.din.de}
 }
 
@@ -155,7 +155,7 @@
 \defaultfontfeatures{RawFeature={+liga}}
 \setmainfont{Old Standard}[SmallCapsFont={Latin Modern Roman Caps},
   RawFeature={+mark;+ccmp;+ss05;+ss06}]
-\usepackage{arabluatex}[2017/06/20]
+\usepackage{arabluatex}[2017/07/05]
 \usepackage[nopar]{quran}
 \usepackage{varioref}
 \usepackage{hyperxmp}
@@ -227,7 +227,7 @@
 %</driver>
 % \fi
 %
-% \CheckSum{700}
+% \CheckSum{704}
 %
 % \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
@@ -760,10 +760,12 @@
 %        & \texttt{dmg} & \texttt{loc} & \texttt{arabica} & \\ \midrule
 % \endhead \footnotetext{See below \vref{sec:transliteration}.}
 % \label{tab:arabtex-consonants}
-% \arb[novoc]{a}\footnote{For \arb[trans]{'alif} as a consonant, see
-% \textcite[i. 16 D]{Wright}. The \arb[trans]{hamzaT} itself is
-% encoded \texttt{<'>}. See below \vref{ref:hamza}.} & \dmg{a} &
-% \loc{a} & \brill{a} & \verb|a| \\
+% \arb[voc]{'i 'a 'u}\footnote{See below, \emph{Rem{.} a.} For
+% \arb[trans]{'alif} as a consonant, see \textcite[i. 16
+% D]{Wright}. The \arb[trans]{hamzaT} itself is encoded \texttt{<'>}
+% and may be followed by either \meta{u, a} or \meta{i}. See below
+% \vref{ref:hamza}.} & \dmg{'u 'a 'i} &
+% \loc{|'u, |'a, |'i} & \brill{|'u, |'a, |'i} & |'u| or |'a| or |'i| \\
 % \arb[novoc]{b} & \dmg{b} & \loc{b} & \brill{b} & |b| \\
 % \arb[novoc]{t} & \dmg{t} & \loc{t} & \brill{t} & |t| \\
 % \arb[novoc]{_t} & \dmg{_t} & \loc{_t} & \brill{_t} & |_t| \\
@@ -790,12 +792,46 @@
 % \arb[novoc]{n} & \dmg{n} & \loc{n} & \brill{n} & |n| \\
 % \arb[novoc]{h} & \dmg{h} & \loc{h} & \brill{h} & |h| \\
 % \arb[novoc]{w} & \dmg{w} & \loc{w} & \brill{w} & |w| \\
-% \arb[novoc]{y} & \dmg{y} & \loc{y} & \brill{y} & |y| \\
+% \arb[novoc]{y} & \dmg{y} & \loc{y} & \brill{y} & |y|\footnote{For
+% the letter \arb[novoc]{.y} with no diacritical point below, see
+% \emph{Rem{.} b.} below.} \\
 % \arb[novoc]{T} & \dmg{aT} & \loc{aT} & \brill{aT} & |T| \\
 % \bottomrule
 % \caption*{\Cref*{tab:arabtex-consonants}: Standard Arab\TeX\ (consonants)}
 % \end{longtable}
+% \begin{quoting}
+%   \textsc{Rem.}~\emph{a.} Please note that in all cases of elision,
+%   the \arb[trans]{'alifu 'l-wa.sli} is expressed only by the vowel
+%   that accompanies the omitted \arb[trans]{hamzaT}: \meta{u, a, i}
+%   as in |wa-inhazama| \arb[fullvoc]{wa-inhazama}
+%   \arb[trans]{wa-inhazama}. For more details on the definite article
+%   and the \arb[trans]{'alifu 'l-wa.sli} see
+%   \vref{ref:definite-article}.
 %
+%   That said, \arb{.A} as a consonant is actually the \emph{spiritus
+%   lenis} of the Greeks and is distinguished by the
+%   \arb[trans]{hamzaT} \arb[novoc]{(|"')} as it is shown in the above
+%   table. However, the bare \arb[trans]{'alif} may also be encoded as
+%   |.A| whether it be followed by a vowel or not, like so: |wa-.An|
+%   \arb{wa-.An} \arb[trans]{wa-.An} (where the dot symbolizes the
+%   absence of vowel), |wa-.Aan| \arb{wa-.Aan} \arb[trans]{wa-.Aan},
+%   |wa-.Ain| \arb{wa-.Ain} \arb[trans]{wa-.Ain}.
+%   
+%   \textsc{Rem.}~\emph{b.} The letter \arb[novoc]{y} with two points
+%   below, \arb{al-yA'u 'l-mu_tannATu min ta.hti-hA}, may also be
+%   written without diacritical points as \arb[novoc]{Y}. When it is
+%   used as a consonant, it is encoded |aY|, where |a| recalls the
+%   \arb[trans]{fat.haT} placed above the preceding letter in
+%   vocalized Arabic, like so: |qaY'uN| \arb{qaY'uN}
+%   \arb[trans]{qaY'uN}, |^saY'uN| \arb{^saY'uN} \arb[trans]{^saY'uN},
+%   |^saY'aN| \arb[trans]{^saY'aN} \arb{^saY'aN}.
+%
+%   The same result may be achieved by encoding this letter as |.y|,
+%   like so: |qa.y'uN| \arb{qa.y'uN} \arb[trans]{qa.y'uN}, |^sa.y'uN|
+%   \arb{^sa.y'uN} \arb[trans]{^sa.y'uN}, |^sa.y'aN|
+%   \arb[trans]{^sa.y'aN} \arb{^sa.y'aN}.
+% \end{quoting}
+%
 % \subsection{Additional characters}
 % \changes{v1.8.5}{2017/06/20}{Six additional Persian characters are
 % now available}
@@ -822,7 +858,7 @@
 % included in this standard. However, as \texttt{arabica} is based on
 % \texttt{dmg}, the \texttt{dmg} equivalents have been used here.}
 % \label{tab:arabtex-additional-characters}
-% \arb[novoc]{p} & \dmg{p} & \loc{p} & \brill{p} & \verb|p| \\
+% \hskip-1em\arb[novoc]{p} & \dmg{p} & \loc{p} & \brill{p} & \verb|p| \\
 % \arb[novoc]{^c} & \dmg{^c} & \loc{^c} & \brill{^c} & \verb|^c| \\
 % \arb[novoc]{^z} & \dmg{^z} & \loc{^z} & \brill{^z} & \verb|^z| \\
 % \arb[novoc]{v}\footnote{\label{fn:not-in-dmg}This character is not found in
@@ -861,7 +897,9 @@
 % \label{tab:arabtex-long-vowels}
 % \arb[novoc]{A} & \dmg{A} & \loc{A} & \brill{A} & \verb|A| \\
 % \arb[novoc]{U} & \dmg{U} & \loc{U} & \brill{U} & \verb|U| \\
-% \arb[novoc]{I} & \dmg{I} & \loc{I} & \brill{I} & \verb|I| \\
+% \arb[novoc]{I} & \dmg{I} & \loc{I} & \brill{I} &
+% \verb|I|\footnote{For the letter \arb[novoc]{I} with no diacritical
+% points, see \emph{Rem{.} c.} below.} \\
 % \arb[novoc]{_A}\footnote{$=$ \arb[trans]{al-'alif-u 'l-maq.sUraT-u}.}
 %            & \dmg{_A} & \loc{_A} & \brill{_A} & \verb|_A| or \verb|Y| \\
 % \arb[novoc]{B_a} & \dmg{B_a} & \loc{B_a} & \brill{B_a} & \verb|_a| \\
@@ -890,6 +928,14 @@
 %   \arb[voc]{al-mal_a'ikaT-u 'l-ra.hm_an-u}, |.hu_dayfaT-u| |bn-u|
 %   |'l-yamAn_i| \arb[fullvoc]{.hu_dayfaT-u bn-u 'l-yamAn_i} for
 %   \arb[trans]{\cap{.hu_dayfaT-u} bn-u 'l-\cap{yamAn_i}}, etc.
+%
+%   \textsc{Rem.}~\emph{c.} The letter \arb[novoc]{y} with two points
+%   below, \arb{al-yA'u 'l-mu_tannATu min ta.hti-hA}, may also be
+%   written without diacritical points as \arb[novoc]{Y}. When it is
+%   used as a long vowel, it is encoded |iY|, where |i| recalls the
+%   \arb[trans]{kasraT} placed below the preceding letter in vocalized
+%   Arabic, like so: |liY| \arb{liY} \arb[trans]{liY}, |yam^siY|
+%   \arb{yam^siY} \arb[trans]{yam^siY}.
 % \end{quoting}
 % 
 % \subsubsection{Short vowels}
@@ -1161,7 +1207,11 @@
 %   |.daw'uN| \arb[voc]{.daw'uN} \arb[trans]{.daw'uN}, |qay'iN|
 %   \arb[voc]{qay'iN} \arb[trans]{qay'iN}, |^sifA'I|
 %   \arb[voc]{^sifA'I} \arb[trans]{^sifA'I}, |man^sa'I|
-%   \arb[trans]{man^sa'I} \arb[voc]{man^sa'I}.
+%   \arb[trans]{man^sa'I} \arb[voc]{man^sa'I}, |nisA'uN|
+%   \arb[voc]{nisA'uN} \arb[trans]{ni\-sA'uN}, |nisA'u-hu|
+%   \arb[voc]{nisA'u-hu} \arb[trans]{nisA'u-hu}, |nisA'i-hi|
+%   \arb[voc]{nisA'i-hi} \arb[trans]{nisA'i-hi}, |nisA'I|
+%   \arb[voc]{nisA'I} \arb[trans]{nisA'I}.
 %
 %   |^say'uN| \arb[voc]{^say'uN} \arb[trans]{^say'uN}, |^say'aN|
 %   \arb[voc]{^say'aN} \arb[trans]{^say'aN}, |^say'iN|
@@ -2794,23 +2844,7 @@
 % \DescribeMacro{\RL} \cs{RL}\marg{arg} does the same as
 % \cs{LR}\marg{arg}, but typesets its argument from right to left. Even
 % in an Arabic environment, this command may be useful.
-%
-% For example, to distinguish words with a different color, one may
-% proceed like so:---
-% \iffalse
-%<*example>
-% \fi
-\begin{arabluacode}
-\begin{arab}
-_tumma "intalaqa _dU 'l-qarn-ayni 'il_A 'ummaT-iN 'u_hr_A fI
-\LR{\textcolor{red}{\arb[fullvoc]{((ma.tli`-i 'l-^sams-i))}}}
-wa-lA binA'-a la-hum yu'amminu-hum mina 'l-^sams-i.
-\end{arab}
-\end{arabluacode}
-% \iffalse
-%</example>
-% \fi
-%
+% 
 % \DescribeMacro{\LRfootnote} \DescribeMacro{\RLfootnote}
 % \cs{LRfootnote}\marg{text} and \cs{RLfootnote}\marg{text} typeset
 % left-to-right and right-to-left footnotes respectively in Arabic
@@ -2873,6 +2907,51 @@
 %</example>
 % \fi
 %
+% \subsection{New commands}
+% \label{sec:declare-new-commands}
+% \NEWfeature{v1.9}%
+% In some particular cases, it may be useful to define new commands to
+% be inserted in Arabic environments. From the general principle laid
+% \vpageref{ref:cmd-inside-arabic}, it follows that any command that
+% is found inside an Arabic environment is assumed to have Arabic text
+% in its argument which \package{arabluatex} will process as such
+% before passing it on to the command itself for any further
+% processing. As a result of this feature, such a command as:\\
+% \arabluaverb{\newcommand{\fvarabic}[1]{\arb[fullvoc]{#1}}}\\
+% will work as expected, but will always output non-vocalized Arabic
+% if it is inserted in a |novoc| Arabic environment because its
+% argument will have been processed by the |novoc| rules before the
+% command |\fvarabic| itself can see it.
+%
+% \DescribeMacro{\MkArbBreak} The \cs{MkArbBreak}\marg{csv list of
+% commands} command may be used in the preamble to give any
+% \emph{single-argument} command---either new or already
+% existing---the precedence over \package{arabluatex} inside Arabic
+% environments. It takes as argument a comma-separated list of
+% commands each of which must be stripped of its leading character
+% |\|, like so:---\\
+% \arabluaverb{\MkArbBreak{onecmd, anothercmd, yetanothercmd, ...}}
+% 
+% For example, here follows a way to define a new command |\fvred| to
+% distinguish words with a different color and always print them in
+% fully vocalized Arabic:---\footnote{See below \vref{sec:textcolor} for
+% more information on two-argument commands.} %
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluacode}
+  \MkArbBreak{fvred}
+  \newcommand{\fvred}[1]{\textcolor{red}{\arb[fullvoc]{#1}}}
+\begin{arab}[voc]
+  _tumma "intalaqa _dU 'l-qarn-ayni 'il_A 'ummaT-iN 'u_hr_A fI
+  \fvred{((ma.tli`-i 'l-^sams-i))} wa-lA binA'-a la-hum
+  yu'amminu-hum mina 'l-^sams-i.
+\end{arab}
+\end{arabluacode}
+% \iffalse
+%</example>
+% \fi
+%
 % \subsection{Environments}
 % \label{sec:environments}
 % \changes{v1.5}{2016/11/14}{Environments may be nested inside the
@@ -3038,10 +3117,43 @@
 %   initial state once the Arabic environment is closed. See the last
 %   line in the code above.
 % \end{quoting}
-% 
-% \subsection{\package{reledmac}}
+%
+% \subsection{Two-argument commands}
+% \label{sec:two-arg-cmds}
+%
+% \paragraph{Color}
+% \label{sec:textcolor}
+% The two-argument command \cs{textcolor}\marg{color}\marg{Arabic
+% text} is supported inside \cs{begin}|{arab}| \ldots\
+% \cs{end}|{arab}|. One simple example follows:--- %
+% \iffalse
+%<*example>
+% \fi
+\begin{arabluacode}
+\begin{arab}
+  \textcolor{red}{\cap{m}uha_d_dabu \cap{'l-d}Ini \cap{`a}bdu
+    \cap{'l-r}a.hImi bnu \cap{`a}liyyiN} huwa ^say_hu-nA 'l-'imAmu
+  'l-.sadru 'l-kabIru 'l-`Alimu 'l-fA.dilu \cap{m}uha_d_dabu
+  \cap{'l-d}Ini \cap{'a}bU \cap{m}u.hammadiN \cap{`a}bdu
+  \cap{'l-r}a.hImi bnu \cap{`a}liyyi bni \cap{.h}AmidiN wa-yu`rafu
+  bi-\cap{'l-d}a_hwari.
+\end{arab}
+\begin{arab}[trans]
+  \textcolor{red}{\cap{m}uha_d_dabu \cap{'l-d}Ini \cap{`a}bdu
+    \cap{'l-r}a.hImi bnu \cap{`a}liyyiN} huwa ^say_hu-nA 'l-'imAmu
+  'l-.sadru 'l-kabIru 'l-`Alimu 'l-fA.dilu \cap{m}uha_d_dabu
+  \cap{'l-d}Ini \cap{'a}bU \cap{m}u.hammadiN \cap{`a}bdu
+  \cap{'l-r}a.hImi bnu \cap{`a}liyyi bni \cap{.h}AmidiN wa-yu`rafu
+  bi-\cap{'l-d}a_hwari.
+\end{arab}
+\end{arabluacode}
+% \iffalse
+%</example>
+% \fi
+%
+% \paragraph{\package{reledmac}}
 % \label{sec:reledmac}
-% The two-arguments command \cs{edtext}\marg{lemma}\marg{commands} is
+% The two-argument command \cs{edtext}\marg{lemma}\marg{commands} is
 % supported inside \cs{begin}|{arab}| \ldots\ \cs{end}|{arab}|. As an
 % example, one may get \package{arabluatex} and \package{reledmac} to
 % work together like so:---
@@ -3142,7 +3254,7 @@
 %    \begin{macrocode}
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{arabluatex}%
-[2017/06/20 v1.8.5 An ArabTeX-like interface for LuaLaTeX]
+[2017/07/05 v1.9 An ArabTeX-like interface for LuaLaTeX]
 \RequirePackage{ifluatex}
 %    \end{macrocode}
 % \package{arabluatex} requires \LuaLaTeX\ of course. Issue a warning
@@ -3233,6 +3345,18 @@
   {\NewDocumentCommand{\RL}{m}{\bgroup\textdir TRT#1\rmfamily\egroup}}}
 %    \end{macrocode}
 % \end{macro}
+% \begin{macro}{\MkArbBreak}
+% \changes{v1.9}{2017/07/05}{New \cs{MkArbBreak} command for inserting
+% user-defined macros in Arabic environments}
+% The \cs{MkArbBreak}\marg{csv list of commands} command may be used
+% to give any command---either new or already existing---the
+% precedence over \package{arabluatex} inside Arabic environments. It
+% is actually coded in Lua.
+%    \begin{macrocode}
+\DeclareDocumentCommand{\MkArbBreak}{m}{%
+  \luadirect{mkarbbreak(\luastringN{#1})}}
+%    \end{macrocode}
+% \end{macro}
 % \begin{macro}{\aemph} Arabic emphasis. Needs to be redefined as well.
 %    \begin{macrocode}
 \AtBeginDocument{\ifdef{\aemph}%

Modified: trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua	2017-07-05 00:21:08 UTC (rev 44753)
+++ trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua	2017-07-05 21:09:03 UTC (rev 44754)
@@ -46,7 +46,33 @@
 return str
 end
 
+brkcmds = {}
+
+function mkarbbreak(str)
+   str = str ..","
+   str = string.gsub(str, "%s+", "")
+   local fieldstart = 1
+   repeat
+      local nexti = string.find(str, "%,", fieldstart)
+      table.insert(brkcmds, string.sub(str, fieldstart, nexti-1))
+      fieldstart = nexti +1
+   until fieldstart > string.len(str)
+   return brkcmds
+end
+
 local function breakcmd(str)
+   -- user commands
+   if next(brkcmds) == nil then
+      -- nothing to do
+   else
+      for i = 1,#brkcmds do
+	 str = string.gsub(str, "\\"..brkcmds[i].."%s?(%b{})",
+		function(body)
+		   body = string.sub(body, 2, -2)
+		   return string.format("}\\"..brkcmds[i].."{%s}\\arb{", body)
+	 end)
+      end
+   end
    -- process \item[], then \item[]
 	str = string.gsub(str, "\\(item.?)(%b[])",
 	  function(tag, body)
@@ -73,6 +99,13 @@
 		body = string.sub(body, 2, -2)
 		return string.format("}\\%s{%s}\\arb{", tag, body)
 		end)
+   -- \textcolor
+   str = string.gsub(str, "\\(textcolor.?)(%b{})(%b{})",
+    function(tag, bodycolor, bodytext)
+    bodycolor = string.sub(bodycolor, 2, -2)
+    bodytext = string.sub(bodytext, 2, -2)
+    return string.format("}\\%s{%s}{\\arb{%s}}\\arb{", tag, bodycolor, bodytext)
+   end)
    -- Footnote
    str = string.gsub(str, "\\(Footnote.-)(%b{})",
 		function(tag, body)
@@ -328,8 +361,14 @@
 	 inside = string.gsub(inside, digraphsfv[i].a, digraphsfv[i].b)
       end
    end
-   for i = 1,#singlefveasy do
-      inside = string.gsub(inside, singlefveasy[i].a, singlefveasy[i].b)
+   if rules == "nosukun" then
+      for i = 1,#singlefveasy do
+	 inside = string.gsub(inside, singlefveasy[i].a, singlefveasy[i].b)
+      end
+   else
+      for i = 1,#singlefv do
+	 inside = string.gsub(inside, singlefv[i].a, singlefv[i].b)
+      end
    end
    for i = 1,#longv do
       inside = string.gsub(inside, longv[i].a, longv[i].b)

Modified: trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty	2017-07-05 00:21:08 UTC (rev 44753)
+++ trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty	2017-07-05 21:09:03 UTC (rev 44754)
@@ -41,7 +41,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{arabluatex}%
-[2017/06/20 v1.8.5 An ArabTeX-like interface for LuaLaTeX]
+[2017/07/05 v1.9 An ArabTeX-like interface for LuaLaTeX]
 \RequirePackage{ifluatex}
 \ifluatex\else
  \PackageError{arabluatex}{lualatex needed}{%
@@ -84,6 +84,8 @@
 \AtBeginDocument{\ifdef{\RL}%
   {\RenewDocumentCommand{\RL}{m}{\bgroup\textdir TRT\rmfamily#1\egroup}}
   {\NewDocumentCommand{\RL}{m}{\bgroup\textdir TRT#1\rmfamily\egroup}}}
+\DeclareDocumentCommand{\MkArbBreak}{m}{%
+  \luadirect{mkarbbreak(\luastringN{#1})}}
 \AtBeginDocument{\ifdef{\aemph}%
   {\RenewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}}
   {\NewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}}}

Modified: trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua	2017-07-05 00:21:08 UTC (rev 44753)
+++ trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua	2017-07-05 21:09:03 UTC (rev 44754)
@@ -25,6 +25,12 @@
 hamzafv = {
    -- next line for ʾiʿrāb hyphen
    {a="(')(%-)([uaiUAI])", b="%1%3"},
+   -- next lines for ʾalif alone
+   {a="(%.A)([uai]?)l%-(%^n)", b="ا%2ل%3"}, --additional (^n is lunar)
+   {a="([%(%[%|%<%s%-o])(%.A)([uai]?)l%-(%^n)", b="%1ا%3%4"}, --additional (^n is lunar) --p
+   {a="(%.A)([uai]?)l%-([%_%^%.]?[tdrzsnc])", b="ا%2ل%3%3"},
+   {a="([%(%[%|%<%s%-o])(%.A)([uai]?)l%-([%_%^%.]?[tdrzsnc])", b="%1ا%3ل%4%4"}, --p
+   {a="%.A", b="ا"},
    -- hard coded hamza
    {a="|\"'", b="ء"},
    {a="A\"'", b="آ"},
@@ -78,14 +84,19 @@
    -- then the 'initial' rules for the remaining cases
    {a="^(')([ua])", b="أ%2"},
    {a="^(')(i)", b="إ%2"},
-   {a="(%W)(')([ua])", b="%1أ%3"},
-   {a="(%W)(')(i)", b="%1إ%3"},
+   -- consider replacing initial %W with [%s%(%[%<%-]:
+   --   {a="(%W)(')([ua])", b="%1أ%3"},
+   --   {a="(%W)(')(i)", b="%1إ%3"},
+   {a="([%s%(%[%<%-])(')([ua])", b="%1أ%3"},
+   {a="([%s%(%[%<%-])(')(i)", b="%1إ%3"},
    -- final
    -- ^say'aN and .zim'aN are special orthographies
-   {a="(%^say)(%')(aN)", b="%1ئ%3"},
+   {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"},
    {a="(.zi?m)(%')(aN)", b="%1ئ%3"},
-   {a="(')(I%p?)$", b="إ%2"}, -- affix pr. 1st person sg.
-   {a="(')(I)(%p?%s)", b="إ%2%3"}, -- affix pr. 1st person sg.
+   -- hamzah + pr. suffix: the carrier passes into yāʾ before ī so
+   -- take out the following two lines:
+   -- {a="(')(I%p?)$", b="إ%2"}, -- affix pr. 1st person sg.
+   -- {a="(')(I)(%p?%s)", b="إ%2%3"}, -- affix pr. 1st person sg.
    {a="([^uai])(')([uai]N?%p?)$", b="%1ء%3"},
    {a="([^uai])(')([uai]N?)(%p?%s)", b="%1ء%3%4"},
 -- u
@@ -135,6 +146,12 @@
 hamzafveasy = { -- differences marked below with 'easy'
    -- next line for ʾiʿrāb hyphen
    {a="(')(%-)([uaiUAI])", b="%1%3"},
+   -- next lines for ʾalif alone
+   {a="(%.A)([uai]?)l%-(%^n)", b="ا%2ل%3"}, --additional (^n is lunar)
+   {a="([%(%[%|%<%s%-o])(%.A)([uai]?)l%-(%^n)", b="%1ا%3%4"}, --additional (^n is lunar) --p
+   {a="(%.A)([uai]?)l%-([%_%^%.]?[tdrzsnc])", b="ا%2ل%3%3"},
+   {a="([%(%[%|%<%s%-o])(%.A)([uai]?)l%-([%_%^%.]?[tdrzsnc])", b="%1ا%3ل%4%4"}, --p
+   {a="%.A", b="ا"},
    -- hard coded hamza
    {a="|\"'", b="ء"},
    {a="A\"'", b="آ"},
@@ -190,14 +207,19 @@
    -- then the 'initial' rules for the remaining cases
    {a="^(')([ua])", b="أ%2"},
    {a="^(')(i)", b="إ%2"},
-   {a="(%W)(')([ua])", b="%1أ%3"},
-   {a="(%W)(')(i)", b="%1إ%3"},
+   -- consider replacing initial %W with [%s%(%[%<%-]:
+   --   {a="(%W)(')([ua])", b="%1أ%3"},
+   --   {a="(%W)(')(i)", b="%1إ%3"},
+   {a="([%s%(%[%<%-])(')([ua])", b="%1أ%3"},
+   {a="([%s%(%[%<%-])(')(i)", b="%1إ%3"},
    -- final
    -- ^say'aN and .zim'aN are special orthographies
-   {a="(%^say)(%')(aN)", b="%1ئ%3"},
+   {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"},
    {a="(.zi?m)(%')(aN)", b="%1ئ%3"},
-   {a="(')(I%p?)$", b="إ%2"}, -- affix pr. 1st person sg.
-   {a="(')(I)(%p?%s)", b="إ%2%3"}, -- affix pr. 1st person sg.
+   -- hamzah + pr. suffix: the carrier passes into yāʾ before ī so
+   -- take out the following two lines:
+   -- {a="(')(I%p?)$", b="إ%2"}, -- affix pr. 1st person sg.
+   -- {a="(')(I)(%p?%s)", b="إ%2%3"}, -- affix pr. 1st person sg.
    {a="([^uai])(')([uai]N?%p?)$", b="%1ء%3"},
    {a="([^uai])(')([uai]N?)(%p?%s)", b="%1ء%3%4"},
 -- u
@@ -565,6 +587,7 @@
    {a="hh", b="هّ"},
    {a="ww", b="وّ"},
    {a="yy", b="يّ"},
+   {a="%.y%.y", b="ىّ"},
    -- additional characters + šaddah (begin)
    {a="pp", b="پّ"},
    {a="vv", b="ڤّ"},
@@ -575,10 +598,10 @@
    -- additional characters + šaddah (end)
    -- sukūn begin
    -- first, take out hyphen if any:
-   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])%-([uaiUAI])", b="%1%2"},
+   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwyY])%-([uaiUAI])", b="%1%2"},
    {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy]%p?)$", b="%1ْ"},
    {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p?%s)", b="%1ْ%2"},
-   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"},
+   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwyY])([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"},
    -- take out sukūn in cases of assimilation
    {a="(n)(ْ)(%s)(ر)", b="%1%3%4"},
    {a="(n)(ْ)(%s)(و)", b="%1%3%4"},
@@ -599,6 +622,7 @@
    {a="%.t", b="ط"},
    {a="%.z", b="ظ"},
    {a="%.g", b="غ"},
+   {a="%.y", b="ى"},
    -- additional characters (begin)
    {a="%^c", b="چ"},
    {a="%^z", b="ژ"},
@@ -688,6 +712,7 @@
    {a="hh", b="هّ"},
    {a="ww", b="وّ"},
    {a="yy", b="يّ"},
+   {a="%.y%.y", b="ىّ"},
    -- additional characters + šaddah (begin)
    {a="pp", b="پّ"},
    {a="vv", b="ڤّ"},
@@ -698,10 +723,10 @@
    -- additional characters + šaddah (end)
    -- sukūn begin
    -- first, take out hyphen if any:
-   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])%-([uaiUAI])", b="%1%2"},
+   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwyY])%-([uaiUAI])", b="%1%2"},
    {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy]%p?)$", b="%1ْ"},
    {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p?%s)", b="%1ْ%2"},
-   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"},
+   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwyY])([%_]?[^%_uaiUAIYًٌٍ])", b="%1ْ%2"},
    -- take out sukūn in cases of assimilation
 --   {a="(n)(ْ)(%s)(ر)", b="%1%3%4"},
 --   {a="(n)(ْ)(%s)(و)", b="%1%3%4"},
@@ -722,6 +747,7 @@
    {a="%.t", b="ط"},
    {a="%.z", b="ظ"},
    {a="%.g", b="غ"},
+   {a="%.y", b="ى"},
    -- additional characters (begin)
    {a="%^c", b="چ"},
    {a="%^z", b="ژ"},
@@ -811,6 +837,7 @@
    {a="hh", b="هّ"},
    {a="ww", b="وّ"},
    {a="yy", b="يّ"},
+   {a="%.y%.y", b="ىّ"},
    -- additional characters + šaddah (begin)
    {a="pp", b="پّ"},
    {a="vv", b="ڤّ"},
@@ -824,10 +851,10 @@
    -- so there be no need to edit them:
    {a="ْ", b=""}, 
    -- first, take out hyphen if any:
---   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])%-([uaiUAI])", b="%1%2"},
+--   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwyY])%-([uaiUAI])", b="%1%2"},
 --   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy]%p?)$", b="%1ْ"},
 --   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])(%p?%s)", b="%1ْ%2"},
---   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwy])([%_]?[^%_uaiUAIًٌٍ])", b="%1ْ%2"},
+--   {a="([%_%^%.]?[Bbtjghxdrzs%`fqklmnwyY])([%_]?[^%_uaiUAIًٌٍ])", b="%1ْ%2"},
    -- take out sukūn in cases of assimilation
 --   {a="(n)(ْ)(%s)(ر)", b="%1%3%4"},
 --   {a="(n)(ْ)(%s)(و)", b="%1%3%4"},
@@ -848,6 +875,7 @@
    {a="%.t", b="ط"},
    {a="%.z", b="ظ"},
    {a="%.g", b="غ"},
+   {a="%.y", b="ى"},
    -- additional characters (begin)
    {a="%^c", b="چ"},
    {a="%^z", b="ژ"},

Modified: trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua	2017-07-05 00:21:08 UTC (rev 44753)
+++ trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua	2017-07-05 21:09:03 UTC (rev 44754)
@@ -31,7 +31,8 @@
 
 nulltr = {
    {a="%|", b=""},
-   {a="o[%S]-o", b=""}
+   {a="o[%S]-o", b=""},
+   {a="[%^%_](.)", b="<??>%1"}
 }
 
 -- cap
@@ -71,6 +72,17 @@
 -- dmg
 
 hamzatrdmg = {
+   -- next lines for ʾalif alone
+   {a="(%.A)l%-(%^n)", b=".|l-%2"}, --additional (^n is lunar)
+   {a="([%(%[%|%<%s%-o])(%.A)l%-(%^n)", b="%1.|l-%3"}, --additional (^n is lunar) --p
+   {a="(%.A)l%-([%_%^%.]?[tdrzsnc])", b=".|%2-%2"},
+   {a="([%(%[%|%<%s%-o])(%.A)l%-([%_%^%.]?[tdrzsnc])", b="%1.|%3-%3"}, --p
+   {a="(%.A)([uai])l%-(%^n)", b="||%2l-%3"}, --additional (^n is lunar)
+   {a="([%(%[%|%<%s%-o])(%.A)([uai])l%-(%^n)", b="%1||%3l-%4"}, --additional (^n is lunar) --p
+   {a="(%.A)([uai])l%-([%_%^%.]?[tdrzsnc])", b="||%2%3-%3"},
+   {a="([%(%[%|%<%s%-o])(%.A)([uai])l%-([%_%^%.]?[tdrzsnc])", b="%1||%3%4-%4"}, --p
+   {a="(%.A)([^uai])", b=".|%2"},
+   {a="(%.A)([uai])", b="||%2"},
    -- hard coded hamza
    {a="|\"'", b="ʾ"},
    {a="A\"'", b="ʾA"},
@@ -108,8 +120,11 @@
    -- then the 'initial' rules for the remaining cases
    {a="^(')([ua])", b="ʾ%2"},
    {a="^(')(i)", b="ʾ%2"},
-   {a="(%W)(')([ua])", b="%1ʾ%3"},
-   {a="(%W)(')(i)", b="%1ʾ%3"},
+   -- consider replacing initial %W with [%s%(%[%<%-]:
+   --   {a="(%W)(')([ua])", b="%1ʾ%3"},
+   --   {a="(%W)(')(i)", b="%1ʾ%3"},
+   {a="([%s%(%[%<%-])(')([ua])", b="%1ʾ%3"},
+   {a="([%s%(%[%<%-])(')(i)", b="%1ʾ%3"},
    -- final
    {a="([Iy])(')(aN)$", b="%1ʾ%3"},
    {a="([Iy])(')(aN)(%W)", b="%1ʾ%3%4"},
@@ -243,7 +258,7 @@
    {a="'l%-(%^n)", b="'l-%1"}, -- ^n is lunar
    {a="'l%-([%_%^%.]?[tdrzsnc])", b="'%1-%1"},
    -- li-/la- + art. + lām
-   {a="l([ai])%-l%-(l)", b="l%1-%2%2"},
+   {a="l([ai])%-l%-(l)", b="l%1-%2-%2"},
    -- assim. art. with waṣla + solar consonant
    -- ('c' and '^n' are additional characters)
    {a="'(%^n)%-", b="'l-"}, -- ^n is lunar
@@ -365,6 +380,7 @@
    {a="%.t", b="ṭ"},
    {a="%.z", b="ẓ"},
    {a="%.g", b="ġ"},
+   {a="%.y", b="y"},
    -- additional characters (begin)
    {a="%^c", b="č"},
    {a="%^z", b="ž"},
@@ -419,6 +435,8 @@
    {a="A", b="ā"},
    {a="U", b="ū"},
    {a="I", b="ī"},
+   {a="aY", b="ay"},
+   {a="iY", b="ī"},
    {a="Y", b="ạ̄"}
 }
 
@@ -431,6 +449,9 @@
 -- loc
 
 hamzatrloc = {
+   -- next lines for ʾalif alone
+   {a="(%.A)([^uai])", b=".|%2"},
+   {a="(%.A)([uai])", b="||%2"},
    -- hard coded hamza
    {a="|\"'", b="ʾ"},
    {a="A\"'", b="ʾA"},
@@ -468,8 +489,11 @@
    -- initial (needs both ^ and %W patterns)
    {a="^(')([ua])", b="%2"},
    {a="^(')(i)", b="%2"},
-   {a="(%W)(')([ua])", b="%1%3"},
-   {a="(%W)(')(i)", b="%1%3"},
+   -- consider replacing initial %W with [%s%(%[%<%-]:
+   --   {a="(%W)(')([ua])", b="%1%3"},
+   --   {a="(%W)(')(i)", b="%1%3"},
+   {a="([%s%(%[%<%-])(')([ua])", b="%1%3"},
+   {a="([%s%(%[%<%-])(')(i)", b="%1%3"},
    -- final
    {a="([Iy])(')(aN)$", b="%1ʾ%3"},
    {a="([Iy])(')(aN)(%W)", b="%1ʾ%3%4"},
@@ -610,6 +634,7 @@
    {a="%.t", b="ṭ"},
    {a="%.z", b="ẓ"},
    {a="%.g", b="gh"},
+   {a="%.y", b="y"},
    -- additional characters (begin)
    {a="%^c", b="ch"},
    {a="%^z", b="zh"},
@@ -663,6 +688,8 @@
    {a="A", b="ā"},
    {a="U", b="ū"},
    {a="I", b="ī"},
+   {a="aY", b="ay"},
+   {a="iY", b="ī"},
    {a="Y", b="á"},
 }
 
@@ -679,6 +706,9 @@
 -- arabica
 
 hamzatrarabica = { -- ≠ from hamzatrloc: initial hamza has to be held
+   -- next lines for ʾalif alone
+   {a="(%.A)([^uai])", b=".|%2"},
+   {a="(%.A)([uai])", b="||%2"},
    -- hard coded hamza
    {a="|\"'", b="ʾ"},
    {a="A\"'", b="ʾA"},
@@ -717,8 +747,11 @@
    -- hold it for now (see below, beginning of digraphs table)
    {a="^(')([ua])", b="@%2"},
    {a="^(')(i)", b="@%2"},
-   {a="(%W)(')([ua])", b="%1@%3"},
-   {a="(%W)(')(i)", b="%1@%3"},
+   -- consider replacing initial %W with [%s%(%[%<%-]:
+   --   {a="(%W)(')([ua])", b="%1@%3"},
+   --   {a="(%W)(')(i)", b="%1@%3"},
+   {a="([%s%(%[%<%-])(')([ua])", b="%1@%3"},
+   {a="([%s%(%[%<%-])(')(i)", b="%1@%3"},
    -- final
    {a="([Iy])(')(aN)$", b="%1ʾ%3"},
    {a="([Iy])(')(aN)(%W)", b="%1ʾ%3%4"},
@@ -846,6 +879,7 @@
    {a="%.t", b="ṭ"},
    {a="%.z", b="ẓ"},
    {a="%.g", b="ġ"},
+   {a="%.y", b="y"},
    -- additional characters (begin)
    {a="%^c", b="č"},
    {a="%^z", b="ž"},
@@ -896,6 +930,8 @@
 }
 
 longvtrarabica = {
+   {a="aY", b="ay"},
+   {a="iY", b="ī"},
    {a="[AY]", b="ā"},
    {a="U", b="ū"},
    {a="I", b="ī"}

Modified: trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua	2017-07-05 00:21:08 UTC (rev 44753)
+++ trunk/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua	2017-07-05 21:09:03 UTC (rev 44754)
@@ -170,6 +170,12 @@
 hamza = {
    -- next line for ʾiʿrāb hyphen
    {a="(')(%-)([uaiUAI])", b="%1%3"},
+   -- next lines for ʾalif alone
+   {a="(%.A)([uai]?)l%-(%^n)", b="ا%2ل%3"}, --additional (^n is lunar)
+   {a="([%(%[%|%<%s%-o])(%.A)([uai]?)l%-(%^n)", b="%1ا%3%4"}, --additional (^n is lunar) --p
+   {a="(%.A)([uai]?)l%-([%_%^%.]?[tdrzsnc])", b="ا%2ل%3%3"},
+   {a="([%(%[%|%<%s%-o])(%.A)([uai]?)l%-([%_%^%.]?[tdrzsnc])", b="%1ا%3ل%4%4"}, --p
+   {a="%.A", b="ا"},
    -- hard coded hamza
    {a="|\"'", b="ء"},
    {a="A\"'", b="آ"},
@@ -214,14 +220,19 @@
    -- then the 'initial' rules for the remaining cases
    {a="^(')([ua])", b="أ%2"},
    {a="^(')(i)", b="إ%2"},
-   {a="(%W)(')([ua])", b="%1أ%3"},
-   {a="(%W)(')(i)", b="%1إ%3"},
+   -- consider replacing initial %W with [%s%(%[%<%-]:
+   --   {a="(%W)(')([ua])", b="%1أ%3"},
+   --   {a="(%W)(')(i)", b="%1إ%3"},
+   {a="([%s%(%[%<%-])(')([ua])", b="%1أ%3"},
+   {a="([%s%(%[%<%-])(')(i)", b="%1إ%3"},
    -- final
    -- ^say'aN and .zim'aN are special orthographies
-   {a="(%^say)(%')(aN)", b="%1ئ%3"},
+   {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"},
    {a="(.zi?m)(%')(aN)", b="%1ئ%3"},
-   {a="(')(I%p?)$", b="إ%2"}, -- affix pr. 1st person sg.
-   {a="(')(I)(%p?%s)", b="إ%2%3"}, -- affix pr. 1st person sg.
+   -- hamzah + pr. suffix: the carrier passes into yāʾ before ī so
+   -- take out the following two lines:
+   -- {a="(')(I%p?)$", b="إ%2"}, -- affix pr. 1st person sg.
+   -- {a="(')(I)(%p?%s)", b="إ%2%3"}, -- affix pr. 1st person sg.
    {a="([^uai])(')([uai]N?%p?)$", b="%1ء%3"},
    {a="([^uai])(')([uai]N?)(%p?%s)", b="%1ء%3%4"},
 -- u
@@ -271,6 +282,12 @@
 hamzaeasy = { -- differences marked below with 'easy'
    -- next line for ʾiʿrāb hyphen
    {a="(')(%-)([uaiUAI])", b="%1%3"},
+   -- next lines for ʾalif alone (easy)
+   {a="(%.A)([uai]?)l%-(%^n)", b="ا%2ل%3"}, --additional (^n is lunar)
+   {a="([%(%[%|%<%s%-o])(%.A)([uai]?)l%-(%^n)", b="%1ا%3%4"}, --additional (^n is lunar) --p
+   {a="(%.A)([uai]?)l%-([%_%^%.]?[tdrzsnc])", b="ا%2ل%3"},
+   {a="([%(%[%|%<%s%-o])(%.A)([uai]?)l%-([%_%^%.]?[tdrzsnc])", b="%1ا%3ل%4"}, --p
+   {a="%.A", b="ا"},
    -- hard coded hamza
    {a="|\"'", b="ء"},
    {a="A\"'", b="آ"},
@@ -317,14 +334,19 @@
    -- then the 'initial' rules for the remaining cases
    {a="^(')([ua])", b="أ%2"},
    {a="^(')(i)", b="إ%2"},
-   {a="(%W)(')([ua])", b="%1أ%3"},
-   {a="(%W)(')(i)", b="%1إ%3"},
+   -- consider replacing initial %W with [%s%(%[%<%-]:
+   --   {a="(%W)(')([ua])", b="%1أ%3"},
+   --   {a="(%W)(')(i)", b="%1إ%3"},
+   {a="([%s%(%[%<%-])(')([ua])", b="%1أ%3"},
+   {a="([%s%(%[%<%-])(')(i)", b="%1إ%3"},
    -- final
    -- ^say'aN and .zim'aN are special orthographies
-   {a="(%^say)(%')(aN)", b="%1ئ%3"},
+   {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"},
    {a="(.zi?m)(%')(aN)", b="%1ئ%3"},
-   {a="(')(I%p?)$", b="إ%2"}, -- affix pr. 1st person sg.
-   {a="(')(I)(%p?%s)", b="إ%2%3"}, -- affix pr. 1st person sg.
+   -- hamzah + pr. suffix: the carrier passes into yāʾ before ī so
+   -- take out the following two lines:
+   -- {a="(')(I%p?)$", b="إ%2"}, -- affix pr. 1st person sg.
+   -- {a="(')(I)(%p?%s)", b="إ%2%3"}, -- affix pr. 1st person sg.
    {a="([^uai])(')([uai]N?%p?)$", b="%1ء%3"},
    {a="([^uai])(')([uai]N?)(%p?%s)", b="%1ء%3%4"},
 -- u
@@ -695,6 +717,7 @@
    {a="hh", b="هّ"},
    {a="ww", b="وّ"},
    {a="yy", b="يّ"},
+   {a="%.y%.y", b="ىّ"},
    -- additional characters + šaddah (begin)
    {a="pp", b="پّ"},
    {a="vv", b="ڤّ"},
@@ -714,6 +737,7 @@
    {a="%.t", b="ط"},
    {a="%.z", b="ظ"},
    {a="%.g", b="غ"},
+   {a="%.y", b="ى"},
    -- additional characters (begin)
    {a="%^c", b="چ"},
    {a="%^z", b="ژ"},
@@ -776,6 +800,8 @@
    {a="A", b="َا"},
    {a="U", b="ُو"},
    {a="I", b="ِي"},
+   {a="aY", b="aى"},
+   {a="iY", b="iى"},
    {a="Y", b="aى"}
 }
 
@@ -816,5 +842,6 @@
 null = {
    {a="%|", b=""},
    {a="([^0-9])(%-)", b="%1"},
-   {a="o[%S]-o", b=""}
+   {a="o[%S]-o", b=""},
+   {a="[%^%_](.)", b=">??<%1"}
 }



More information about the tex-live-commits mailing list