1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2% hewrite.sty
3% ArabTeX
4% Modifications for Hebrew mode
5% 21.05.2003
6%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7% (c) Klaus Lagally
8%     Institut fuer Formale Methoden der Informatik
9%     Universitaet Stuttgart
10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11
12\a@ident {hewrite.sty} {3.11 for all supported Hebrew fonts} {21.05.2003}
13
14\UsePackage {hebsymb}        % Hebrew font character definitions
15\UsePackage {hebchrs}        % Hebrew letter token definitions
16
17\chardef \sind@t 1	\chardef \shind@t 2	\chardef \rd@t 3
18\chardef \r@phe 4 	\chardef \illch@r 33
19
20\newcount \heb@dsp	\newcount \heb@cd
21\newcount \heb@voc	\newcount \h@modii	\newcount \h@modi
22
23\newif \if@dagesh	\newif \if@final	\newif \if@meteg
24%\newif \ifhv@wel	% is obsolete, remove!
25\newif \ifsp@c
26
27\newdimen \h@ht		\newdimen \h@p
28
29%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30
31\def \heb@write #1>{% Hebrew output routine
32\iftest@write \tracingmacros = 1
33\iftest@parse \else \a@verb (#1)>\fi\fi
34\a@write@hook
35\ifa@@write \heb@testfont \heb@beg #1>0+0*>\fi
36\iftest@write \tracingmacros = 0
37\fi }
38
39\def \heb@testfont {% diagnose font, look for vowels and ayin
40\edef \next {\the\font }%
41\ifx \next \h@font \else
42\iftest@font \a@message {Hebrew font \next selected.}\fi
43\global\let \h@font \next \h@testfont \fi }
44
45%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
46
47\def \isch@r #1{00% code position in font not empty?
48\setbox0 \hbox {\tracinglostchars 0 \char #1}%
49\ifdim \wd0 = \z@ \xpa \setiffalse \fi }
50
51\def \h@testfont {% diagnose font, look for vowels and ayin
52\if\isch@r {"80}\global\heb@dsp "20\else
53\if\isch@r {"E0}\global\heb@dsp "80\else
54\if\isch@r {"60}\global\heb@dsp 0\else
55	\global\heb@dsp 0\errmessage {no usable Hebrew font found}%
56\fi\fi\fi
57\gdef \v@adj {0}\global\h@ht \ht0 \global\h@p .1\h@ht \relax
58\xdef \a@slant {\xpa\getfactor \the\fontdimen1\font }%
59\heb@cd \heb@dsp \advance \heb@cd 114 \xdef \hc@Pv {\the\heb@cd }%
60\if\isch@r {"10}\set@shalom\else
61\if\isch@r {1}\set@hclassic\else
62	\set@hebstd
63\fi\fi }
64
65\def \set@hclassic {% and dclassic, hcaption, dcaption
66\global\let \h@kern \relax \global\sp@cfalse
67\gdef \v@adj {0}\gdef \hc@Pv {123}%
68\if\isch@r {"30}\global\sp@ctrue
69\gdef \v@adj {-.2}\gdef \hc@Pv {114}%
70\fi \set@hcls }
71
72\def \set@shalom {% shlm_old, shlm_stk, shlm_scr
73\gdef \h@kern {\kern.05em }\global\sp@cfalse
74\set@shlm }
75
76\def \set@hebstd {% jerusalem, oldjaffa, telaviv, deadsea,
77% fr, frbx, frsl, crml, crmlsl
78\global\let \h@kern \relax \global\sp@ctrue
79\set@hstd }
80
81%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
82
83\def \heb@beg #1#2*#3{% start output
84% c m * c
85\h@test@chr #1\heb@end #1#2*#3}
86
87\def \heb@end #1#2*#3{% final character
88% c m * c
89\ifx #1>\let \next \relax
90\else \def \next {\heb@mid #3}%
91	\ifx #1-\else
92	\ifcat \nxp #1-\h@put@spec #1#2*#3<%
93	\else \h@put@end #1#2*#3<%
94	\fi\fi
95	\h@test@chr #3%
96\fi \next }
97
98\def \heb@mid #1#2*#3{% non-final character
99% c m * c
100\ifx #1>\let \next \relax
101\else \def \next {\heb@mid #3}%
102	\ifcat \nxp #1-\h@put@spec #1#2*#3<%
103	\else \h@put@mid #1#2*#3<%
104	\fi
105	\h@test@chr #3%
106\fi \next }
107
108%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
109
110\def \h@put@end {% final position
111\if@final \advance \act@cd -1 \fi \h@put@mid }
112
113\gdef \h@put@mid #1#2+#3*#4<{% deposit character
114% c m1 + m2 * c <
115%	\def \next {\heb@mid #4}%
116\ifnum \act@cd = \hc@@ \relax \h@put@ill \else   % illegal character
117\case #1\of
118{	B{\put@maqqef \def \next {\heb@end #4}}
119	K{\put@box {$|$}}
120	M{\put@box {$\Box$}}
121       WN{\put@phantom }
122        y{\h@ylig #4<}
123        w{\h@wlig #4<}
124\default {\h@putchar }
125}\endcase
126\fi
127\heb@accent #2+#3*\h@kern
128\ifnum \act@cd = \hc@l \relax \smash {\unhbox \ab@x }%
129\else \unhbox \ab@x
130\fi }
131
132\def \h@wlig #1<{% waw ligatures
133\ifx #1w%
134\fi
135\h@putchar }
136
137\def \h@ylig #1<{% yod ligatures
138\ifx #1w%
139\fi
140\h@putchar }
141
142\def \h@put@ill {\put@box {$\bullet$}}
143
144\def \put@phantom {% small space
145\heb@cd \hc@y \advance \heb@cd \heb@dsp
146\put@box {\hphantom{\char \the\heb@cd }}}
147
148{\catcode`\^ 12 	\catcode `\_ 12 	\catcode `\& 12
149\catcode `\A 12 	\catcode `\B 12 	\catcode `\C 12
150\catcode `\D 12 	\catcode `\E 12 	\catcode `\F 12
151\catcode `\G 12 	\catcode `\H 12 	\catcode `\I 12
152\catcode `\J 12 	\catcode `\K 12 	\catcode `\L 12
153\catcode `\M 12 	\catcode `\N 12 	\catcode `\O 12
154\catcode `\P 12
155%
156\gdef \h@put@spec #1#2*#3<{% special character
157% c m * c <
158\case #1\of
159{      -|{}
160%      !,.{#1}
161	:{#1\,}
162     \lq {\rm \bf `}
163	`{\rm \bf ``}
164%	A{{\tt "}\def \next {\heb@end #3}}		% "
165	A{{\tt "}} 		% "
166	B{{\rm \bf ,}}		% ,
167	C{{\tt -}}		% -
168	D{{\tt \char`\|}}	% |
169%	E{{\tt \char'015}\def \next {\heb@end #3}}	% '
170	E{{\tt \char'015}} 	% '
171	F{{\tt \char`\\}}	% \
172	G{{\tt \char`\}}}	% {
173	H{{\tt \char`\{}}	% }
174	I{{\bf $\cdots$}}	% ...
175	J{{\bf $\div$}}		% -:-
176	K{{\tt \char`\>}}	% <
177	L{{\tt \char`\<}}	% >
178	M{{\rm \bf --}}		% --
179	N{{\rm \bf ---}}	% ---
180	O{{\rm \bf `}}		% `
181%	P{{\rm \bf '}\def \next {\heb@end #3}}		% '
182	P{{\rm \bf '}}		% '
183\default {{\ifsp@c \else \rm \bf \fi
184	\ifx #1][\else \ifx #1[]\else
185	#1\fi\fi}}
186}\endcase
187\ifx #1A\else \ifx #1E\else \ifx #1'\else
188\def \next {\heb@end #3}\fi\fi\fi }
189}% \catcodes 12
190
191%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
192
193\def \h@test@chr #1{% get character attributes
194\@dageshfalse \@finalfalse \act@mod 0 \act@cd \hc@@
195\def \hc@sk {#1}%
196\csname tc@\string #1\endcsname }
197
198%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
199
200\def \heb@accent #1+#2*{% put modifier onto contents of "\ab@x"
201% m1 + m2 *
202\red@mod = 0#1 \relax \advance \red@mod 100 \relax
203\xpa \heb@split \the\red@mod *\h@putaccent #2*}
204
205\def \h@putmod #1{% deposit modifier
206\ifcase #1\relax
207\or \h@sindot \or \h@shindot \or \h@rdot \or \h@raphe \fi }
208
209\def \heb@split 1#1#2*{% separate modifier 1
210% 1 m11 m12 *
211\h@putmod #1\@metegfalse \red@mod = #2\relax
212\ifnum \red@mod > 3 \advance \red@mod -4  \@metegtrue \fi
213\ifnum \red@mod > 1 \advance \red@mod -2  \h@cholem \fi
214\ifnum \red@mod > 0 \advance \red@mod -1  \@dageshtrue \fi }
215
216\def \h@putaccent #1*{% deposit vowels
217\h@putmod \act@mod
218\ifcase 0#1\relax
219\put@dummy        \or \put@shwa     \or \put@patach  \or \put@chireq  \or
220\put@qibbus       \or \put@chpatach \or \put@chsegol \or \put@chqames \or
221\put@segol        \or \put@cholem   \or \put@qames   \or \put@sere    \or
222\put@qameschat    \or \put@patachf  \fi
223\if@dagesh \put@dagesh \fi }
224
225%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
226
227\def \h@@putchar {% choose character glyph
228\ifnum \act@cd = \hc@v \relax \h@putlig \hc@w \hc@w \else
229\ifnum \act@cd = \hc@oy \relax \h@putlig \hc@y \hc@w \else
230\ifnum \act@cd = \hc@ey \relax \h@putlig \hc@y \hc@y \else
231	\h@put@char \act@cd
232\fi\fi\fi }%
233
234\def \h@putlig #1#2{% Hebrew ligature
235\h@put@char #1\setbox4 \box \ab@x
236\h@put@char #2\setbox6 \box \ab@x
237\put@box {\unhcopy4 \unhcopy6 }}%
238
239\def \h@put@char #1{% choose character glyph
240\heb@cd #1\advance \heb@cd \heb@dsp \put@b@x {\the\heb@cd }}%
241
242\def \h@@putdot #1{% put a dot above a character
243\dimen@ 1.25\h@ht \dimen2 \a@slant\dimen@ \advance\dimen2 #1\a@wd
244\global\setbox\ab@x \hbox
245{\rlap{\kern\dimen2 \raise\dimen@\hbox{\the@dot }}\unhcopy\ab@x}}%
246
247\def \h@@raphe {% no dagesh
248\setbox0 \hbox {\the@raphe }\dimen@ 1.25\h@ht
249\dimen2 .5\a@wd \advance\dimen2 -.5\wd0 \advance\dimen2 \a@slant\dimen@
250\global\setbox\ab@x \hbox
251{\rlap{\kern\dimen2 \raise\dimen@\box0 }\unhcopy\ab@x }}%
252
253%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
254% dynamic definitions for vowel positioning
255% CAUTION: these routines are called in HMODE
256%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
257%
258%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
259\gdef \set@hcls{% routines for the HCLASSIC font family
260\globaldefs = 1\relax
261%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
262%
263\let \h@putchar \h@@putchar
264%
265\def \put@maqqef {% deposit maqqef
266\put@b@x {\the\act@cd }}%
267%
268\def \h@vowel {% check for meteg
269\if@meteg \xpa \h@meteg \else \xpa \h@putvowel \fi }%
270%
271\def \h@meteg ##1{% put vowel and meteg
272\h@putvowel {\char 8 ##1}}%
273%
274\def \the@dot {\char 0}%
275%
276\def \the@raphe {\vrule width.8\a@wd height.4pt depth0pt }%
277%
278\def \put@dummy     {\h@vowel {}}%                  % dummy for meteg, silluq
279\def \put@patach    {\h@vowel {\char 1 }}%          % patach
280\def \put@qames     {\h@vowel {\char 2 }}%          % qames
281\def \put@segol     {\h@vowel {\char 3 }}%          % segol
282\def \put@qibbus    {\h@vowel {\char 4 }}%          % qibbus
283\def \put@chireq    {\h@vowel {\char 5 }}%          % chireq
284\def \put@qameschat {\h@vowel {\char 6 }}%          % qames chatuph
285\def \put@shwa      {\h@vowel {\char 7 }}%          % shwa
286\def \put@sere      {\h@vowel {\char 9 }}%          % sere
287\def \put@chpatach  {\h@vowel {\char 1 \char 7 }}%  % chateph patach
288\def \put@chsegol   {\h@vowel {\char 3 \char 7 }}%  % chateph segol
289\def \put@chqames   {\h@vowel {\char 6 \char 7 }}%  % chateph qames
290\def \put@cholem    {\h@vowel {}\h@ldot }%          % cholem breve, meteg?
291\def \put@patachf   {\h@vowel {\hphantom
292			{\char 1 }\char 1 }}%       % patach furtivum
293%
294\def \put@dagesh {\def \vadj {.48}\def \hadj {0}% default
295\ifnum \act@cd = \hc@j  \def \hadj {-.2}\fi                  % gimel
296\ifnum \act@cd = \hc@w  \def \hadj {-.3}\def \vadj {.55}\fi  % waw
297\ifnum \act@cd = \hc@z  \def \hadj {-.4}\fi                  % zayin
298\ifnum \act@cd = \hc@tt \def \hadj  {.1}\fi                  % tet
299\ifnum \act@cd = \hc@y  \def \hadj {-.45}\def \vadj {.55}\fi % yod
300\ifnum \act@cd = \hc@l  \def \hadj {-.1}\def \vadj {.3}\fi   % lamed
301\ifnum \act@cd = \hc@n  \def \hadj {-.2}\fi                  % nun
302\ifnum \act@cd = \hc@nf \def \hadj {-.2}\fi                  % nun sofit
303\ifnum \act@cd = \hc@f  \def \hadj {.15}\fi                  % pe
304\ifnum \act@cd = \hc@ff \def \hadj {.15}\fi                  % pe sofit
305\ifnum \act@cd = \hc@ss \def \hadj  {.1}\fi                  % sade
306\ifnum \act@cd = \hc@sf \def \hadj  {.1}\fi                  % sade sofit
307\ifnum \act@cd = \hc@si \def \hadj {.07}\fi                  % shin
308\ifnum \act@cd = \hc@M  \def \vadj  {.7}\fi                  % box
309\dimen@ \vadj\a@ht \dimen2 \a@slant\dimen@
310\advance\dimen2 \hadj\a@wd \advance\dimen2 .5\a@wd
311\global\setbox\ab@x \hbox
312%{\rlap{\kern\dimen2 \raise\dimen@\hbox{\char 0 }}\unhcopy\ab@x}}%
313{\rlap{\kern\dimen2 \raise\dimen@\hbox{\the@dot }}\unhcopy\ab@x}}%
314%
315\let \h@put@dot \h@@putdot
316%
317\let \h@raphe \h@@raphe
318%
319\def \h@shindot {\h@put@dot {.8}}%        % right dot for shin
320%
321\def \h@sindot  {\h@put@dot {.2}}%        % left dot for sin
322%
323\def \h@rdot    {\h@put@dot {.5}}%        % right dot for waw, cholem breve
324%
325\def \h@ldot    {% left dot for cholem breve
326\ifnum \act@cd = \hc@l \relax \h@put@dot {-.1}% lamed
327\else \h@put@dot {.1}\fi }%
328%
329\def \h@cholem {% depends on carrier
330\ifnum \act@cd = \hc@w \h@rdot \else \h@shindot \fi }%
331%
332\def \h@putvowel ##1{% vowel mark
333\ifx ##1\relax \relax \else \def \hadj {0}\def \vadj {0}%
334\ifnum \act@cd = \hc@P \let\vadj \v@adj \put@b@x{\hc@Pv }\else	% vowel-ayin
335\ifnum \act@cd = \hc@kf \def \hadj  {-.1}\def \vadj {.85}\else  % final kaph
336\ifnum \act@cd = \hc@r  \def \hadj  {.35}\else                  % resh
337\ifnum \act@cd = \hc@d  \def \hadj   {.2}\else                  % daleth
338\ifnum \act@cd = \hc@q  \def \hadj   {.1}\else                  % qoph
339\ifnum \act@cd = \hc@w  \def \hadj  {.15}\else                  % waw
340\ifnum \act@cd = \hc@si \def \hadj  {-.1}\else                  % sin
341\fi\fi\fi\fi\fi\fi\fi
342\setbox0 \hbox to \a@wd {\hss ##1\hss}\dimen@ \vadj\a@ht
343\dimen2 \a@slant\dimen@ \advance\dimen2 \hadj\a@wd
344\global\setbox\ab@x \hbox
345{\rlap {\kern\dimen2 \raise\dimen@\box0 }\unhcopy\ab@x }\fi }%
346%
347%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
348\globaldefs = 0 }% end font HCLASSIC
349%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
350%
351\global\let \@set@hcls \set@hcls
352
353\gdef \set@hcls{% routines for the HCLASSIC font family
354%\globaldefs = 1\relax
355\a@message {patch HCLASSIC}%
356\@set@hcls
357\globaldefs = 1\relax
358\def \the@dot {\vrule width\h@p height0pt depth\h@p }%
359\def \the@mdot {\vrule width\h@p height-\h@p depth2\h@p }%
360\def \the@ldot {\vrule width\h@p height-2\h@p depth3\h@p }%
361\def \the@shwa {\the@dot \kern-\h@p \the@ldot }%
362\def \the@sere {\the@dot \kern\h@p \the@dot }%
363\def \the@segol {\the@dot \the@ldot \the@dot }%
364\def \the@qibbus {\the@dot \the@mdot \the@ldot }%
365\def \the@meteg {\vrule width\h@p height0pt depth3\h@p }%
366\def \the@meteg {\vrule width\h@p height-.2\h@p depth3\h@p }%
367\def \the@patach {\vrule width3\h@p height0pt depth\h@p }%
368\def \the@qames {\the@patach \kern-2\h@p \the@meteg \kern\h@p }%
369\def \put@dummy     {\h@vowel {}}%
370\def \put@patach    {\h@vowel {\the@patach }}%
371\def \put@qames     {\h@vowel {\the@qames }}%
372\def \put@segol     {\h@vowel {\the@segol }}%
373\def \put@qibbus    {\h@vowel {\the@qibbus }}%
374\def \put@chireq    {\h@vowel {\the@dot }}%
375\def \put@qameschat {\h@vowel {\the@qames }}%
376\def \put@shwa      {\h@vowel {\the@shwa }}%
377\def \put@sere      {\h@vowel {\the@sere }}%
378\def \put@chpatach  {\h@vowel {\the@patach \kern\h@p \the@shwa }}%
379\def \put@chsegol   {\h@vowel {\the@segol \kern\h@p \the@shwa }}%
380\def \put@chqames   {\h@vowel {\the@qames \kern\h@p \the@shwa }}%
381\def \put@cholem    {\h@vowel {}\h@ldot }%
382\def \put@patachf   {\h@vowel {\kern4\h@p \the@patach }}%
383%
384\def \h@vowel {% check for meteg
385\if@meteg \xpa \h@meteg \else \xpa \h@putvowel \fi }%
386%
387\def \h@meteg ##1{% put vowel and meteg
388\h@putvowel {\the@meteg \kern\h@p ##1}}%
389%
390\def \h@vowel ##1{% check for meteg
391\if@meteg \xpa \h@meteg \else \xpa \h@putvowel \fi {\raise -.2ex\hbox{##1}}}%
392%
393\def \h@vowel ##1{% check for meteg
394\if@meteg \h@meteg {##1}\else \h@putvowel {\raise -.2ex\hbox{##1}}\fi }%
395%
396\def \h@vowel ##1{% check for meteg
397\if@meteg
398\h@putvowel {\raise -.2ex\hbox{\the@meteg \kern\h@p ##1}}\else
399\h@putvowel {\raise -.2ex\hbox{##1}}\fi }%
400%
401\globaldefs = 0 }% end standard fonts
402
403%
404%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
405\gdef \set@shlm{% routines for the SHALOM fonts
406\globaldefs = 1\relax
407%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
408%
409\def \h@putchar {% choose character glyph
410\ifnum \act@cd = \hc@v \put@b@x {18}\else
411\ifnum \act@cd = \hc@oy \put@b@x {19}\else
412\ifnum \act@cd = \hc@ey \put@b@x {21}\else
413	\h@put@char \act@cd
414\fi\fi\fi }%
415%
416\def \put@maqqef {% deposit maqqef
417\put@box {\char 25}}%
418%
419\def \isn@rrow {% narrow character (class 2) ?
420\xpa \is@in@list \hc@sk gdinrwyGDNORUWY>}%
421%
422\def \h@vowel ##1{% check class
423\heb@voc = ##1\relax
424\if\isn@rrow \advance\heb@voc 17
425\put@box {\unhcopy\ab@x \llap{\char\heb@voc \kern -.075em }}%
426\else \xpa\h@v@wel \xpa{\the\heb@voc }\fi }%
427%
428\def \h@v@wel ##1{% add vowel char right
429\put@box {\unhcopy\ab@x \char ##1}}%
430%
431\def \put@dummy     {\relax }%                % dummy for meteg, silluq (?)
432\def \put@segol     {\h@vowel {50}}%          % segol
433\def \put@qibbus    {\h@vowel {52}}%          % qibbus
434\def \put@qameschat {\h@vowel {54}}%          % qames chatuph
435\def \put@sere      {\h@vowel {49}}%          % sere
436\def \put@chpatach  {\h@vowel {56}}%          % chateph patach
437\def \put@chsegol   {\h@vowel {55}}%          % chateph segol
438\def \put@chqames   {\h@vowel {57}}%          % chateph qames
439\def \put@patachf   {\h@vowel {70}}%          % patach furtivum
440%
441\def \put@shwa      {% shwa on final kaf ?
442\ifnum\act@cd = \hc@kf \h@v@wel {85}\else \h@vowel {51}\fi }%
443%
444\def \put@qames     {% qames on alef or final kaf ?
445\ifnum\act@cd = \hc@a \put@b@x {17}\else
446\ifnum\act@cd = \hc@kf \h@v@wel {86}\else \h@vowel {54}\fi\fi }%
447%
448\def \put@patach    {% patach on alef or 2 yod ?
449\ifnum\act@cd = \hc@ey \put@b@x {22}\else
450\ifnum\act@cd = \hc@a \put@b@x {16}\else \h@vowel {53}\fi\fi }%
451%
452\def \put@chireq    {% chireq on yod ?
453\ifnum\act@cd = \hc@y \put@b@x {20}\else \h@vowel {48}\fi }%
454%
455\def \put@cholem {% cholem breve, meteg?
456\ifnum\act@cd = \hc@l \put@box {\char 61 \unhcopy\ab@x }\else
457\put@box {\rlap {\kern .1em \char 61 }\unhcopy\ab@x }\fi }%
458%
459\def \h@cholem {% depends on carrier
460\ifnum \act@cd = \hc@w \put@b@x {62}\else \h@shindot \fi }%
461%
462\def \h@shindot {% right dot for sin
463\ifnum \act@cd = \hc@si \put@b@x {23}\else
464\put@box {\unhcopy\ab@x \llap {\char 61 \kern .1em}}\fi }%
465%
466\def \h@sindot {% left dot for sin
467\ifnum \act@cd = \hc@si \put@b@x {24}\fi }%
468%
469\def \h@rdot {\h@v@wel {61}}% right dot for waw, cholem breve
470%
471\def \h@raphe {\h@v@wel {26}}% soft consonant
472%
473\def \put@dagesh {% test for yod and class2
474\ifnum\act@cd = \hc@y \h@v@wel {89}\else
475\ifnum\act@cd = \hc@w \put@b@x {60}\else
476\if\isn@rrow \put@box {\unhcopy\ab@x \llap {\char 88 \kern .05em}}%
477\else \h@v@wel {87}\fi\fi\fi }%
478%
479%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
480\globaldefs = 0 }% end font SHALOM
481%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
482%
483%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
484\gdef \set@hstd{% routines for the standard fonts
485\globaldefs = 1\relax
486%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
487%
488\let \h@putchar \h@@putchar
489%
490\def \put@maqqef {% deposit maqqef
491\put@box {\kern.05em\raise .6ex \hbox {\char \act@cd }\kern.05em}}%
492%
493\let \h@raphe \h@@raphe
494%
495\let \h@put@dot \h@@putdot
496%
497\def \h@shindot {\h@put@dot {.8}}%        % right dot for shin
498%
499\def \h@sindot  {\h@put@dot {.2}}%        % left dot for sin
500%
501\def \h@rdot    {\h@put@dot {.5}}%        % right dot for waw, cholem breve
502%
503\def \h@ldot    {% left dot for cholem breve
504%\ifnum \act@cd = \hc@l \relax \h@put@dot {-.1}% lamed
505\ifnum \act@cd = \hc@l \relax \h@put@dot {-.2}% lamed
506\else \h@put@dot {.1}\fi }%
507%
508\def \h@cholem {% depends on carrier
509\ifnum \act@cd = \hc@w \h@rdot \else \h@shindot \fi }%
510%
511\def \the@raphe {\vrule width8\h@p height\h@p depth0pt }%
512\def \the@dot {\vrule width\h@p height0pt depth\h@p }%
513\def \the@mdot {\vrule width\h@p height-\h@p depth2\h@p }%
514\def \the@ldot {\vrule width\h@p height-2\h@p depth3\h@p }%
515\def \the@shwa {\the@dot \kern-\h@p \the@ldot }%
516\def \the@sere {\the@dot \kern\h@p \the@dot }%
517\def \the@segol {\the@dot \the@ldot \the@dot }%
518\def \the@qibbus {\the@dot \the@mdot \the@ldot }%
519\def \the@meteg {\vrule width\h@p height0pt depth3\h@p }%
520\def \the@patach {\vrule width3\h@p height0pt depth\h@p }%
521\def \the@qames {\the@patach \kern-2\h@p \the@meteg \kern\h@p }%
522%
523\def \put@dummy     {\relax}%
524\def \put@dummy     {\h@vowel {}}%
525\def \put@patach    {\h@vowel {\the@patach }}%
526\def \put@qames     {\h@vowel {\the@qames }}%
527\def \put@segol     {\h@vowel {\the@segol }}%
528\def \put@qibbus    {\h@vowel {\the@qibbus }}%
529\def \put@chireq    {\h@vowel {\the@dot }}%
530\def \put@qameschat {\h@vowel {\the@qames }}%
531\def \put@shwa      {\h@vowel {\the@shwa }}%
532\def \put@sere      {\h@vowel {\the@sere }}%
533\def \put@chpatach  {\h@vowel {\the@patach \kern\h@p \the@shwa }}%
534\def \put@chsegol   {\h@vowel {\the@segol \kern\h@p \the@shwa }}%
535\def \put@chqames   {\h@vowel {\the@qames \kern\h@p \the@shwa }}%
536\def \put@cholem    {\h@vowel {}\h@ldot }%
537\def \put@patachf   {\h@vowel {\kern4\h@p \the@patach }}%
538%
539\def \put@dagesh {\def \vadj {.48}\def \hadj {0}% default
540\ifnum \act@cd = \hc@j  \def \hadj {-.2}\fi                  % gimel
541\ifnum \act@cd = \hc@w  \def \hadj {-.3}\def \vadj {.55}\fi  % waw
542\ifnum \act@cd = \hc@z  \def \hadj {-.4}\fi                  % zayin
543\ifnum \act@cd = \hc@tt \def \hadj  {.1}\fi                  % tet
544\ifnum \act@cd = \hc@y  \def \hadj {-.45}\def \vadj {.55}\fi % yod
545\ifnum \act@cd = \hc@l  \def \hadj {-.1}\def \vadj {.3}\fi   % lamed
546\ifnum \act@cd = \hc@n  \def \hadj {-.2}\fi                  % nun
547\ifnum \act@cd = \hc@nf \def \hadj {-.2}\fi                  % nun sofit
548\ifnum \act@cd = \hc@f  \def \hadj {.05}\fi                  % pe
549\ifnum \act@cd = \hc@ff \def \hadj {.15}\fi                  % pe sofit
550\ifnum \act@cd = \hc@ss \def \hadj  {.1}\fi                  % sade
551\ifnum \act@cd = \hc@sf \def \hadj  {.1}\fi                  % sade sofit
552\ifnum \act@cd = \hc@si \def \hadj {.18}\fi                  % shin
553\ifnum \act@cd = \hc@M  \def \vadj  {.7}\fi                  % box
554\dimen@ \vadj\a@ht \dimen2 \a@slant\dimen@ \advance \dimen2 -\h@p
555\advance\dimen2 \hadj\a@wd \advance\dimen2 .5\a@wd
556\global\setbox\ab@x \hbox
557{\rlap{\kern\dimen2 \raise\dimen@\hbox{\the@dot }}\unhcopy\ab@x}}%
558%
559\def \h@putvowel ##1{% vowel mark
560\ifx ##1\relax \relax \else \def \hadj {0}\def \vadj {0}%
561\ifnum \act@cd = \hc@P \let\vadj \v@adj \put@b@x{\hc@Pv }\else	% vowel-ayin
562\ifnum \act@cd = \hc@kf \def \hadj  {-.1}\def \vadj {.85}\else  % final kaph
563\ifnum \act@cd = \hc@r  \def \hadj  {.35}\else                  % resh
564\ifnum \act@cd = \hc@d  \def \hadj   {.2}\else                  % daleth
565\ifnum \act@cd = \hc@q  \def \hadj   {.1}\else                  % qoph
566\ifnum \act@cd = \hc@y  \def \hadj   {.1}\else                  % yod
567\ifnum \act@cd = \hc@w  \def \hadj  {.15}\else                  % waw
568\ifnum \act@cd = \hc@si \def \hadj  {-.1}\else                  % sin
569\fi\fi\fi\fi\fi\fi\fi\fi
570\setbox0 \hbox to \a@wd {\hss ##1\hss}\dimen@ \vadj\a@ht
571\advance \dimen@ -2\h@p
572\dimen2 \a@slant\dimen@ \advance\dimen2 \hadj\a@wd
573\global\setbox\ab@x \hbox
574{\rlap {\kern\dimen2 \raise\dimen@\box0 }\unhcopy\ab@x }\fi }%
575%
576\def \h@vowel {% check for meteg
577\if@meteg \xpa \h@meteg \else \xpa \h@putvowel \fi }%
578%
579\def \h@meteg ##1{% put vowel and meteg
580\h@putvowel {\the@meteg \kern\h@p ##1}}%
581%
582%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
583\globaldefs = 0 }% end standard fonts
584%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
585%}% end of dynamic definitions
586%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
587\endinput
588%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
589
590