Gareth Hughes wrote:
Fr Michael Gilmary adapted Jonathan Kew's code for Syriac, and I'm
including that in my forthcoming Syriac package.
I'm glad you're doing this, Gareth --- I've been a bit shy about posting
this as a package ... I /really/ don't understand much (although the
posting process isn't what concerns me).
I've been meaning to ask recently about the kashida.sty file I've posted
here before: when making this into an environment, is it necessary to
"turn off" the interchartokenstate? It doesn't seem to need it, but it
doesn't prevent it from working if it is "turned off".
This is what I have at present (slightly modified from what I sent
before, Gareth):
\newenvironment{kashida}{
\XeTeXinterchartoks \D \D = {\stretch}
\XeTeXinterchartoks \L \D = {\stretch}
\XeTeXinterchartoks \D \L = {\stretch}
\XeTeXinterchartoks \L \L = {\stretch}
\XeTeXinterchartoks \D \R = {\stretch}
\XeTeXinterchartoks \D \A = {\stretch}
\XeTeXinterchartoks \L \R = {\stretch}
\XeTeXinterchartoks \L \A = {}
\XeTeXinterchartokenstate=1
%}{\XeTeXinterchartokenstate=-1} % comment or uncomment to see if
there's a difference
}{}
Any corrections welcome!
Also, any other languages besides Syriac, Persian, Arabic that could be
added will have to be done by someone who knows those extra code points
to add.
I've asked François about adding it to polyglossia as an environment
option or whatever ... but no response yet.
--
United in adoration of Jesus,
fr. michael gilmary, mma
Most Holy Trinity Monastery
67 Dugway Road
Petersham, MA 01366-9725
www.MaroniteMonks.org
%%
%% This is file `kashida.sty'
%%
%%
%% Configure xetex to do "kashida" justification in Persian text --- from
Jonathan Kew. Mapping for Syriac added.
\NeedsTeXFormat{LaTeX2e}
\def\kashidadate{2010/09/17}
\def\kashidaversion{v0.1}
\ProvidesPackage{kashida}[\kashidadate\space \kashidaversion]
\chardef\zwj="200D % zero-width joiner
\chardef\ksh="0640 % kashida = "tatweel"
\chardef\D=10 % dual-joiner class
\chardef\L=11 % lam
\chardef\R=12 % right-joiner
\chardef\A=13 % alef
\chardef\V=256 % vowel or other combining mark (to be ignored)
%\def\kashida{\zwj\nobreak \setbox0=\hbox{\ksh}%
% \leaders\hrule height\ht0 \hskip0pt plus 0.5em \zwj}
\def\stretch{\zwj\nobreak \setbox0=\hbox{\ksh}%
\leaders\hrule height\ht0 \hskip0pt plus 0.5em \zwj}
\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{}
%% code for Melthofonts = Syriac fonts
\setclass \A {710}
\setclass \R {0715,0717,0718,0721,0728,072A,072C}
\setclass \D {0712,0713,071A,071B,071D,071F}
\setclass \D {0722,0723,0725,0729,072B}
\setclass \L {0720}
\setclass \V {0730,0731,0732,0733,0734,0735}
\setclass \V {0736,0737,0738,0739,073A,073B,073C}
\setclass \V {073D,073E,073F,0740,0741,0742,0743}
\setclass \V {0744,0745,0746,0747,0748}
% JK's code for Farsi fonts
\setclass \A {0622,0623,0625,0627}
\setclass \R {0624,0629,062F,0630,0631,0632,0648,0698}
\setclass \D {0626,0628,062A,062B,062C,062D,062E}
\setclass \D {0633,0634,0635,0636,0637,0638,0639,063A}
\setclass \D {0640,0641,0642,0643,0645,0646,0647,0649,064A}
\setclass \D {067E,0686,06A9,06AF,06CC}
\setclass \L {0644}
\setclass \V {064B,064C,064D,064E,064F,0650,0651,0652}
\newenvironment{kashida}{
\XeTeXinterchartoks \D \D = {\stretch}
\XeTeXinterchartoks \L \D = {\stretch}
\XeTeXinterchartoks \D \L = {\stretch}
\XeTeXinterchartoks \L \L = {\stretch}
\XeTeXinterchartoks \D \R = {\stretch}
\XeTeXinterchartoks \D \A = {\stretch}
\XeTeXinterchartoks \L \R = {\stretch}
\XeTeXinterchartoks \L \A = {}%
\XeTeXinterchartokenstate=1
%}{\XeTeXinterchartokenstate=-1} %commented out to experiment
}{}
\endinput
%% End of file `kashida.sty'.
--------------------------------------------------
Subscriptions, Archive, and List information, etc.:
http://tug.org/mailman/listinfo/xetex