Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better support for Arabic math #633

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Try to implement Arabic math mapping
  • Loading branch information
khaledhosny committed Mar 31, 2024
commit 95f25acd0d38a69ac29f31eee8e1be6dce204931
18 changes: 18 additions & 0 deletions um-code-alphabets.dtx
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,16 @@
\@@_set_mathalphabet_greek:nnn {literal} {it} {it}
}

\@@_new_alphabet_config:nnn {up} {arabic}
{
\bool_if:NTF \g_@@_literal_bool
{ \@@_set_normal_arabic:nn {up}{#1} }
{ \@@_set_normal_arabic:nn {up,it}{#1} }
\@@_set_mathalphabet_arabic:nnn {up} {up,it}{#1}
\@@_set_mathalphabet_arabic:nnn {literal} {up} {up}
\@@_set_mathalphabet_arabic:nnn {literal} {it} {it}
}

\@@_new_alphabet_config:nnn {up} {misc}
{
\bool_if:NTF \g_@@_literal_Nabla_bool
Expand Down Expand Up @@ -157,6 +167,14 @@
\@@_set_mathalphabet_greek:nnn {it} {up,it} {#1}
}

\@@_new_alphabet_config:nnn {it} {arabic}
{
\bool_if:NTF \g_@@_literal_bool
{ \@@_set_normal_arabic:nn {it} {#1} }
{ \@@_set_normal_arabic:nn {it,up} {#1} }
\@@_set_mathalphabet_arabic:nnn {it} {up,it} {#1}
}

\@@_new_alphabet_config:nnn {it} {misc}
{
\bool_if:NTF \g_@@_literal_Nabla_bool
Expand Down
52 changes: 52 additions & 0 deletions um-code-mathmap.dtx
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,16 @@
}
% \end{macrocode}
%
% \begin{macrocode}
\cs_new:Nn \@@_set_normal_arabic:nn
{
\clist_map_inline:nn {#1}
{
\@@_set_mathalphabet_arabic:nnn {normal} {##1} {#2}
}
}
% \end{macrocode}
%
%
% \subsection{Mapping chars inside a math style}
%
Expand Down Expand Up @@ -571,6 +581,48 @@
}
% \end{macrocode}
%
% \begin{macrocode}
\cs_new:Nn \@@_set_mathalphabet_arabic:nnn
{
\clist_map_inline:nn {#2}
{
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicAlef}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicBeh}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicTeh}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicTheh}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicJeem}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicHah}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicKhah}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicDal}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicThal}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicReh}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicZain}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicSeen}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicSheen}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicSad}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicDad}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicTah}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicZah}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicAin}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicGhain}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicFeh}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicQaf}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicKaf}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicLam}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicMeem}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicNoon}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicHeh}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicWaw}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicYeh}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicDotlessBeh}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicDotlessQaf}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicDotlessFeh}
\@@_set_mathalphabet_char:nnnn {#1} {##1} {#3} {arabicDotlessNoon}

}
}
% \end{macrocode}
%
% \begin{macrocode}
%</package>
% \end{macrocode}
Expand Down
213 changes: 213 additions & 0 deletions um-code-usv.dtx
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,219 @@
\usv_set:nnn {frak} {Z} {"2128}
% \end{macrocode}
%
% \paragraph{Arabic}
%
% Normal:
% \begin{macrocode}
\usv_set:nnn {normal} {arabicAlef} {"1EE00}
\usv_set:nnn {normal} {arabicBeh} {"1EE1C}
\usv_set:nnn {normal} {arabicJeem} {"1EE27}
\usv_set:nnn {normal} {arabicDal} {"1EE03}
\usv_set:nnn {normal} {arabicHeh} {"1EE24}
\usv_set:nnn {normal} {arabicWaw} {"1EE05}
\usv_set:nnn {normal} {arabicZain} {"1EE06}
\usv_set:nnn {normal} {arabicHah} {"1EE07}
\usv_set:nnn {normal} {arabicTah} {"1EE08}
\usv_set:nnn {normal} {arabicYeh} {"1EE09}
\usv_set:nnn {normal} {arabicKaf} {"1EE0A}
\usv_set:nnn {normal} {arabicLam} {"1EE0B}
\usv_set:nnn {normal} {arabicMeem} {"1EE0C}
\usv_set:nnn {normal} {arabicNoon} {"1EE0D}
\usv_set:nnn {normal} {arabicSeen} {"1EE0E}
\usv_set:nnn {normal} {arabicAin} {"1EE0F}
\usv_set:nnn {normal} {arabicFeh} {"1EE10}
\usv_set:nnn {normal} {arabicSad} {"1EE11}
\usv_set:nnn {normal} {arabicQaf} {"1EE12}
\usv_set:nnn {normal} {arabicReh} {"1EE13}
\usv_set:nnn {normal} {arabicSheen} {"1EE14}
\usv_set:nnn {normal} {arabicTeh} {"1EE15}
\usv_set:nnn {normal} {arabicTheh} {"1EE16}
\usv_set:nnn {normal} {arabicKhah} {"1EE17}
\usv_set:nnn {normal} {arabicThal} {"1EE18}
\usv_set:nnn {normal} {arabicDad} {"1EE19}
\usv_set:nnn {normal} {arabicZah} {"1EE1A}
\usv_set:nnn {normal} {arabicGhain} {"1EE1B}
\usv_set:nnn {normal} {arabicDotlessBeh} {"1EE1C}
\usv_set:nnn {normal} {arabicDotlessNoon} {"1EE1D}
\usv_set:nnn {normal} {arabicDotlessFeh} {"1EE1E}
\usv_set:nnn {normal} {arabicDotlessQaf} {"1EE1F}

% \end{macrocode}
%
% \paragraph{Arabic}
%
% Regular:
% \begin{macrocode}
\usv_set:nnn {up} {arabicAlef} {"0627}
\usv_set:nnn {up} {arabicBeh} {"0628}
\usv_set:nnn {up} {arabicTeh} {"062A}
\usv_set:nnn {up} {arabicTheh} {"062B}
\usv_set:nnn {up} {arabicJeem} {"062C}
\usv_set:nnn {up} {arabicHah} {"062D}
\usv_set:nnn {up} {arabicKhah} {"062E}
\usv_set:nnn {up} {arabicDal} {"062F}
\usv_set:nnn {up} {arabicThal} {"0630}
\usv_set:nnn {up} {arabicReh} {"0631}
\usv_set:nnn {up} {arabicZain} {"0632}
\usv_set:nnn {up} {arabicSeen} {"0633}
\usv_set:nnn {up} {arabicSheen} {"0634}
\usv_set:nnn {up} {arabicSad} {"0635}
\usv_set:nnn {up} {arabicDad} {"0636}
\usv_set:nnn {up} {arabicTah} {"0637}
\usv_set:nnn {up} {arabicZah} {"0638}
\usv_set:nnn {up} {arabicAin} {"0639}
\usv_set:nnn {up} {arabicGhain} {"063A}
\usv_set:nnn {up} {arabicFeh} {"0641}
\usv_set:nnn {up} {arabicQaf} {"0642}
\usv_set:nnn {up} {arabicKaf} {"0643}
\usv_set:nnn {up} {arabicLam} {"0644}
\usv_set:nnn {up} {arabicMeem} {"0645}
\usv_set:nnn {up} {arabicNoon} {"0646}
\usv_set:nnn {up} {arabicHeh} {"0647}
\usv_set:nnn {up} {arabicWaw} {"0648}
\usv_set:nnn {up} {arabicYeh} {"064A}
\usv_set:nnn {up} {arabicDotlessBeh} {"066E}
\usv_set:nnn {up} {arabicDotlessQaf} {"066F}
\usv_set:nnn {up} {arabicDotlessFeh} {"06A1}
\usv_set:nnn {up} {arabicDotlessNoon} {"06BA}
% \end{macrocode}
%
% Math:
% \begin{macrocode}
\usv_set:nnn {it} {arabicAlef} {"1EE00}
\usv_set:nnn {it} {arabicBeh} {"1EE01}
\usv_set:nnn {it} {arabicJeem} {"1EE02}
\usv_set:nnn {it} {arabicDal} {"1EE03}
\usv_set:nnn {it} {arabicWaw} {"1EE05}
\usv_set:nnn {it} {arabicZain} {"1EE06}
\usv_set:nnn {it} {arabicHah} {"1EE07}
\usv_set:nnn {it} {arabicTah} {"1EE08}
\usv_set:nnn {it} {arabicYeh} {"1EE09}
\usv_set:nnn {it} {arabicKaf} {"1EE0A}
\usv_set:nnn {it} {arabicLam} {"1EE0B}
\usv_set:nnn {it} {arabicMeem} {"1EE0C}
\usv_set:nnn {it} {arabicNoon} {"1EE0D}
\usv_set:nnn {it} {arabicSeen} {"1EE0E}
\usv_set:nnn {it} {arabicAin} {"1EE0F}
\usv_set:nnn {it} {arabicFeh} {"1EE10}
\usv_set:nnn {it} {arabicSad} {"1EE11}
\usv_set:nnn {it} {arabicQaf} {"1EE12}
\usv_set:nnn {it} {arabicReh} {"1EE13}
\usv_set:nnn {it} {arabicSheen} {"1EE14}
\usv_set:nnn {it} {arabicTeh} {"1EE15}
\usv_set:nnn {it} {arabicTheh} {"1EE16}
\usv_set:nnn {it} {arabicKhah} {"1EE17}
\usv_set:nnn {it} {arabicThal} {"1EE18}
\usv_set:nnn {it} {arabicDad} {"1EE19}
\usv_set:nnn {it} {arabicZah} {"1EE1A}
\usv_set:nnn {it} {arabicGhain} {"1EE1B}
\usv_set:nnn {it} {arabicDotlessBeh} {"1EE1C}
\usv_set:nnn {it} {arabicDotlessNoon} {"1EE1D}
\usv_set:nnn {it} {arabicDotlessFeh} {"1EE1E}
\usv_set:nnn {it} {arabicDotlessQaf} {"1EE1F}
% \end{macrocode}
%
% Initial:
% \begin{macrocode}
\usv_set:nnn {initial} {arabicBeh} {"1EE21}
\usv_set:nnn {initial} {arabicJeem} {"1EE22}
\usv_set:nnn {initial} {arabicHeh} {"1EE24}
\usv_set:nnn {initial} {arabicHah} {"1EE27}
\usv_set:nnn {initial} {arabicYeh} {"1EE29}
\usv_set:nnn {initial} {arabicKaf} {"1EE2A}
\usv_set:nnn {initial} {arabicLam} {"1EE2B}
\usv_set:nnn {initial} {arabicMeem} {"1EE2C}
\usv_set:nnn {initial} {arabicNoon} {"1EE2D}
\usv_set:nnn {initial} {arabicSeen} {"1EE2E}
\usv_set:nnn {initial} {arabicAin} {"1EE2F}
\usv_set:nnn {initial} {arabicFeh} {"1EE30}
\usv_set:nnn {initial} {arabicSad} {"1EE31}
\usv_set:nnn {initial} {arabicQaf} {"1EE32}
\usv_set:nnn {initial} {arabicSheen} {"1EE34}
\usv_set:nnn {initial} {arabicTeh} {"1EE35}
\usv_set:nnn {initial} {arabicTheh} {"1EE36}
\usv_set:nnn {initial} {arabicKhah} {"1EE37}
\usv_set:nnn {initial} {arabicDad} {"1EE39}
\usv_set:nnn {initial} {arabicGhain} {"1EE3B}
% \end{macrocode}
%
% Tailed:
% \begin{macrocode}
\usv_set:nnn {tailed} {arabicJeem} {"1EE42}
\usv_set:nnn {tailed} {arabicHah} {"1EE47}
\usv_set:nnn {tailed} {arabicYeh} {"1EE49}
\usv_set:nnn {tailed} {arabicLam} {"1EE4B}
\usv_set:nnn {tailed} {arabicNoon} {"1EE4D}
\usv_set:nnn {tailed} {arabicSeen} {"1EE4E}
\usv_set:nnn {tailed} {arabicAin} {"1EE4F}
\usv_set:nnn {tailed} {arabicSad} {"1EE51}
\usv_set:nnn {tailed} {arabicQaf} {"1EE52}
\usv_set:nnn {tailed} {arabicSheen} {"1EE54}
\usv_set:nnn {tailed} {arabicKhah} {"1EE57}
\usv_set:nnn {tailed} {arabicDad} {"1EE59}
\usv_set:nnn {tailed} {arabicGhain} {"1EE5B}
\usv_set:nnn {tailed} {arabicDotlessNoon} {"1EE5D}
\usv_set:nnn {tailed} {arabicDotlessQaf} {"1EE5F}
% \end{macrocode}
%
% Stretched:
% \begin{macrocode}
\usv_set:nnn {stretched} {arabicBeh} {"1EE61}
\usv_set:nnn {stretched} {arabicJeem} {"1EE62}
\usv_set:nnn {stretched} {arabicHeh} {"1EE64}
\usv_set:nnn {stretched} {arabicHah} {"1EE67}
\usv_set:nnn {stretched} {arabicTah} {"1EE68}
\usv_set:nnn {stretched} {arabicYeh} {"1EE69}
\usv_set:nnn {stretched} {arabicKaf} {"1EE6A}
\usv_set:nnn {stretched} {arabicMeem} {"1EE6C}
\usv_set:nnn {stretched} {arabicNoon} {"1EE6D}
\usv_set:nnn {stretched} {arabicSeen} {"1EE6E}
\usv_set:nnn {stretched} {arabicAin} {"1EE6F}
\usv_set:nnn {stretched} {arabicFeh} {"1EE70}
\usv_set:nnn {stretched} {arabicSad} {"1EE71}
\usv_set:nnn {stretched} {arabicQaf} {"1EE72}
\usv_set:nnn {stretched} {arabicSheen} {"1EE74}
\usv_set:nnn {stretched} {arabicTeh} {"1EE75}
\usv_set:nnn {stretched} {arabicTheh} {"1EE76}
\usv_set:nnn {stretched} {arabicKhah} {"1EE77}
\usv_set:nnn {stretched} {arabicDad} {"1EE79}
\usv_set:nnn {stretched} {arabicZah} {"1EE7A}
\usv_set:nnn {stretched} {arabicGhain} {"1EE7B}
\usv_set:nnn {stretched} {arabicDotlessBeh} {"1EE7C}
\usv_set:nnn {stretched} {arabicDotlessFeh} {"1EE7E}
% \end{macrocode}
%
% Looped:
% \begin{macrocode}
\usv_set:nnn {looped} {arabicAlef} {"1EE80}
\usv_set:nnn {looped} {arabicBeh} {"1EE81}
\usv_set:nnn {looped} {arabicJeem} {"1EE82}
\usv_set:nnn {looped} {arabicDal} {"1EE83}
\usv_set:nnn {looped} {arabicHeh} {"1EE84}
\usv_set:nnn {looped} {arabicWaw} {"1EE85}
\usv_set:nnn {looped} {arabicZain} {"1EE86}
\usv_set:nnn {looped} {arabicHah} {"1EE87}
\usv_set:nnn {looped} {arabicTah} {"1EE88}
\usv_set:nnn {looped} {arabicYeh} {"1EE89}
\usv_set:nnn {looped} {arabicLam} {"1EE8B}
\usv_set:nnn {looped} {arabicMeem} {"1EE8C}
\usv_set:nnn {looped} {arabicNoon} {"1EE8D}
\usv_set:nnn {looped} {arabicSeen} {"1EE8E}
\usv_set:nnn {looped} {arabicAin} {"1EE8F}
\usv_set:nnn {looped} {arabicFeh} {"1EE90}
\usv_set:nnn {looped} {arabicSad} {"1EE91}
\usv_set:nnn {looped} {arabicQaf} {"1EE92}
\usv_set:nnn {looped} {arabicReh} {"1EE93}
\usv_set:nnn {looped} {arabicSheen} {"1EE94}
\usv_set:nnn {looped} {arabicTeh} {"1EE95}
\usv_set:nnn {looped} {arabicTheh} {"1EE96}
\usv_set:nnn {looped} {arabicKhah} {"1EE97}
\usv_set:nnn {looped} {arabicThal} {"1EE98}
\usv_set:nnn {looped} {arabicDad} {"1EE99}
\usv_set:nnn {looped} {arabicZah} {"1EE9A}
\usv_set:nnn {looped} {arabicGhain} {"1EE9B}
% \end{macrocode}
%
% \begin{macrocode}
%</package>
% \end{macrocode}
Expand Down
32 changes: 32 additions & 0 deletions unicode-math-table.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1452,6 +1452,38 @@
\UnicodeMathSymbol{"03012}{\postalmark }{\mathord}{postal mark}%
\UnicodeMathSymbol{"03030}{\hzigzag }{\mathord}{zigzag}%
\UnicodeMathSymbol{"0060C}{\arabiccomma }{\mathpunct}{arabic comma}%
\UnicodeMathSymbol{"00627}{\arabicAlef }{\mathalpha}{arabic letter alef}%
\UnicodeMathSymbol{"00628}{\arabicBeh }{\mathalpha}{arabic letter beh}%
\UnicodeMathSymbol{"0062A}{\arabicTeh }{\mathalpha}{arabic letter teh}%
\UnicodeMathSymbol{"0062B}{\arabicTheh }{\mathalpha}{arabic letter theh}%
\UnicodeMathSymbol{"0062C}{\arabicJeem }{\mathalpha}{arabic letter jeem}%
\UnicodeMathSymbol{"0062D}{\arabicHah }{\mathalpha}{arabic letter hah}%
\UnicodeMathSymbol{"0062E}{\arabicKhah }{\mathalpha}{arabic letter khah}%
\UnicodeMathSymbol{"0062F}{\arabicDal }{\mathalpha}{arabic letter dal}%
\UnicodeMathSymbol{"00630}{\arabicThal }{\mathalpha}{arabic letter thal}%
\UnicodeMathSymbol{"00631}{\arabicReh }{\mathalpha}{arabic letter reh}%
\UnicodeMathSymbol{"00632}{\arabicZain }{\mathalpha}{arabic letter zain}%
\UnicodeMathSymbol{"00633}{\arabicSeen }{\mathalpha}{arabic letter seen}%
\UnicodeMathSymbol{"00634}{\arabicSheen }{\mathalpha}{arabic letter sheen}%
\UnicodeMathSymbol{"00635}{\arabicSad }{\mathalpha}{arabic letter sad}%
\UnicodeMathSymbol{"00636}{\arabicDad }{\mathalpha}{arabic letter dad}%
\UnicodeMathSymbol{"00637}{\arabicTah }{\mathalpha}{arabic letter tah}%
\UnicodeMathSymbol{"00638}{\arabicZah }{\mathalpha}{arabic letter zah}%
\UnicodeMathSymbol{"00639}{\arabicAin }{\mathalpha}{arabic letter ain}%
\UnicodeMathSymbol{"0063A}{\arabicGhain }{\mathalpha}{arabic letter ghain}%
\UnicodeMathSymbol{"00641}{\arabicFeh }{\mathalpha}{arabic letter feh}%
\UnicodeMathSymbol{"00642}{\arabicQaf }{\mathalpha}{arabic letter qaf}%
\UnicodeMathSymbol{"00643}{\arabicKaf }{\mathalpha}{arabic letter kaf}%
\UnicodeMathSymbol{"00644}{\arabicLam }{\mathalpha}{arabic letter lam}%
\UnicodeMathSymbol{"00645}{\arabicMeem }{\mathalpha}{arabic letter meem}%
\UnicodeMathSymbol{"00646}{\arabicNoon }{\mathalpha}{arabic letter noon}%
\UnicodeMathSymbol{"00647}{\arabicHeh }{\mathalpha}{arabic letter heh}%
\UnicodeMathSymbol{"00648}{\arabicWaw }{\mathalpha}{arabic letter waw}%
\UnicodeMathSymbol{"0064A}{\arabicYeh }{\mathalpha}{arabic letter yeh}%
\UnicodeMathSymbol{"0066E}{\arabicDotlessBeh }{\mathalpha}{arabic letter dotless beh}%
\UnicodeMathSymbol{"0066F}{\arabicDotlessQaf }{\mathalpha}{arabic letter dotless qaf}%
\UnicodeMathSymbol{"006A1}{\arabicDotlessFeh }{\mathalpha}{arabic letter dotless feh}%
\UnicodeMathSymbol{"006BA}{\arabicDotlessNoon }{\mathalpha}{arabic letter noon ghunna}%
\UnicodeMathSymbol{"1D400}{\mbfA }{\mathalpha}{mathematical bold capital a}%
\UnicodeMathSymbol{"1D401}{\mbfB }{\mathalpha}{mathematical bold capital b}%
\UnicodeMathSymbol{"1D402}{\mbfC }{\mathalpha}{mathematical bold capital c}%
Expand Down