diff options
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def b/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def new file mode 100644 index 00000000000..0f16f641832 --- /dev/null +++ b/Master/texmf-dist/tex/xelatex/xepersian/kashida-xetex-xepersian.def @@ -0,0 +1,97 @@ +%% +%% This is file `kashida-xetex-xepersian.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% xepersian.dtx (with options: `table,kashida-xetex-xepersian.def') +%% +%% __________________________________________________ +%% Vafa Khalighi +%% +%% Copyright (c) 2008--2025 Vafa Khalighi +%% Copyright (c) 2018--2020 bidi-tex GitHub Organization +%% +%% It may be distributed and/or modified under the LaTeX Project Public License, +%% version 1.3c or higher (your choice). The latest version of +%% this license is at: http://www.latex-project.org/lppl.txt +%% +%% This work is “author-maintained” (as per LPPL maintenance status) +%% by Vafa Khalighi. +%% +%% +%% \CheckSum{10845} +%% \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 +%% Lower-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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\ProvidesFile{kashida-xetex-xepersian.def}[2024/12/20 v1.0 implementation of Kashida for XeTeX engine] +\chardef\xepersian@zwj="200D % zero-width joiner +\chardef\xepersian@kashidachar="0640 % kashida + +\chardef\xepersian@dualjoiner=10 % dual-joiner class +\chardef\xepersian@lam=11 % lam +\chardef\xepersian@rightjoiner=12 % right-joiner +\chardef\xepersian@alef=13 % alef +\chardef\xepersian@vowel=4096 % vowel or other combining mark (to be ignored) +\newif\if@Kashida@on +\def\xepersian@kashida{% + \if@Kashida@on + \xepersian@zwj + \nobreak + \leaders\hrule height \XeTeXglyphbounds\tw@ + \the\XeTeXcharglyph\xepersian@kashidachar + depth \XeTeXglyphbounds\f@ur + \the\XeTeXcharglyph\xepersian@kashidachar + \hskip0pt plus 0.5em + \xepersian@zwj + \fi +} + +\def\setclass#1#2{\def\theclass{#1}\def\charlist{#2}% + \expandafter\dosetclass\charlist,\end} +\def\dosetclass#1,#2\end{% + \def\test{#1}\def\charlist{#2}% + \ifx\test\empty\let\next\finishsetclass + \else \XeTeXcharclass "\test = \theclass + \let\next\dosetclass \fi + \expandafter\next\charlist,,\end} +\def\finishsetclass#1,,\end{} + +\setclass \xepersian@alef {0622,0623,0625,0627} +\setclass \xepersian@rightjoiner {0624,0629,062F,0630,0631,0632,0648,0698} +\setclass \xepersian@dualjoiner {0626,0628,062A,062B,062C,062D,062E} +\setclass \xepersian@dualjoiner {0633,0634,0635,0636,0637,0638,0639,063A} +\setclass \xepersian@dualjoiner {0640,0641,0642,0643,0645,0646,0647,0649,064A} +\setclass \xepersian@dualjoiner {067E,0686,06A9,06AF,06CC} +\setclass \xepersian@lam {0644} +\setclass \xepersian@vowel {064B,064C,064D,064E,064F,0650,0651,0652} + +\XeTeXinterchartoks \xepersian@dualjoiner \xepersian@dualjoiner = {\xepersian@kashida} +\XeTeXinterchartoks \xepersian@lam \xepersian@dualjoiner = {\xepersian@kashida} +\XeTeXinterchartoks \xepersian@dualjoiner \xepersian@lam = {\xepersian@kashida} +\XeTeXinterchartoks \xepersian@lam \xepersian@lam = {\xepersian@kashida} +\XeTeXinterchartoks \xepersian@dualjoiner \xepersian@rightjoiner = {\xepersian@kashida} +\XeTeXinterchartoks \xepersian@dualjoiner \xepersian@alef = {\xepersian@kashida} +\XeTeXinterchartoks \xepersian@lam \xepersian@rightjoiner = {\xepersian@kashida} +\XeTeXinterchartoks \xepersian@lam \xepersian@alef = {} + +\newcommand{\KashidaOn}{\@Kashida@ontrue} +\newcommand{\KashidaOff}{\@Kashida@onfalse} + +\KashidaOn +\endinput +%% +%% End of file `kashida-xetex-xepersian.def'. |