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

Reply via email to