summaryrefslogtreecommitdiff
path: root/tex/context/base/font-ctx.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/font-ctx.lua')
-rw-r--r--tex/context/base/font-ctx.lua57
1 files changed, 56 insertions, 1 deletions
diff --git a/tex/context/base/font-ctx.lua b/tex/context/base/font-ctx.lua
index 419bd25e0..9bcfdb46b 100644
--- a/tex/context/base/font-ctx.lua
+++ b/tex/context/base/font-ctx.lua
@@ -12,6 +12,7 @@ local texsprint, count, texsetcount = tex.sprint, tex.count, tex.setcount
local format, concat, gmatch, match, find, lower, gsub = string.format, table.concat, string.gmatch, string.match, string.find, string.lower, string.gsub
local tostring, next, type = tostring, next, type
local lpegmatch = lpeg.match
+local round = math.round
local ctxcatcodes = tex.ctxcatcodes
@@ -19,7 +20,7 @@ local trace_defining = false trackers.register("fonts.defining", function(v) tr
local tfm = fonts.tfm
local define = fonts.define
-local fontdata = fonts.ids
+local fontdata = fonts.identifiers
local specify = define.specify
specify.context_setups = specify.context_setups or { }
@@ -462,3 +463,57 @@ function fonts.nbfs(amount,precision)
end
texsprint(ctxcatcodes,lpegmatch(stripper,format(f,amount/65536)))
end
+
+-- for the moment here, this will become a chain of extras that is
+-- hooked into the ctx registration (or scaler or ...)
+
+function fonts.set_digit_width(font)
+ local tfmtable = fontdata[font]
+ local parameters = tfmtable.parameters
+ local width = parameters.digitwidth
+ if not width then
+ width = round(parameters.quad/2) -- maybe tex.scale
+ local characters = tfmtable.characters
+ for i=48,57 do
+ local wd = round(characters[i].width)
+ if wd > width then
+ width = wd
+ end
+ end
+ parameters.digitwidth = width
+ end
+ return width
+end
+
+fonts.get_digit_width = fonts.set_digit_width
+
+-- soon to be obsolete:
+
+local loaded = { -- prevent loading
+ ["original-base.map" ] = true,
+ ["original-ams-base.map" ] = true,
+ ["original-ams-euler.map"] = true,
+ ["original-public-lm.map"] = true,
+}
+
+function fonts.map.loadfile(name)
+ name = file.addsuffix(name,"map")
+ if not loaded[name] then
+ pdf.pdfmapfile = name
+ loaded[name] = true
+ end
+end
+
+function fonts.map.loadline(how,line)
+ pdf.pdfmapline = how .. " " .. line
+end
+
+function fonts.map.reset()
+ pdf.pdfmapfile = ""
+end
+
+fonts.map.reset() -- resets the default file
+
+-- we need an 'do after the banner hook'
+
+-- pdf.pdfmapfile = "mkiv-base.map" -- loads the default file