tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

radicals.py (4996B)


      1 #!/usr/bin/env python3
      2 
      3 from utils import mathfont
      4 import fontforge
      5 
      6 
      7 radicalCodePoint = 0x221a
      8 
      9 
     10 def createStretchyRadical(aFont, codePoint=radicalCodePoint, width=mathfont.em, suffix=""):
     11    g = aFont.createChar(codePoint, "radical%s" % suffix)
     12    mathfont.drawRectangleGlyph(g, width, mathfont.em, 0)
     13    for size in (0, 1, 2, 3):
     14        g = aFont.createChar(-1, "size%d%s" % (size, suffix))
     15        mathfont.drawRectangleGlyph(g, width, (size + 1) * mathfont.em, 0)
     16    aFont[codePoint].verticalVariants = "radical%s size1%s size2%s size3%s" % ((suffix,) * 4)
     17    # Part: (glyphName, isExtender, startConnector, endConnector, fullAdvance)
     18    aFont.math.MinConnectorOverlap = 0
     19    aFont[codePoint].verticalComponents = \
     20        (("size2%s" % suffix, False, 0, width, 3 * mathfont.em),
     21         ("size1%s" % suffix, True, mathfont.em, width, 2 * mathfont.em))
     22 
     23 
     24 v1 = 25
     25 v2 = 1 * mathfont.em
     26 f = mathfont.create("radical-degreebottomraisepercent%d-rulethickness%d" % (v1, v2),
     27                    "Copyright (c) 2016 MathML Association")
     28 createStretchyRadical(f)
     29 f.math.RadicalDegreeBottomRaisePercent = v1
     30 f.math.RadicalDisplayStyleVerticalGap = 0
     31 f.math.RadicalExtraAscender = 0
     32 f.math.RadicalKernAfterDegree = 0
     33 f.math.RadicalKernBeforeDegree = 0
     34 f.math.RadicalRuleThickness = v2
     35 f.math.RadicalVerticalGap = 0
     36 mathfont.save(f)
     37 
     38 v1 = 7 * mathfont.em
     39 v2 = 1 * mathfont.em
     40 f = mathfont.create("radical-displaystyleverticalgap%d-rulethickness%d" % (v1, v2),
     41                    "Copyright (c) 2016 MathML Association")
     42 createStretchyRadical(f)
     43 f.math.RadicalDegreeBottomRaisePercent = 0
     44 f.math.RadicalDisplayStyleVerticalGap = v1
     45 f.math.RadicalExtraAscender = 0
     46 f.math.RadicalKernAfterDegree = 0
     47 f.math.RadicalKernBeforeDegree = 0
     48 f.math.RadicalRuleThickness = v2
     49 f.math.RadicalVerticalGap = 0
     50 mathfont.save(f)
     51 
     52 v1 = 3 * mathfont.em
     53 v2 = 1 * mathfont.em
     54 f = mathfont.create("radical-extraascender%d-rulethickness%d" % (v1, v2),
     55                    "Copyright (c) 2016 MathML Association")
     56 createStretchyRadical(f)
     57 f.math.RadicalDegreeBottomRaisePercent = 0
     58 f.math.RadicalDisplayStyleVerticalGap = 0
     59 f.math.RadicalExtraAscender = v1
     60 f.math.RadicalKernAfterDegree = 0
     61 f.math.RadicalKernBeforeDegree = 0
     62 f.math.RadicalRuleThickness = v2
     63 f.math.RadicalVerticalGap = 0
     64 mathfont.save(f)
     65 
     66 v1 = 5 * mathfont.em
     67 v2 = 1 * mathfont.em
     68 f = mathfont.create("radical-kernafterdegreeminus%d-rulethickness%d" % (v1, v2),
     69                    "Copyright (c) 2016 MathML Association")
     70 createStretchyRadical(f)
     71 f.math.RadicalDegreeBottomRaisePercent = 0
     72 f.math.RadicalDisplayStyleVerticalGap = 0
     73 f.math.RadicalExtraAscender = 0
     74 f.math.RadicalKernAfterDegree = -v1
     75 f.math.RadicalKernBeforeDegree = 0
     76 f.math.RadicalRuleThickness = v2
     77 f.math.RadicalVerticalGap = 0
     78 mathfont.save(f)
     79 
     80 v1 = 4 * mathfont.em
     81 v2 = 1 * mathfont.em
     82 f = mathfont.create("radical-kernbeforedegree%d-rulethickness%d" % (v1, v2),
     83                    "Copyright (c) 2016 MathML Association")
     84 createStretchyRadical(f)
     85 f.math.RadicalDegreeBottomRaisePercent = 0
     86 f.math.RadicalDisplayStyleVerticalGap = 0
     87 f.math.RadicalExtraAscender = 0
     88 f.math.RadicalKernAfterDegree = 0
     89 f.math.RadicalKernBeforeDegree = v1
     90 f.math.RadicalRuleThickness = v2
     91 f.math.RadicalVerticalGap = 0
     92 mathfont.save(f)
     93 
     94 v = 8 * mathfont.em
     95 f = mathfont.create("radical-rulethickness%d" % v,
     96                    "Copyright (c) 2016 MathML Association")
     97 createStretchyRadical(f)
     98 f.math.RadicalDegreeBottomRaisePercent = 0
     99 f.math.RadicalDisplayStyleVerticalGap = 0
    100 f.math.RadicalExtraAscender = 0
    101 f.math.RadicalKernAfterDegree = 0
    102 f.math.RadicalKernBeforeDegree = 0
    103 f.math.RadicalRuleThickness = v
    104 f.math.RadicalVerticalGap = 0
    105 mathfont.save(f)
    106 
    107 v1 = 6 * mathfont.em
    108 v2 = 1 * mathfont.em
    109 f = mathfont.create("radical-verticalgap%d-rulethickness%d" % (v1, v2),
    110                    "Copyright (c) 2016 MathML Association")
    111 createStretchyRadical(f)
    112 f.math.RadicalDegreeBottomRaisePercent = 0
    113 f.math.RadicalDisplayStyleVerticalGap = 0
    114 f.math.RadicalExtraAscender = 0
    115 f.math.RadicalKernAfterDegree = 0
    116 f.math.RadicalKernBeforeDegree = 0
    117 f.math.RadicalRuleThickness = v2
    118 f.math.RadicalVerticalGap = v1
    119 mathfont.save(f)
    120 
    121 v1 = 1 * mathfont.em
    122 v2 = 1 * mathfont.em
    123 f = mathfont.create("radical-negativekernbeforedegree%d-rulethickness%d" %
    124                    (v1, v2), "Copyright (c) 2020 Igalia S.L.")
    125 createStretchyRadical(f)
    126 f.math.RadicalDegreeBottomRaisePercent = 0
    127 f.math.RadicalDisplayStyleVerticalGap = 0
    128 f.math.RadicalExtraAscender = 0
    129 f.math.RadicalKernAfterDegree = 0
    130 f.math.RadicalKernBeforeDegree = -v1
    131 f.math.RadicalRuleThickness = v2
    132 f.math.RadicalVerticalGap = 0
    133 mathfont.save(f)
    134 
    135 v1 = 4 * mathfont.em
    136 v2 = 1 * mathfont.em
    137 f = mathfont.create("radical-rtlm", "Copyright (c) 2025 Igalia S.L.")
    138 f.addLookup("gsub", "gsub_single", (), (("rtlm", (("latn", ("dflt")),)),))
    139 f.addLookupSubtable("gsub", "gsub_n")
    140 createStretchyRadical(f, radicalCodePoint, v1)
    141 createStretchyRadical(f, 0xE000, v2, ".rtlm")
    142 f[radicalCodePoint].addPosSub("gsub_n", "radical.rtlm")
    143 mathfont.save(f)