summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-07-05 21:09:03 +0000
committerKarl Berry <karl@freefriends.org>2017-07-05 21:09:03 +0000
commitef1531fb8bdf4a1e28e97cc10e3aacd9228e7d0c (patch)
treeffb320f47bca9a18c20a5f9436dc0c73f737ad64
parent1481c02c171fb8ab30680dc4f3fbc5b872f2de16 (diff)
arabluatex (5jul17)
git-svn-id: svn://tug.org/texlive/trunk@44754 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdfbin521600 -> 539554 bytes
-rw-r--r--Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdfbin111560 -> 111560 bytes
-rw-r--r--Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdfbin64539 -> 64797 bytes
-rw-r--r--Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx190
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua43
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty4
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua60
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua52
-rw-r--r--Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua49
9 files changed, 327 insertions, 71 deletions
diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf
index 2515a278857..ef777788c01 100644
--- a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf
+++ b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf
index fe378d0b2e9..613ae832b67 100644
--- a/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf
+++ b/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf
index f24f76a488e..16cee35f2a1 100644
--- a/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf
+++ b/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx
index 4da27457c37..3cd91982679 100644
--- a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx
+++ b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx
@@ -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 @@ vowels (see §~3).
% & \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,11 +792,45 @@ vowels (see §~3).
% \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
@@ -822,7 +858,7 @@ vowels (see §~3).
% 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 @@ vowels (see §~3).
% \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 @@ vowels (see §~3).
% \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 @@ vowels (see §~3).
% |.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 @@ al-muqAtil-Ina.}, wa-kAnat 'ummI min `u.zamA'-i buyUt-i
% \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 @@ qAla barzawayhi bn-u 'azhar-a, ra's-u 'a.tibbA'-i fAris-a...
%</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 @@ qAla barzawayhi bn-u 'azhar-a, ra's-u 'a.tibbA'-i fAris-a...
% 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 @@ wa-ya.sIru ta.hta 'l-jild-i
% \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 @@ wa-ya.sIru ta.hta 'l-jild-i
{\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}%
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
index 86445887daf..48e59871033 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua
@@ -46,7 +46,33 @@ local function unprotectarb(str)
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 @@ local function breakcmd(str)
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 @@ local function fullvoceasy(str, rules)
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)
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty
index 57ea04b745a..8914c3115b5 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty
@@ -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}}$}}}
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua
index 99efb752791..919a35ed2a3 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua
@@ -25,6 +25,12 @@ along with this program. If not, see
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 @@ hamzafv = {
-- 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 @@ hamzafv = {
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 @@ hamzafveasy = { -- differences marked below with 'easy'
-- 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 @@ digraphsfvidgham = {
{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 @@ digraphsfvidgham = {
-- 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 @@ digraphsfvidgham = {
{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 @@ digraphsfv = {
{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 @@ digraphsfv = {
-- 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 @@ digraphsfv = {
{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 @@ digraphsfveasy = { -- see the differences under 'easy' marker below
{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 @@ digraphsfveasy = { -- see the differences under 'easy' marker below
-- 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 @@ digraphsfveasy = { -- see the differences under 'easy' marker below
{a="%.t", b="ط"},
{a="%.z", b="ظ"},
{a="%.g", b="غ"},
+ {a="%.y", b="ى"},
-- additional characters (begin)
{a="%^c", b="چ"},
{a="%^z", b="ژ"},
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua
index 35f4b677cf6..404ae220a58 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua
@@ -31,7 +31,8 @@ punctuationtr = {
nulltr = {
{a="%|", b=""},
- {a="o[%S]-o", b=""}
+ {a="o[%S]-o", b=""},
+ {a="[%^%_](.)", b="<??>%1"}
}
-- cap
@@ -71,6 +72,17 @@ captr = {
-- 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 @@ hamzatrdmg = {
-- 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 @@ trigraphstrdmg = { -- trigraphs or more
{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 @@ digraphstrdmg = {
{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 @@ longvtrdmg = {
{a="A", b="ā"},
{a="U", b="ū"},
{a="I", b="ī"},
+ {a="aY", b="ay"},
+ {a="iY", b="ī"},
{a="Y", b="ạ̄"}
}
@@ -431,6 +449,9 @@ shortvtrdmg = {
-- 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 @@ hamzatrloc = {
-- 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 @@ digraphstrloc = {
{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 @@ longvtrloc = {
{a="A", b="ā"},
{a="U", b="ū"},
{a="I", b="ī"},
+ {a="aY", b="ay"},
+ {a="iY", b="ī"},
{a="Y", b="á"},
}
@@ -679,6 +706,9 @@ finaltrloc = {
-- 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 @@ hamzatrarabica = { -- ≠ from hamzatrloc: initial hamza has to be held
-- 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 @@ digraphstrarabica = {
{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 @@ singletrarabica = {
}
longvtrarabica = {
+ {a="aY", b="ay"},
+ {a="iY", b="ī"},
{a="[AY]", b="ā"},
{a="U", b="ū"},
{a="I", b="ī"}
diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua
index 6c63a883c49..ca1aa99ca87 100644
--- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua
+++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua
@@ -170,6 +170,12 @@ buckwalter = {
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 @@ hamza = {
-- 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 @@ hamza = {
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 @@ hamzaeasy = { -- differences marked below with 'easy'
-- 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 @@ digraphs = {
{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 @@ digraphs = {
{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 @@ longv = {
{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 @@ punctuation = {
null = {
{a="%|", b=""},
{a="([^0-9])(%-)", b="%1"},
- {a="o[%S]-o", b=""}
+ {a="o[%S]-o", b=""},
+ {a="[%^%_](.)", b=">??<%1"}
}