%
%  Macro which are responsible for correction
%  of font parameters
%

\def\MFF@corr@many#1{%
    \if@MFF@checkit
       \MFF@dimenD=\MFF@temp@crisp\relax
       \ifdim \@tempdimb<\MFF@dimenD
              \@tempdimb=\MFF@dimenD \MFF@warncorr{#1}%
       \fi
       \MFF@dimenD=\MFF@temp@tiny\relax
       \ifdim \@tempdimb<\MFF@dimenD
              \@tempdimb=\MFF@dimenD \MFF@warncorr{#1}%
       \fi
       \MFF@dimenD=\MFF@temp@fine\relax
       \ifdim \@tempdimb<\MFF@dimenD
              \@tempdimb=\MFF@dimenD \MFF@warncorr{#1}%
       \fi
    \fi
}

\def\MFF@corr@corr#1{%
    \if@MFF@checkit
       \MFF@dimenD=\MFF@temp@cap_hair\relax
       \ifdim \@tempdimb>0.2\MFF@dimenD
              \@tempdimb=0.2\MFF@dimenD \MFF@warncorr{#1}%
       \fi
       \MFF@dimenD=\MFF@temp@stem\relax
       \ifdim \@tempdimb>0.16666666667\MFF@dimenD
              \@tempdimb=0.16666666667\MFF@dimenD \MFF@warncorr{#1}%
       \fi
       \MFF@dimenA=\MFF@temp@fudge\relax
       \MFF@multiply{\MFF@dimenA}{\MFF@dimenD}{\MFF@dimenD}%
       \ifdim \@tempdimb>0.25\MFF@dimenD
              \@tempdimb=0.25\MFF@dimenD \MFF@warncorr{#1}%
       \fi
       \MFF@dimenD=\MFF@temp@curve\relax
       \ifdim \@tempdimb>0.083333333333\MFF@dimenD
              \@tempdimb=0.083333333333\MFF@dimenD \MFF@warncorr{#1}%
       \fi
    \fi
}

%
%  Correct font parameters
%


\def\MFF@correct@u{%
    \@tempdimb=\MFF@scale@width\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{u}\fi
}

%\def\MFF@correct@width_adj{%
%}

\def\MFF@correct@serif_fit{%
    \@tempdimb=\MFF@scale@width\@tempdimb
}

\def\MFF@correct@cap_serif_fit{%
    \@tempdimb=\MFF@scale@width\@tempdimb
}

%\def\MFF@correct@letter_fit{%
%}

\def\MFF@correct@body_height{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \@tempdimb=\MFF@scale@asc\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{body_height}\fi
}

\def\MFF@correct@asc_height{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \@tempdimb=\MFF@scale@asc\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{asc_height}\fi
    \if@MFF@checkit
       \MFF@dimenD=\MFF@temp@x_height\relax
       \ifdim \@tempdimb<1.2\MFF@dimenD
              \@tempdimb=1.2\MFF@dimenD \MFF@warncorr{asc_height}%
       \fi
    \fi
}

\def\MFF@correct@cap_height{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \@tempdimb=\MFF@scale@asc\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{cap_height}\fi
}

\def\MFF@correct@fig_height{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \@tempdimb=\MFF@scale@asc\@tempdimb
    \@tempdimb=\MFF@scale@math\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{fig_height}\fi
}

\def\MFF@correct@x_height{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{x_height}\fi
    \edef\MFF@temp@x_height{\the\@tempdimb}%
}

\def\MFF@correct@math_axis{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \@tempdimb=\MFF@scale@math\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{math_axis}\fi
}

\def\MFF@correct@comma_depth{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \@tempdimb=\MFF@scale@desc\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{comma_depth}\fi
}

\def\MFF@correct@desc_depth{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \@tempdimb=\MFF@scale@desc\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{desc_depth}\fi
}

\def\MFF@correct@acc_height{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{acc_height}\fi
}

\def\MFF@correct@dot_height{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \@tempdimb=\MFF@scale@asc\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{dot_height}\fi
}

\def\MFF@correct@udot_height{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \@tempdimb=\MFF@scale@asc\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{udot_height}\fi
}

\def\MFF@correct@bar_height{%
    \@tempdimb=\MFF@scale@height\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{bar_height}\fi
    \if@MFF@checkit
       \MFF@dimenD=\MFF@temp@x_height\relax
       \ifdim \@tempdimb<0.5\MFF@dimenD
              \@tempdimb=0.5\MFF@dimenD \MFF@warncorr{bar_height}%
       \fi
       \ifdim \@tempdimb>0.55\MFF@dimenD
              \@tempdimb=0.55\MFF@dimenD \MFF@warncorr{bar_height}%
       \fi
    \fi
}

\def\MFF@correct@crisp{%
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{crisp}\fi
    \edef\MFF@temp@crisp{\the\@tempdimb}%
}

\def\MFF@correct@tiny{%
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{tiny}\fi
    \edef\MFF@temp@tiny{\the\@tempdimb}%
}

\def\MFF@correct@fine{%
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{fine}\fi
    \edef\MFF@temp@fine{\the\@tempdimb}%
}

\def\MFF@correct@thin_join{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
    \fi
    \@tempdimb=\MFF@scale@join\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{thin_join}\fi
    \MFF@corr@many{thin_join}%
}

\def\MFF@correct@hair{%
    \@tempdimb=\MFF@scale@thin\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@contrast\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{hair}\fi
    \MFF@corr@many{hair}%
    \edef\MFF@temp@hair{\the\@tempdimb}%
}

\def\MFF@correct@vair{%
    \@tempdimb=\MFF@scale@thin\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@contrast\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{vair}\fi
    \MFF@corr@many{vair}%
}

\def\MFF@correct@stem{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{stem}\fi
    \MFF@corr@many{stem}%
    \edef\MFF@temp@stem{\the\@tempdimb}%
}

\def\MFF@correct@curve{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{curve}\fi
    \if@MFF@checkit
       \MFF@dimenD=\MFF@temp@stem\relax
       \ifdim \@tempdimb<\MFF@dimenD
              \@tempdimb=\MFF@dimenD \MFF@warncorr{curve}%
       \fi
    \fi
    \MFF@corr@many{curve}%
    \edef\MFF@temp@curve{\the\@tempdimb}%
}

\def\MFF@correct@ess{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{ess}\fi
    \MFF@corr@many{ess}%
}

\def\MFF@correct@flare{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \@tempdimb=\MFF@scale@dot\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{flare}\fi
    \MFF@corr@many{flare}%
}

\def\MFF@correct@dot_size{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \@tempdimb=\MFF@scale@dot\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{dot_size}\fi
    \MFF@corr@many{dot_size}%
}

\def\MFF@correct@cap_hair{%
    \@tempdimb=\MFF@scale@thin\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@contrast\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{cap_hair}\fi
    \MFF@corr@many{cap_hair}%
    \edef\MFF@temp@cap_hair{\the\@tempdimb}%
}

\def\MFF@correct@cap_stem{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{cap_stem}\fi
    \if@MFF@checkit
       \MFF@dimenD=\MFF@temp@stem\relax
       \ifdim \@tempdimb<\MFF@dimenD
              \@tempdimb=\MFF@dimenD \MFF@warncorr{cap_stem}%
       \fi
    \fi
    \MFF@corr@many{cap_stem}%
    \edef\MFF@temp@cap_stem{\the\@tempdimb}%
}

\def\MFF@correct@cap_curve{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{cap_curve}\fi
    \if@MFF@checkit
       \MFF@dimenD=\MFF@temp@curve\relax
       \ifdim \@tempdimb<\MFF@dimenD
              \@tempdimb=\MFF@dimenD \MFF@warncorr{cap_curve}%
       \fi
    \fi
    \MFF@corr@many{cap_curve}%
}

\def\MFF@correct@cap_ess{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{cap_ess}\fi
    \MFF@corr@many{cap_ess}%
}

\def\MFF@correct@rule_thickness{%
    \@tempdimb=\MFF@scale@thin\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{rule_thickness}\fi
}

\def\MFF@correct@dish{%
    \@tempdimb=\MFF@scale@dish\@tempdimb
}

%\def\MFF@correct@bracket{%
%}

\def\MFF@correct@jut{%
    \@tempdimb=\MFF@scale@width\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{jut}\fi
}

\def\MFF@correct@cap_jut{%
    \@tempdimb=\MFF@scale@width\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{cap_jut}\fi
}

\def\MFF@correct@beak_jut{%
    \@tempdimb=\MFF@scale@width\@tempdimb
}

%\def\MFF@correct@beak{%
%}

\def\MFF@correct@notch_cut{%
    \@tempdimb=\MFF@scale@thin\@tempdimb
    \@tempdimb=\MFF@scale@notch\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{notch_cut}\fi
}

\def\MFF@correct@bar{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{bar}\fi
    \MFF@corr@many{bar}%
}

\def\MFF@correct@slab{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{slab}\fi
    \MFF@corr@many{slab}%
    \edef\MFF@temp@slab{\the\@tempdimb}%
}

\def\MFF@correct@cap_bar{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{cap_bar}\fi
    \MFF@corr@many{cap_bar}%
}

\def\MFF@correct@cap_band{%
    \@tempdimb=\MFF@scale@bold\@tempdimb
    \if n\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \if d\MFF@contrasttype
        \MFF@dimenD=\MFF@temp@cap_stem\relax
        \@tempdimb=\MFF@dimenD
    \fi
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{cap_band}\fi
    \MFF@corr@many{cap_band}%
}

\def\MFF@correct@cap_notch_cut{%
    \@tempdimb=\MFF@scale@thin\@tempdimb
    \@tempdimb=\MFF@scale@notch\@tempdimb
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{cap_notch_cut}\fi
}

%\def\MFF@correct@serif_drop{%
%}

\def\MFF@correct@stem_corr{%
    \MFF@corr@corr{stem_cor}%
    \if@MFF@checkit
       \MFF@dimenD=\MFF@temp@hair\relax
       \MFF@dimenA=\MFF@temp@fudge\relax
       \MFF@multiply{\MFF@dimenA}{\MFF@dimenD}{\MFF@dimenD}%
       \ifdim \@tempdimb>0.0625\MFF@dimenD
              \@tempdimb=0.0625\MFF@dimenD \MFF@warncorr{stem_corr}%
       \fi
    \fi
}

\def\MFF@correct@vair_corr{%
    \MFF@corr@corr{vair_cor}%
    \if@MFF@checkit
       \MFF@dimenD=\MFF@temp@slab\relax
       \ifdim \@tempdimb>0.25\MFF@dimenD
              \@tempdimb=0.25\MFF@dimenD \MFF@warncorr{vair_corr}%
       \fi
    \fi
}

%\def\MFF@correct@apex_corr{%
%}

%\def\MFF@correct@o{%
%}

%\def\MFF@correct@apex_o{%
%}

\def\MFF@correct@fudge{%
    \ifdim \@tempdimb<0.5pt\relax \@tempdimb=0.5pt \MFF@warncorr{fudge}\fi
    \edef\MFF@temp@fudge{\the\@tempdimb}%
}

%\def\MFF@correct@math_spread{%
%}

%\def\MFF@correct@superness{%
%}

%\def\MFF@correct@superpull{%
%}

\def\MFF@correct@beak_darkness{%
    \ifdim \@tempdimb<\z@ \@tempdimb=0pt \MFF@warncorr{beak_darkness}\fi
}


%
% End of font correction
%