% \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