%#!lualatex
\documentclass[twocolumn]{article}
\batchmode
\usepackage{luaotfload,booktabs,array,luacode,longtable}
\usepackage[ratio=0.80]{geometry}
\errorstopmode

{\newlinechar=`@
\message{@Name of the font to test = }
\read-1 to\fontname \global\let\fontname\fontname}
\message{@}
\font\test=\fontname at 12pt
{\test\directlua{testfn = font.current()}}

\def\FMT#1#2{{\oalign{\test#1\crcr\rm\tiny\hss#2\hss\crcr}}}
\def\OUT#1{\leavevmode\hbox to 7em{{\test\char"#1}\ ({\tt U+#1})\hss}}%"
\begin{document}
{\noindent\Large\bf \fontname\\\null\hfill (%
  \directlua{tex.sprint(fonts.hashes.identifiers[testfn].fullname)}%
)}

\bigskip
\baselineskip18pt

\begin{luacode*}
   local identifiers = fonts.hashes.identifiers
   local ubyte = unicode.utf8.byte
   local uchar = unicode.utf8.char
   local sort = table.sort
   local t, ti = {}, {}
   local sort_func = function(a,b) return a[1]<b[1] end
   local pt = identifiers[testfn]
   pt = pt and pt.resources; pt = pt and pt.variants
   if pt then
      for vs,v in pairs(pt) do
         if vs>=0xe0100 and vs<0xe01f0 then
           for bc, rc in pairs(v) do
              if not t[bc] then t[bc] = {}; ti[1+#ti] = bc end
              t[bc][1+#(t[bc])]={ vs-0xe0100, rc }
           end
         end
      end
      sort(ti)
      for _,v in pairs(ti) do 
         local s = '\\OUT{' .. string.format('%X', v) .. '}'
         local tx = t[v]; sort(tx, sort_func)
         for _,x in ipairs(tx) do
           s = s .. '\\FMT{' .. uchar(x[2]) .. '}{' .. tostring(x[1]) .. '}'
         end
         tex.sprint(s .. '\\par')
      end
   end
\end{luacode*}


\end{document}