%D \module %D [ file=s-fnt-01, %D version=2006.10.10, % guess %D title=\CONTEXT\ Style File, %D subtitle=Listing Glyphs in Large Fonts, %D author=Hans Hagen, %D date=\currentdate, %D copyright={PRAGMA / Hans Hagen \& Ton Otten}] %C %C This module is part of the \CONTEXT\ macro||package and is %C therefore copyrighted by \PRAGMA. See mreadme.pdf for %C details. \startluacode local format, sprint = string.format, tex.sprint function fonts.otf.show_all() local tfmdata = fonts.ids[font.current()] if tfmdata and tfmdata.shared then local otfdata = tfmdata.shared.otfdata if otfdata and otfdata.luatex then local unicodes = otfdata.luatex.unicodes sprint(tex.ctxcatcodes,format("\\starttabulate[|l|r|c|]")) for i, name in ipairs(table.sortedkeys(unicodes)) do local unicode = unicodes[name] if unicode >= 0 then sprint(tex.ctxcatcodes,format("\\NC %s \\NC %s \\NC \\char%s \\NC\\NR",name,unicode,unicode)) end end sprint(tex.ctxcatcodes,format("\\stoptabulate")) end end end function fonts.show_all() local tfmdata = fonts.ids[font.current()] if tfmdata then local chars = tfmdata.characters local descs = tfmdata.descriptions or { } local data = characters.data sprint(tex.ctxcatcodes,format("\\setuptabulate[header=repeat]")) sprint(tex.ctxcatcodes,format("\\starttabulatehead")) sprint(tex.ctxcatcodes,"\\NC\\bf unicode\\NC\\bf visual\\NC\\bf index\\NC\\bf glyph\\NC\\bf adobe\\NC\\bf context\\NC\\NR") sprint(tex.ctxcatcodes,"\\HL") sprint(tex.ctxcatcodes,format("\\stoptabulatehead")) sprint(tex.ctxcatcodes,format("\\starttabulate[|l|c|l|p|p|p|]")) for k, unicode in ipairs(table.sortedkeys(chars)) do -- for unicode, _ in table.sortedpairs(chars) do if unicode >= 0 then local chr, des, dat = chars[unicode], descs[unicode], data[unicode] local index = chr.index or 0 local cname = (dat and dat.contextname) or "" local aname = (dat and dat.adobename) or "" local gname = (des and des.name) or "" local mname = dat and dat.mathname if type(mname) ~= "string" then mname = "" end local mspec = dat and dat.mathspec if mspec then for m=1,#mspec do local n = mspec[m].name if n then if mname == "" then mname = n else mname = mname .. " " .. n end end end end if mname ~= "" then mname = "m: " .. mname if cname ~= "" then cname = cname .. " " .. mname else cname = mname end end sprint(tex.ctxcatcodes,format("\\NC\\tttf U+%05X\\NC\\char%s\\NC\\tttf %05X\\NC\\tttf %s\\NC\\tttf %s\\NC\\tttf %s\\NC\\NR",unicode,unicode,index,gname,aname,cname)) end end sprint(tex.ctxcatcodes,format("\\stoptabulate")) else sprint(tex.ctxcatcodes,"problems") end end function fonts.show_glyphs() local tfmdata = fonts.ids[font.current()] if tfmdata then local chars = tfmdata.characters for k, v in ipairs(table.sortedkeys(chars)) do if v >=0 then sprint(tex.ctxcatcodes,format("\\dontleavehmode{\\strut\\char%s}\\endgraf",v)) end end end end \stopluacode \def\ShowCompleteFont#1#2#3% {\bgroup \page \font\TestFont=#1 at #2 \setuplayout[style=\TestFont] \setupheadertexts[] \setupfootertexts[#1 -- \pagenumber] \setupfootertexts[pagenumber] \setuplayout[width=middle,height=middle,topspace=1cm,backspace=1cm] \TestFont \nonknuthmode \startcolumns[n=#3] \TestFont \ctxlua { fonts.show_all() } \stopcolumns \page \egroup} \def\ShowAllGlyphs#1#2#3% {\bgroup \page \font\TestFontA=#1 at 12pt \font\TestFontB=#1 at #2 \setuplayout[style=\TestFontA] \setupheadertexts[] \setupfootertexts[#1 -- \pagenumber] \setuplayout[width=middle,height=middle,topspace=1cm,backspace=1cm,header=1cm,footer=2cm] \TestFontB \setupinterlinespace[line=1.2\dimexpr#2\relax] \raggedcenter \nonknuthmode \startcolumns[n=#3] \TestFontB \ctxlua { fonts.show_glyphs() } \stopcolumns \page \egroup} \endinput \starttext % \ShowCompleteFont{name:dejavusansmono}{10pt}{2} % \ShowCompleteFont{name:dejavuserif}{10pt}{2} % \ShowCompleteFont{name:officinasansbookitcregular}{10pt}{2} % \ShowCompleteFont{name:officinaserifbookitcregular}{10pt}{2} % \ShowCompleteFont{name:serpentineserifeflight}{10pt}{2} % \ShowCompleteFont{name:lmtypewriter10-regular}{10pt}{2} % \ShowCompleteFont{lt55485}{10pt}{2} % \ShowCompleteFont{lmr10}{10pt}{2} % \ShowCompleteFont{lbr}{10pt}{2} % \ShowCompleteFont{name:Cambria}{10pt}{2} % \ShowCompleteFont{name:CambriaMath}{10pt}{2} % \ShowCompleteFont{name:texgyrepagella-regular}{10pt}{2} % \ShowCompleteFont{name:texgyrechorus-mediumitalic}{10pt}{2} % \ShowAllGlyphs {name:texgyrepagella-regular} {48pt}{2} % \ShowAllGlyphs {name:texgyrechorus-mediumitalic}{48pt}{2} % \ShowCompleteFont{name:euler10-regular}{10pt}{2} % \ShowCompleteFont{name:palatinosansinformalcombold}{20pt}{2} % \ShowCompleteFont{name:palatinonovaregular}{11pt}{2} % \ShowCompleteFont{name:optimanovaltregular}{11pt}{2} \stoptext