From 70cf953fa9bf475303862a31215cf8e33443651c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 24 Oct 2017 21:23:56 +0000 Subject: arabluatex (24oct17) git-svn-id: svn://tug.org/texlive/trunk@45591 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/lualatex/arabluatex/arabluatex.pdf | Bin 539040 -> 540978 bytes .../doc/lualatex/arabluatex/samples/al-Jahiz.pdf | Bin 111563 -> 111596 bytes .../doc/lualatex/arabluatex/samples/al-Jahiz.tex | 2 +- .../lualatex/arabluatex/samples/template-01.pdf | Bin 64766 -> 64520 bytes .../source/lualatex/arabluatex/README.tex | 13 +- .../source/lualatex/arabluatex/arabluatex.dtx | 150 ++++++++++++++++++--- .../tex/lualatex/arabluatex/arabluatex.lua | 9 ++ .../tex/lualatex/arabluatex/arabluatex.sty | 14 +- .../tex/lualatex/arabluatex/arabluatex_fullvoc.lua | 94 ++++++++----- .../tex/lualatex/arabluatex/arabluatex_novoc.lua | 4 +- .../tex/lualatex/arabluatex/arabluatex_trans.lua | 30 +++-- .../tex/lualatex/arabluatex/arabluatex_voc.lua | 86 +++++++----- 12 files changed, 292 insertions(+), 110 deletions(-) diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf index d411066a279..26dac588614 100644 Binary files a/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf and b/Master/texmf-dist/doc/lualatex/arabluatex/arabluatex.pdf 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 6a28adf5e28..cee74225a83 100644 Binary files a/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf and b/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.pdf differ diff --git a/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.tex b/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.tex index 3fa94b6515f..7089be51a14 100644 --- a/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.tex +++ b/Master/texmf-dist/doc/lualatex/arabluatex/samples/al-Jahiz.tex @@ -147,7 +147,7 @@ on p.~\pageref{source})} \maketitle \vspace{-1in} -\label{source} +\phantomsection\label{source} Here follows the exact source code that has been used to produce the above presented outputs. Discretionary hyphens (\mintinline{latex}|\-|) may have been inserted at some points to 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 6e1b63266d7..395a09688ca 100644 Binary files a/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf and b/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf differ diff --git a/Master/texmf-dist/source/lualatex/arabluatex/README.tex b/Master/texmf-dist/source/lualatex/arabluatex/README.tex index cb9ff8457e9..e7399a6606c 100644 --- a/Master/texmf-dist/source/lualatex/arabluatex/README.tex +++ b/Master/texmf-dist/source/lualatex/arabluatex/README.tex @@ -133,9 +133,14 @@ git clone http://git.robertalessi.net/arabluatex A new directory named arabluatex will have been created, containing -ArabLuaTeX. Git hosting - -Please, do not use GitHub or GitLab: see -\href{https://libreboot.org/git/#githosting}{there}. +ArabLuaTeX. + +\subsection*{Git hosting} +\label{sec:git-hosting} +Make an account on \url{https://notabug.org} and navigate (while +logged in) to \url{https://notabug.org/ralessi/arabluatex}. Click +\emph{Fork} and you will have in your account your own repository of +\verb|arabluatex| where you will be able to make whatever changes you +like to. \end{document} \ No newline at end of file diff --git a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx index 04175d63632..5e4cf334450 100644 --- a/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx +++ b/Master/texmf-dist/source/lualatex/arabluatex/arabluatex.dtx @@ -27,7 +27,7 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesPackage{arabluatex} %<*package-info> - [2017/07/28 v1.9.1 An ArabTeX-like interface for LuaLaTeX] + [2017/10/24 v1.9.2 An ArabTeX-like interface for LuaLaTeX] % % %<*driver> @@ -155,7 +155,7 @@ \defaultfontfeatures{RawFeature={+liga}} \setmainfont{Old Standard}[SmallCapsFont={Latin Modern Roman Caps}, RawFeature={+mark;+ccmp;+ss05;+ss06}] -\usepackage{arabluatex}[2017/07/28] +\usepackage{arabluatex}[2017/10/24] \usepackage[nopar]{quran} \usepackage{varioref} \usepackage{hyperxmp} @@ -227,7 +227,7 @@ % % \fi % -% \CheckSum{704} +% \CheckSum{707} % % \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 @@ -558,6 +558,22 @@ % \item The euphonic \arb[trans]{ta^sdId} is generated (see % \vpageref{ref:euphonic-tashdid}). % \item In |fullvoc| mode, the \arb[trans]{sukUn} is expressed. +% \item In such words as \arb{^say'aN}, \arb{.zim'aN} and the like, +% the \arb[trans]{hamzaT} alone is not written over the letter +% \arb[trans]{yA'} with no diacritical points below as in +% \arb{sayy"'aN}, \arb{.zimy"'aN}, but over a horizontal stroke +% placed in the continuation of the preceding letter. % +% \iffalse +%<*example> +% \fi +\begin{arabluacode}[text only] +Please note that only few Arabic fonts provide such contrivances. In +case this feature is not supported by some Arabic font, it is +advisable to use \cs{SetArbEasy}. +\end{arabluacode} +% \iffalse +% +% \fi % \end{compactitem} % % \DescribeMacro{\SetArbEasy} \NEWfeature{v1.4.4} @@ -793,7 +809,7 @@ vowels (see §~3). % \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|\footnote{For -% the letter \arb[novoc]{.y} with no diacritical point below, see +% the letter \arb[novoc]{.y} with no diacritical points below, see % \emph{Rem{.} b.} below.} \\ % \arb[novoc]{T} & \dmg{aT} & \loc{aT} & \brill{aT} & |T| \\ % \bottomrule @@ -1173,13 +1189,16 @@ vowels (see §~3). % \arb[voc]{mas'alaTuN} \arb[trans]{mas'alaTuN}, |'as'alu| % \arb[voc]{'as'alu} \arb[trans]{'as'alu}, |yatasA'alUna| % \arb[voc]{yatasA'alUna}\linebreak \arb[trans]{yatasA'alUna}, -% |murU'aTuN| \arb[voc]{murU'aTuN} \arb[trans]{murU'aTuN}, -% |ta'xIruN| \arb[fullvoc]{ta'xIruN} \arb[trans]{ta'xIruN}, -% |ta'ax|\allowbreak|xara| \arb[voc]{ta'axxara} -% \arb[trans]{ta'axxara}, |ji'tu-ka| \arb[voc]{ji'tu-ka} -% \arb[trans]{ji'tu-ka}, |qA'iluN| \arb[voc]{qA'iluN} -% \arb[trans]{qA'iluN}, |.hIna'i_diN| \arb[trans]{.hIna'i_diN} -% \arb[voc]{.hIna'i_diN}. +% |murU'aTuN| \arb[voc]{murU'aTuN}, |taw'amuN| +% \arb[fullvoc]{taw'amuN} \arb[trans]{taw'amuN}, +% \arb[trans]{murU'aTuN}, |ta'xIruN| \arb[fullvoc]{ta'xIruN} +% \arb[trans]{ta'xIruN}, |ta'ax|\allowbreak|xara| +% \arb[voc]{ta'axxara} \arb[trans]{ta'axxara}, |ji'tu-ka| +% \arb[voc]{ji'tu-ka} \arb[trans]{ji'tu-ka}, |qA'iluN| +% \arb[voc]{qA'iluN} \arb[trans]{qA'iluN}, |.hIna'i_diN| +% \arb[trans]{.hIna'i_diN} \arb[voc]{.hIna'i_diN}, |hay'aTuN| +% \arb[voc]{hay'aTuN} \arb[trans]{hay\-'aTuN}, |hay'AtuN| +% \arb[voc]{hay'AtuN} \arb[trans]{hay'AtuN}. % % From \textcite[i. 14 B]{Wright}:--- All consonants, whatsoever, % not even \arb[trans]{'alif} \emph{hèmzatum} excepted, admit of @@ -1219,7 +1238,8 @@ vowels (see §~3). % \arb[voc]{al-^say'-u} \arb[trans]{al-^say'-u}, |'a^syA'-u| % \arb[voc]{'a^syA'-u} \arb[trans]{'a^syA'-u}, |'a^syA'-a| % \arb[voc]{'a^syA'-a} \arb[trans]{'a^syA'-a}, |.zim'aN| -% \arb[voc]{.zim'aN} \arb[trans]{.zim'aN}. +% \arb[voc]{.zim'aN} \arb[trans]{.zim'aN}, |radI'aN| +% \arb[voc]{radI'aN} \arb[trans]{radI'aN}. % % \label{ref:taxfif-hamzah} % \textbf{\arb[trans]{ta_hfIf-u 'l-hamzaT-i}}: if the @@ -1232,6 +1252,34 @@ vowels (see §~3). % of encoding such sequences, see \vpageref{ref:initial-hamza} % (\arb[trans]{hamzaT} followed by \arb[novoc]{U} and \arb[novoc]{I}) % and the \arb[trans]{maddaT} \vpageref{ref:madda}. +% +% Imperatives of verbs that have the \arb[trans]{hamzaT} as the +% first radical are other cases of \arb[trans]{ta_hfIf-u +% 'l-hamzaT-i}: |i'sir| \arb[fullvoc]{i'sir} \arb[trans]{i'sir}, +% |i'_dan| \arb[fullvoc]{i'_dan} \arb[trans]{i'_dan}, |u'mul| +% \arb[fullvoc]{u'mul} \arb[trans]{u'mul}. \package{arabluatex} +% also provides ways of encoding those words when the initial +% \arb[trans]{'alif} comes into \arb[trans]{wa.sl}, so as to make +% the \arb[trans]{'alif wa.sl} fall away when preceded by +% \arb[voc]{wa} or \arb[voc]{fa}: |wa-'sir| \arb[fullvoc]{wa-'sir} +% \arb[trans]{wa-'sir}, |fa-'_dan| \arb[fullvoc]{fa-'_dan} +% \arb[trans]{fa-'_dan}, |fa-'ti| \arb[fullvoc]{fa-'ti} +% \arb[trans]{fa-'ti}, |wa-'tamirUA| \arb[fullvoc]{wa-'tamirUA} +% \arb[trans]{wa-'tamirUA}; or be retained outside the imperative, +% as in |fa-i'tazarat| \arb[fullvoc]{fa-i'tazarat} +% \arb[trans]{fa-i'tazarat}, |ba`da| |i'tilAfiN| \arb[fullvoc]{ba`da +% i'tilAfiN} \arb[trans]{ba`da i'tilAfiN}. +% +% \textbf{The strange spelling of \arb[trans]{mi'aTuN}}: |mi'aTuN| +% \arb[voc]{mi'aTuN} \arb[trans]{mi'aTuN}, \linebreak |mi'atAni| +% \arb[voc]{mi'atAni} \arb[trans]{mi'atAni}, |mi'atayni| +% \arb[voc]{mi'atayni} \arb[trans]{mi'atayni}, |mi'Una| +% \arb[voc]{mi'Una} \arb[trans]{mi'Una}, |mi'AtuN| +% \arb[voc]{mi'AtuN} \arb[trans]{mi'AtuN}, |mi'aN_A| +% \arb[voc]{mi'aN_A} \arb[trans]{mi'aN_A}. Of course, the +% \enquote*{pipe} character may be used to prevent this rule from +% being applied (see \vref{sec:pipe}): \verb+mi'a|TuN+ +% \arb[voc]{mi'a|TuN} \arb[trans]{mi'a|TuN}. % \end{quote} % % \paragraph{\arb[trans]{maddaT}} \label{ref:madda}At the beginning of @@ -2000,9 +2048,22 @@ word that \cs{arbnull} is applied to. % \begin{quote} % |\abjad{45}:| |kitAbu-hu| |\aemph{fI| |'l-`AdAt-i}| % \arb[voc]{\abjad{45}: kitAbu-hu \aemph{fI 'l-`AdAt-i}} -% \arb[trans]{\abjad{45}: kitAbu-hu fI 'l-\cap{`AdAt-i}}. +% \arb[trans]{\abjad{45}: kitAbu-hu \aemph{fI 'l-\cap{`AdAt-i}}}. % \end{quote} -% +% +% \begin{quoting} +% \textsc{Rem.}~\emph{a.} As the above example shows, +% \package{arabluatex} places the horizontal stroke \emph{under} the +% emphasized words in any of the transliteration modes. +% +% \textsc{Rem.}~\emph{b.} \NEWfeature{v1.9.2}\DescribeMacro{\aemph*} +% \cs{aemph*} is also provided should one wish to always have the +% horizontal stroke printed over the emphasized words, like so: +% |\abjad{45}:| |kitAbu-hu| |\aemph*{fI| |'l-`AdAt-i}| +% \arb[voc]{\abjad{45}: kitAbu-hu \aemph*{fI 'l-`AdAt-i}} +% \arb[trans]{\abjad{45}: kitAbu-hu \aemph*{fI 'l-\cap{`AdAt-i}}}. +% \end{quoting} +% % \section{Arabic poetry} % \label{sec:poetry} % \NEWfeature{v1.6} \package{arabluatex} provides a special @@ -2470,7 +2531,7 @@ word that \cs{arbnull} is applied to. % \NoArbUp\arb[trans]{\cap{`amruNU}}\ArbUpDflt\,; % \item \label{ref:dmg-up-rend}As superscript text: % \arb[trans]{\cap{`amruNU}}\,; -% \item Discarded: \arb[trans]{\cap{`amr}}. +% \item \label{ref:irab-discarded}Discarded: \arb[trans]{\cap{`amr}}. % \end{compactenum} % \DescribeMacro{\arbup} By default, \package{arabluatex} applies rule % \ref{ref:dmg-up-rend}. Once delimited by a set of Lua functions, @@ -2551,6 +2612,41 @@ muhaddamaTaN mi'_danatu-hu}: \arb[trans]{ra'aytu % min mu_hA.tabati-hi 'a.had-uN bi-sayyidi-nA} \arb[trans]{mana`a % 'l-nAs-a kAffaT-aN min mu_hA.tabati-hi 'a.had-uN bi-sayyidi-nA}. % \end{quoting} +% +% \paragraph{Discarding the \arb[trans]{'i`rAb}} +% As said above (\vref{ref:irab-discarded}), the \arb[trans]{'i`rAb} +% may be discarded in some cases, as in transliterated proper names or +% book titles. \package{arabluatex} is able to render words ending +% with \arb[trans]{tA' marbU.taT} in different ways, depending on +% their function:--- +% \begin{compactenum}[(a)] +% \item Nouns followed by an adjective in apposition: |madInaT| +% |kabIraT| \arb[trans]{madInaT kabIraT}, |al-madInaT| |al-kabIraT| +% \arb[trans]{al-madInaT al-kabIraT}. +% \item Nouns followed by another noun in the genitive (contruct +% state): |.hikmaT| |al-l_ah| \arb[trans]{.hikmaT al-\cap{l}_ah}, +% |fi.d.daT| |al-darAhim| \arb[trans]{fi.d.daT al-darAhim}. +% \end{compactenum} +% \begin{quoting} +% \textsc{Rem.} It may so happen, as in the absence of the article +% before the annexed word, that \package{arabluatex} be unable to +% determine which of the above two cases the word ending with +% \arb[trans]{tA' marbU.taT} falls into. The \enquote*{pipe} +% character (see \vref{sec:pipe}) may be appended to that word to +% indicate that what follows is in the construct state: +% |\cap{r}isAlaT| |fI| |tartIb| \verb+qirA'aT|+ |kutub| +% |\cap{^g}AlInUs| \arb[trans]{\cap{r}isAlaT fI tartIb qirA'aT| +% kutub \cap{^g}AlInUs}. +% \end{quoting} +% +% +% \paragraph{Uncertain short vowels} +% In some printed books, it may happen that more than one short vowel +% be placed on a consonant in cases where the vocalization is +% uncertain or ambiguous, like so: \arb[voc]{fa`uaila}. In +% transliteration, the uncertain vowels go between slashes and are +% separated by commas: |fa`uaila| \arb[voc]{fa`uaila} +% \arb[trans]{fa`uaila}. % % \subsection{Examples} % \label{sec:examples-translit} @@ -3254,7 +3350,7 @@ wa-ya.sIru ta.hta 'l-jild-i % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{arabluatex}% -[2017/07/28 v1.9.1 An ArabTeX-like interface for LuaLaTeX] +[2017/10/24 v1.9.2 An ArabTeX-like interface for LuaLaTeX] \RequirePackage{ifluatex} % \end{macrocode} % \package{arabluatex} requires \LuaLaTeX\ of course. Issue a warning @@ -3357,12 +3453,25 @@ wa-ya.sIru ta.hta 'l-jild-i \luadirect{mkarbbreak(\luastringN{#1})}} % \end{macrocode} % \end{macro} -% \begin{macro}{\aemph} Arabic emphasis. Needs to be redefined as well. +% \begin{macro}{\aemph} Arabic emphasis. Needs to be redefined as +% well. The function is actually coded in Lua. +% \begin{macro}{\aemph*} The \enquote*{starred} version of this +% command alway puts the stroke over its argument. +% \changes{v1.9.2}{2017/10/24}{Starred version which always puts the +% stroke over its argument} % \begin{macrocode} \AtBeginDocument{\ifdef{\aemph}% - {\RenewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}} - {\NewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}}} + {\RenewDocumentCommand{\aemph}{s m}{% + \IfBooleanTF{#1}{% + $\overline{\text{#2}}$} + {\luadirect{tex.sprint(aemph(\luastringN{#2}))}}}} + {\NewDocumentCommand{\aemph}{s m}{% + \IfBooleanTF{#1}{% + $\overline{\text{#2}}$} + {\luadirect{tex.sprint(aemph(\luastringN{#2}))}}}}} % \end{macrocode} +% \end{macro} +% \end{macro} % \begin{macro}{\SetInputScheme} % \changes{v1.4}{2016/07/05}{\cs{SetInputScheme} may be used to % process other input schemes such as \enquote*{Buckwalter}} @@ -3375,7 +3484,6 @@ wa-ya.sIru ta.hta 'l-jild-i \NewDocumentCommand{\SetInputScheme}{m}{\def\al@input@scheme{#1}} % \end{macrocode} % \end{macro} -% \end{macro} % \begin{macro}{\SetArbEasy} % \changes{v1.2}{2016/05/09}{New \cs{SetArbEasy}/\cs{SetArbDflt} for % \enquote*{modern} or \enquote*{classic} Arabic styles.} @@ -3603,7 +3711,7 @@ wa-ya.sIru ta.hta 'l-jild-i \define@boolkey[al]{verse}{delim}[true]{} \define@choicekey[al]{verse}{mode}{fullvoc, voc, novoc, trans}{\def\al@mode{#1}} -\presetkeys[al]{verse}{metre=\LR{\vskip -\baselineskip}, utf=false, +\presetkeys[al]{verse}{metre={}, utf=false, delim=false}{} % \end{macrocode} % Then follows the environment itself: diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua index 48e59871033..f6890edc432 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.lua @@ -719,3 +719,12 @@ function abraces(str) end return str end + +function aemph(str) + if tex.textdir == "TRT" then + str = "$\\overline{\\text{"..str.."}}$" + elseif tex.textdir == "TLT" then + str = "$\\underline{\\text{"..str.."}}$" + end + return str +end diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex.sty index fc4b56a83b2..e5a687c4f0e 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/07/28 v1.9.1 An ArabTeX-like interface for LuaLaTeX] +[2017/10/24 v1.9.2 An ArabTeX-like interface for LuaLaTeX] \RequirePackage{ifluatex} \ifluatex\else \PackageError{arabluatex}{lualatex needed}{% @@ -87,8 +87,14 @@ \DeclareDocumentCommand{\MkArbBreak}{m}{% \luadirect{mkarbbreak(\luastringN{#1})}} \AtBeginDocument{\ifdef{\aemph}% - {\RenewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}} - {\NewDocumentCommand{\aemph}{m}{$\overline{\text{#1}}$}}} + {\RenewDocumentCommand{\aemph}{s m}{% + \IfBooleanTF{#1}{% + $\overline{\text{#2}}$} + {\luadirect{tex.sprint(aemph(\luastringN{#2}))}}}} + {\NewDocumentCommand{\aemph}{s m}{% + \IfBooleanTF{#1}{% + $\overline{\text{#2}}$} + {\luadirect{tex.sprint(aemph(\luastringN{#2}))}}}}} \def\al@input@scheme{arabtex} \NewDocumentCommand{\SetInputScheme}{m}{\def\al@input@scheme{#1}} \def\al@arb@rules{dflt} @@ -186,7 +192,7 @@ \define@boolkey[al]{verse}{delim}[true]{} \define@choicekey[al]{verse}{mode}{fullvoc, voc, novoc, trans}{\def\al@mode{#1}} -\presetkeys[al]{verse}{metre=\LR{\vskip -\baselineskip}, utf=false, +\presetkeys[al]{verse}{metre={}, utf=false, delim=false}{} \NewDocumentEnvironment{arabverse}{O{}}% {\par\centering\noindent\bgroup\setkeys[al]{verse}[metre]{#1}% diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua index b7237dbdf60..769b8416b9a 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_fullvoc.lua @@ -58,10 +58,15 @@ hamzafv = { {a="%'%_I", b="إI"}, -- taḫfīfu 'l-hamza {a="'u'([^uaiUAI])", b="أU%1"}, - {a="'i'([^uaiUAI])", b="إI%1"}, + {a="'i'([^uaiUAI])", b="إI%1"}, + {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أْ%2"}, + {a="^u'([^uaiUAI])", b="اU%1"}, + {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1اU%2"}, + {a="^i'([^uaiUAI])", b="اI%1"}, + {a="([^uaiUAIYN][%s%(%[%<])i'([^uaiUAI])", b="%1اI%2"}, -- madda (historic writing below) {a="'a'([^uaiUAI])", b="آ%1"}, - {a="([^uiUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, + {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, {a="(A)(')(uN?%p?)$", b="aآء%3"}, @@ -90,15 +95,15 @@ hamzafv = { {a="([%s%(%[%<%-])(')([ua])", b="%1أ%3"}, {a="([%s%(%[%<%-])(')(i)", b="%1إ%3"}, -- final - -- ^say'aN and .zim'aN are special orthographies - {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, - {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, - -- 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"}, + -- mi'aT is special orthography (unlike ^say'aN and .zim'aN): + -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new + -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new + {a="(mi)(%')(a[Tt])", b="%1ائ%3"}, + {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, + -- final hamzah is on the line after a letter of prolongation or a + -- consonant with sukūn + {a="([^Auai])(')(\"?[uai]N?)(%p?)$", b="%1ء%3%4"}, --new + {a="([^Auai])(')(\"?[uai]N?)(%p?%s)", b="%1ء%3%4"}, -- u {a="(u)(')([uai]N?%p?)$", b="%1ؤ%3"}, {a="(u)(')([uai]N?)(%p?%s)", b="%1ؤ%3%4"}, @@ -124,8 +129,8 @@ hamzafv = { {a="(i)(')(%p?%s)", b="%1ئْ%3"}, -- -- middle - {a="(U)(')", b="%1ء"}, - {a="([Iy])(')", b="%1ئ"}, + {a="([UIwy])(')", b="%1ء"}, --new + -- {a="([Iy])(')", b="%1ئ"}, --included in the above line {a="([^uai])(')([uU])", b="%1ؤ%3"}, {a="([^uai])(')(%_?[aAY])", b="%1أ%3"}, {a="([^uai])(')([iI])", b="%1ئ%3"}, @@ -179,10 +184,15 @@ hamzafveasy = { -- differences marked below with 'easy' {a="%'%_I", b="إI"}, -- taḫfīfu 'l-hamza {a="'u'([^uaiUAI])", b="أU%1"}, - {a="'i'([^uaiUAI])", b="إI%1"}, + {a="'i'([^uaiUAI])", b="إI%1"}, + {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أْ%2"}, + {a="^u'([^uaiUAI])", b="اU%1"}, + {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1اU%2"}, + {a="^i'([^uaiUAI])", b="اI%1"}, + {a="([^uaiUAIYN][%s%(%[%<])i'([^uaiUAI])", b="%1اI%2"}, -- madda (historic writing below) {a="'a'([^uaiUAI])", b="آ%1"}, - {a="([^uiUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, + {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, --easy (begin) @@ -213,15 +223,25 @@ hamzafveasy = { -- differences marked below with 'easy' {a="([%s%(%[%<%-])(')([ua])", b="%1أ%3"}, {a="([%s%(%[%<%-])(')(i)", b="%1إ%3"}, -- final - -- ^say'aN and .zim'aN are special orthographies - {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, - {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, - -- 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"}, + -- mi'aT is special orthography (unlike ^say'aN and .zim'aN) + -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new + -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new + {a="(mi)(%')(a[Tt])", b="%1ائ%3"}, + {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, + -- easy (begin) + -- The Munjid says that such words as radI'aN do not have the + -- hamzah alone on the line, so take out the following two lines + -- (final hamzah is on the line after a letter of prolongation or a + -- consonant with sukūn) + -- {a="([^Auai])(')(\"?[uai]N?)(%p?)$", b="%1ء%3%4"}, --new + -- {a="([^Auai])(')(\"?[uai]N?)(%p?%s)", b="%1ء%3%4"}, + {a="([^Auai])(')(\"?aN)(%p?)$", b="%1ئ%3%4"}, --new + {a="([^Auai])(')(\"?aN)(%p?%s)", b="%1ئ%3%4"}, --new + {a="([^uai])(')(\"?a)(%p?)$", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?a)(%p?%s)", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?[ui]N?)(%p?)$", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?[ui]N?)(%p?%s)", b="%1ء%3%4"}, --new + --easy (end) -- u {a="(u)(')([uai]N?%p?)$", b="%1ؤ%3"}, {a="(u)(')([uai]N?)(%p?%s)", b="%1ؤ%3%4"}, @@ -247,8 +267,8 @@ hamzafveasy = { -- differences marked below with 'easy' {a="(i)(')(%p?%s)", b="%1ئْ%3"}, -- -- middle - {a="(U)(')", b="%1ء"}, - {a="([Iy])(')", b="%1ئ"}, + {a="([Uw])(')", b="%1ء"}, --new + {a="([Iy])(')", b="%1ئ"}, --easy {a="([^uai])(')([uU])", b="%1ؤ%3"}, {a="([^uai])(')(%_?[aAY])", b="%1أ%3"}, {a="([^uai])(')([iI])", b="%1ئ%3"}, @@ -287,7 +307,7 @@ tanwinfv = { -- with assimilations (\SetArbDflt*) {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, - {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, + {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, -- assimilations (end) @@ -299,7 +319,7 @@ tanwinfv = { -- with assimilations (\SetArbDflt*) {a="%-?(\"aN)(_A)", b="ى"}, {a="%-?(\"aN)(Y)", b="ى"}, {a="(T)%-?(\"aN)", b="%1"}, - {a="(ء)%-?(\"aN)", b="%1"}, + {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new {a="([^TA])%-?(\"aN)", b="%1ا"}, {a="%-?(\"iNI?)", b=""}, -- quoted tanwīn (end) @@ -308,7 +328,7 @@ tanwinfv = { -- with assimilations (\SetArbDflt*) {a="%-?(aN)(_A)", b="ًى"}, {a="%-?(aN)(Y)", b="ًى"}, {a="(T)%-?(aN)", b="%1ً"}, - {a="(ء)%-?(aN)", b="%1ً"}, + {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new {a="([^TA])%-?(aN)", b="%1ًا"}, {a="%-?(iNI?)", b="ٍ"} } @@ -334,7 +354,7 @@ tanwinfveasy = { -- no assimilations (see below) --easy {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, --easy {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, --easy {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, ---easy {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, +--easy {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new --easy {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, --easy {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, -- assimilations (end) @@ -346,7 +366,7 @@ tanwinfveasy = { -- no assimilations (see below) {a="%-?(\"aN)(_A)", b="ى"}, {a="%-?(\"aN)(Y)", b="ى"}, {a="(T)%-?(\"aN)", b="%1"}, - {a="(ء)%-?(\"aN)", b="%1"}, + {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new {a="([^TA])%-?(\"aN)", b="%1ا"}, {a="%-?(\"iNI?)", b=""}, -- quoted tanwīn (end) @@ -355,7 +375,7 @@ tanwinfveasy = { -- no assimilations (see below) {a="%-?(aN)(_A)", b="ًى"}, {a="%-?(aN)(Y)", b="ًى"}, {a="(T)%-?(aN)", b="%1ً"}, - {a="(ء)%-?(aN)", b="%1ً"}, + {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new {a="([^TA])%-?(aN)", b="%1ًا"}, {a="%-?(iNI?)", b="ٍ"} } @@ -520,7 +540,7 @@ trigraphsfveasy = { -- trigraphs or more (see 'easy' tag below for the diffs) } digraphsfvidgham = { - -- iʿrāb: straight double quote must be discarded + -- ʾiʿrāb: straight double quote must be discarded {a="(%-)(\"?[UI]na)(%p?%s)", b="%2%3"}, {a="(%-)(\"?[UI]na)(%p?)$", b="%2%3"}, {a="(%-)(\"?At[ui])(%p?%s)", b="%2%3"}, @@ -544,7 +564,7 @@ digraphsfvidgham = { {a="(ay)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1i%2%3ٱ"}, --p -- hyphen + initial alif without hamza -- {a="([uai]%-)(\"?[uai])", b="%1ٱ"}, - {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)(%a)", b="%1ٱ%3%4"}, + {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)([%aأإؤئ])", b="%1ٱ%3%4"}, -- initial alif without hamza (next 4 lines) {a="(o[%S]-)([uaiUAIY])(o)(\"?[uai])", b="ٱ"}, {a="([%_]?[uaiUAIY])(%s[%(%[%|%<]?)(\"?[uai])", b="%1%2ٱ"}, --p @@ -671,7 +691,7 @@ digraphsfv = { {a="(ay)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1i%2%3ٱ"}, --p -- hyphen + initial alif without hamza -- {a="([uai]%-)(\"?[uai])", b="%1ٱ"}, - {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)(%a)", b="%1ٱ%3%4"}, + {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)([%aأإؤئ])", b="%1ٱ%3%4"}, -- initial alif without hamza (next 4 lines) {a="(o[%S]-)([uaiUAIY])(o)(\"?[uai])", b="ٱ"}, {a="([%_]?[uaiUAIY])(%s[%(%[%|%<]?)(\"?[uai])", b="%1%2ٱ"}, --p @@ -774,7 +794,7 @@ digraphsfv = { } digraphsfveasy = { -- see the differences under 'easy' marker below - -- iʿrāb: straight double quote must be discarded + -- ʾiʿrāb: straight double quote must be discarded {a="(%-)(\"?[UI]na)(%p?%s)", b="%2%3"}, {a="(%-)(\"?[UI]na)(%p?)$", b="%2%3"}, {a="(%-)(\"?At[ui])(%p?%s)", b="%2%3"}, @@ -798,7 +818,7 @@ digraphsfveasy = { -- see the differences under 'easy' marker below {a="(ay)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1i%2%3ٱ"}, --p -- hyphen + initial alif without hamza -- {a="([uai]%-)(\"?[uai])", b="%1ٱ"}, - {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)(%a)", b="%1ٱ%3%4"}, + {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)([%aأإؤئ])", b="%1ٱ%3%4"}, -- initial alif without hamza (next 4 lines) {a="(o[%S]-)([uaiUAIY])(o)(\"?[uai])", b="ٱ"}, {a="([%_]?[uaiUAIY])(%s[%(%[%|%<]?)(\"?[uai])", b="%1%2ٱ"}, --p diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua index caf66f90dfe..77f6568fe40 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_novoc.lua @@ -47,7 +47,7 @@ tanwinnv = { {a="%-?(\"aN)(_A)", b="ًى"}, {a="%-?(\"aN)(Y)", b="ًى"}, {a="(T)%-?(\"aN)", b="%1ً"}, - {a="(ء)%-?(\"aN)", b="%1ً"}, + {a="([اآ])(ء)%-?(\"aN)", b="%1%2ً"}, --new {a="([^TA])%-?(\"aN)", b="%1ًا"}, {a="%-?(\"iNI?)", b="ٍ"}, -- "quoted" tanwīn (end) @@ -56,7 +56,7 @@ tanwinnv = { {a="%-?(aN)(_A)", b="ى"}, {a="%-?(aN)(Y)", b="ى"}, {a="(T)%-?(aN)", b="%1"}, - {a="(ء)%-?(aN)", b="%1"}, + {a="([اآ])(ء)%-?(aN)", b="%1%2"}, --new {a="([^TA])%-?(aN)", b="%1ا"}, {a="%-?(iNI?)", b=""}, -- initial straight double quote gives a connective ʾalif. This has diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua index 23ecf2cc7c6..0f9043efc68 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_trans.lua @@ -100,6 +100,10 @@ hamzatrdmg = { -- taḫfīfu 'l-hamza {a="'u'([^uaiUAI])", b="ʾU%1"}, {a="'i'([^uaiUAI])", b="ʾI%1"}, + {a="^u'([^uaiUAI])", b="U%1"}, + {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1U%2"}, + {a="^i'([^uaiUAI])", b="I%1"}, + {a="([^uaiUAIYN][%s%(%[%<])i'([^uaiUAI])", b="%1I%2"}, -- madda (historic writing below) {a="'a'([^uaiUAI])", b="ʾA%1"}, {a="'a?A", b="ʾA"}, @@ -441,6 +445,8 @@ longvtrdmg = { } shortvtrdmg = { + {a="([uai])([uai])([uai])", b="/%1,%2,%3/"}, + {a="([uai])([uai])", b="/%1,%2/"}, {a="u", b="u"}, {a="a", b="a"}, {a="i", b="i"} @@ -468,11 +474,13 @@ hamzatrloc = { {a="%'%_I", b="I"}, -- taḫfīfu 'l-hamza {a="^'u'([^uaiUAI])", b="U%1"}, - {a="(%W)'u'([^uaiUAI])", b="%1U%2"}, - {a="'u'([^uaiUAI])", b="ʾU"}, + {a="([%s%(%[%<%-])'u'([^uaiUAI])", b="%1U%2"}, {a="^'i'([^uaiUAI])", b="I%1"}, - {a="(%W)'i'([^uaiUAI])", b="%1I%2"}, - {a="'i'([^uaiUAI])", b="ʾI"}, + {a="([%s%(%[%<%-])'i'([^uaiUAI])", b="%1I%2"}, + {a="^u'([^uaiUAI])", b="U%1"}, + {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1U%2"}, + {a="^i'([^uaiUAI])", b="I%1"}, + {a="([^uaiUAIYN][%s%(%[%<])i'([^uaiUAI])", b="%1I%2"}, -- madda (historic writing below) {a="^(')(A)", b="%2"}, {a="(%W)(')(A)", b="%1%3"}, @@ -621,6 +629,7 @@ digraphstrloc = { -- {a="T([^uai])", b="h%1"}, {a="([a%']l%-)(%S-)T([%(%[%|%<%s])(al%-)", b="%1%2h%3%4"}, --p {a="T([%(%[%|%<%s])(al%-)", b="t%1%2"}, --p + {a="T([%|\"])", b="t%1"}, {a="T(%p?)$", b="h%1"}, {a="T(%p?%s)", b="h%1"}, {a="_t", b="th"}, @@ -694,6 +703,8 @@ longvtrloc = { } shortvtrloc = { + {a="([uai])([uai])([uai])", b="/%1,%2,%3/"}, + {a="([uai])([uai])", b="/%1,%2/"}, {a="u", b="u"}, {a="a", b="a"}, {a="i", b="i"} @@ -725,11 +736,13 @@ hamzatrarabica = { -- ≠ from hamzatrloc: initial hamza has to be held {a="%'%_I", b="I"}, -- taḫfīfu 'l-hamza {a="^'u'([^uaiUAI])", b="U%1"}, - {a="(%W)'u'([^uaiUAI])", b="%1U%2"}, - {a="'u'([^uaiUAI])", b="ʾU"}, + {a="([%s%(%[%<%-])'u'([^uaiUAI])", b="%1U%2"}, {a="^'i'([^uaiUAI])", b="I%1"}, - {a="(%W)'i'([^uaiUAI])", b="%1I%2"}, - {a="'i'([^uaiUAI])", b="ʾI"}, + {a="([%s%(%[%<%-])'i'([^uaiUAI])", b="%1I%2"}, + {a="^u'([^uaiUAI])", b="U%1"}, + {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1U%2"}, + {a="^i'([^uaiUAI])", b="I%1"}, + {a="([^uaiUAIYN][%s%(%[%<])i'([^uaiUAI])", b="%1I%2"}, -- madda (historic writing below) {a="^(')(A)", b="%2"}, {a="(%W)(')(A)", b="%1%3"}, @@ -866,6 +879,7 @@ digraphstrarabica = { -- {a="T([^uai])", b="h%1"}, {a="([a%']l%-)(%S-)aT([%(%[%|%<%s])(al%-)", b="%1%2a%3%4"}, --p {a="aT([%(%[%|%<%s])(al%-)", b="at%1%2"}, --p + {a="T([%|\"])", b="t%1"}, {a="aT(%p?)$", b="a%1"}, {a="aT(%p?%s)", b="a%1"}, {a="_t", b="ṯ"}, diff --git a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua index 09133043bef..4d9473a4eed 100644 --- a/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua +++ b/Master/texmf-dist/tex/lualatex/arabluatex/arabluatex_voc.lua @@ -194,10 +194,15 @@ hamza = { {a="%'%_I", b="إI"}, -- taḫfīfu 'l-hamza {a="'u'([^uaiUAI])", b="أU%1"}, - {a="'i'([^uaiUAI])", b="إI%1"}, + {a="'i'([^uaiUAI])", b="إI%1"}, + {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أْ%2"}, + {a="^u'([^uaiUAI])", b="اU%1"}, + {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1اU%2"}, + {a="^i'([^uaiUAI])", b="اI%1"}, + {a="([^uaiUAIYN][%s%(%[%<])i'([^uaiUAI])", b="%1اI%2"}, -- madda (historic writing below) {a="'a'([^uaiUAI])", b="آ%1"}, - {a="([^uiUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, + {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, {a="(A)(')(uN?%p?)$", b="aآء%3"}, @@ -226,15 +231,15 @@ hamza = { {a="([%s%(%[%<%-])(')([ua])", b="%1أ%3"}, {a="([%s%(%[%<%-])(')(i)", b="%1إ%3"}, -- final - -- ^say'aN and .zim'aN are special orthographies - {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, - {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, - -- 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"}, + -- mi'aT is special orthography (unlike ^say'aN and .zim'aN): + -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new + -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new + {a="(mi)(%')(a[Tt])", b="%1ائ%3"}, + {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, + -- final hamzah is on the line after a letter of prolongation or a + -- consonant with sukūn + {a="([^Auai])(')(\"?[uai]N?)(%p?)$", b="%1ء%3%4"}, --new + {a="([^Auai])(')(\"?[uai]N?)(%p?%s)", b="%1ء%3%4"}, -- u {a="(u)(')([uai]N?%p?)$", b="%1ؤ%3"}, {a="(u)(')([uai]N?)(%p?%s)", b="%1ؤ%3%4"}, @@ -260,8 +265,8 @@ hamza = { {a="(i)(')(%p?%s)", b="%1ئ%3"}, -- -- middle - {a="(U)(')", b="%1ء"}, - {a="([Iy])(')", b="%1ئ"}, + {a="([UIwy])(')", b="%1ء"}, --new + -- {a="([Iy])(')", b="%1ئ"}, -- included in the above line {a="([^uai])(')([uU])", b="%1ؤ%3"}, {a="([^uai])(')(%_?[aAY])", b="%1أ%3"}, {a="([^uai])(')([iI])", b="%1ئ%3"}, @@ -306,10 +311,15 @@ hamzaeasy = { -- differences marked below with 'easy' {a="%'%_I", b="إI"}, -- taḫfīfu 'l-hamza {a="'u'([^uaiUAI])", b="أU%1"}, - {a="'i'([^uaiUAI])", b="إI%1"}, + {a="'i'([^uaiUAI])", b="إI%1"}, + {a="([wf]a)%-\'([^uaiUAIl][^%-])", b="%1أْ%2"}, + {a="^u'([^uaiUAI])", b="اU%1"}, + {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1اU%2"}, + {a="^i'([^uaiUAI])", b="اI%1"}, + {a="([^uaiUAIYN][%s%(%[%<])i'([^uaiUAI])", b="%1اI%2"}, -- madda (historic writing below) {a="'a'([^uaiUAI])", b="آ%1"}, - {a="([^uiUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, + {a="([^uiyUI])\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, {a="^\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="آ%1"}, {a="(%W)\'a?A([%_%^%.]?[%`%'btjghxdrzsfqklmnywAY])", b="%1آ%2"}, --easy (begin) @@ -340,15 +350,25 @@ hamzaeasy = { -- differences marked below with 'easy' {a="([%s%(%[%<%-])(')([ua])", b="%1أ%3"}, {a="([%s%(%[%<%-])(')(i)", b="%1إ%3"}, -- final - -- ^say'aN and .zim'aN are special orthographies - {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, - {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, - -- 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"}, + -- mi'aT is special orthography (unlike ^say'aN and .zim'aN) + -- {a="(%^sa%.?[yY])(\"?%|?)(%')(aN)", b="%1%2ئ%4"}, --new + -- {a="(.zi?m)(%')(aN)", b="%1ئ%3"}, --new + {a="(mi)(%')(a[Tt])", b="%1ائ%3"}, + {a="(mi)(%')(aN%_?[AY])", b="%1أ%3"}, + -- easy (begin) + -- The Munjid says that such words as radI'aN do not have the + -- hamzah alone on the line, so take out the following two lines + -- (final hamzah is on the line after a letter of prolongation or a + -- consonant with sukūn) + -- {a="([^Auai])(')(\"?[uai]N?)(%p?)$", b="%1ء%3%4"}, --new + -- {a="([^Auai])(')(\"?[uai]N?)(%p?%s)", b="%1ء%3%4"}, + {a="([^Auai])(')(\"?aN)(%p?)$", b="%1ئ%3%4"}, --new + {a="([^Auai])(')(\"?aN)(%p?%s)", b="%1ئ%3%4"}, --new + {a="([^uai])(')(\"?a)(%p?)$", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?a)(%p?%s)", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?[ui]N?)(%p?)$", b="%1ء%3%4"}, --new + {a="([^uai])(')(\"?[ui]N?)(%p?%s)", b="%1ء%3%4"}, --new + --easy (end) -- u {a="(u)(')([uai]N?%p?)$", b="%1ؤ%3"}, {a="(u)(')([uai]N?)(%p?%s)", b="%1ؤ%3%4"}, @@ -374,8 +394,8 @@ hamzaeasy = { -- differences marked below with 'easy' {a="(i)(')(%p?%s)", b="%1ئ%3"}, -- -- middle - {a="(U)(')", b="%1ء"}, - {a="([Iy])(')", b="%1ئ"}, + {a="([Uw])(')", b="%1ء"}, --new + {a="([Iy])(')", b="%1ئ"}, --easy {a="([^uai])(')([uU])", b="%1ؤ%3"}, {a="([^uai])(')(%_?[aAY])", b="%1أ%3"}, {a="([^uai])(')([iI])", b="%1ئ%3"}, @@ -409,7 +429,7 @@ tanwin = { {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, - {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, + {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, -- assimilations (end) @@ -421,7 +441,7 @@ tanwin = { {a="%-?(\"aN)(_A)", b="ى"}, {a="%-?(\"aN)(Y)", b="ى"}, {a="(T)%-?(\"aN)", b="%1"}, - {a="(ء)%-?(\"aN)", b="%1"}, + {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new {a="([^TA])%-?(\"aN)", b="%1ا"}, {a="%-?(\"iNI?)", b=""}, -- quoted tanwīn (end) @@ -430,7 +450,7 @@ tanwin = { {a="%-?(aN)(_A)", b="ًى"}, {a="%-?(aN)(Y)", b="ًى"}, {a="(T)%-?(aN)", b="%1ً"}, - {a="(ء)%-?(aN)", b="%1ً"}, + {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new {a="([^TA])%-?(aN)", b="%1ًا"}, {a="%-?(iNI?)", b="ٍ"} } @@ -451,7 +471,7 @@ tanwineasy = { -- 'easy' requires some lines to be taken out: -- {a="%-?(aN)(_A)(%s)([rlmnwy])", b="ًى%3%4%4"}, -- {a="%-?(aN)(Y)(%s)([rlmnwy])", b="ًى%3%4%4"}, -- {a="(T)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, --- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1ً%3%4%4"}, +-- {a="(ء)%-?(aN)(%s)([rlmnwy])", b="%1%2%3%4%4"}, --new -- {a="([^TA])%-?(aN)(%s)([rlmnwy])", b="%1ًا%3%4%4"}, -- {a="%-?(iNI?)(%s)([rlmnwy])", b="ٍ%2%3%3"}, -- assimilations (end) @@ -463,7 +483,7 @@ tanwineasy = { -- 'easy' requires some lines to be taken out: {a="%-?(\"aN)(_A)", b="ى"}, {a="%-?(\"aN)(Y)", b="ى"}, {a="(T)%-?(\"aN)", b="%1"}, - {a="(ء)%-?(\"aN)", b="%1"}, + {a="([اآ])(ء)%-?(\"aN)", b="%1%2"}, --new {a="([^TA])%-?(\"aN)", b="%1ا"}, {a="%-?(\"iNI?)", b=""}, -- quoted tanwīn (end) @@ -472,7 +492,7 @@ tanwineasy = { -- 'easy' requires some lines to be taken out: {a="%-?(aN)(_A)", b="ًى"}, {a="%-?(aN)(Y)", b="ًى"}, {a="(T)%-?(aN)", b="%1ً"}, - {a="(ء)%-?(aN)", b="%1ً"}, + {a="([اآ])(ء)%-?(aN)", b="%1%2ً"}, --new {a="([^TA])%-?(aN)", b="%1ًا"}, {a="%-?(iNI?)", b="ٍ"} } @@ -674,7 +694,7 @@ digraphs = { {a="(ay)(o)(\"?[uai])([%S]-o)", b="%1i"}, {a="(ay)(%s)([%(%[%|%<]?)(\"?[uai])", b="%1i%2%3ا"}, --p -- hyphen + initial alif without hamza: - {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)(%a)", b="%1ا%3%4"}, + {a="([uai]%-)(\"?[uai])([%^%_%.%`]?)([%aإأؤئ])", b="%1ا%3%4"}, -- initial alif without hamza {a="^([%(%[%|%<]?)(\"?[uai])", b="%1ا%2"}, --p -- initial alif without hamza -- cgit v1.2.3