summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/arabtex/aligs.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-12 23:51:33 +0000
committerKarl Berry <karl@freefriends.org>2006-01-12 23:51:33 +0000
commitaec1c1b77ee51b9359530d61cc7b8df2a37c7685 (patch)
tree8b5e1e20b56e0abf130e7da219468e197cde8725 /Master/texmf-dist/tex/latex/arabtex/aligs.sty
parente1c54083e49986785dd4d24e891b89e0772a4de1 (diff)
arabtex
git-svn-id: svn://tug.org/texlive/trunk@673 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/arabtex/aligs.sty')
-rw-r--r--Master/texmf-dist/tex/latex/arabtex/aligs.sty635
1 files changed, 635 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/arabtex/aligs.sty b/Master/texmf-dist/tex/latex/arabtex/aligs.sty
new file mode 100644
index 00000000000..4fb971563e8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/arabtex/aligs.sty
@@ -0,0 +1,635 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% aligs.sty
+% ArabTeX
+% Ligatures
+% called in HMODE
+% Version 26.05.2003
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Formale Methoden der Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@ident {aligs.sty} {3.11 compute ligatures} {26.05.2003}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \is@end@char #1{00% does not connect to the left ?
+\a@test {#1}\xxpa \unp@ck@skl \skl@skel \relax
+\ifnum \skl@con = 0 \else \xpa \setiffalse \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \aw@endligs #1#2*#3#4*#5{% test for final ligatures
+% c1 m1 * c2 m2 * c3
+\ifcase \act@cls \lam@lig #3#5% % 0 l
+\or % 1 YntCbyp
+ \ifnum \act@cd = \a@yah \yah@end #1#3#5\else
+ \ifnum \act@cd = \a@yah@h \yah@end #1#3#5\else
+ \ifnum \act@cd = \a@yah@p \yah@p@end #1#3#5\else
+ \ifnum \act@cd = \a@yah@p@s \yah@p@end #1#3#5\else
+ \ifnum \act@cd = \a@nun \nun@end #1#3#5\else
+ \bah@end #1%
+ \fi\fi\fi\fi\fi
+\or \sin@lig #1#5% % 2 sxSD
+\or \gim@lig #1#3#5% % 3 GHXJ
+ \a@min 0
+\or \global\@highfalse \@mod@acttrue \put@tatwil % 4 cR
+\or \kaf@end #3#5% % 5 kgM
+\or \fah@end #1% % 6 fqv
+\or \ttah@lig #1#5% % 7 VZ
+\or \rah@end #1#2*#3#5% % 8 rzj \a@r \a@R
+\or % 9 \a@t \a@n
+ \ifnum \act@cd = \a@yah@p@s \yah@p@end #1#3#5\else
+ \ifnum \act@cd = \a@nun@p \nun@end #1#3#5\else
+ \bah@end #1%
+ \fi\fi
+\else \global\@highfalse \@mod@acttrue % 10 ...
+ \ifnum \act@cd = \a@hah \hah@end #1#2*#3#4*#5\else
+ \ifnum \act@cd = \a@h@s \hah@urd #3\else
+ \ifnum \act@cd = \a@mim \mim@end #2*#3#5\else
+ \put@tatwil
+ \ifnum \act@cd = \a@dal \gim@test #5\else
+ \ifnum \act@cd = \a@dal@p \gim@test #5\else
+ \fi\fi
+ \fi\fi\fi
+\fi \aw@lower #5}
+
+%%%%%%%%%%%%%%%%%%%%%%% bah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \bah@end #1{% bah skeleton
+% c1
+\ifnum \act@cls = 1 \set@act\sk@b % YntCbyp
+\else \set@act\sk@b@p
+\fi
+\put@tatwil \@mod@acttrue \global\@hightrue }
+
+%%%%%%%%%%%%%%%%%%%%%%% gim %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \gim@lig #1#2#3{% gim, hhah, khah, tchah etc.
+% c1 c2 c3
+\ifnum \act@cd = \a@khah \else
+ \@mod@acttrue
+ \ifnum \act@cd = \a@gim@close \else \set@act\sk@hh
+ \fi
+\fi
+\ifs@nd \else
+\if\is@end@char #3\gim@one #1#2#3\else
+ \gim@more #1#2#3%
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%% gim %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \gim@one #1#2#3{% gim, hhah, khah, tchah % and one char
+% c1 c2 c3
+%\ifligs
+\ifcase \chr@cls
+ \act@gim #1\set@chr\sk@l@g@s % 0 l
+\or \act@gim #1\chr@tie\a@g@to@bb % 1 YntCbyp
+ \set@chr\sk@spc
+\or \act@gim #1\chr@tie\a@g@to@s \chr@sin % 2 sxSD
+\or \act@gim #1% % 3 GHXJ
+\or \put@tatwil % 4 cR
+\or \act@gim #1% % 5 kgM
+\or \act@gim #1% % 6 fqv
+\else \ifx #2m\act@gim #1\set@chr\sk@m@s
+ \else \put@tatwil
+ \fi
+%\fi
+\fi }
+
+\def \gim@more #1#2#3{% gim, hhah, khah, tchah
+% and more than one char
+% c1 c2 c3
+\ifligs
+\ifcase \chr@cls
+ \act@gim #1\set@chr\sk@l@y % 0 l
+\or \act@gim #1\chr@tie\a@g@to@mb % 1 YntCbyp
+ \set@chr\sk@b@y
+\or \act@gim #1\chr@tie\a@g@to@s \chr@sin % 2 sxSD
+\or \put@tatwil % 3 GHXJ
+\or \put@tatwil % 4 cR
+\or \act@gim #1% % 5 kgM
+\else \ifx #2m\ifx #3l\act@gim #1\set@chr\sk@m@l@g
+ \fi\fi
+\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% sin %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \sin@lig #1#2{% sin, shin, ssad, ddad, \a@s
+% c1 c3
+\put@tatwil \@mod@acttrue
+\ifnum \chr@cls = 1 % YntCbyp
+ \if\is@end@char #2\set@chr\sk@b@h \else
+ \ifx #1s\set@chr\sk@b@h \else
+ \ifx #1x\set@chr\sk@b@h \else
+ \fi\fi\fi
+\fi }
+
+\def \sin@lig #1#2{% sin, shin, ssad, ddad, \a@s
+% c1 c3
+\put@tatwil \@mod@acttrue
+\ifnum \chr@cls = 1 % YntCbyp
+ \if\is@end@char #2\set@chr\sk@b@h \else
+ \ifnum \act@cd = \a@sin \set@chr\sk@b@h \else
+ \fi\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% ttah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \ttah@lig #1#2{% ttah, tthah
+% c1 c3
+\put@tatwil \@mod@acttrue
+\ifnum \chr@cls = 1 % YntCbyp
+ \if\is@end@char #2\set@chr\sk@b@h
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% rah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \rah@end #1#2*#3#4{% final r, z, j
+% c1 m1 * c2 c3
+\@mod@acttrue
+\ifcase \chr@cls
+ \put@tatwil % 0 l
+\or \if\is@end@char #4% % 1 YntCbyp
+ \else \set@chr\sk@b@sp \set@high@act
+ \fi
+\or \chr@tie\a@er@to@s \chr@sin % 2 sxSD
+\or \put@tatwil % 3 GHXJ
+\or \put@tatwil % 4 cR
+\or \ifligs % 5 kgM
+ \ifx #1r\if\is@updia #2*\put@tatwil
+ \else \kaf@lig
+ \fi
+ \else \put@tatwil
+ \fi
+ \else \put@tatwil
+ \fi
+\else \put@tatwil
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% fah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \fah@end #1{% fah family
+% c1
+\ifnum \act@cd = \a@qaf
+ \ifnewfont \set@act\sk@q@s \@mod@acttrue
+ \fi
+\else \@mod@acttrue
+\fi \global\@highfalse }
+
+%%%%%%%%%%%%%%%%%%%%%% kaf %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \kaf@end #1#2{% kaf family
+% c2 c3
+\ifnum \act@cd = \a@kaf
+ \gim@test #2% closed gim?
+ \kaf@test #1% kaf-kaf ?
+\fi
+\@mod@acttrue }
+
+%%%%%%%%%%%%%%%%%%%%%% lam %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \lam@lig #1#2{% lam family
+% c2 c3
+\global\@highfalse
+\ifnum \act@cd = \a@lam@gim
+ \if\is@end@char #1\chr@tie\a@skip
+ \fi \else
+\ifnum \act@cd = \a@lam@spec@low \else
+ \@mod@acttrue
+ \gim@test #2% closed gim?
+ \kaf@test #1% kaf-lam ?
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% mim %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \mim@end #1*#2#3{% final mIm
+% m1 * c2 c3
+\ifs@nd \if\is@lodia #1*% simulate tail
+ \if\is@end@char #2\set@act\sk@m@s
+ \else \set@act\sk@B \chr@tie\a@mim
+ \fi
+ \else \set@act\sk@m@s
+ \fi
+\else
+\ifcase \chr@cls
+ \set@act\sk@m@s % 0 l
+ \if\is@end@char #3\else \set@chr\sk@l@m
+ \fi
+\or \set@act\sk@m@s % 1 YntCbyp
+ \if\is@end@char #3\chr@tie\a@em@to@bb \set@chr\sk@spc
+ \else \set@chr\sk@b@e@m
+ \fi
+\or \set@act\sk@m@s \chr@tie\a@em@to@s \chr@sin % 2 sxSD
+\or \put@tatwil % 3 GHXJ
+\or \put@tatwil % 4 cR
+\or \if\is@updia #1*\put@tatwil % 5 kgM
+ \else \set@act\sk@m@s %\kaf@lig
+ \fi
+\or \set@act\sk@m@s % 6 fqv
+\else \ifx #2m\set@act\sk@m@s
+ \if\is@end@char #3\set@chr\sk@m@s \else
+ \set@chr\sk@m@s@h
+ \fi
+ \else \put@tatwil
+ \fi
+\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% nun %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \nun@end #1#2#3{% final nun
+% c1 c2 c3
+\global\@highfalse \@mod@acttrue
+\ifnum \chr@cls = 1 % YntCbyp
+ \if\is@end@char #3\else
+ \set@chr\sk@b@sp \set@high@act
+ \fi
+\else \put@tatwil
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% hah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hah@end #1#2*#3#4+#5*#6{% hah, test for ligature
+% c1 m1 * c2 m21 + m22 * c3
+\ifu@gh
+\ifx #1\a@H \else
+\set@act \sk@h@u
+\fi
+\else
+\ifurd@ \ifm@lay \else \set@act \sk@h@s \fi % two eyes
+ \ifx #1T\else
+ \ifx #1\a@H
+ \ifx #3l\ifx #6l% % 0 l
+ \ifnum #4 = \c@shadda \set@chr\sk@l@w
+ % special short form of lam for the Name of God
+ \fi\fi
+ \put@tatwil
+ \fi
+ \else \set@act\sk@h@u
+ \if\is@end@char #3%
+ \else \set@loww@act \global\a@min 1
+ \fi
+ \fi\fi
+\else
+\ifx #3l\ifx #6l% % 0 l
+ \ifnum #4 = \c@shadda \set@chr\sk@l@w
+ % special short form of lam for the Name of God
+ \fi\fi
+ \put@tatwil
+\else
+\ifnum \chr@cls = 1 \set@chr\sk@b \put@tatwil % 1 YntCbyp
+\else
+\ifnum \chr@cls = 3 % 3 GHX
+% \if\is@updia #4+#5*\chr@tie\a@tatwil \else
+ \put@tatwil
+% \fi
+\else \gim@test #6\put@tatwil
+\fi\fi\fi\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% wavy hah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hah@urd #1{% wavy hah
+% c2
+\if\is@end@char #1\set@act\sk@h % isolated round h
+\fi
+\@mod@actfalse % no mark below
+\ifnum \chr@cls = 1 \set@chr\sk@b % YntCbyp normal height
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% yah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@end #1#2#3{% yah or alif maqsoura
+% y/Y/L c2 c3
+ \global\@highfalse
+%\global \a@min 1
+\ifx #1y\ifyahd@ts \@mod@acttrue \fi
+\else \@mod@acttrue
+\fi
+\if\is@end@char #3\yah@one #2\else \yah@more #2%
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@one #1{% yah or alif maqsoura % and one char
+% c2
+\ifcase \chr@cls
+ \act@yah \set@chr\sk@l@lng % 0 l
+\or % 1 YntCbyp
+ \ifh@mza \act@yah \set@chr\sk@b@y \else
+ \ifk@fs \act@yah \set@chr\sk@b@y \else % ++++
+ \ifx #1y\else
+ \ifx #1Y\else
+ \act@yah \set@chr\sk@b@y
+ \fi\fi\fi\fi % ++++
+\or \act@yah \chr@tie\a@em@to@s \chr@sin % 2 sxSD
+\or \act@yah \ifs@nd \chr@tie\a@em@to@s \fi % 3 GHXJ
+\or \act@yah % 4 cR
+\or \act@yah \ifs@nd \chr@tie\a@em@to@s \fi % 5 kgM
+\or \act@yah % 6 fqv
+\else \ifx #1m\act@yah \set@chr\sk@m@s \else
+ \put@tatwil
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@more #1{% yah or alif maqsoura % and more than one char
+% c2
+\ifcase \chr@cls % 0 l
+ \act@yah \set@chr\sk@l@y
+ \set@low@act
+\or \ifiz@fet % 1 YntCbyp
+ \ifx #1y\else
+ \ifx #1Y\else
+ \act@yah \set@chr\sk@b@e@m
+ \fi\fi
+ \else \act@yah \set@chr\sk@b@e@m
+ \fi
+\or \act@yah \chr@tie\a@em@to@s \chr@sin % 2 sxSD
+\or \act@yah \ifs@nd \chr@tie\a@em@to@s \fi % 3 GHXJ
+\or \put@tatwil % 4 cR
+\or \act@yah \kaf@lig % 5 kgM
+ \ifs@nd \chr@tie\a@em@to@s \fi
+\or \ifs@nd \act@yah \else \put@tatwil \fi % 6 fqv
+\else \ifx #1h\act@yah \chr@tie\a@em@to@s
+ \else \put@tatwil
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% long yah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@p@end #1#2#3{% long (Urdu) yah bari
+% c2 c3
+ \global\@highfalse
+\global \a@min 2
+\ifx #1E\ifyahd@ts \@mod@acttrue
+ \fi
+\else \@mod@acttrue
+\fi
+\if\is@end@char #3\yah@p@one #2\else \yah@p@more #2%
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@p@one #1{% yah bari and one char
+% c2
+\ifcase \chr@cls \relax \set@chr\sk@l@lng % 0 l
+\or \set@chr\sk@b@g % 1 YntCbyp
+\or \chr@tie\a@g@to@s \chr@sin % 2 sxSD
+\else \ifx #1m\set@chr\sk@m@s
+ \else \put@tatwil
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \yah@p@more #1{% yah bari and more than one char c2 X
+% c2
+\ifcase \chr@cls \relax \set@chr\sk@l@y % 0 l
+\or \set@chr\sk@b@g % 1 YntCbyp
+\or \chr@tie\a@g@to@s \chr@sin % 2 sxSD
+\else \ifx #1m\set@chr\sk@m@s@h \else
+ \ifx #1h\set@chr\sk@h@s@l
+ \else
+ \put@tatwil
+ \fi\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \aw@midligs #1#2*#3#4{% check for medial ligatures
+% c1 m1 * c2 c3
+\ifcase \act@cls \lam@lig #3#4% % 0 l
+\or \bah@mid #2*#3#4% % 1 YntCbyp
+\or \sin@lig #1#4% % 2 sxSD
+\or \gim@lig #1#3#4% % 3 GHXJ
+\or \global\@highfalse \put@tatwil % 4 cR
+\or \global\@highfalse \put@tatwil % 5 kgM
+\or \global\@highfalse \put@tatwil % 6 fqv
+\or \ttah@lig #1#4% % 7 VZ
+\else \global\@highfalse
+ \ifx #1m\mim@mid #2*#3#4\else
+ \ifx #1h\hah@mid #1#3#4\else % two-eyed hah
+ \ifx #1\a@h\hah@urd@mid #1#3#4\else
+ \put@tatwil
+ \fi\fi\fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \chr@fam #1{% put family
+% c2
+\if@con \@mod@chrtrue
+\ifcase \chr@cls % 0 l
+\or \set@chr\sk@b % 1 YntCbyp
+ \ifx #1\a@am \chr@mod 6 \fi % Malay
+\or % 2 sxSD
+\or \set@chr\sk@hh \@mod@chrtrue % 3 GHXJ
+\or % 4 cR
+\or \kaf@fam % 5 kgM
+\or \set@chr\sk@f@s % 6 fqv
+\or % 7 VZ
+\or % 8 rzj
+\or \set@chr\sk@b@p % 9 \a@t \a@n
+\else
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%% bah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \bah@mid #1+#2*#3#4{% long form of bah etc.
+% m11 + m12 * c2 c3
+\put@tatwil
+\ifnum \act@cd = \a@bah@s % normal shape
+ \@mod@acttrue
+ \if@high \ifnum #1 > 9 \set@act\sk@b@h \global\@highfalse
+ \fi
+ \else \global\@hightrue
+ \fi
+ \else
+\ifnum \act@cd = \a@bah@high % higher shape
+ \global\@highfalse
+ \else
+\ifnum \act@cd = \a@bah@spec@gim % before medial gim
+ \global\@highfalse
+ \else
+\ifnum \act@cd = \a@bah@spec@yah % before final yah
+ \global\@highfalse
+ \else
+\ifnum \act@cd = \a@bah@mid@mim % before medial mim
+ \global\@highfalse
+ \else
+\ifnum \act@cd = \a@bah@spec % before rah
+ \gim@test #4% closed gim ?
+ \global\@highfalse
+ \else
+\fi\fi\fi\fi\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% mim %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \mim@mid #1*#2#3{% medial mIm
+% m1 * c2 c3
+\ifnum \act@cd = \a@mim@spec@alif % s-m-a
+ \ifnum \chr@cls = 2 \chr@sin
+ \fi
+ \else
+\ifligs \mim@mid@lig #1*#2#3\else
+\if\is@end@char #3\mim@mid@lig #1*#2#3\else
+ \put@tatwil
+\fi\fi\fi }
+
+\def \mim@mid@lig #1*#2#3{% ligature for medial mIm
+% m1 * c2 c3
+\ifcase \chr@cls % 0 l
+ \ifnum \act@cd = \a@mim@lam@gim % l-m-^g
+ \if\is@end@char #3\set@chr\sk@l@h \else
+ \set@chr\sk@l@y
+ \fi
+ \if\is@updia #1*\set@act\sk@m@s@l
+ \fi
+ \else
+ \if\is@end@char #3\act@mim@spec #1*\set@chr\sk@l@m
+ \fi\fi
+%\or \set@act\sk@m@s \set@chr\sk@b@m@m % 1 YntCbyp
+\or \act@mim@spec #1*\set@chr\sk@b@m@m % 1 YntCbyp
+%\or \act@mim@spec #1*\chr@tie\a@bah@mid@mim % 2 sxSD
+\or \set@act\sk@m@s \chr@tie\a@bah@mid@mim % 2 sxSD
+ \chr@sin
+\or \set@act\sk@m@s@h \gim@test #3% % 3 GHXJ
+\or \set@act\sk@m@s@h % 4 cR
+\or \put@tatwil % 5 kgM
+\or \set@act\sk@m@s@h % 6 fqv
+\else
+ \ifx #2m\if\is@end@char #3%
+% \act@mim@spec #1*\set@chr\sk@m@s@m
+ \set@act\sk@m@s@l \set@chr\sk@m@s@m
+ \if\is@updia #1*\set@act\sk@m@s@l
+ \fi
+ \else \put@tatwil
+ \fi
+ \else \put@tatwil
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% hah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \hah@mid #1#2#3{% medial hah, no ligature in Urdu
+% c1 c2 c3
+\ifurd@ \ifnum \chr@cls = 0 % 0 l
+ \if\is@end@char #3\set@act\sk@h@s@l
+ \set@chr\sk@l@h
+ \else \put@tatwil
+ \fi
+ \else \put@tatwil
+ \fi
+\else
+\ifcase \chr@cls % 0 l
+ \ifligs \set@act\sk@h@s@l
+ \if\is@end@char #3\set@chr\sk@l@h
+ \else \set@chr\sk@l@m
+ \fi\fi
+\or \act@hah \set@chr\sk@b@e@h % 1 YntCbyp
+\or \act@hah \chr@tie\a@mh@to@s \chr@sin % 2 sxSD
+\else \ifnum \chr@cls = 9 % \a@t \a@n
+ \act@hah \set@chr\sk@b@e@h
+ \else \put@tatwil
+ \fi
+\fi
+\fi }
+
+\def \hah@urd@mid #1#2#3{% medial (wavy) hah
+% c1 c2 c3
+\ifcase \chr@cls \set@act\sk@h@s@l % 0 l
+ \if\is@end@char #3\set@chr\sk@l@h \else
+ \set@chr\sk@l@m
+ \fi
+\or \act@hah \set@chr\sk@b@e@h % 1 YntCbyp
+\or \act@hah \chr@tie\a@mh@to@s \chr@sin % 2 sxSD
+\else \ifnum \chr@cls = 9 % \a@t \a@n
+ \act@hah \set@chr\sk@b@e@h
+ \else \put@tatwil
+ \fi
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \gim@test #1{% closed gim ?
+% c3
+\ifnum \chr@cls = \gim@cls % GHXJ
+\if\is@end@char #1\set@chr\sk@j@cl
+ \@mod@chrtrue \global\@highfalse
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \kaf@test #1{% short kaf ?
+%\ifx #1\a@ax \put@tatwil % swash kaf
+\ifnum \chr@cd = \a@kaf@w \put@tatwil % swash kaf
+\else \ifnum \chr@cls = \kaf@cls
+ \kaf@lig \global\@highfalse
+\else \put@tatwil
+\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% change chr@cd %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \chr@sin {% shape without tooth % c
+\@mod@chrtrue
+\ifnum \chr@cd = \a@sin \set@chr\sk@sn@s \else
+\ifnum \chr@cd = \a@sad \set@chr\sk@sd@s \else
+\fi\fi }
+
+\def \kaf@lig {% put short kaf-alif ligature
+\@mod@chrtrue
+\ifnum \chr@cd = \a@kaf \set@chr\sk@k@sh \else
+\ifnum \chr@cd = \a@kaf@s \set@chr\sk@k@sh \else
+\ifnum \chr@cd = \a@kaf@p \set@chr\sk@k@sp \else
+\ifnum \chr@cd = \a@kaf@p@s \set@chr\sk@k@sp \else
+\ifnum \chr@cd = \a@gaf \set@chr\sk@g@sh \else
+\ifnum \chr@cd = \a@gaf@s \set@chr\sk@g@sh \else
+\ifnum \chr@cd = \a@gaf@p@s \set@chr\sk@g@sp \else
+\fi\fi\fi\fi\fi\fi\fi }
+
+\def \kaf@fam {% no mark
+\ifnum \chr@cd = \a@kaf \set@chr\sk@k@s \else
+\ifnum \chr@cd = \a@kaf@p \set@chr\sk@k@p \else
+\ifnum \chr@cd = \a@gaf \set@chr\sk@g@s \else
+\fi\fi\fi }
+
+%%%%%%%%%%%%%%%%%%%%%% change act@cd %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \act@yah {% short yah
+\global\a@min 1
+\ifnum \act@cd = \a@yah \set@act\sk@y@s \else
+\ifnum \act@cd = \a@yah@h \set@act\sk@y@h@s
+\fi\fi }
+
+\def \act@hah {% short hah
+\ifurd@ \else
+\ifnum \act@cd = \a@hah \set@act\sk@h@s
+\fi\fi }
+
+\def \act@gim #1{% deposit ligature
+\ifnum \act@cd = \a@khah \set@act\sk@kh@s \act@mod = 0
+\else \set@act\sk@hh@s \@mod@acttrue
+\fi \a@min 1 }
+%\fi }
+
+\def \act@mim@spec #1*{% lam-mim etc.
+\if\is@updia #1*\set@act\sk@m@s@l
+\else \set@act\sk@m@s
+\fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% keshide %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \put@tatwil {% deposit keshide
+\ifspread \if@con \@tattrue
+\fi\fi }
+
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%