% https://tex.stackexchange.com/questions/380775/font-table-for-opentype-truetype-fonts
documentclass{article}
usepackage{geometry}
usepackage{fontspec}
usepackage{longtable}
usepackage{array}
setlengthextrarowheight{3pt}
ExplSyntaxOn
NewDocumentCommand{OTfonttable}{m}
{
group_begin:
#1
int_gset:Nn g_fonttable_rows_int
{ int_div_truncate:nn { XeTeXlastfontchar font + 15 } { 16 } }
int_gset:Nn g_fonttable_chunks_int
{ int_div_truncate:nn { g_fonttable_rows_int + 31 } { 32 } }
group_end:
fonttable_make:n { #1 }
}
int_new:N g_fonttable_rows_int
int_new:N g_fonttable_chunks_int
seq_new:N l_fonttable_rows_seq
l_new:N l_fonttable_font_tl
cs_new_protected:Nn fonttable_make:n
{
l_set:Nn l_fonttable_font_tl { #1 }
int_step_inline:nnnn { 0 } { 1 } { g_fonttable_chunks_int - 1 }
{
seq_clear:N l_fonttable_rows_seq
int_step_inline:nnnn { 0 } { 1 } { 31 }
{
seq_put_right:Nx l_fonttable_rows_seq
{
fonttable_setup: int_to_Hex:n { ##1*32 + ####1 }x &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 0 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 1 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 2 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 3 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 4 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 5 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 6 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 7 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 8 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 9 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 10 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 11 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 12 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 13 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 14 } } &
fonttable_char:n { int_eval:n { ##1*512 + ####1*16 + 15 } }
}
}
egin{tabular}{|r|*{16}{c|}}
cline{2-17}
multicolumn{1}{c|}{} &
tfamily 0 &
tfamily 1 &
tfamily 2 &
tfamily 3 &
tfamily 4 &
tfamily 5 &
tfamily 6 &
tfamily 7 &
tfamily 8 &
tfamily 9 &
tfamily A &
tfamily B &
tfamily C &
tfamily D &
tfamily E &
tfamily F \
hline
seq_use:Nn l_fonttable_rows_seq { \ hline } \
hline
end{tabular}clearpage
}
}
cs_new_protected:Nn fonttable_setup: { tfamily $vphantom{ig|}$ }
cs_new_protected:Nn fonttable_char:n
{
l_use:N l_fonttable_font_tl
iffontcharfont #1 symbol{#1} fi
}
ExplSyntaxOff
%
ewfontface{ est}{Old Standard}
ewfontfamily est{sr2.ttf}
setCJKmainfont{sr2.ttf}
setCJKsansfont{sr2.ttf}
setCJKmonofont{sr2.ttf}
egin{document}
OTfonttable{ est}
end{document}