+-- the following is adapted from https://tex.stackexchange.com/a/380780
+ft = {}
+function ft.print_glyphs(maxCols,maxChars)
+ local id = font.current()
+ local fnt = font.getfont(id)
+ local col = 1
+ local maxU4 = 15*(16^3+16^2+16+1)
+ a = {}
+ for k, v in pairs(fnt.characters) do
+ a [#a + 1] = k
+ end
+ table.sort(a)
+ for i, k in ipairs(a) do
+ if i >= maxChars then break end
+ if col == 1 then
+ if k > maxU4 then
+ tex.sprint(string.format("U+%06x", k))
+ else
+ tex.sprint(string.format("U+%04x", k))
+ end
+ tex.sprint("&")
+ end
+ if (i) then
+ tex.sprint(string.format([[\char%i]], k))
+ else
+ tex.sprint("~")
+ end
+ if col == maxCols then
+ tex.sprint([[\\\cline{2-]] .. maxCols+1 .. "} ")
+ col = 1
+ else
+ tex.sprint("&")
+ col = col + 1
+ end
+ end
+end