%%^^A%% fontspec-code-xfss.dtx -- part of FONTSPEC % \section{Changes to the NFSS} % % \begin{macrocode} %<*fontspec> % \end{macrocode} % % % \subsection{Italic small caps and so on} \label{sec:sishape} % % \begin{macrocode} \providecommand*\scitdefault{\scdefault\itdefault} \providecommand*\scsldefault{\scdefault\sldefault} \providecommand*\scswdefault{\scdefault\swdefault} % \end{macrocode} % \LaTeX's `shape' font axis needs to be overloaded to support italic small caps and slanted small caps. % These are the combinations to support: % \begin{macrocode} \cs_new:Nn \@@_shape_merge:nn { c_@@_shape_#1_#2_tl } \cs_new:Nn \@@_merge_default_shapes: { \tl_const:cn { \@@_shape_merge:nn \shapedefault\scdefault } {\scdefault} \tl_const:cn { \@@_shape_merge:nn \itdefault \scdefault } {\scitdefault} \tl_const:cn { \@@_shape_merge:nn \sldefault \scdefault } {\scsldefault} \tl_const:cn { \@@_shape_merge:nn \swdefault \scdefault } {\scswdefault} \tl_const:cn { \@@_shape_merge:nn \scdefault \itdefault } {\scitdefault} \tl_const:cn { \@@_shape_merge:nn \scdefault \sldefault } {\scsldefault} \tl_const:cn { \@@_shape_merge:nn \scdefault \swdefault } {\scswdefault} \tl_const:cn { \@@_shape_merge:nn \scsldefault \itdefault } {\scitdefault} \tl_const:cn { \@@_shape_merge:nn \scitdefault \sldefault } {\scsldefault} \tl_const:cn { \@@_shape_merge:nn \scitdefault \shapedefault } {\scdefault} \tl_const:cn { \@@_shape_merge:nn \scsldefault \shapedefault } {\scdefault} } \@@_merge_default_shapes: % \end{macrocode} % % The following is rather specific; it only returns true if the merged shape exists, % but more importantly also if the merged shape is defined for the current font. % \begin{macrocode} \prg_new_conditional:Nnn \@@_if_merge_shape:n {TF} { \bool_lazy_and:nnTF { \tl_if_exist_p:c { \@@_shape_merge:nn {\f@shape} {#1} } } { \cs_if_exist_p:c { \f@encoding/\f@family/\f@series/ \tl_use:c { \@@_shape_merge:nn {\f@shape} {#1} } } } \prg_return_true: \prg_return_false: } % \end{macrocode} % % % \begin{macrocode} \cs_set_eq:NN \emfontdeclare \DeclareEmphSequence % \end{macrocode} % % % % % \subsection{Strong emphasis} % % \begin{macro}{\strongfontdeclare} % \begin{macrocode} \cs_set_protected:Npn \strongfontdeclare #1 { \prop_gclear:N \g_@@_strong_prop \int_zero:N \l_@@_strongdef_int \group_begin: \normalfont \clist_map_inline:nn {\strongreset,#1} { ##1 \prop_gput_if_new:NxV \g_@@_strong_prop { \f@series } { \l_@@_strongdef_int } \prop_gput:Nxn \g_@@_strong_prop { switch-\int_use:N \l_@@_strongdef_int } { ##1 } \int_incr:N \l_@@_strongdef_int } \group_end: } % \end{macrocode} % \end{macro} % % \begin{macro}{\strongenv} % \begin{macrocode} \DeclareRobustCommand \strongenv { \@nomath\strongenv % \typeout{Strong~ level:~\int_use:N \l_@@_strong_int} \prop_get:NxNT \g_@@_strong_prop { \f@series } \l_@@_strong_tmp_tl { \int_set:Nn \l_@@_strong_int { \l_@@_strong_tmp_tl } % \typeout{Series~ (\f@series)~ detected;~ new~ level:~\int_use:N \l_@@_strong_int} } \int_incr:N \l_@@_strong_int \prop_get:NxNTF \g_@@_strong_prop { switch-\int_use:N \l_@@_strong_int } \l_@@_strong_switch_tl { \l_@@_strong_switch_tl } { \int_zero:N \l_@@_strong_int \strongreset } } % \end{macrocode} % \end{macro} % % \begin{macro}{\strong} % \begin{macro}{\strongreset} % \begin{macrocode} \DeclareTextFontCommand{\strong}{\strongenv} \cs_set:Npn \strongreset {} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\reset@font} % Ensure nesting resets when necessary: % \begin{macrocode} \cs_set:Npn \reset@font { \normalfont \int_zero:N \l_@@_strong_int } % \end{macrocode} % \end{macro} % % Programmer's interface for setting nesting levels: % \begin{macrocode} \cs_new:Nn \fontspec_set_strong_level:n { \int_set:Nn \l_@@_strong_int {#1} } % \end{macrocode} % % Defaults: % \begin{macrocode} \strongfontdeclare{ \bfseries } % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} \endinput % /© % ------------------------------------------------ % The FONTSPEC package % ------------------------------------------------ % Copyright 2022-2023 The LaTeX project % Copyright 2004-2022 Will Robertson, LPPL "maintainer" % Copyright 2009-2015 Khaled Hosny % Copyright 2013 Philipp Gesang % Copyright 2013-2016 Joseph Wright % ------------------------------------------------ % This package is free software and may be redistributed and/or modified under % the conditions of the LaTeX Project Public License, version 1.3c or higher % (your choice): . % ------------------------------------------------ % ©/