% \iffalse
%<dtx>\ProvidesFile{vndriver.dtx}[2003/11/01 v01.01 VNR.KTV.DTX.driver]
% \fi
%
% \section{Driver}
%
% \subsection{Common Part}
%
% \begin{macrocode}
%<*test|rm|it|csc>
% \end{macrocode}
%
% |version_check| was introduced in |dc1.3|.
% \begin{macrocode}
version_check(1,0);
% \end{macrocode}
%
% Accessories for polish special letters. Pseudoparameters.
%
% \begin{macrocode}
input exaccess;
input expseudo;
% \end{macrocode}
% \begin{macrocode}
mode_setup;
font_setup;
pseudo_setup;
% \end{macrocode}
%
% \begin{macrocode}
%</test|rm|it|csc>
% \end{macrocode}
%
% \subsection{Test Mode}
%
% \begin{macrocode}
%<test&(rm|it)> set_lowercase;
%<test&(rm|it)> input vnaccent;
%<test&rm> input_lr_fam;
%<test&it> input_li_fam;
% \end{macrocode}
% \begin{macrocode}
%<*test>
set_uppercase;
input vnaccent;
input_ur_fam;
%</test>
% \end{macrocode}
%
%
% \subsection{Only for T5supp}
%
% \subsubsection{Common Part}
%
% \begin{macrocode}
%<*t5supp>
input exbraces;
input expunct;
%<!csc> input exaccent;
input exsign;
%</t5supp>
% \end{macrocode}
%
% \subsubsection{Roman}
%
% \begin{macrocode}
%<*!test&rm&t5supp>
set_lowercase;
input vnaccent;
input vndothook;
input vnminus;
input vnlacc;
input vnclr;
set_uppercase;
input vnaccent;
input vnuacc;
input vncur;
%</!test&rm&t5supp>
% \end{macrocode}
%
% \subsubsection{Italic}
%
% \begin{macrocode}
%<*!test&it&t5supp>
set_lowercase;
input vnaccent;
input vndothook;
input vnminus;
input vnlacc;
input vncli;
set_uppercase;
input vnaccent;
input vnuacc;
input vncur;
%</!test&it&t5supp>
% \end{macrocode}
%
% \subsubsection{CSC}
%
% \begin{macrocode}
%<*!test&csc&t5supp>
set_uppercase;
input vnaccent;
input vnuacc;
input vncur;
%</!test&csc&t5supp>
% \end{macrocode}
%
% If the variable |gen_t5supp_supp| is already known,
% the |next| equals |endinput| and the driver stops here;
% otherwise, the |next| is |relax| and nothing happens.
%
% \begin{macrocode}
%<*!test&!t5supp&csc>
input exrulett;
input exbraces;
input expunct;
input exsign;
input exromp;
input exrdigit;
set_uppercase;
input vnaccent;
input vncur;
%</!test&!t5supp&csc>
% \end{macrocode}
%
% \subsection{Something from EC font}
%
% Letters from |EC| font.
% \begin{macrocode}
%<*!test&!t5supp&(rm|it)>
input exbraces;
input expunct;
input exaccent;
input exsign;
input exrlig;
input exromp;
input exrulett;
input exrllett;
input exrdigit;
%</!test&!t5supp&(rm|it)>
% \end{macrocode}
%
% \subsection{Lowercase Letters}
%
% \begin{macrocode}
%<*!test&!t5supp&(rm|it)>
set_lowercase;
input vnaccent;
%</!test&!t5supp&(rm|it)>
% \end{macrocode}
%
% \subsubsection{Roman fonts}
%
% \begin{macrocode}
%<*!test&!t5supp&rm>
input vnclr;
input vndothook;
input vnminus;
%</!test&!t5supp&rm>
% \end{macrocode}
%
% \subsubsection{Italic fonts}
%
% \begin{macrocode}
%<*!test&!t5supp&it>
input vncli;
input vndothook;
input vnminus;
%</!test&!t5supp&it>
% \end{macrocode}
%
% \subsection{Uppercase Letters}
%
% \begin{macrocode}
%<*!test&!t5supp&(rm|it)>
set_uppercase;
input vnaccent;
input vncur;
%</!test&!t5supp&(rm|it)>
% \end{macrocode}
%
% \subsection{Only for CSC}
%
% \begin{macrocode}
%<*csc>
% \end{macrocode}
%
% \begin{macrocode}
boolean is_small_cap;
is_small_cap:=true;
% \end{macrocode}
%%% fine higher
% the `higher' values are used while putting accents and attaching ogoneks
% \begin{macrocode}
forsuffixes $ =
u,o, letter_fit,
x_height, bar_height,
body_height,stem:
higher.$.#:=$.#; higher.$:=$;
endfor
% \end{macrocode}
%%% fine lower
% \begin{macrocode}
begingroup
% \end{macrocode}
% \begin{macrocode}
forsuffixes $ =
u, width_adj, cap_serif_fit, letter_fit,
body_height, cap_height, x_height, bar_height, comma_depth,
flare, dot_size, cap_hair, stem, cap_stem, cap_curve, cap_ess,
cap_jut, beak_jut, beak, slab, cap_bar, cap_band, cap_notch_cut,
o, apex_o:
save $; $.#:=lower.$.#; endfor
fudge:=lower.fudge;
% \end{macrocode}
% optional part:
% \begin{macrocode}
forsuffixes $ =
depth_corr, left_corr, top_breadth_corr,
tip_breadth_corr, tip_xcorr, tip_ycorr, pre_angle,
post_angle, pre_limit, post_limit, pre_lightness,
post_lightness, pre_deflexion, post_deflexion, cap_flat,
ogonek_pen#:
if known lower.$: $:=lower.$; fi
endfor
% \end{macrocode}
% \begin{macrocode}
input expseudo;
% \end{macrocode}
% \begin{macrocode}
font_setup;
pseudo_setup;
% \end{macrocode}
% \begin{macrocode}
%<*!test&!t5supp>
input_lig excspl;
%</!test&!t5supp>
% \end{macrocode}
% \begin{macrocode}
%<*test>
set_smallcap;
input vnaccent;
input_sc_fam;
endgroup
%</test>
% \end{macrocode}
%
% \begin{macrocode}
%<*!test&t5supp>
set_smallcap;
input vnaccent;
input vnlacc;
input vncur;
input txpseudo;
font_setup;
pseudo_setup;
input txaccent;
input vndothook;
input vnminus;
% \end{macrocode}
%
% \begin{macrocode}
endgroup
%</!test&t5supp>
% \end{macrocode}
%
% \begin{macrocode}
%<*!test&!t5supp>
extra_endchar := extra_endchar & "charcode:=charcode+code_offset";
code_offset := ASCII"a" - ASCII"A";
input exrulett; % upper case (majuscules)
suppress_i_dot := true;
code_offset := 0;
% \end{macrocode}
% \begin{macrocode}
set_smallcap;
input vnaccent;
input vncur;
% \end{macrocode}
% \begin{macrocode}
input txpseudo;
font_setup;
pseudo_setup;
input txaccent;
input vndothook;
input vnminus;
% \end{macrocode}
%
% \begin{macrocode}
endgroup;
% \end{macrocode}
%
% \begin{macrocode}
%</!test&!t5supp>
% \end{macrocode}
% \begin{macrocode}
%</csc>
% \end{macrocode}
%
% \subsection{Font Parameters}
%
% \subsubsection{Common Part}
%
% \begin{macrocode}
%<*!test&!t5supp&(rm|it|csc)>
font_coding_scheme := "Vietnamese TeX Font Encoding";
boundarychar := oct"027";
font_slant slant;
font_x_height x_height#;
font_cap_height cap_height#;
font_asc_height asc_height#;
%</!test&!t5supp&(rm|it|csc)>
% \end{macrocode}
%
% \begin{macrocode}
%<*!test&!t5supp&(rm|it|csc)>
font_acc_cap_height (cap_height#+acc_height#);
font_desc_depth desc_depth#;
font_max_height (max(asc_height#,body_height#, cap_height#+acc_height#));
font_max_depth (max(desc_depth#,paren_depth#,the_ogonek_depth#));
font_baselineskip max(1.2*designsize,body_height#+paren_depth#);
% font_digit_width % set inside the digits file
% font_cap_stem % set after the programme of the capital I
%</!test&!t5supp&(rm|it|csc)>
% \end{macrocode}
%
% \subsubsection{Roman}
%
% \begin{macrocode}
%<*!test&!t5supp&rm>
if monospace:
font_normal_space 9u#; % no stretching or shrinking
font_quad 18u#;
font_extra_space 9u#;
input vnmligtb; % ligature := monospaced fonts
else:
font_normal_space 6u# + 2letter_fit#;
font_normal_stretch 3u#;
font_normal_shrink 2u#;
font_quad 18u# + 4letter_fit#;
font_extra_space 2u#;
input vnrligtb; % ligature := not monospaced fonts
fi
%</!test&!t5supp&rm>
% \end{macrocode}
%
% \subsubsection{Italic}
%
% \begin{macrocode}
%<*!test&!t5supp&it>
if monospace:
font_normal_space 9u#; % no stretching or shrinking
font_quad 18u#;
font_extra_space 9u#;
letter_fit# := letter_fit
:= 0;
input vnmligtb; % ligature := monospaced
else:
font_normal_space 6u#+2letter_fit#;
font_normal_stretch 3u#;
font_normal_shrink 2u#;
font_quad 18u#+4letter_fit#;
font_extra_space 2u#;
input vniligtb; % ligature := proportionally spaced
fi
%</!test&!t5supp&it>
% \end{macrocode}
%
% \subsubsection{CSC}
%
% \begin{macrocode}
%<*!test&csc&!t5supp>
if monospace:
font_normal_space 9u#; % no stretching or shrinking
font_quad 18u#;
font_extra_space 9u#;
input vnmligtb; % do the monospace ligature programs
else:
font_normal_space 6u# + 2letter_fit#;
font_normal_stretch 3u#;
font_normal_shrink 2u#;
font_quad 18u# + 4letter_fit#;
font_extra_space 2u#;
input vncligtb; % do the ligature programs, not for monospaced fonts
fi
%</!test&csc&!t5supp>
% \end{macrocode}
%
% \endinput