
Per the comments:
Quick screen capture code adapted to fc-scan
.
\documentclass{article}
\usepackage{xcolor}
\usepackage{fontspec}
\usepackage{multicol}
\ExplSyntaxOn
%===================
\keys_define:nn { alba }
{
namelist .bool_set:N = \l_alba_namelist_bool,
namelistcomma .bool_set:N = \l_alba_namelistcomma_bool,
table .bool_set:N = \l_alba_tabular_bool,
list .bool_set:N = \l_alba_list_bool,
otfinfo .bool_set:N = \l_alba_otfinfo_bool,
reset .bool_set:N = \l_alba_resetoff_bool,
}
%===================
\cs_new_protected:Nn
\proc_alba_resetoptions:
{
%\bool_set_false:N \l_alba_namelist_bool
%\bool_set_false:N \l_alba_tabular_bool
%\bool_set_false:N \l_alba_list_bool
%\bool_set_false:N \l_alba_otfinfo_bool
\termcapoptions[ % when true, does:
namelist=false, % copyable fn list
namelistcomma=false,
table=false, % better sampler fmt
list=false, % list/multicols
otfinfo=false, % font features
]
} % end proc --------------
%===================
\cs_new_protected:Npn
\proc_alba_doterminal:nn #1#2
{ % 1 command, 2 result storage tl
\sys_get_shell:onN
{
#1
}{
\cctab_select:N
\c_str_cctab
\endlinechar=33 % !
}
#2
} % end proc --------------
\tl_new:N \l_alba_acmnd_tl
%===================
\cs_set_protected:Nn
\proc_alba_screencapture:
{
%\tl_show:N \l_alba_command_tl
\tl_set:Ne
\l_alba_fullcommand_tl
{ \l_alba_command_tl
\c_space_tl
\l_alba_glyphs_tl
} %albatross -b1 ??
%\tl_show:N \l_alba_fullcommand_tl
\proc_alba_doterminal:nn
{ \l_alba_fullcommand_tl }
{ \l_tmpa_tl }
%£\str_if_in:NnTF
%£ \l_tmpa_tl
%£ { No~fonts~with }
%£%% "NofontswithsupportfortheseUnicodecodepointswerefound."
%£{
%£\bool_set_false:N
%£ \l_alba_foundfonts_bool
%£}
%£{
%£\bool_set_true:N
%£ \l_alba_foundfonts_bool
%£}
%\sys_get_shell:onN
% {
% \l_alba_fullcommand_tl
% }
% {
% \cctab_select:N
% \c_str_cctab
% }
% \l_tmpa_tl
} % end proc --------------
%===================
\cs_set_protected:Nn
\proc_alba_printscreencapture:
{
% show screen capture
\group_begin:
\ttfamily\small
\tl_use:N \l_tmpa_tl
\group_end:
} % end proc --------------
%===================
\cs_set_protected:Nn
\proc_alba_createrecordset:
{
% convert to a set of fontnames
\seq_set_split:NnV
\l_tmpa_seq
{ ! } %
\l_tmpa_tl
} % end proc --------------
%===================
\cs_set_protected:Nn
\proc_alba_cleanrecordset:
{
\seq_clear:N
\l_tmpb_seq
\seq_map_inline:Nn
\l_tmpa_seq
{ % start map
\tl_set:Nn \l_tmpb_tl {##1}
\str_if_in:NnT \l_tmpb_tl
{ fullname: }
{ % 1
\seq_put_right:No
\l_tmpb_seq
{\l_tmpb_tl}
} % end T
\str_if_in:NnT \l_tmpb_tl
{ file: }
{ % 2
\seq_put_right:No
\l_tmpb_seq
{\l_tmpb_tl}
} % end T
\str_if_in:NnT \l_tmpb_tl
{ index: }
{ % 3
\seq_put_right:No
\l_tmpb_seq
{\l_tmpb_tl}
} % end T
} % end map
%\seq_show:N\l_tmpb_seq
} % end proc --------------
%===================
\cs_set_protected:Nn
\proc_alba_printsampler:
{
\proc_alba_printitems:
} % end proc -------------
\tl_new:N \l_alba_listhead_tl
%===================
\cs_set_protected:Nn
\proc_alba_printitems:
{
\seq_map_inline:Nn
\l_tmpb_seq
{ % start map
\str_set:Nn \l_tmpa_str {##1}
\l_tmpa_str
\tex_par:D
} % end map
}
%===================
\tl_new:N \l_alba_command_tl
\tl_new:N \l_alba_glyphs_tl
\tl_new:N \l_alba_fullcommand_tl
\seq_new:N \l_alba_master_seq
%===================
\NewDocumentCommand
{ \termcapoptions }
{ o }
{
\tl_if_novalue:nF{#1}
{\keys_set:nn { alba } { #1 }}
} % end command
%===================
\NewDocumentCommand
{ \termcap }
{ o m m }
% #2 term cmd + options
% #3 cmd argument(s)
{
\tl_if_novalue:nF{#1}
{\keys_set:nn { alba } { #1 }}
\tl_set:Nn \l_alba_command_tl {#2}
\tl_set:Nn \l_alba_glyphs_tl {#3}
\proc_alba_screencapture:
\proc_alba_createrecordset:
\proc_alba_cleanrecordset:
\proc_alba_printsampler:
} % end command
\cs_generate_variant:Nn
\sys_get_shell:nnN
{ onN }
\cs_generate_variant:Nn
\seq_set_split:NnV
{ NoV }
%\cs_generate_variant:Nn
% \tl_set_eq:NN
% { Ne }
\ExplSyntaxOff
\begin{document}
x
\termcap{fc-scan}
{/system/fonts/NotoSerifCJK-Regular.ttc}
\end{document}
Run with shell escape.
Added

Tidied-up-code version,
MWE
\documentclass{article}
\ExplSyntaxOn
%===================
\cs_new_protected:Npn
\proc_fcsc_doterminal:nn #1#2
{ % 1 command, 2 result storage tl
\sys_get_shell:onN
{
#1
}{
\cctab_select:N
\c_str_cctab
\endlinechar=33 % !
}
#2
} % end proc --------------
\tl_new:N \l_fcsc_acmnd_tl
%===================
\cs_set_protected:Nn
\proc_fcsc_screencapture:
{
%\tl_show:N \l_fcsc_command_tl
\tl_set:Ne
\l_fcsc_fullcommand_tl
{ \l_fcsc_command_tl
\c_space_tl
\l_fcsc_parms_tl
}
%
Running ~ \l_fcsc_command_tl
\c_space_tl on~ \l_fcsc_parms_tl
\tex_par:D
\hrulefill
\tex_par:D
%
\proc_fcsc_doterminal:nn
{ \l_fcsc_fullcommand_tl }
{ \l_tmpa_tl }
} % end proc --------------
%===================
\cs_set_protected:Nn
\proc_fcsc_printscreencapture:
{
% show screen capture
\group_begin:
\ttfamily\small
\tl_use:N \l_tmpa_tl
\group_end:
} % end proc --------------
%===================
\cs_set_protected:Nn
\proc_fcsc_createrecordset:
{
% convert to a set of records
\seq_set_split:NnV
\l_tmpa_seq
{ ! } %
\l_tmpa_tl
} % end proc --------------
%===================
\cs_set_protected:Nn
\proc_fcsc_cleanrecordset:
{
\seq_clear:N
\l_tmpb_seq
\seq_map_inline:Nn
\l_tmpa_seq
{ % start map
\tl_set:Nn \l_tmpb_tl {##1}
\str_if_in:NnT \l_tmpb_tl
{ fullname: }
{ % 1
\seq_put_right:No
\l_tmpb_seq
{\l_tmpb_tl}
} % end T
\str_if_in:NnT \l_tmpb_tl
{ file: }
{ % 2
\seq_put_right:No
\l_tmpb_seq
{\l_tmpb_tl}
} % end T
\str_if_in:NnT \l_tmpb_tl
{ index: }
{ % 3
\seq_put_right:No
\l_tmpb_seq
{\l_tmpb_tl}
} % end T
} % end map
%\seq_show:N\l_tmpb_seq
} % end proc --------------
%===================
\cs_set_protected:Nn
\proc_fcsc_printsampler:
{
\proc_fcsc_printitems:
} % end proc -------------
%===================
\cs_set_protected:Nn
\proc_fcsc_printitems:
{
\seq_map_inline:Nn
\l_tmpb_seq
{ % start map
\str_set:Nn \l_tmpa_str {##1}
\l_tmpa_str
\tex_par:D
} % end map
}
%===================
\tl_new:N \l_fcsc_command_tl
\tl_new:N \l_fcsc_parms_tl
\tl_new:N \l_fcsc_fullcommand_tl
\seq_new:N \l_fcsc_master_seq
%===================
\NewDocumentCommand
{ \termcap }
{ m m }
% #1 term cmd + options
% #2 cmd argument(s)
{
\tl_set:Nn \l_fcsc_command_tl {#1}
\tl_set:Nn \l_fcsc_parms_tl {#2}
\proc_fcsc_screencapture:
\proc_fcsc_createrecordset:
\proc_fcsc_cleanrecordset:
\proc_fcsc_printsampler:
} % end command
\cs_generate_variant:Nn
\sys_get_shell:nnN
{ onN }
\cs_generate_variant:Nn
\seq_set_split:NnV
{ NoV }
\ExplSyntaxOff
\begin{document}
\termcap{fc-scan}
{/system/fonts/NotoSerifCJK-Regular.ttc}
\end{document}.
Run with shell escape.