1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
-- This patch code is moved from font-pat.lua to this goodies
-- files as it does not belong in the core code.
-- This is a fix to the font itself i.e. the cached instance will
-- be patched. When the goodie file is loaded the patch will be
-- added to the patch list. No goodies setting is needed with
-- the filename.
local patches = fonts.handlers.otf.enhancers.patches
local function patch(data,filename,threshold)
local m = data.metadata.math
if m then
local d = m.DisplayOperatorMinHeight or 0
if d < threshold then
patches.report("DisplayOperatorMinHeight(%s -> %s)",d,threshold)
m.DisplayOperatorMinHeight = threshold
end
end
end
patches.register("after","analyze math","cambria", function(data,filename) patch(data,filename,2800) end)
patches.register("after","analyze math","cambmath",function(data,filename) patch(data,filename,2800) end)
-- This is a runtime fix, but then we need to explicitly set
-- the goodies parameter for the font. As a demonstration we
-- we do both.
local function FixDisplayOperatorMinHeight(value,target,original)
local o = original.mathparameters.DisplayOperatorMinHeight
if o < 2800 then
return 2800 * target.parameters.factor
else
return value -- already scaled
end
end
return {
name = "cambria-math",
version = "1.00",
comment = "Goodies that complement cambria.",
author = "Hans Hagen",
copyright = "ConTeXt development team",
mathematics = {
parameters = {
DisplayOperatorMinHeight = FixDisplayOperatorMinHeight,
},
-- kernpairs = { -- \setupmathematics[kernpairs=yes]
-- [0x1D44E] = {
-- [0x1D44F] = 1000, -- 𝑎𝑏 demo
-- }
-- },
},
}
|