% Copyright 2018--2022 Marcel Krueger % % 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 % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Marcel Krueger % \@ifpackageloaded{fontawesome5}{}{\PackageError{fontawesome5-utex-helper}{This package should not be loaded individually. Load fontawesome5 instead.}{}} \@ifpackagelater{expl3}{2017/05/26}{}{ \def\faV@extractversion#1 #2\|{#1} \PackageError{fontawesome5}{expl3 package version too old}{% The fontawesome5 package requires an up-to-date version of the\MessageBreak package expl3, which is part of the l3kernel bundle. I could only\MessageBreak find version \expandafter\expandafter\expandafter\faV@extractversion\csname ver@expl3.sty\endcsname{} \|, so I will exit now. To fix this error,\MessageBreak you have to update l3kernel to version 2017-05-26 or later. } \endinput } \ProvidesExplPackage{fontawesome5-utex-helper}{2022/05/02}{5.15.4}{uTeX helper for fontawesome5} \sys_if_engine_luatex:TF{ \RequirePackage{luatexbase} \directlua{require('fontawesome5')} \cs_new:Nn\__fontawesome_analyze_font:nn{ \group_begin: \usefont{TU}{fontawesome#1}{#2}{n} \lua_now:e{fontawesome5_analyze_current_font(\tex_fontid:D\tex_font:D)} \group_end: } \cs_set:Npn \__fontawesome_glyphindex:n { \lua_now:e{tex.sprint(font.getfont(font.current()).resources.unicodes[token.scan_string()]~or~0)} } \cs_set_eq:NN\__fontawesome_glyph:w\tex_char:D }{ \seq_set_from_clist:Nn\c__fontawesome_invalid_tokens_seq{\fa,\faH,\faRepeat,\faWifi,\faSignal,\faSignalAlt,\faTransporter,\faDiceD,\faStopwatch} \regex_const:Nn\c__fontawesome_alt_regex{-alt\Z} \cs_generate_variant:Nn \regex_match:NnF { NVF } \cs_new:Nn\__fontawesome_analyze_font:nn{ \group_begin: \usefont{TU}{fontawesome#1}{#2}{n} \int_step_inline:nnnn{67}1{\tex_XeTeXcountglyphs:D \tex_font:D - 1} { \tl_set:No\l_tmpa_tl{\tex_XeTeXglyphname:D \tex_font:D ##1} \regex_match:NVF\c__fontawesome_alt_regex\l_tmpa_tl{ \tl_set:NV\l_tmpb_tl\l_tmpa_tl \tl_put_left:No\l_tmpb_tl{\char_generate:nn{92}{12}fa-} \tl_replace_all:Nnn\l_tmpb_tl{-}{\str_upper_case:n} \tl_set_rescan:Nnx\l_tmpb_tl{\ExplSyntaxOn}{\l_tmpb_tl} \seq_if_in:NxF\c__fontawesome_invalid_tokens_seq{\tl_head:N\l_tmpb_tl}{ \exp_last_unbraced:NV\cs_gset:Npx\l_tmpb_tl{\exp_not:N\faPreselectedIcon{\l_tmpa_tl}} } } } \group_end: } \cs_set:Nn\__fontawesome_glyphindex:n{ \the\tex_XeTeXglyphindex:D"#1"\scan_stop: } \cs_set_eq:NN\__fontawesome_glyph:w\tex_XeTeXglyph:D } \__fontawesome_analyze_font:nn{\c__fontawesome_kind_tl}{solid} \__fontawesome_analyze_font:nn{brands}{regular} \bool_new:N \l__fontawesome_duotone_bool \tl_new:N \l_fontawesome_duotone_secondary_style_tl \tl_set:Nn \l_fontawesome_duotone_secondary_style_tl { \color{.!50!white} } \cs_new:Nn\fontawesome_use_icon:nn{ \group_begin: \usefont {TU} {fontawesome\c__fontawesome_kind_tl} {#1} {n} \bool_set:Nn \l__fontawesome_duotone_bool { \str_if_eq_p:ee {#1} {duotone} } \int_set:Nn\l_tmpa_int{ \__fontawesome_glyphindex:n{ #2 \bool_if:NT \l__fontawesome_duotone_bool { -primary } } } \int_compare:nNnT{\l_tmpa_int}={0}{ \fontseries{solid} \selectfont \bool_set_false:N \l__fontawesome_duotone_bool \int_set:Nn\l_tmpa_int{\__fontawesome_glyphindex:n{#2}} \int_compare:nNnTF{\l_tmpa_int}={0}{ \fontfamily{fontawesomebrands} \fontseries{regular} \selectfont \int_set:Nn\l_tmpa_int{\__fontawesome_glyphindex:n{#2}} \int_compare:nNnT{\l_tmpa_int}={0}{ \msg_error:nnxx{fontawesome5}{icon-not-found}{#2}{#1} } }{ \msg_warning:nnxx{fontawesome5}{style-substitution}{#2}{#1} } } \bool_if:NTF\c__fontawesome_fixed_bool{ \makebox[1.5em][c] }{ \use:n } { \bool_if:NTF \l__fontawesome_duotone_bool { \__fontawesome_glyph:w \l_tmpa_int \int_set:Nn\l_tmpa_int{ \__fontawesome_glyphindex:n{ #2-secondary } } \int_compare:nNnF { \l_tmpa_int } = { 0 } { \llap { \l_fontawesome_duotone_secondary_style_tl { \__fontawesome_glyph:w \l_tmpa_int } } } % \ooalign { % \hss \__fontawesome_glyph:w \l_tmpa_int \hss \cr % \hss % \int_set:Nn\l_tmpa_int{ \__fontawesome_glyphindex:n{ #2-secondary } } % \int_compare:nNnF { \l_tmpa_int } = { 0 } { % \color{gray}\__fontawesome_glyph:w \l_tmpa_int % } % \hss \cr % } } { \__fontawesome_glyph:w \l_tmpa_int } } \group_end: } \NewDocumentCommand \faDuotoneSetSecondary { m } { \tl_set:Nn \l_fontawesome_duotone_secondary_style_tl { #1 } }