From ef1531fb8bdf4a1e28e97cc10e3aacd9228e7d0c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 5 Jul 2017 21:09:03 +0000 Subject: arabluatex (5jul17) git-svn-id: svn://tug.org/texlive/trunk@44754 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/lualatex/arabluatex/arabluatex.pdf | Bin 521600 -> 539554 bytes .../doc/lualatex/arabluatex/samples/al-Jahiz.pdf | Bin 111560 -> 111560 bytes .../lualatex/arabluatex/samples/template-01.pdf | Bin 64539 -> 64797 bytes .../source/lualatex/arabluatex/arabluatex.dtx | 190 +++++++++++++++++---- .../tex/lualatex/arabluatex/arabluatex.lua | 43 ++++- .../tex/lualatex/arabluatex/arabluatex.sty | 4 +- .../tex/lualatex/arabluatex/arabluatex_fullvoc.lua | 60 +++++-- .../tex/lualatex/arabluatex/arabluatex_trans.lua | 52 +++++- .../tex/lualatex/arabluatex/arabluatex_voc.lua | 49 ++++-- 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 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 fe378d0b2e9..613ae832b67 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/template-01.pdf b/Master/texmf-dist/doc/lualatex/arabluatex/samples/template-01.pdf index f24f76a488e..16cee35f2a1 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/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 @@ %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\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] % % %<*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 @@ % % \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 -% -% \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... % % \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 +% +% \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 +% +% \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"} } -- cgit v1.2.3