summaryrefslogtreecommitdiff
path: root/tex/context/fonts/mkiv/cambria-math.lfg
blob: a56a1b7d614e3dbbdb36b6a2ab44bf8d40179179 (plain)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
local dimensions, kerns, kernpairs  if CONTEXTLMTXMODE == 0 then

    kernpairs = { -- \setupmathematics[kernpairs=yes]
        [0x1D44E] = {
            [0x1D44F] = 1000, -- 𝑎𝑏 demo
        }
    }

    kerns = {
        [0x1D453] = {
            force = true,
            topright = {
                {
                    kern = 1000,
                },
            },
            bottomright = {
                {
                    kern = 1000,
                },
            },
        },
    }

end

-- 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)

return {
    name = "cambria-math",
    version = "1.00",
    comment = "Goodies that complement cambria.",
    author = "Hans Hagen",
    copyright = "ConTeXt development team",
    mathematics = {
        parameters = {
            NoLimitSupFactor                =    0,
            NoLimitSubFactor                = 1000,
            AccentBaseDepth                 =  300,
            RadicalDegreeBottomRaisePercent =   65,
            RadicalKernAfterDegree          = -900,
            RadicalRuleThickness            =  128, -- 133 in font
            DelimiterPercent                =   90,
            DelimiterShortfall              =  400,
            DisplayOperatorMinHeight        = 2800, -- 2500 in font
            PrimeRaisePercent               =   75, -- 50 default
         -- PrimeRaiseComposedPercent       =   25, -- 25 default
        },
        tweaks = {
            aftercopying = {
                {
                    tweak = "dimensions",
                    list  = {

                     -- [0x00060] = { yoffset = -0.1  }, -- grave
                     -- [0x000B4] = { yoffset = -0.1  }, -- acute
                     -- [0x002C6] = { yoffset = -0.1  }, -- hat
                     -- [0x002DC] = { yoffset = -0.1  }, -- tilde
                     -- [0x000AF] = { yoffset = -0.1  }, -- bar
                     -- [0x002D8] = { yoffset = -0.15 }, -- breve
                     -- [0x002D9] = { yoffset = -0.15 }, -- dot
                     -- [0x000A8] = { yoffset = -0.1  }, -- ddot
                        [0x020DB] = { yoffset = -0.05 }, -- dddot
                     -- [0x002C7] = { yoffset = -0.1  }, -- check
                        [0x020D7] = { yoffset = -0.05 }, -- vec

                     -- [0x00300] = { yoffset = -0.12,  all=true }, -- widegrave
                     -- [0x00301] = { yoffset = -0.12,  all=true }, -- wideacute
                     -- [0x00302] = { yoffset = -0.12,  all=true }, -- widehat
                     -- [0x00303] = { yoffset = -0.12,  all=true }, -- widetilde
                     -- [0x00304] = { yoffset = -0.12,  all=true }, -- widebar
                     -- [0x00306] = { yoffset = -0.12,  all=true }, -- widebreve
                        [0x00307] = { yoffset = -0.025, all=true }, -- widedot
                        [0x00308] = { yoffset = -0.025, all=true }, -- wideddot
                     -- [0x020DB] = { yoffset = -0.1,   all=true }, -- widedddot
                     -- [0x0030A] = { yoffset = -0.12,  all=true }, -- widering
                     -- [0x0030C] = { yoffset = -0.12,  all=true }, -- widecheck

                        [0x1D43D] = { xoffset = 0.25, width = 1.15, italic = 0.2              }, -- J
                        [0x1D487] = {                                            anchor = 0.8 }, -- bold lower case italic f
                     -- [0x1D487] = { xoffset = 0,    width = 1,    italic = 0,  anchor = 1.3 }, -- bold lower case italic f

                    },
                },
                {
                    tweak = "kerns",
                    list  = {
                        [0x2F] = {
                            topleft     = -0.2,
                         -- bottomleft  =  0,
                         -- topright    =  0,
                            bottomright = -0.2,
                        },
                        ["0x7D.parts.top"] = {
                            topright    = -0.1,
                        },
                        ["0x7D.parts.bottom"] = {
                            bottomright = -0.1,
                        },
                        ["0x29.parts.top"] = {
                            topright    = -0.2,
                        },
                        ["0x29.parts.bottom"] = {
                            bottomright = -0.2,
                        },
                        ["0x221A.parts.top"] = {
                            topright = 0.2,
                        },
                        ["0x221A.parts.bottom"] = {
                            bottomright = 0.2,
                        },
                        ["0x221A.variants.*"] = {
                            topright = 0.2,
                            bottomright = 0.2,
                        },
                    },
                },
                {
                    tweak   = "fixprimes",
                    scale   = 0.9,
                 -- smaller = true,
                    factor  = 0.9,
                },
                {
                    tweak = "checkspacing",
                },
                {
                    tweak = "addscripts",
                },
                {
                    tweak = "accentdimensions",
                    list  = { "over", "under" },
                 -- list  = {
                 --     [0x203E] = { factor = "over"  }, -- overbar
                 --     [0x203E] = { factor = "under" }, -- underbar
                 --     [0x23DE] = { factor = "over"  }, -- overbrace
                 --     [0x23DF] = { factor = "under" }, -- underbrace
                 --     [0x23DC] = { factor = "over"  }, -- overparent
                 --     [0x23DD] = { factor = "under" }, -- underparent
                 --     [0x23B4] = { factor = "over"  }, -- overbracket
                 --     [0x23B5] = { factor = "under" }, -- underbracket
                 -- }
                },
                {
                    tweak = "addrules",
                },
                {
                    tweak = "wipecues",
                },
            },
        },
        bigslots = {
            1, 2, 3, 4
        },
        --
        -- experimental fixes for mkiv:
        --
        dimensions = dimensions,
        kerns      = kerns,
        kernpairs  = kernpairs,
    },
}