% Script-specific font setup logic.
% This layer provides default resolution, validation, and future extension hooks.

\ExplSyntaxOn

\tl_new:N \l__font_script_class_tl
\tl_new:N \l__font_scope_tl
\tl_new:N \l__font_preserve_spaces_tl
\tl_new:N \l__font_effective_features_tl
\tl_new:N \l__font_backend_tl
\tl_new:N \l__font_fallback_mode_tl

\cs_new_protected:Npn \__font_apply_core_defaults:
  {
    \tl_if_blank:VTF \l__font_scope_tl
      { \tl_set:NV \l__font_scope_tl \FontDefaultScope }
      { }
    \tl_if_blank:VTF \l__font_script_class_tl
      { \tl_set:NV \l__font_script_class_tl \FontDefaultScriptClass }
      { }
    \tl_if_blank:VTF \l__font_preserve_spaces_tl
      { \tl_set:NV \l__font_preserve_spaces_tl \FontDefaultPreserveSpaces }
      { }
    \tl_if_blank:VTF \l__font_backend_tl
      { \tl_set:NV \l__font_backend_tl \FontDefaultBackend }
      { }
    \tl_if_blank:VTF \l__font_fallback_mode_tl
      { \tl_set:NV \l__font_fallback_mode_tl \FontDefaultFallbackMode }
      { }

    \__font_apply_writing_defaults:
  }

\cs_new_protected:Npn \__font_validate_script_class:
  {
    \__font_tl_if_in_set:NnTF \l__font_script_class_tl { latin,cjk,complex,mixed }
      { }
      {
        \PackageError{font-defaults}
          {Invalid~script~class~`\tl_use:N \l__font_script_class_tl`}
          {Use~latin,~cjk,~complex,~or~mixed.}
      }
  }

\cs_new_protected:Npn \__font_validate_scope:
  {
    \__font_tl_if_in_set:NnTF \l__font_scope_tl { local,global }
      { }
      {
        \PackageError{font-defaults}
          {Invalid~scope~`\tl_use:N \l__font_scope_tl`}
          {Use~local~or~global.}
      }
  }

\cs_new_protected:Npn \__font_validate_core_state:
  {
    \__font_validate_scope:
    \__font_validate_script_class:
    \__font_tl_if_in_set:NnTF \l__font_fallback_mode_tl { strict,soft }
      { }
      {
        \PackageError{font-defaults}
          {Invalid~fallback~mode~`\tl_use:N \l__font_fallback_mode_tl`}
          {Use~strict~or~soft.}
      }
    \__font_validate_writing_model:
  }

\cs_new_protected:Npn \__font_apply_script_hooks:
  {
    \__font_validate_script_class:
    \tl_set:NV \l__font_effective_features_tl \l__font_features_tl
  }

\ExplSyntaxOff
