summaryrefslogtreecommitdiff
path: root/tex/context/base/font-ctx.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2010-10-12 17:13:00 +0200
committerHans Hagen <pragma@wxs.nl>2010-10-12 17:13:00 +0200
commit407d9151f5473b20e9072473b80d0f591a3580a1 (patch)
treecc8ee5590213dc7a7bd07f570d615aba3e34151d /tex/context/base/font-ctx.lua
parent697104b99f87677639dd0732be90c0a2cf2d4f6b (diff)
downloadcontext-407d9151f5473b20e9072473b80d0f591a3580a1.tar.gz
beta 2010.10.12 17:13
Diffstat (limited to 'tex/context/base/font-ctx.lua')
-rw-r--r--tex/context/base/font-ctx.lua53
1 files changed, 53 insertions, 0 deletions
diff --git a/tex/context/base/font-ctx.lua b/tex/context/base/font-ctx.lua
index c9a51f0ba..e5da6e868 100644
--- a/tex/context/base/font-ctx.lua
+++ b/tex/context/base/font-ctx.lua
@@ -407,6 +407,8 @@ function definers.stage_two(global,cs,str,size,classfeatures,fontfeatures,classf
specification.mathsize = mathsize
specification.textsize = textsize
specification.goodies = goodies
+ specification.cs = cs
+ specification.global = global
if detail and detail ~= "" then
specification.method, specification.detail = method or "*", detail
elseif specification.detail and specification.detail ~= "" then
@@ -458,6 +460,57 @@ function definers.stage_two(global,cs,str,size,classfeatures,fontfeatures,classf
statistics.stoptiming(fonts)
end
+function definers.define(specification)
+ --
+ local name = specification.name
+ if not name or name == "" then
+ return -1
+ else
+ statistics.starttiming(fonts)
+ --
+ -- following calls expect a few properties to be set:
+ --
+ specification.lookup = specification.lookup or "file"
+ specification.specification = "" -- not used
+ specification.size = specification.size or 655260
+ specification.sub = specification.sub or ""
+ specification.method = specification.method or "*"
+ specification.detail = specification.detail or ""
+ specification.resolved = ""
+ specification.forced = ""
+ specification.features = { } -- via detail
+ --
+ -- we don't care about mathsize textsize goodies fallbacks
+ --
+ if specification.cs == "" then
+ specification.cs = nil
+ specification.global = false
+ elseif specification.global == nil then
+ specification.global = false
+ end
+ --
+ local tfmdata = definers.read(specification,specification.size)
+ if not tfmdata then
+ return -1, nil
+ elseif type(tfmdata) == "number" then
+ if specification.cs then
+ tex.definefont(specification.global,specification.cs,tfmdata)
+ end
+ return tfmdata, fontdata[tfmdata]
+ else
+ local id = font.define(tfmdata)
+ tfmdata.id = id
+ definers.register(tfmdata,id)
+ if specification.cs then
+ tex.definefont(specification.global,specification.cs,id)
+ end
+ tfm.cleanuptable(tfmdata)
+ return id, tfmdata
+ end
+ statistics.stoptiming(fonts)
+ end
+end
+
local enable_auto_r_scale = false
experiments.register("fonts.autorscale", function(v)