summaryrefslogtreecommitdiff
path: root/tex/context/base/s-fonts-missing.lua
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2013-05-15 00:20:22 +0300
committerMarius <mariausol@gmail.com>2013-05-15 00:20:22 +0300
commitefc542d83b4066d57d3225edc476a157c4b4395b (patch)
treeb8b8259c58cf468327eabc4f92ec76fb6ed8aabd /tex/context/base/s-fonts-missing.lua
parentcdb4e4f3d46c113269b9cdadb2162a57c6c224ca (diff)
downloadcontext-efc542d83b4066d57d3225edc476a157c4b4395b.tar.gz
beta 2013.05.14 23:14
Diffstat (limited to 'tex/context/base/s-fonts-missing.lua')
-rw-r--r--tex/context/base/s-fonts-missing.lua101
1 files changed, 101 insertions, 0 deletions
diff --git a/tex/context/base/s-fonts-missing.lua b/tex/context/base/s-fonts-missing.lua
new file mode 100644
index 000000000..0d409c3a6
--- /dev/null
+++ b/tex/context/base/s-fonts-missing.lua
@@ -0,0 +1,101 @@
+if not modules then modules = { } end modules ['s-fonts-missing'] = {
+ version = 1.001,
+ comment = "companion to s-fonts-missing.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+moduledata.fonts = moduledata.fonts or { }
+moduledata.fonts.missing = moduledata.fonts.missing or { }
+
+local function legend(id)
+ local c = fonts.hashes.identifiers[id]
+ local privates = c.properties.privates
+ if privates then
+ local categories = table.swapped(fonts.loggers.category_to_placeholder)
+ -- context.starttabulate { "|l|c|c|l|" }
+ context.starttabulate { "|l|c|l|" }
+ context.HL()
+ context.NC()
+ context.bold("name")
+ context.NC()
+ context.bold("symbol")
+ context.NC()
+ -- context.bold("node")
+ -- context.NC()
+ context.bold("category")
+ context.NC()
+ context.NR()
+ context.HL()
+ for k, v in table.sortedhash(privates) do
+ local tag = characters.categorytags[categories[k]]
+ if tag and tag ~= "" then
+ context.NC()
+ context(k)
+ context.NC()
+ context.dontleavehmode()
+ context.char(v)
+ context.NC()
+ -- context.dontleavehmode()
+ -- commands.getprivatechar(k)
+ -- context.NC()
+ context(string.lower(tag))
+ context.NC()
+ context.NR()
+ end
+ end
+ context.HL()
+ context.stoptabulate()
+ end
+end
+
+function moduledata.fonts.missing.legend(specification)
+ specification = interfaces.checkedspecification(specification)
+ context.begingroup()
+ context.definedfont { "Mono*missing" } -- otherwise no privates added
+ context(function() legend(specification.id or font.current()) end)
+ context.endgroup()
+end
+
+local function missings()
+ local collected = fonts.checkers.getmissing()
+ for filename, list in table.sortedhash(collected) do
+ if #list > 0 then
+ context.starttabulate { "|l|l|" }
+ context.NC()
+ context.bold("filename")
+ context.NC()
+ context(file.basename(filename))
+ context.NC()
+ context.NR()
+ context.NC()
+ context.bold("missing")
+ context.NC()
+ context(#list)
+ context.NC()
+ context.NR()
+ context.stoptabulate()
+ context.starttabulate { "|l|c|l|" }
+ for i=1,#list do
+ local u = list[i]
+ context.NC()
+ context("%U",u)
+ context.NC()
+ context.char(u)
+ context.NC()
+ context(characters.data[u].description)
+ context.NC()
+ context.NR()
+ end
+ context.stoptabulate()
+ end
+ end
+end
+
+function moduledata.fonts.missing.characters(specification)
+ context.begingroup()
+ context.definedfont { "Mono*missing" } -- otherwise no privates added
+ context(function() missings() end)
+ context.endgroup()
+end