summaryrefslogtreecommitdiff
path: root/tex/context/base/s-fnt-25.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/s-fnt-25.mkiv')
-rw-r--r--tex/context/base/s-fnt-25.mkiv195
1 files changed, 195 insertions, 0 deletions
diff --git a/tex/context/base/s-fnt-25.mkiv b/tex/context/base/s-fnt-25.mkiv
new file mode 100644
index 000000000..fc78ddfda
--- /dev/null
+++ b/tex/context/base/s-fnt-25.mkiv
@@ -0,0 +1,195 @@
+%D \module
+%D [ file=s-fnt-25,
+%D version=2009.01.25,
+%D title=\CONTEXT\ Style File,
+%D subtitle=Math Glyph Checking,
+%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.
+
+\def\enableshowmathfontvirtual
+ {\ctxlua{fonts.tfm.auto_cleanup=false}}
+
+\def\showmathfontcharacters
+ {\dodoubleempty\doshowmathfontcharacters}
+
+\def\doshowmathfontcharacters[#1][#2]%
+ {\begingroup
+ \dontcomplain
+ \doifelsenothing{#1}
+ {\definedfont[MathRoman*math-text]}
+ {\definedfont[#1]}%
+ \doifelsenothing{#2}
+ {\ctxlua{document.showmathfont(font.current())}}
+ {\def\dodoshowmathfontcharacters##1{\ctxlua{document.showmathfont(font.current(),##1)}}%
+ \processcommalist[#2]\dodoshowmathfontcharacters}%
+ \endgroup}
+
+\def\startmathfontlist
+ {\startpacked}
+
+\def\stopmathfontlist
+ {\stoppacked}
+
+\def\startmathfontlistentry
+ {\blank
+ \begingroup}
+
+\def\stopmathfontlistentry
+ {\endgroup
+ \blank}
+
+\def\mathfontlistentryhexdectit#1#2#3%
+ {#1: \char#2\enspace\ruledhbox{\char#2}\enspace#3\par
+ \advance\leftskip 1em\relax}
+
+\def\mathfontlistentrywdhtdpic#1#2#3#4%
+ {width: #1, height: #2, depth: #3, italic: #4\par}
+
+\def\mathfontlistentryresource#1%
+ {virtual: #1\par}
+
+\def\mathfontlistentrynext#1#2%
+ {#1~\ruledhbox{\char#2}}
+
+\def\mathfontlistentrynextlist#1%
+ {next: #1\par}
+
+\def\fontlistentryvariants#1#2%
+ {#1~\ruledhbox{\char#2}}
+
+\def\mathfontlistentryvariantslist#1%
+ {variants: #1\par}
+
+\def\mathfontlistentrynextvariantslist#1#2%
+ {next: #1 => variants: #2\par}
+
+\def\mathfontlistentryclassname#1#2%
+ {mathclass: #1, mathname: #2\par}
+
+\def\mathfontlistentrysymbol#1#2%
+ {mathsymbol: #1~\ruledhbox{\char#2}\par}
+
+\startluacode
+local concat = table.concat
+local format, lower = string.format, string.lower
+
+function document.showmathfont(id,slot)
+ local data = characters.data
+ local tfmdata = fonts.identifiers[id]
+ local characters = tfmdata.characters
+ local sorted = (slot and { slot }) or table.sortedkeys(characters)
+ local virtual, names = tfmdata.type == "virtual", { }
+ if virtual then
+ for k, v in ipairs(tfmdata.fonts) do
+ local name = fonts.identifiers[v.id].name
+ names[k] = (name and file.basename(name)) or v.id
+ end
+ end
+ local round = math.round
+ local limited = true
+ for _, s in next, sorted do
+ if not limited or s < 0xF0000 then
+ local char = characters[s]
+ if char then
+ local info = data[s]
+ local cnext, cvert_variants, choriz_variants = char.next, char.vert_variants, char.horiz_variants
+ context.startmathfontlistentry()
+ context.mathfontlistentryhexdectit(format("U+%05X",s),s,lower(info.description or "no description, private to font"))
+ context.mathfontlistentrywdhtdpic(round(char.width or 0),round(char.height or 0),round(char.depth or 0),round(char.italic or 0))
+ if virtual then
+ local commands = char.commands
+ if commands then
+ local t = { }
+ for i=1,#commands do
+ local ci = commands[i]
+ if ci[1] == "slot" then
+ local fnt, idx = ci[2], ci[3]
+ t[#t+1] = format("%s/%0X",names[fnt] or fnt,idx)
+ end
+ end
+ if #t > 0 then
+ context.mathfontlistentryresource(concat(t,", "))
+ end
+ end
+ end
+ if info.mathclass then
+ context.mathfontlistentryclassname(info.mathclass,info.mathname or "no name")
+ end
+ if info.mathspec then
+ for i=1,#info.mathspec do
+ context.mathfontlistentryclassname(info.mathspec[i].class,info.mathspec[i].name or "no name")
+ end
+ end
+ if info.mathsymbol then
+ context.mathfontlistentrysymbol(format("U+%05X",info.mathsymbol),info.mathsymbol)
+ end
+ if cnext then
+ local t, done = { }, { }
+ while cnext do
+ if done[cnext] then
+ t[#t+1] = "CYCLE"
+ break
+ else
+ done[cnext] = true
+ t[#t+1] = context.nested.mathfontlistentrynext(format("U+%05X",cnext),cnext)
+ cnext = characters[cnext]
+ cvert_variants = cnext.vert_variants or cvert_variants
+ choriz_variants = cnext.horiz_variants or choriz_variants
+ if cnext then
+ cnext = cnext.next
+ end
+ end
+ end
+ cnext = t
+ end
+ if cvert_variants then
+ local t = { }
+ for k, v in next, cvert_variants do
+ t[#t+1] = context.nested.fontlistentryvariants(format("U+%05X",v.glyph),v.glyph)
+ end
+ cvert_variants = t
+ end
+ if choriz_variants then
+ local t = { }
+ for k, v in next, choriz_variants do
+ t[#t+1] = context.nested.fontlistentryvariants(format("U+%05X",v.glyph),v.glyph)
+ end
+ choriz_variants = t
+ end
+ local cvariants = choriz_variants or cvert_variants
+ if cvariants and cnext then
+ context.mathfontlistentrynextvariantslist(concat(cnext," => "),concat(cvariants," => "))
+ else
+ if cnext then
+ context.mathfontlistentrynextlist(concat(cnext," => "))
+ end
+ if cvariants then
+ context.mathfontlistentryvariantslist(concat(cvariants," "))
+ end
+ end
+ context.stopmathfontlistentry()
+ end
+ end
+ end
+end
+\stopluacode
+
+\endinput
+
+\starttext
+ \setupbodyfont[cambria, 12pt] \showmathfontcharacters
+% \setupbodyfont[lmvirtual,12pt] \showmathfontcharacters
+% \setupbodyfont[pxvirtual,12pt] \showmathfontcharacters
+% \setupbodyfont[txvirtual,12pt] \showmathfontcharacters
+% \setupbodyfont[palatino, 10pt] \showmathfontcharacters
+% \setupbodyfont[mathtimes,12pt] \showmathfontcharacters
+% \setupbodyfont[stix, 12pt] \showmathfontcharacters
+% \setupbodyfont[xits, 12pt] \showmathfontcharacters
+% \setupbodyfont[lucida, 12pt] \showmathfontcharacters
+\stoptext
+