local common = fonts.goodies.load("common-math.lfg") local presets = common.mathematics.tweaks.presets local integral_variants = { bottomright = -0.20 } local integral_bottom = { bottomright = -0.25 } return { name = "dejavu-math", version = "1.00", comment = "Goodies that complement dejavu.", author = "Hans Hagen & Mikael Sundqvist", copyright = "ConTeXt development team", mathematics = { parameters = { FractionRuleThickness = 60, AccentTopShiftUp = -25, FlattenedAccentTopShiftUp = -25, AccentBaseDepth = 30, DelimiterPercent = 85, DelimiterShortfall = 400, DelimiterDisplayPercent = 90, DelimiterDisplayShortfall = 400, DisplayOperatorMinHeight = 1800, -- 1333 in font SubscriptShiftDown = 177, -- 277 in font SuperscriptShiftUp = 428, -- 381 in font SubscriptShiftDownWithSuperscript = "1.3*SubscriptShiftDown", -- trial and error PrimeShiftUp = "1.4*SuperscriptShiftUp", PrimeShiftUpCramped = "1.4*SuperscriptShiftUp", PrimeBaselineDropMax = "0.5*SuperscriptBaselineDropMax", }, tweaks = { aftercopying = { { tweak = "version", expected = "Version 1.106", }, presets.braille { }, { tweak = "fixprimes", factor = 0.63, }, { tweak = "addmirrors", }, { tweak = "addcomposites", }, presets.scripttocalligraphic { }, presets.rsfstoscript { rscale = 1.02 }, presets.rsfsuprighttoscript { rscale = 1.02 }, presets.moderntocalligraphic { rscale = 1.02 }, presets.eulertocalligraphic { rscale = 1.02 }, presets.xitsarabic { rscale = 1.05 }, presets.fallbacks { }, presets.moveitalics { correct = true }, presets.moveitalics { correct = true, letters = true }, presets.moveintegrals { factor = 1.5 }, -- we need to check this presets.wipeitalics { }, -- We don't have italic correction in for instance math italic f which means that -- we also didn't fix it. Therefore we need at least some reasonable kerns. Using -- a dimension tweak before the above (e.g. 0.2 italic and 0.8 width) doesn't work -- because once the advance is set the move is blocked and the ic stil wiped. So, -- we kern. Actually the upright (ascii) f has italic correction. { tweak = "checkaccents", }, { tweak = "wipecues", }, -- { tweak = "kerns", list = { [0x002F] = { topleft = -0.2, bottomright = -0.2 }, ["0x7D.parts.top"] = { topright = -0.15, }, -- right brace top ["0x7D.parts.bottom"] = { bottomright = -0.15 }, -- right brace bottom ["0x7D.variants.*"] = { topright = -0.05, bottomright = -0.05 }, -- right brace variants ["0x29.parts.top"] = { topright = -0.15, }, -- right parenthesis top ["0x29.parts.bottom"] = { bottomright = -0.15 }, -- right parenthesis bottom ["0x29.variants.*"] = { topright = -0.1, bottomright = -0.1 }, -- right parenthesis variants ["0x221A.parts.top"] = { topright = 0.2, }, -- right radical top ["0x221A.parts.bottom"] = { bottomright = 0.2 }, -- right radical bottom ["0x221A.variants.*"] = { topright = 0.2, bottomright = 0.2 }, -- right radical variants [0x27E9] = { topright = -0.1, bottomright = -0.1 }, -- angle ["0x27E9.variants.*"] = { topright = -0.2, bottomright = -0.2 }, [0x27EB] = { topright = -0.1, bottomright = -0.1 }, ["0x27EB.variants.*"] = { topright = -0.2, bottomright = -0.2 }, -- -- The font lacks italic correction and corner kerns -- It is probably meant to be "spacy", but we add bottomright -- to a few of the most used latin and greek letters -- [0x1D435] = { bottomright = -.05 }, -- italic B [0x1D436] = { bottomright = -.1 }, -- italic C [0x1D437] = { bottomright = -.05 }, -- italic D [0x1D438] = { bottomright = -.1 }, -- italic E [0x1D439] = { bottomright = -.1 }, -- italic F [0x1D43A] = { bottomright = -.05 }, -- italic G [0x1D43B] = { bottomright = -.1 }, -- italic H [0x1D43C] = { bottomright = -.15 }, -- italic I [0x1D43D] = { bottomright = -.15 }, -- italic J [0x1D43E] = { bottomright = -.1 }, -- italic K [0x1D440] = { bottomright = -.1 }, -- italic M [0x1D441] = { bottomright = -.1 }, -- italic N [0x1D443] = { bottomright = -.1 }, -- italic P [0x1D446] = { bottomright = -.05 }, -- italic S [0x1D447] = { bottomright = -.3 }, -- italic T [0x1D448] = { bottomright = -.2 }, -- italic U [0x1D449] = { bottomright = -.25 }, -- italic V [0x1D44A] = { bottomright = -.2 }, -- italic W [0x1D44B] = { bottomright = -.1 }, -- italic X [0x1D44C] = { bottomright = -.25 }, -- italic Y [0x1D44D] = { bottomright = -.1 }, -- italic Z [0x1D451] = { bottomright = -.1 }, -- italic d [0x1D453] = { bottomright = -.2 }, -- italic f [0x1D45F] = { bottomright = -.1 }, -- italic r [0x1D461] = { bottomright = -.1 }, -- italic t [0x1D463] = { bottomright = -.1 }, -- italic v [0x1D464] = { bottomright = -.05 }, -- italic w [0x1D465] = { bottomright = -.05 }, -- italic x [0x1D466] = { bottomright = -.05 }, -- italic y [0x1D467] = { bottomright = -.05 }, -- italic z [0x00393] = { bottomright = -0.3, }, -- upright Gamma [0x003A5] = { bottomright = -0.2, }, -- upright Upsilon [0x003A8] = { bottomright = -0.1, }, -- upright Psi [0x02207] = { bottomright = -0.2, }, -- upright Nabla [0x1D6FB] = { bottomright = -0.2, }, -- italic Nabla [0x1D701] = { bottomright = -.15 }, -- italic zeta [0x1D703] = { bottomright = -.05 }, -- italic theta [0x1D705] = { bottomright = -.05 }, -- italic kappa [0x1D709] = { bottomright = -.15 }, -- italic xi [0x1D70B] = { bottomright = -.1 }, -- italic pi [0x1D70E] = { bottomright = -.15 }, -- italic sigma [0x1D70F] = { bottomright = -.15 }, -- italic tau [0x1D712] = { bottomright = -.15 }, -- italic chi [0x1D713] = { bottomright = -.1 }, -- italic psi [0x1D718] = { bottomright = -.05 }, -- italic varkappa -- ["0x222B.parts.bottom"] = { bottomright = -0.20 }, -- int ["0x222C.parts.bottom"] = { bottomright = -0.15 }, -- iint ["0x222D.parts.bottom"] = { bottomright = -0.10 }, -- iiint ["0x2A0C.parts.bottom"] = { bottomright = -0.05 }, -- iiiint }, }, -- Accents are a mess. We migrate the extensibles from the combiners to the base accent -- and then need to tweak the width (which is auto set because it was zero with a large -- accent anchor offset). First we copy and fix. { tweak = "extendaccents", }, { tweak = "radicaldegreeanchors", list = { [0x221A] = { location = "left", hfactor = .1, vfactor = .65 }, ["0x221A.variants.*"] = { location = "left", hfactor = .1, vfactor = .6 }, ["0x221A.variants.1"] = { location = "left", hfactor = .1, vfactor = .65 }, ["0x221A.variants.2"] = { location = "left", hfactor = .1, vfactor = .65 }, ["0x221A.parts.bottom"] = { location = "left", hfactor = .1, vfactor = 1.1 }, } }, { tweak = "flattenaccents", }, { tweak = "fixaccents", }, -- First we set the dimensions of the initial accent which started out as zero but we want -- a proper width. -- { -- tweak = "dimensions", -- list = { -- [0x00302] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widehat -- [0x00303] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widetilde -- [0x00306] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widebreve -- [0x0030C] = { width = 1.4, anchor = 1.20, xoffset = .10 }, -- widecheck -- }, -- }, -- Then we deal with all offsets and heights in one go. So we treat the initial accent -- as well as the variants here. { tweak = "dimensions", list = { [0x020DB] = { yoffset = 0.015, height = .95, all = true }, -- widedddot : 0x20DB (self) }, }, -- We now copy these to the not wide slots so that we can set these to stretch as well, -- if only because it is less confusing and more consistent. { tweak = "copyaccents", }, presets.addmathkerns { }, { tweak = "checkspacing", }, { tweak = "addscripts", }, { tweak = "accentdimensions", }, { tweak = "addrules", }, { tweak = "replacerules", fraction = { height = .254, yoffset = .746, leftoffset = .1, rightoffset = .1, }, radical = { height = .17, leftoffset = .1, rightoffset = .1, yoffset = .485, yscale = .65 }, stacker = { height = .254, yoffset = .746 }, }, { tweak = "wipecues", }, { tweak = "addbars", advance = 0.175, }, { tweak = "addactuarian", }, { tweak = "addequals", }, { tweak = "addfourier", variant = 1, }, { tweak = "addprimed", }, -- this is the mkiv section { tweak = "emulatelmtx", feature = "emulatelmtx", comment = "this is for mkiv", }, }, }, alternates = { dotless = { feature = 'dtls', value = 1, comment = "Mathematical Dotless Forms" }, }, bigslots = { 1, 3, 5, 7 }, }, }