diff options
Diffstat (limited to 'tex/context/fonts/mkiv/lucida-math.lfg')
-rw-r--r-- | tex/context/fonts/mkiv/lucida-math.lfg | 290 |
1 files changed, 290 insertions, 0 deletions
diff --git a/tex/context/fonts/mkiv/lucida-math.lfg b/tex/context/fonts/mkiv/lucida-math.lfg new file mode 100644 index 000000000..6842d505b --- /dev/null +++ b/tex/context/fonts/mkiv/lucida-math.lfg @@ -0,0 +1,290 @@ +local common = fonts.goodies.load("common-math.lfg") +local presets = common.mathematics.tweaks.presets + +local integral_variants = { bottomright = -0.20 } +----- integral_top = { topright = 0.05 } +local integral_bottom = { bottomright = -0.45 } + +return { + name = "lucida-opentype-math", + version = "1.00", + comment = "Goodies that complement lucida opentype.", + author = "Hans Hagen & Mikael Sundqvist", + copyright = "ConTeXt development team", + mathematics = { + parameters = { + -- RadicalDisplayStyleVerticalGap = 100, + -- NoLimitSupFactor = 0, + -- NoLimitSubFactor = 900, + FractionRuleThickness = 55, + -- AccentTopShiftUp = 0, + -- FlattenedAccentTopShiftUp = 0, + -- AccentExtendMargin = 50, + -- AccentBaseHeight = 650, + AccentBaseDepth = 250, + -- RadicalDegreeBottomRaisePercent = 50, + -- RadicalKernAfterDegree = -600, + -- RadicalRuleThickness = 35, -- 40 in font (46 in demi) + DelimiterPercent = 90, + DelimiterShortfall = 400, + -- DisplayOperatorMinHeight = 1800, -- 1300 in font (only one) + PrimeRaisePercent = 60, -- 50 default + PrimeRaiseComposedPercent = 50, -- 25 default + AxisHeight = 325, -- we keep the old fonts as they are (also for demos) + }, + tweaks = { + aftercopying = { + { + tweak = "version", + expected = "Version 1.803", + }, + { + tweak = "fixoldschool", + version = "Version 1.802", + }, + -- { + -- tweak = "showinfo", + -- version = "Version 1.803", + -- }, + { + tweak = "addmirrors", + }, + presets.scripttocalligraphic { }, + presets.rsfstoscript { rscale = 1 }, + presets.rsfsuprighttoscript { rscale = 1 }, + presets.moderntocalligraphic { rscale = 1 }, + presets.eulertocalligraphic { rscale = 1 }, + presets.xitsarabic { rscale = 1.05 }, + presets.fallbacks { }, + presets.moveitalics { correct = true }, + presets.moveitalics { correct = true, letters = true }, + presets.moveintegrals { factor = 1.5 }, + presets.wipeitalics { }, + { + tweak = "replacealphabets", + list = { + { + source = "uppercasescript", + target = "uppercasecalligraphic", + feature = "ss04", + }, + { + source = "lowercasescript", + target = "lowercasecalligraphic", + feature = "ss04", + }, + { + source = "uppercaseboldscript", + target = "uppercaseboldcalligraphic", + feature = "ss04", + }, + -- No lowercase bold calligraphic/script in font + }, + }, + { + tweak = "dimensions", + version = "Version 1.802", + list = { + -- The < and > are slightly too small. We scale them by 867/795 + ["0x003C"] = { scale = 1.09057, width = 1.09057, height = 1.09057 }, + ["0x003E"] = { scale = 1.09057, width = 1.09057, height = 1.09057 }, + -- The = is too big if in ss03. We scale it by 795/867 (not working like this) + -- ["0x003D.ss03"] = { scale = 0.916955, width = 0.916955, height = 0.916955 }, + }, + }, + { + tweak = "dimensions", + version = "Version 1.802", + list = { + -- these we fix here. Remove when we have new version of Lucida + ["0x23DC.parts.1"] = { xoffset = -0.075, height = .4, yoffset = -0.6 }, + ["0x23DC.parts.2"] = { height = .4, yoffset = -0.6 }, + ["0x23DC.parts.3"] = { xoffset = 0.075, height = .4, yoffset = -0.6 }, + ["0x23DD.parts.1"] = { xoffset = -0.075, depth = .8, yoffset = 0.2 }, + ["0x23DD.parts.2"] = { depth = .8, yoffset = 0.2 }, + ["0x23DD.parts.3"] = { xoffset = 0.075, depth = .8, yoffset = 0.2 }, + -- these are done later using the AccentBase* parameters + -- [0x23DC] = { height = .2, yoffset = -0.8 }, + -- [0x23DD] = { depth = .6, yoffset = 0.4 }, + -- + -- ["0x7C.variants.1"] = { squeeze = 0.75, height = 0.75, depth = 0.75 }, + -- ["0x7C.variants.2"] = { squeeze = 0.75, height = 0.75, depth = 0.75 }, + -- ["0x7C.variants.3"] = { squeeze = 0.75, height = 0.75, depth = 0.75 }, + -- ["0x7C.variants.4"] = { squeeze = 0.75, height = 0.75, depth = 0.75 }, + -- going zero makes them be ignored + ["0x7C.variants.3"] = { squeeze = 0.90, height = 0.90, depth = 0.90 }, + ["0x7C.variants.4"] = { squeeze = 0.80, height = 0.80, depth = 0.80 }, + }, + }, + -- 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 = .05, vfactor = .675 }, + -- ["0x221A.variants.*"] = { location = "left", hfactor = .05, vfactor = .6 }, + -- ["0x221A.variants.1"] = { location = "left", hfactor = .05, vfactor = .65 }, + -- ["0x221A.variants.2"] = { location = "left", hfactor = .1, vfactor = .65 }, + ["0x221A.variants.3"] = { location = "left", hfactor = 0, vfactor = .55 }, + ["0x221A.variants.4"] = { location = "left", hfactor = 0, vfactor = .50 }, + -- ["0x221A.variants.5"] = { location = "left", hfactor = .05, vfactor = .525 }, + -- ["0x221A.variants.5"] = { location = "left", hfactor = .1, vfactor = .55 }, + -- ["0x221A.variants.6"] = { location = "left", hfactor = .1, vfactor = .55 }, + -- ["0x221A.parts.top"] = { location = "left", hfactor = .1, vfactor = 5.5 }, -- keep commented: bottom wins over top + ["0x221A.parts.bottom"] = { location = "left", hfactor = 0, vfactor = .85 }, + } +}, + { + 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 = { +-- -- here we want to apply to all +-- -- [0x00300] = { yoffset = -0.02, height = .95, all = true }, -- widegrave : 0x0060 +-- -- [0x00301] = { yoffset = -0.02, height = .95, all = true }, -- wideacute : 0x00B4 +-- -- [0x00302] = { yoffset = -0.03, height = .95, all = true }, -- widehat : 0x02C6 +-- -- [0x00303] = { yoffset = -0.02, height = .95, all = true }, -- widetilde : 0x02DC +-- -- [0x00306] = { yoffset = -0.03, height = .95, all = true }, -- widebre : 0x02D8 +-- -- [0x0030A] = { yoffset = 0.00, height = .95, all = true }, -- widering : 0x02DA +-- -- [0x0030C] = { yoffset = -0.03, height = .95, all = true }, -- widecheck : 0x02C7 +-- -- [0x00304] = { yoffset = -0.05, height = .95, all = true }, -- widebar : 0x00AF +-- -- [0x00307] = { yoffset = -0.03, height = .95, all = true }, -- widedot : 0x02D9 +-- -- [0x00308] = { yoffset = -0.03, height = .95, all = true }, -- wideddot : 0x00A8 +-- -- [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", + }, + -- So far for the accents. + + { + tweak = "fixslashes", + }, + -- { + -- tweak = "fixellipses", + -- }, + { + tweak = "addbreve", + }, + { + 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.15, bottomright = -0.15 }, -- right brace variants + ["0x29.parts.top"] = { topright = -0.25 }, -- right parenthesis top + ["0x29.parts.bottom"] = { bottomright = -0.25 }, -- right parenthesis bottom + ["0x29.variants.*"] = { topright = -0.2, bottomright = -0.2 }, -- 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.2, bottomright = -0.2 }, -- angle + ["0x27E9.variants.*"] = { topright = -0.3, bottomright = -0.3 }, + [0x27EB] = { topright = -0.2, bottomright = -0.2 }, + ["0x27EB.variants.*"] = { topright = -0.3, bottomright = -0.3 }, + -- ["0x222B.variants.*"] = integral_variants, ["0x222B.parts.top"] = integral_top, ["0x222B.parts.bottom"] = integral_bottom, + -- ["0x222C.variants.*"] = integral_variants, -- ["0x222C.parts.top"] = integral_top, ["0x222C.parts.bottom"] = integral_bottom, + -- ["0x222D.variants.*"] = integral_variants, -- ["0x222D.parts.top"] = integral_top, ["0x222D.parts.bottom"] = integral_bottom, + -- ["0x222E.variants.*"] = integral_variants, -- ["0x222E.parts.top"] = integral_top, ["0x222E.parts.bottom"] = integral_bottom, + -- ["0x222F.variants.*"] = integral_variants, -- ["0x222F.parts.top"] = integral_top, ["0x222F.parts.bottom"] = integral_bottom, + -- ["0x2230.variants.*"] = integral_variants, -- ["0x2230.parts.top"] = integral_top, ["0x2230.parts.bottom"] = integral_bottom, + -- ["0x2231.variants.*"] = integral_variants, -- ["0x2231.parts.top"] = integral_top, ["0x2231.parts.bottom"] = integral_bottom, + -- ["0x2232.variants.*"] = integral_variants, -- ["0x2232.parts.top"] = integral_top, ["0x2232.parts.bottom"] = integral_bottom, + -- ["0x2233.variants.*"] = integral_variants, -- ["0x2233.parts.top"] = integral_top, ["0x2233.parts.bottom"] = integral_bottom, + + }, + }, + { + tweak = "fixprimes", + factor = 0.8, -- accent base height + -- smaller = true, -- replace multiples + scale = 1.1, -- glyph scale + fake = 0.65, -- replace multiples with this width proportion + -- keep = true, -- keep the text size prime (aka minute) + }, + { + tweak = "checkspacing", + }, + { + tweak = "addscripts", + }, + { + tweak = "accentdimensions", + }, + { + tweak = "addrules", + }, + { + tweak = "addactuarian", + }, + { + tweak = "addfourier", + -- scale = 1.5, + variant = 1, + }, + { + tweak = "addarrows", + left = 0.1, + right = 0.1, + slack = 0.20, + list = { + [0x21A9] = false, + [0x21AA] = false, + [0x2190] = false, + [0x2192] = false, + [0x219E] = false, + [0x21A0] = false, + -- [0x21A6] = false, + -- [0x21CB] = false, + -- [0x21CC] = false, + } + }, + -- this is the mkiv section + { + tweak = "emulatelmtx", + feature = "emulatelmtx", + comment = "this is for mkiv", + }, + }, + }, + alternates = { + textitalic = { feature = 'ss01', value = 1, comment = "Mathematical Alternative Lowercase Italic" }, + arrow = { feature = 'ss02', value = 1, comment = "Mathematical Alternative Smaller Arrows" }, + operator = { feature = 'ss03', value = 1, comment = "Mathematical Alternative Smaller Operators" }, + calligraphic = { feature = 'ss04', value = 1, comment = "Mathematical Alternative Calligraphic Characters" }, + zero = { feature = 'ss05', value = 1, comment = "Mathematical Alternative Zero" }, + multipledots = { feature = 'ss06', value = 1, comment = "Mathematical Alternative Multiple Dots" }, + ldots = { feature = 'ss07', value = 1, comment = "Mathematical Alternative Ellipsis" }, + }, + bigslots = { + 1, 2, 3, 4 + }, + -- + -- experimental fixes for mkiv: + -- + dimensions = dimensions, + kerns = kerns, + }, +} |