%%
%% This is file `nfssext-cfr.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% nfssext-cfr.dtx  (with options: `sty')
%% Additions and changes Copyright (C) 2008-2024 Clea F. Rees.
%% Code from fontinstallationguide Copyright (C) 2002-2004 Philipp Lehman (see below)
%% 
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008-05-04 or later.
%% 
%% This work has the LPPL maintenance status `maintained'.
%% 
%% The Current Maintainer of this work is Clea F. Rees.
%% 
%% This work consists of all files listed in manifest.txt.
%% 
%% 
%% The file  nfssext-cfr.sty is a derived work under the terms of the LPPL.
%% It is based on version 1.2 of nfssext.sty which is supplied with
%% The Font Installation Guide by Philipp Lehman. A copy of The Font Installation Guide, including an
%% unmodified version of nfssext.sty is available from
%%   https://tug.ctan.org/pkg/fontinstallationguide.
%% nfssext.sty is part of the included archive figuide-examples.tar.gz
%% which consists of examples and templates released under the LPPL.
%% nfssext.sty is included in the files for tutorials 3, 5 and 6.
%% 
%% The main modifications made to this file are described in nfssext-cfr.dtx.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{svn-prov}
\ProvidesPackageSVN[\filebase.sty]{$Id: nfssext-cfr.dtx 10456 2024-10-03 01:19:12Z cfrees $}[v1.1 \revinfo{} extensions for NFSS and NNFSS; based on 2003/03/14 v1.2 Experimental NFSS Extensions]
\DefineFileInfoSVN
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\if@nfssextcfr@digonnew
\@nfssextcfr@digonnewtrue
\@ifundefined{ExplLoaderFileDate}{%
  \IfFileExists{expl3.sty}{%
    \RequirePackage{expl3}%
  }{%
    \RequirePackage{nfssext-cfr-nfss}%
    \@nfssextcfr@digonnewfalse
  }%
}{}
\if@nfssextcfr@digonnew
  \@ifl@t@r\ExplLoaderFileDate{2022-02-24}{%
  }{%
    \RequirePackage{nfssext-cfr-nfss}%
    \@nfssextcfr@digonnewfalse
  }%
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\if@nfssextcfr@digonnew
  \newif\ifexfs@debug
  \ExplSyntaxOn
  \prop_gput:Nnn \g_msg_module_name_prop { nfssext-cfr } { exfs }
  \keys_define:nn { exfs }
  {
    compat .bool_gset:N = \g__exfs_compat_bool,
    compat .default:n = true,
    compat .initial:n = false,
    compat .usage:n = preamble,
    debug .legacy_if_gset:n = exfs@debug,
    debug .initial:n = false,
    debug .default:n = true,
    force .bool_gset:N = \g__exfs_force_bool,
    force .default:n = true,
    force .initial:n = false,
    force .usage:n = preamble,
  }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \providecommand \IfFormatAtLeastTF { \@ifl@t@r \fmtversion }
  \IfFormatAtLeastTF { 2022-06-01 }
  {
    \ProcessKeyOptions [ exfs ]
  }{
    \RequirePackage { l3keys2e }
    \ProcessKeysOptions { exfs }
    \NewDocumentCommand \ProcessKeyOptions { o }
    {
      \IfValueTF { #1 } { \ProcessKeysOptions { #1 }  }
      { \PackageError{nfssext-cfr}{
          Optional~argument~mandatory~on~kernels~this~old.\MessageBreak
          Please~specify~the~module~whose~keys~should~be~processed
        }{
          \protect\ProcessKeyOptions~only~passes~keys~to~
          \protect\ProcessKeyOptions\MessageBreak
          on~older~kernels~for~the~convenience~of~package~authors.~
          Since~\protect\ProcessKeysOptions\MessageBreak
          takes~an~argument,~the~optional~argument~to~
          \protect\ProcessKeyOptions~is~required
        }
      }
    }
  }
  \IfFormatAtLeastTF { 2020-10-01 }{
  }{
    \RequirePackage { xparse }
    \providecommand \ExpandArgs [1]
    { \cs_if_exist_use:c { exp_args:N #1 } }
  }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \RequirePackage{etoolbox}
  \msg_new:nnn { nfssext-cfr } { compat }
  {
    You ~ or ~ a ~ font-support ~ package ~ have ~ loaded ~ me ~ ( line ~ \msg_line_number: ) ~ with ~ the ~ compat ~ option. ~
    This ~ means ~ the ~ package ~ may ~ require ~ updating. ~
    Update ~ the ~ package ~ if ~ necessary ~ and ~ use ~ compat=false ~ when ~ loading ~ me.
  }
  \msg_new:nnn { nfssext-cfr } { force }
  {
    You ~ or ~ a ~ font-support ~ package ~ have ~ loaded ~ me ~ ( line ~ \msg_line_number: ) ~ with ~ the ~ force ~ option. ~
    This ~ is ~ a ~ desperate ~ measure ~ of ~ last ~ resort. ~
    **Breakage ~ is ~ expected.**
  }
  \hook_gput_code:nnn { begindocument/before } { . }
  {
    \cs_if_exist:NTF \init@series@setup
    {
      \bool_if:NTF \g__exfs_force_bool
      {
        \msg_warning:nn { nfssext-cfr } { force }
        \RequirePackage {nfssext-cfr-nfss}
      }{
        \bool_if:NT \g__exfs_compat_bool
        {
          \msg_warning:nn { nfssext-cfr } { compat }
        }
        \RequirePackage {nfssext-cfr-nnfss}
      }
    }{% achosiad heb broblemau - diolch byth!
      \RequirePackage {nfssext-cfr-nfss}
    }
  }
  \cs_new_protected_nopar:Nn \__exfs_set:n
  {
    \keys_set:nn { exfs } { #1 }
  }
  \cs_set_eq:NN \nfssextset \__exfs_set:n
  \ExplSyntaxOff
  \newcommand*{\DeclareTextOrnament}[7]{%
    \expandafter\def\csname#1@orn\@roman#2\endcsname{#3/#4/#5/#6/#7}}
  \begingroup
    \catcode`\/=12
    \gdef\exfs@split@orndef#1/#2/#3/#4/#5\@nil{%
      \def\f@encoding{#1}%
      \def\f@family{#2}%
      \def\f@series{#3}%
      \def\f@shape{#4}%
      \def\exfs@tempa{#5}}
  \endgroup
  \def\exfs@base@family{\expandafter\exfs@get@base\f@family\@nil}
  \DeclareRobustCommand{\ornament}[1]{%
    \expandafter\ifx\csname\exfs@base@family @orn\@roman#1\endcsname\relax
      \PackageWarning{nfssext}{%
        Ornament #1 undefined for font family '\exfs@base@family'\MessageBreak
        Setting debug mark}%
      \rule{1ex}{1ex}%
    \else
      \begingroup
        \edef\exfs@tempb{\csname\exfs@base@family @orn\@roman#1\endcsname}%
        \expandafter\expandafter\expandafter\exfs@split@orndef
          \expandafter\string\exfs@tempb\@nil
        \selectfont\char\exfs@tempa
      \endgroup
    \fi}
\def\nfssextcfr@MT@Hook{%
    \DeclareMicrotypeVariants*{2,2d,2dj,2j,dj,e,h,l}% is this necessary or would the previous line be enough?
  }
  \@ifpackageloaded{microtype}{%
    \PackageWarning{nfssext-cfr}{%
      You have loaded me (or a font support package which loads me)\MessageBreak
      after loading microtype, but microtype should be loaded after\MessageBreak
      all font defaults have been setup}%
    \nfssextcfr@MT@Hook
  }{%
    \@ifundefined{Microtype@Hook}{%
      \let\Microtype@Hook\nfssextcfr@MT@Hook
    }{% MinionPro has \global before this
      \g@addto@macro\Microtype@Hook{\nfssextcfr@MT@Hook}%
    }%
  }
\fi
\endinput
%%
%% End of file `nfssext-cfr.sty'.
