summaryrefslogtreecommitdiff
path: root/tex/context/base/font-ctx.lua
diff options
context:
space:
mode:
authorMarius <mariausol@gmail.com>2010-10-12 22:32:16 +0300
committerMarius <mariausol@gmail.com>2010-10-12 22:32:16 +0300
commit987dd5ee54cf9fff2601560e4e170df899d80b40 (patch)
treea25e8e5e0779a068c5b0bfdaa3da57d12d8660ae /tex/context/base/font-ctx.lua
parent6db11f114036fc2a18af3e265a9f8e980ad2b594 (diff)
downloadcontext-987dd5ee54cf9fff2601560e4e170df899d80b40.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)