From e2658addf306f729945c184e46f98df39dd7026c Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Wed, 29 May 2019 21:10:47 +0200 Subject: 2019-05-29 19:20:00 --- .../general/manuals/fonts/fonts-demo-rule.lua | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 doc/context/sources/general/manuals/fonts/fonts-demo-rule.lua (limited to 'doc/context/sources/general/manuals/fonts/fonts-demo-rule.lua') diff --git a/doc/context/sources/general/manuals/fonts/fonts-demo-rule.lua b/doc/context/sources/general/manuals/fonts/fonts-demo-rule.lua new file mode 100644 index 000000000..667d1e43c --- /dev/null +++ b/doc/context/sources/general/manuals/fonts/fonts-demo-rule.lua @@ -0,0 +1,47 @@ +local startactualtext = backends.codeinjections.startunicodetoactualtext +local stopactualtext = backends.codeinjections.stopunicodetoactualtext + +return function(specification) + local features = specification.features.normal + local name = features.original or "dejavu-serif" + local option = features.option -- we only support "line" + local size = specification.size -- always set + local detail = specification.detail -- e.g. default + if detail then + name = name .. "*" .. detail + end + local f, id = fonts.constructors.readanddefine(name,size) + if f then + f.properties.name = specification.name + f.properties.virtualized = true + f.fonts = { + { id = id }, + } + for s in string.gmatch("aeuioy",".") do + local n = utf.byte(s) + local c = f.characters[n] + if c then + local w = c.width or 0 + local h = c.height or 0 + local d = c.depth or 0 + if option == "line" then + f.characters[n].commands = { + { "special", "pdf:direct:" .. startactualtext(n) }, + { "rule", option == "line" and size/10, w }, + { "special", "pdf:direct:" .. stopactualtext() }, + } + else + f.characters[n].commands = { + { "special", "pdf:direct:" .. startactualtext(n) }, + { "down", d }, + { "rule", h + d, w }, + { "special", "pdf:direct:" .. stopactualtext() }, + } + end + else + -- probably a real bad font + end + end + end + return f +end -- cgit v1.2.3