%
% \section{Error/warning/info messages}
%
%    \begin{macrocode}
%<*fontspec>
%    \end{macrocode}
%
% Shorthands for messages:
%    \begin{macrocode}
\cs_new:Npn \@@_error:n     { \msg_error:nn     {fontspec} }
\cs_new:Npn \@@_error:nn    { \msg_error:nnn    {fontspec} }
\cs_new:Npn \@@_error:nx    { \msg_error:nnx    {fontspec} }
\cs_new:Npn \@@_warning:n   { \msg_warning:nn   {fontspec} }
\cs_new:Npn \@@_warning:nx  { \msg_warning:nnx  {fontspec} }
\cs_new:Npn \@@_warning:nxx { \msg_warning:nnxx {fontspec} }
\cs_new:Npn \@@_info:n      { \msg_info:nn      {fontspec} }
\cs_new:Npn \@@_info:nx     { \msg_info:nnx     {fontspec} }
\cs_new:Npn \@@_info:nxx    { \msg_info:nnxx    {fontspec} }
\cs_new:Npn \@@_trace:n     { \msg_trace:nn     {fontspec} }
%    \end{macrocode}
%
% Allow messages to be written with spaces acting as normal:
%    \begin{macrocode}
\cs_generate_variant:Nn \msg_new:nnn  {nnx}
\cs_generate_variant:Nn \msg_new:nnnn {nnxx}
\cs_new:Nn \@@_msg_new:nnn
  { \msg_new:nnx {#1} {#2} { \tl_trim_spaces:n {#3} } }
\cs_new:Nn \@@_msg_new:nnnn
  { \msg_new:nnxx {#1} {#2} { \tl_trim_spaces:n {#3} } { \tl_trim_spaces:n {#4} } }
\char_set_catcode_space:n {32}
%    \end{macrocode}
%
% \subsection{Errors}
%
%    \begin{macrocode}
\@@_msg_new:nnn {fontspec} {only-inside-encdef}
 {
  \exp_not:N#1can only be used in the second argument
  to \string\DeclareUnicodeEncoding.
 }
\@@_msg_new:nnn {fontspec} {only-import-tu}
 {
  The "\string\ImportEncoding" command can only take "TU" as an argument at this stage.
 }
\@@_msg_new:nnn {fontspec} {no-size-info}
 {
  Size information must be supplied.\\
  For example, SizeFeatures={Size={8-12},...}.
 }
\@@_msg_new:nnnn {fontspec} {font-not-found}
 {
  The font "#1" cannot be found.
 }
 {
  A font might not be found for many reasons.\\
  Check the spelling, where the font is installed etc. etc.\\\\
  When in doubt, ask someone for help!
 }
\@@_msg_new:nnnn {fontspec} {rename-feature-not-exist}
 {
  The feature #1 doesn't appear to be defined.
 }
 {
  It looks like you're trying to rename a feature that doesn't exist.
 }
\@@_msg_new:nnn {fontspec} {no-glyph}
 {
  '\l_fontspec_fontname_tl' does not contain glyph #1.
 }
\@@_msg_new:nnnn {fontspec} {euler-too-late}
 {
  The euler package must be loaded BEFORE fontspec.
 }
 {
  fontspec only overwrites euler's attempt to
  define the maths text fonts if fontspec is
  loaded after euler. Type <return> to proceed
  with incorrect \string\mathit, \string\mathbf, etc.
 }
\@@_msg_new:nnnn {fontspec} {no-xcolor}
 {
  Cannot load named colours without the xcolor package.
 }
 {
  Sorry, I can't do anything to help. Instead of loading
  the color package, use xcolor instead.
 }
\@@_msg_new:nnnn {fontspec} {unknown-color-model}
 {
  Error loading colour `#1'; unknown colour model.
 }
 {
  Sorry, I can't do anything to help. Please report this error
  to my developer with a minimal example that causes the problem.
 }
\@@_msg_new:nnnn {fontspec} {not-in-addfontfeatures}
 {
  The "#1" font feature cannot be used in \string\addfontfeatures.
 }
 {
  This is due to how TeX loads fonts; such settings
  are global so adding them mid-document within a group causes
  confusion. You'll need to define multiple font families to achieve
  what you want.
 }
%    \end{macrocode}
%
% \subsection{Warnings}
%
%    \begin{macrocode}
\@@_msg_new:nnn {fontspec} {tu-clash}
 {
  I have found the tuenc.def encoding definition file but the TU encoding is not
  defined by the LaTeX2e kernel; attempting to correct but you really should update
  to the latest version of LaTeX2e.
 }
\@@_msg_new:nnn {fontspec} {tu-missing}
 {
  The TU encoding seems to be missing; please update to the latest version of LaTeX2e.
 }
\@@_msg_new:nnn {fontspec} {addfontfeatures-ignored}
 {
  \string\addfontfeature (s) ignored \msg_line_context:;
  it cannot be used with a font that wasn't selected by a fontspec command.\\
  \\
  The current font is "\use:c{font@name}".\\
  \int_compare:nTF { \clist_count:n {#1} = 1 }
    { The requested feature is "#1". }
    { The requested features are "#1". }
 }
\@@_msg_new:nnn {fontspec} {feature-option-overwrite}
 {
  Option '#2' of font feature '#1' overwritten.
 }
\@@_msg_new:nnn {fontspec} {script-not-exist-latn}
 {
  Font '\l_fontspec_fontname_tl' does not contain script '#1'.\\
  'Latin' script used instead.
 }
\@@_msg_new:nnn {fontspec} {script-not-exist}
 {
  Font '\l_fontspec_fontname_tl' does not contain script '#1'.
 }
\@@_msg_new:nnn {fontspec} {aat-feature-not-exist}
 {
  '\l_keys_key_tl=\l_keys_value_tl' feature not supported
  for AAT font '\l_fontspec_fontname_tl'.
 }
\@@_msg_new:nnn {fontspec} {aat-feature-not-exist-in-font}
 {
  AAT feature '\l_keys_key_tl=\l_keys_value_tl' (#1) not available
  in font '\l_fontspec_fontname_tl'.
 }
\@@_msg_new:nnn {fontspec} {icu-feature-not-exist}
 {
  '\l_keys_key_tl=\l_keys_value_tl' feature not supported
  for OpenType font '\l_fontspec_fontname_tl'
 }
\@@_msg_new:nnn {fontspec} {icu-feature-not-exist-in-font}
 {
  OpenType feature '\l_keys_key_tl=\l_keys_value_tl' (#1) not available
  for font '\l_fontspec_fontname_tl'
  with script '\l_@@_script_name_tl' and language '\l_@@_lang_name_tl'.
 }
\@@_msg_new:nnn {fontspec} {no-opticals}
 {
  '\l_fontspec_fontname_tl' doesn't appear to have an Optical Size axis.
 }
\@@_msg_new:nnn {fontspec} {language-not-exist}
 {
  Language '#1' not available
  for font '\l_fontspec_fontname_tl'
  with script '\l_@@_script_name_tl'.\\
  'Default' language used instead.
 }
\@@_msg_new:nnn {fontspec} {only-xetex-feature}
 {
  Ignored XeTeX only feature: '#1'.
 }
\@@_msg_new:nnn {fontspec} {only-luatex-feature}
 {
  Ignored LuaTeX only feature: '#1'.
 }
\@@_msg_new:nnn {fontspec} {no-mapping}
 {
  Input mapping not (yet?) supported in LuaTeX.
 }
\@@_msg_new:nnn {fontspec} {no-mapping-ligtex}
 {
  Input mapping not (yet?) supported in LuaTeX.\\
  Use "Ligatures=TeX" instead of "Mapping=tex-text".
 }
\@@_msg_new:nnn {fontspec} {cm-default-obsolete}
 {
  The "cm-default" package option is obsolete.
 }
\@@_msg_new:nnn {fontspec} {fakebold-only-xetex}
 {
  The "FakeBold" and "AutoFakeBold" options are only available with XeLaTeX.\\
  Option ignored.
 }
\@@_msg_new:nnn {fontspec} {font-index-needs-ttc}
 {
  The "FontIndex" feature is only supported by TTC (TrueType Collection) fonts.\\
  Feature ignored.
 }
\@@_msg_new:nnn {fontspec} {feat-cannot-remove}
 {
  The "#1" feature cannot be deactivated. Request ignored.
 }
%    \end{macrocode}
%
% \subsection{Info messages}
%
%    \begin{macrocode}
\@@_msg_new:nnn {fontspec} {defining-font}
 {
  Font family '\l_fontspec_family_tl' created for font '#2'
  with options [\l_@@_all_features_clist].\\
  \\
  This font family consists of the following NFSS series/shapes:\\
  \l_fontspec_defined_shapes_tl
 }
\@@_msg_new:nnn {fontspec} {no-font-shape}
 {
  Could not resolve font "#1" (it probably doesn't exist).
 }
\@@_msg_new:nnn {fontspec} {set-scale}
 {
  \l_fontspec_fontname_tl\space scale = \l_@@_scale_tl.
 }
\@@_msg_new:nnn {fontspec} {setup-math}
 {
  Adjusting the maths setup (use [no-math] to avoid this).
 }
\@@_msg_new:nnn {fontspec} {no-scripts}
 {
  Font "\l_fontspec_fontname_tl" does not contain any OpenType `Script' information.
 }
\@@_msg_new:nnn {fontspec} {opa-twice}
 {
  Opacity set twice, in both Colour and Opacity.\\
  Using specification "Opacity=#1".
 }
\@@_msg_new:nnn {fontspec} {opa-twice-col}
 {
  Opacity set twice, in both Opacity and Colour.\\
  Using an opacity specification in hex of "#1/FF".
 }
\@@_msg_new:nnn {fontspec} {bad-colour}
 {
  Bad colour declaration "#1".
  Colour must be one of:\\
  * a named xcolor colour\\
  * a six-digit hex colour RRGGBB\\
  * an eight-digit hex colour RRGGBBTT with opacity
 }
%    \end{macrocode}
%
% Reset `space' behaviour:
%    \begin{macrocode}
\char_set_catcode_ignore:n {32}
%    \end{macrocode}
%
%    \begin{macrocode}
%</fontspec>
%    \end{macrocode}
