summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/font-imp-dimensions.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2019-10-01 11:01:50 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2019-10-01 11:01:50 +0200
commit7b12427f475e64e06f5dd7b537462b6d990526f6 (patch)
treec8b553e26752f0900f8f50241970bb5cdefd3938 /tex/context/base/mkiv/font-imp-dimensions.lua
parentfd8697791360a26a2b9cc888dbc125cefedfcd42 (diff)
downloadcontext-7b12427f475e64e06f5dd7b537462b6d990526f6.tar.gz
2019-10-01 10:44:00
Diffstat (limited to 'tex/context/base/mkiv/font-imp-dimensions.lua')
-rw-r--r--tex/context/base/mkiv/font-imp-dimensions.lua41
1 files changed, 35 insertions, 6 deletions
diff --git a/tex/context/base/mkiv/font-imp-dimensions.lua b/tex/context/base/mkiv/font-imp-dimensions.lua
index 518d56345..24891a2cd 100644
--- a/tex/context/base/mkiv/font-imp-dimensions.lua
+++ b/tex/context/base/mkiv/font-imp-dimensions.lua
@@ -48,13 +48,42 @@ local function initialize(tfmdata,key,value)
elseif value == "mono" then
newwidth = emwidth
else
+ -- there are fonts out there with no x_height ...
local spec = settings_to_array(value)
- newwidth = tonumber(spec[1])
- newheight = tonumber(spec[2])
- newdepth = tonumber(spec[3])
- if newwidth then newwidth = newwidth * emwidth end
- if newheight then newheight = newheight * exheight end
- if newdepth then newdepth = newdepth * exheight end
+ newwidth = spec[1]
+ newheight = spec[2]
+ newdepth = spec[3]
+ local quad = parameters.quad or 0
+ local ascender = parameters.ascender or 0
+ local descender = parameters.descender or 0
+ if newwidth == "max" then
+ newwidth = quad
+ else
+ newwidth = tonumber(newwidth)
+ if newwidth then
+ newwidth = newwidth * emwidth
+ end
+ end
+ if newheight == "max" then
+ newheight = ascender
+ else
+ newheight = tonumber(newheight)
+ if newheight then
+ newheight = newheight * exheight
+ end
+ end
+ if newdepth == "max" then
+ newdepth = descender
+ else
+ newdepth = tonumber(newdepth)
+ if newdepth then
+ newdepth = newdepth * exheight
+ end
+ end
+ if parameters.x_heigth == 0 then
+ -- maybe a fourth parameter
+ parameters.x_heigth = (ascender + descender) / 2
+ end
end
if newwidth or newheight or newdepth then
for unicode, character in next, characters do