%
% \section{Declaration of variables}
%
%    \begin{macrocode}
%<*vars>
%    \end{macrocode}
%
% \paragraph{Conditionals}
% \subparagraph{firsttime} As \cs{keys_set:nn} is run multiple times, some of its
% information storing only occurs once while we decide if the font family
% has been defined or not. When the later processing is occuring per-shape
% this no longer needs to happen; this is indicated by the `firsttime'
% conditional (initialised true).
%    \begin{macrocode}
\bool_new:N \l_@@_firsttime_bool
%    \end{macrocode}
%    \begin{macrocode}
\bool_new:N \l_@@_nobf_bool
\bool_new:N \l_@@_noit_bool
\bool_new:N \l_@@_nosc_bool
%    \end{macrocode}
%    \begin{macrocode}
\bool_new:N \l__fontspec_check_bool
\cs_new:Npn \FontspecSetCheckBoolTrue  { \bool_set_true:N  \l__fontspec_check_bool }
\cs_new:Npn \FontspecSetCheckBoolFalse { \bool_set_false:N \l__fontspec_check_bool }
%    \end{macrocode}
%
%    \begin{macrocode}
\bool_new:N \l_@@_tfm_bool
\bool_new:N \l_@@_atsui_bool
\bool_new:N \l_@@_ot_bool
\bool_new:N \l_@@_mm_bool
\bool_new:N \l_@@_graphite_bool
%    \end{macrocode}
% For dealing with legacy maths
%    \begin{macrocode}
\bool_new:N \g_@@_math_euler_bool
\bool_new:N \g_@@_math_lucida_bool
\bool_new:N \g_@@_pkg_euler_loaded_bool
%    \end{macrocode}
% For package options:
%    \begin{macrocode}
\bool_new:N \g_@@_cfg_bool
\bool_new:N \g_@@_math_bool
\bool_new:N \g_@@_euenc_bool
%    \end{macrocode}
% \paragraph{Counters}
%    \begin{macrocode}
\int_new:N \l_fontspec_script_int
\int_new:N \l_fontspec_language_int
\int_new:N \l_fontspec_strnum_int
%    \end{macrocode}
% \paragraph{Other variables}
%    \begin{macrocode}
\fp_new:N \l_@@_tmpa_fp
\fp_new:N \l_@@_tmpb_fp
\dim_new:N \l_@@_tmpa_dim
\dim_new:N \l_@@_tmpb_dim
\dim_new:N \l_@@_tmpc_dim
%    \end{macrocode}
%
%    \begin{macrocode}
\tl_set:Nx \c_colon_str { \tl_to_str:N : }
\cs_set:Npn \use_v:nnnnn #1#2#3#4#5 {#5}
\cs_set:Npn \use_iv:nnnnn #1#2#3#4#5 {#4}
%    \end{macrocode}
%
% Need these:
%    \begin{macrocode}
\cs_generate_variant:Nn \str_if_eq:nnTF {nv}
\cs_generate_variant:Nn \int_set:Nn {Nv}
\cs_generate_variant:Nn \keys_set:nn {nx}
\cs_generate_variant:Nn \keys_set_known:nnN {nx}
\cs_generate_variant:Nn \tl_if_empty:nTF {x}
\cs_generate_variant:Nn \tl_if_empty:nTF {x}
\cs_generate_variant:Nn \prop_put:Nnn {Nxx}
%    \end{macrocode}
%
% \begin{macro}{\@@_int_mult_truncate:Nn}
% Missing in expl3, IMO.
%    \begin{macrocode}
\cs_new:Nn \@@_int_mult_truncate:Nn
  {
    \int_set:Nn #1 { \__dim_eval:w #2 #1 \__dim_eval_end: }
  }
%    \end{macrocode}
% \end{macro}
%
%    \begin{macrocode}
%</vars>
%    \end{macrocode}

