Skip to content

Not-quite-tabular figures: kerning between period and default 7 #482

Description

@arrowtype

Problem description
In issue #472 and release 1.079, I corrected the problem that the default 1 and 7 had kerning, which prevented them from being properly tabular figures. However, there is still kerning between the period and 7 (and vice versa) that disrupts tabular data.

It’s also possible that other disruptive kerns exist, so resolving this issue should include a check for and solution to any other kerning that might be lurking around to disrupt tabular data.

image

Expected behavior

Default figures should work fully as tabular figures, including by having no kerning against adjacent punctuation likely to show up in tabular data (especially the period).

That, OR there should be a tnum feature that adds in a alts for period, etc, that are not kerned against numbers.

Activity

  1. self-assigned this
    on Oct 11, 2021
  2. arrowtype commented on Oct 14, 2021

    @arrowtype
    OwnerAuthor

    It turns out, there are quite a few kerns against the basic numbers.

    from fontParts.fontshell import RFont as Font
    
    font = Font("src/ufo/sans/Recursive Sans-Casual A.ufo")
    
    numbers = "zero one two three four five six seven eight nine".split(" ")
    
    for key in font.kerning.keys():
        if key[0] in numbers or key[1] in numbers:
            print(key)

    Yields:

    ('P', 'seven')
    ('at', 'seven')
    ('eight', 'public.kern2.Punct_low_left')
    ('eight', 'public.kern2.Punct_straight_quote')
    ('eight', 'public.kern2.Punct_top_left')
    ('eight', 'public.kern2.braceright')
    ('eight', 'public.kern2.bracketright')
    ('eight', 'public.kern2.parenright')
    ('eight', 'question')
    ('five', 'public.kern2.Punct_low_left')
    ('five', 'public.kern2.Punct_straight_quote')
    ('five', 'public.kern2.Punct_top_left')
    ('five', 'public.kern2.braceright')
    ('five', 'public.kern2.bracketright')
    ('five', 'public.kern2.parenright')
    ('five', 'question')
    ('four', 'public.kern2.Punct_low_left')
    ('four', 'public.kern2.Punct_straight_quote')
    ('four', 'public.kern2.Punct_top_left')
    ('four', 'public.kern2.braceright')
    ('four', 'question')
    ('one', 'public.kern2.Punct_low_left')
    ('one', 'public.kern2.Punct_straight_quote')
    ('one', 'public.kern2.Punct_top_left')
    ('one', 'question')
    ('public.kern1.A_right', 'seven')
    ('public.kern1.B_right', 'seven')
    ('public.kern1.C_right', 'seven')
    ('public.kern1.G_right', 'seven')
    ('public.kern1.K_right', 'four')
    ('public.kern1.K_right', 'seven')
    ('public.kern1.M_right', 'seven')
    ('public.kern1.O_right', 'seven')
    ('public.kern1.Punct_low_right', 'eight')
    ('public.kern1.Punct_low_right', 'five')
    ('public.kern1.Punct_low_right', 'four')
    ('public.kern1.Punct_low_right', 'nine')
    ('public.kern1.Punct_low_right', 'one')
    ('public.kern1.Punct_low_right', 'seven')
    ('public.kern1.Punct_low_right', 'three')
    ('public.kern1.Punct_low_right', 'two')
    ('public.kern1.Punct_straight_quote', 'eight')
    ('public.kern1.Punct_straight_quote', 'five')
    ('public.kern1.Punct_straight_quote', 'four')
    ('public.kern1.Punct_straight_quote', 'nine')
    ('public.kern1.Punct_straight_quote', 'one')
    ('public.kern1.Punct_straight_quote', 'seven')
    ('public.kern1.Punct_straight_quote', 'three')
    ('public.kern1.Punct_straight_quote', 'two')
    ('public.kern1.Punct_top_right', 'eight')
    ('public.kern1.Punct_top_right', 'five')
    ('public.kern1.Punct_top_right', 'four')
    ('public.kern1.Punct_top_right', 'nine')
    ('public.kern1.Punct_top_right', 'one')
    ('public.kern1.Punct_top_right', 'seven')
    ('public.kern1.Punct_top_right', 'three')
    ('public.kern1.Punct_top_right', 'two')
    ('public.kern1.R_right', 'seven')
    ('public.kern1.T_right', 'four')
    ('public.kern1.T_right', 'seven')
    ('public.kern1.Y_right', 'four')
    ('public.kern1.Y_right', 'seven')
    ('public.kern1.a_right', 'seven')
    ('public.kern1.braceleft', 'eight')
    ('public.kern1.braceleft', 'five')
    ('public.kern1.braceleft', 'four')
    ('public.kern1.braceleft', 'nine')
    ('public.kern1.bracketleft', 'eight')
    ('public.kern1.bracketleft', 'five')
    ('public.kern1.bracketleft', 'four')
    ('public.kern1.bracketleft', 'nine')
    ('public.kern1.bracketleft', 'seven')
    ('public.kern1.bracketleft', 'two')
    ('public.kern1.e_right', 'seven')
    ('public.kern1.n_right', 'seven')
    ('public.kern1.o_right', 'seven')
    ('public.kern1.parenleft', 'eight')
    ('public.kern1.parenleft', 'five')
    ('public.kern1.parenleft', 'four')
    ('public.kern1.parenleft', 'nine')
    ('public.kern1.x_right', 'seven')
    ('question', 'nine')
    ('questiondown', 'eight')
    ('questiondown', 'four')
    ('questiondown', 'nine')
    ('questiondown', 'one')
    ('questiondown', 'seven')
    ('questiondown', 'three')
    ('questiondown', 'two')
    ('seven', 'at')
    ('seven', 'four')
    ('seven', 'public.kern2.O_left')
    ('seven', 'public.kern2.Punct_low_left')
    ('seven', 'public.kern2.Punct_straight_quote')
    ('seven', 'public.kern2.Punct_top_left')
    ('seven', 'public.kern2.braceright')
    ('seven', 'question')
    ('six', 'public.kern2.Punct_low_left')
    ('six', 'public.kern2.Punct_straight_quote')
    ('six', 'public.kern2.Punct_top_left')
    ('six', 'public.kern2.braceright')
    ('six', 'public.kern2.bracketright')
    ('six', 'public.kern2.parenright')
    ('six', 'question')
    ('three', 'public.kern2.Punct_low_left')
    ('three', 'public.kern2.Punct_straight_quote')
    ('three', 'public.kern2.Punct_top_left')
    ('three', 'question')
    ('two', 'public.kern2.Punct_low_left')
    ('two', 'public.kern2.Punct_straight_quote')
    ('two', 'public.kern2.Punct_top_left')
    ('two', 'public.kern2.braceright')
    ('two', 'question')
    

    Until I test it, I’ll be unsure whether the best way forward is to remove all that kerning, or to make fresh .tnum figures without attaching any kerning. I’ll probably make some branches to explore this.

  3. arrowtype commented on Oct 14, 2021

    @arrowtype
    OwnerAuthor

    I wanted to see kerning values a little more clearly, so I improved the Python script a bit:

    """
        Recursive is intended to have tabular figures by default. However, there are some kerns present in these figures, which disrupts their tabularity.
    
        A known issue is kerning between /seven and /period. But, there may be other kerns beyond that. This will check for them so they can be removed.
    """
    
    # from fontParts.fontshell import RFont as Font
    from ufoLib2 import Font
    from fontTools.ufoLib.kerning import lookupKerningValue
    
    font = Font("src/ufo/sans/Recursive Sans-Casual A.ufo")
    
    numbers = "zero one two three four five six seven eight nine".split(" ")
    
    grouped = []
    for value in font.groups.values():
        for name in value:
            grouped.append(name)
    
    numberKerns = {}
    
    for number in numbers:
        numberKerns[number] = []
        for name in font.keys():
            kern1 = lookupKerningValue((number, name), font.kerning, font.groups)
            kern2 = lookupKerningValue((name, number), font.kerning, font.groups)
    
            if kern1 != 0:
                numberKerns[number].append(((number, name), kern1))
            if kern2 != 0:
                numberKerns[number].append(((name, number), kern2))
    
    import pprint
    pp = pprint.PrettyPrinter(indent=4)
    pp.pprint(numberKerns)
    Full list of number kerns (Click to expand)
       'eight': [   (('apostrophemod', 'eight'), -50),
                     (('eight', 'backslash'), -20),
                     (('backslash', 'eight'), -40),
                     (('eight', 'backslash.case'), -20),
                     (('backslash.case', 'eight'), -40),
                     (('braceleft', 'eight'), -50),
                     (('braceleft.case', 'eight'), -50),
                     (('eight', 'braceright'), -50),
                     (('eight', 'braceright.case'), -50),
                     (('bracketleft', 'eight'), -20),
                     (('bracketleft.case', 'eight'), -20),
                     (('eight', 'bracketright'), -20),
                     (('eight', 'bracketright.case'), -20),
                     (('eight', 'breve'), -20),
                     (('breve', 'eight'), -50),
                     (('eight', 'caron'), -20),
                     (('caron', 'eight'), -50),
                     (('eight', 'circumflex'), -20),
                     (('circumflex', 'eight'), -50),
                     (('eight', 'comma'), -60),
                     (('comma', 'eight'), -40),
                     (('eight', 'commaturnedmod'), -20),
                     (('commaturnedmod', 'eight'), -50),
                     (('eight', 'degree'), -20),
                     (('degree', 'eight'), -50),
                     (('eight', 'dieresis'), -20),
                     (('dieresis', 'eight'), -50),
                     (('eight', 'dotaccent'), -20),
                     (('dotaccent', 'eight'), -50),
                     (('eight', 'ellipsis'), -60),
                     (('ellipsis', 'eight'), -40),
                     (('eight', 'fraction'), -60),
                     (('fraction', 'eight'), -50),
                     (('grave', 'eight'), -50),
                     (('hungarumlaut', 'eight'), -50),
                     (('eight', 'macron'), -20),
                     (('macron', 'eight'), -50),
                     (('eight', 'macronmod'), -20),
                     (('macronmod', 'eight'), -50),
                     (('eight', 'minus'), -20),
                     (('eight', 'minute'), -20),
                     (('minute', 'eight'), -50),
                     (('eight', 'overline'), -20),
                     (('overline', 'eight'), -50),
                     (('parenleft', 'eight'), -30),
                     (('parenleft.case', 'eight'), -30),
                     (('eight', 'parenright'), -20),
                     (('eight', 'parenright.case'), -20),
                     (('eight', 'period'), -60),
                     (('period', 'eight'), -40),
                     (('eight', 'plus'), -20),
                     (('eight', 'primedblmod'), -20),
                     (('primedblmod', 'eight'), -50),
                     (('eight', 'primemod'), -20),
                     (('primemod', 'eight'), -50),
                     (('eight', 'question'), -40),
                     (('questiondown', 'eight'), -60),
                     (('eight', 'quotedbl'), -40),
                     (('quotedbl', 'eight'), -40),
                     (('eight', 'quotedblbase'), -60),
                     (('quotedblbase', 'eight'), -40),
                     (('eight', 'quotedblleft'), -20),
                     (('quotedblleft', 'eight'), -50),
                     (('eight', 'quotedblright'), -20),
                     (('quotedblright', 'eight'), -50),
                     (('eight', 'quoteleft'), -20),
                     (('quoteleft', 'eight'), -50),
                     (('eight', 'quoteright'), -20),
                     (('quoteright', 'eight'), -50),
                     (('eight', 'quotesinglbase'), -60),
                     (('quotesinglbase', 'eight'), -40),
                     (('eight', 'quotesingle'), -40),
                     (('quotesingle', 'eight'), -40),
                     (('eight', 'ring'), -20),
                     (('ring', 'eight'), -50),
                     (('eight', 'ringacute'), -20),
                     (('ringacute', 'eight'), -50),
                     (('eight', 'ringhalfleftmod'), -20),
                     (('ringhalfleftmod', 'eight'), -50),
                     (('eight', 'ringhalfrightmod'), -20),
                     (('ringhalfrightmod', 'eight'), -50),
                     (('eight', 'second'), -20),
                     (('second', 'eight'), -50),
                     (('eight', 'slash'), -60),
                     (('slash', 'eight'), -50),
                     (('eight', 'slash.case'), -60),
                     (('slash.case', 'eight'), -50),
                     (('eight', 'tilde'), -20),
                     (('tilde', 'eight'), -50),
                     (('eight', 'trademark'), -20),
                     (('trademark', 'eight'), -50),
                     (('eight', 'underscore'), -60),
                     (('underscore', 'eight'), -40),
                     (('eight', 'verticallinelowmod'), -60),
                     (('verticallinelowmod', 'eight'), -40),
                     (('eight', 'verticallinemod'), -20),
                     (('verticallinemod', 'eight'), -50)],
        'five': [   (('apostrophemod', 'five'), -40),
                    (('five', 'backslash'), -40),
                    (('backslash', 'five'), -30),
                    (('five', 'backslash.case'), -40),
                    (('backslash.case', 'five'), -30),
                    (('braceleft', 'five'), -40),
                    (('braceleft.case', 'five'), -40),
                    (('five', 'braceright'), -40),
                    (('five', 'braceright.case'), -40),
                    (('bracketleft', 'five'), -20),
                    (('bracketleft.case', 'five'), -20),
                    (('five', 'bracketright'), -20),
                    (('five', 'bracketright.case'), -20),
                    (('five', 'breve'), -40),
                    (('breve', 'five'), -40),
                    (('five', 'caron'), -40),
                    (('caron', 'five'), -40),
                    (('five', 'circumflex'), -40),
                    (('circumflex', 'five'), -40),
                    (('five', 'comma'), -50),
                    (('comma', 'five'), -30),
                    (('five', 'commaturnedmod'), -40),
                    (('commaturnedmod', 'five'), -40),
                    (('five', 'degree'), -40),
                    (('degree', 'five'), -40),
                    (('five', 'dieresis'), -40),
                    (('dieresis', 'five'), -40),
                    (('five', 'dotaccent'), -40),
                    (('dotaccent', 'five'), -40),
                    (('five', 'ellipsis'), -50),
                    (('ellipsis', 'five'), -30),
                    (('five', 'fraction'), -50),
                    (('fraction', 'five'), -40),
                    (('grave', 'five'), -40),
                    (('hungarumlaut', 'five'), -40),
                    (('five', 'macron'), -40),
                    (('macron', 'five'), -40),
                    (('five', 'macronmod'), -40),
                    (('macronmod', 'five'), -40),
                    (('five', 'minus'), -40),
                    (('five', 'minute'), -40),
                    (('minute', 'five'), -40),
                    (('five', 'overline'), -40),
                    (('overline', 'five'), -40),
                    (('parenleft', 'five'), -30),
                    (('parenleft.case', 'five'), -30),
                    (('five', 'parenright'), -20),
                    (('five', 'parenright.case'), -20),
                    (('five', 'period'), -50),
                    (('period', 'five'), -30),
                    (('five', 'plus'), -40),
                    (('five', 'primedblmod'), -40),
                    (('primedblmod', 'five'), -40),
                    (('five', 'primemod'), -40),
                    (('primemod', 'five'), -40),
                    (('five', 'question'), -20),
                    (('five', 'quotedbl'), -30),
                    (('quotedbl', 'five'), -50),
                    (('five', 'quotedblbase'), -50),
                    (('quotedblbase', 'five'), -30),
                    (('five', 'quotedblleft'), -40),
                    (('quotedblleft', 'five'), -40),
                    (('five', 'quotedblright'), -40),
                    (('quotedblright', 'five'), -40),
                    (('five', 'quoteleft'), -40),
                    (('quoteleft', 'five'), -40),
                    (('five', 'quoteright'), -40),
                    (('quoteright', 'five'), -40),
                    (('five', 'quotesinglbase'), -50),
                    (('quotesinglbase', 'five'), -30),
                    (('five', 'quotesingle'), -30),
                    (('quotesingle', 'five'), -50),
                    (('five', 'ring'), -40),
                    (('ring', 'five'), -40),
                    (('five', 'ringacute'), -40),
                    (('ringacute', 'five'), -40),
                    (('five', 'ringhalfleftmod'), -40),
                    (('ringhalfleftmod', 'five'), -40),
                    (('five', 'ringhalfrightmod'), -40),
                    (('ringhalfrightmod', 'five'), -40),
                    (('five', 'second'), -40),
                    (('second', 'five'), -40),
                    (('five', 'slash'), -50),
                    (('slash', 'five'), -40),
                    (('five', 'slash.case'), -50),
                    (('slash.case', 'five'), -40),
                    (('five', 'tilde'), -40),
                    (('tilde', 'five'), -40),
                    (('five', 'trademark'), -40),
                    (('trademark', 'five'), -40),
                    (('five', 'underscore'), -50),
                    (('underscore', 'five'), -30),
                    (('five', 'verticallinelowmod'), -50),
                    (('verticallinelowmod', 'five'), -30),
                    (('five', 'verticallinemod'), -40),
                    (('verticallinemod', 'five'), -40)],
        'four': [   (('K', 'four'), -30),
                    (('Kcommaaccent', 'four'), -30),
                    (('T', 'four'), -50),
                    (('Tbar', 'four'), -50),
                    (('Tcaron', 'four'), -50),
                    (('Tcedilla', 'four'), -50),
                    (('Tcommaaccent', 'four'), -50),
                    (('Tdotbelow', 'four'), -50),
                    (('Tlinebelow', 'four'), -50),
                    (('X', 'four'), -30),
                    (('Y', 'four'), -40),
                    (('Yacute', 'four'), -40),
                    (('Ycircumflex', 'four'), -40),
                    (('Ydieresis', 'four'), -40),
                    (('Ydot', 'four'), -40),
                    (('Ydotbelow', 'four'), -40),
                    (('Ygrave', 'four'), -40),
                    (('Yhookabove', 'four'), -40),
                    (('Ymacron', 'four'), -40),
                    (('Ytilde', 'four'), -40),
                    (('apostrophemod', 'four'), -80),
                    (('four', 'backslash'), -30),
                    (('backslash', 'four'), -50),
                    (('four', 'backslash.case'), -30),
                    (('backslash.case', 'four'), -50),
                    (('braceleft', 'four'), -40),
                    (('braceleft.case', 'four'), -40),
                    (('four', 'braceright'), -40),
                    (('four', 'braceright.case'), -40),
                    (('bracketleft', 'four'), -40),
                    (('bracketleft.case', 'four'), -40),
                    (('four', 'breve'), -30),
                    (('breve', 'four'), -80),
                    (('four', 'caron'), -30),
                    (('caron', 'four'), -80),
                    (('four', 'circumflex'), -30),
                    (('circumflex', 'four'), -80),
                    (('four', 'comma'), -40),
                    (('comma', 'four'), -50),
                    (('four', 'commaturnedmod'), -30),
                    (('commaturnedmod', 'four'), -80),
                    (('four', 'degree'), -30),
                    (('degree', 'four'), -80),
                    (('four', 'dieresis'), -30),
                    (('dieresis', 'four'), -80),
                    (('four', 'dotaccent'), -30),
                    (('dotaccent', 'four'), -80),
                    (('four', 'ellipsis'), -40),
                    (('ellipsis', 'four'), -50),
                    (('four', 'fraction'), -40),
                    (('fraction', 'four'), -80),
                    (('grave', 'four'), -80),
                    (('hungarumlaut', 'four'), -80),
                    (('four', 'macron'), -30),
                    (('macron', 'four'), -80),
                    (('four', 'macronmod'), -30),
                    (('macronmod', 'four'), -80),
                    (('four', 'minus'), -30),
                    (('four', 'minute'), -30),
                    (('minute', 'four'), -80),
                    (('four', 'overline'), -30),
                    (('overline', 'four'), -80),
                    (('parenleft', 'four'), -70),
                    (('parenleft.case', 'four'), -70),
                    (('four', 'period'), -40),
                    (('period', 'four'), -50),
                    (('four', 'plus'), -30),
                    (('four', 'primedblmod'), -30),
                    (('primedblmod', 'four'), -80),
                    (('four', 'primemod'), -30),
                    (('primemod', 'four'), -80),
                    (('four', 'question'), -20),
                    (('questiondown', 'four'), -80),
                    (('four', 'quotedbl'), -20),
                    (('quotedbl', 'four'), -70),
                    (('four', 'quotedblbase'), -40),
                    (('quotedblbase', 'four'), -50),
                    (('four', 'quotedblleft'), -30),
                    (('quotedblleft', 'four'), -80),
                    (('four', 'quotedblright'), -30),
                    (('quotedblright', 'four'), -80),
                    (('four', 'quoteleft'), -30),
                    (('quoteleft', 'four'), -80),
                    (('four', 'quoteright'), -30),
                    (('quoteright', 'four'), -80),
                    (('four', 'quotesinglbase'), -40),
                    (('quotesinglbase', 'four'), -50),
                    (('four', 'quotesingle'), -20),
                    (('quotesingle', 'four'), -70),
                    (('four', 'ring'), -30),
                    (('ring', 'four'), -80),
                    (('four', 'ringacute'), -30),
                    (('ringacute', 'four'), -80),
                    (('four', 'ringhalfleftmod'), -30),
                    (('ringhalfleftmod', 'four'), -80),
                    (('four', 'ringhalfrightmod'), -30),
                    (('ringhalfrightmod', 'four'), -80),
                    (('four', 'second'), -30),
                    (('second', 'four'), -80),
                    (('seven', 'four'), -30),
                    (('four', 'slash'), -40),
                    (('slash', 'four'), -80),
                    (('four', 'slash.case'), -40),
                    (('slash.case', 'four'), -80),
                    (('tenge', 'four'), -50),
                    (('four', 'tilde'), -30),
                    (('tilde', 'four'), -80),
                    (('four', 'trademark'), -30),
                    (('trademark', 'four'), -80),
                    (('four', 'underscore'), -40),
                    (('underscore', 'four'), -50),
                    (('four', 'verticallinelowmod'), -40),
                    (('verticallinelowmod', 'four'), -50),
                    (('four', 'verticallinemod'), -30),
                    (('verticallinemod', 'four'), -80)],
        'nine': [   (('apostrophemod', 'nine'), -40),
                    (('nine', 'backslash'), -10),
                    (('backslash', 'nine'), -50),
                    (('nine', 'backslash.case'), -10),
                    (('backslash.case', 'nine'), -50),
                    (('braceleft', 'nine'), -50),
                    (('braceleft.case', 'nine'), -50),
                    (('nine', 'braceright'), -50),
                    (('nine', 'braceright.case'), -50),
                    (('bracketleft', 'nine'), -20),
                    (('bracketleft.case', 'nine'), -20),
                    (('nine', 'bracketright'), -20),
                    (('nine', 'bracketright.case'), -20),
                    (('nine', 'breve'), -10),
                    (('breve', 'nine'), -40),
                    (('nine', 'caron'), -10),
                    (('caron', 'nine'), -40),
                    (('nine', 'circumflex'), -10),
                    (('circumflex', 'nine'), -40),
                    (('nine', 'comma'), -70),
                    (('comma', 'nine'), -50),
                    (('nine', 'commaturnedmod'), -10),
                    (('commaturnedmod', 'nine'), -40),
                    (('nine', 'degree'), -10),
                    (('degree', 'nine'), -40),
                    (('nine', 'dieresis'), -10),
                    (('dieresis', 'nine'), -40),
                    (('nine', 'dotaccent'), -10),
                    (('dotaccent', 'nine'), -40),
                    (('nine', 'ellipsis'), -70),
                    (('ellipsis', 'nine'), -50),
                    (('nine', 'fraction'), -70),
                    (('fraction', 'nine'), -40),
                    (('grave', 'nine'), -40),
                    (('hungarumlaut', 'nine'), -40),
                    (('nine', 'macron'), -10),
                    (('macron', 'nine'), -40),
                    (('nine', 'macronmod'), -10),
                    (('macronmod', 'nine'), -40),
                    (('nine', 'minus'), -10),
                    (('nine', 'minute'), -10),
                    (('minute', 'nine'), -40),
                    (('nine', 'overline'), -10),
                    (('overline', 'nine'), -40),
                    (('parenleft', 'nine'), -40),
                    (('parenleft.case', 'nine'), -40),
                    (('nine', 'parenright'), -30),
                    (('nine', 'parenright.case'), -30),
                    (('nine', 'period'), -70),
                    (('period', 'nine'), -50),
                    (('nine', 'plus'), -10),
                    (('nine', 'primedblmod'), -10),
                    (('primedblmod', 'nine'), -40),
                    (('nine', 'primemod'), -10),
                    (('primemod', 'nine'), -40),
                    (('nine', 'question'), -30),
                    (('question', 'nine'), -10),
                    (('questiondown', 'nine'), -70),
                    (('nine', 'quotedbl'), -30),
                    (('quotedbl', 'nine'), -30),
                    (('nine', 'quotedblbase'), -70),
                    (('quotedblbase', 'nine'), -50),
                    (('nine', 'quotedblleft'), -10),
                    (('quotedblleft', 'nine'), -40),
                    (('nine', 'quotedblright'), -10),
                    (('quotedblright', 'nine'), -40),
                    (('nine', 'quoteleft'), -10),
                    (('quoteleft', 'nine'), -40),
                    (('nine', 'quoteright'), -10),
                    (('quoteright', 'nine'), -40),
                    (('nine', 'quotesinglbase'), -70),
                    (('quotesinglbase', 'nine'), -50),
                    (('nine', 'quotesingle'), -30),
                    (('quotesingle', 'nine'), -30),
                    (('nine', 'ring'), -10),
                    (('ring', 'nine'), -40),
                    (('nine', 'ringacute'), -10),
                    (('ringacute', 'nine'), -40),
                    (('nine', 'ringhalfleftmod'), -10),
                    (('ringhalfleftmod', 'nine'), -40),
                    (('nine', 'ringhalfrightmod'), -10),
                    (('ringhalfrightmod', 'nine'), -40),
                    (('nine', 'second'), -10),
                    (('second', 'nine'), -40),
                    (('nine', 'slash'), -70),
                    (('slash', 'nine'), -40),
                    (('nine', 'slash.case'), -70),
                    (('slash.case', 'nine'), -40),
                    (('nine', 'tilde'), -10),
                    (('tilde', 'nine'), -40),
                    (('nine', 'trademark'), -10),
                    (('trademark', 'nine'), -40),
                    (('nine', 'underscore'), -70),
                    (('underscore', 'nine'), -50),
                    (('nine', 'verticallinelowmod'), -70),
                    (('verticallinelowmod', 'nine'), -50),
                    (('nine', 'verticallinemod'), -10),
                    (('verticallinemod', 'nine'), -40)],
        'one': [   (('apostrophemod', 'one'), -40),
                   (('one', 'backslash'), -60),
                   (('backslash', 'one'), -30),
                   (('one', 'backslash.case'), -60),
                   (('backslash.case', 'one'), -30),
                   (('one', 'breve'), -60),
                   (('breve', 'one'), -40),
                   (('one', 'caron'), -60),
                   (('caron', 'one'), -40),
                   (('one', 'circumflex'), -60),
                   (('circumflex', 'one'), -40),
                   (('one', 'comma'), -30),
                   (('comma', 'one'), -30),
                   (('one', 'commaturnedmod'), -60),
                   (('commaturnedmod', 'one'), -40),
                   (('one', 'degree'), -60),
                   (('degree', 'one'), -40),
                   (('one', 'dieresis'), -60),
                   (('dieresis', 'one'), -40),
                   (('one', 'dotaccent'), -60),
                   (('dotaccent', 'one'), -40),
                   (('one', 'ellipsis'), -30),
                   (('ellipsis', 'one'), -30),
                   (('one', 'fraction'), -30),
                   (('fraction', 'one'), -40),
                   (('grave', 'one'), -40),
                   (('hungarumlaut', 'one'), -40),
                   (('one', 'macron'), -60),
                   (('macron', 'one'), -40),
                   (('one', 'macronmod'), -60),
                   (('macronmod', 'one'), -40),
                   (('one', 'minus'), -60),
                   (('one', 'minute'), -60),
                   (('minute', 'one'), -40),
                   (('one', 'overline'), -60),
                   (('overline', 'one'), -40),
                   (('one', 'period'), -30),
                   (('period', 'one'), -30),
                   (('one', 'plus'), -60),
                   (('one', 'primedblmod'), -60),
                   (('primedblmod', 'one'), -40),
                   (('one', 'primemod'), -60),
                   (('primemod', 'one'), -40),
                   (('one', 'question'), -100),
                   (('questiondown', 'one'), -30),
                   (('one', 'quotedbl'), -80),
                   (('quotedbl', 'one'), -20),
                   (('one', 'quotedblbase'), -30),
                   (('quotedblbase', 'one'), -30),
                   (('one', 'quotedblleft'), -60),
                   (('quotedblleft', 'one'), -40),
                   (('one', 'quotedblright'), -60),
                   (('quotedblright', 'one'), -40),
                   (('one', 'quoteleft'), -60),
                   (('quoteleft', 'one'), -40),
                   (('one', 'quoteright'), -60),
                   (('quoteright', 'one'), -40),
                   (('one', 'quotesinglbase'), -30),
                   (('quotesinglbase', 'one'), -30),
                   (('one', 'quotesingle'), -80),
                   (('quotesingle', 'one'), -20),
                   (('one', 'ring'), -60),
                   (('ring', 'one'), -40),
                   (('one', 'ringacute'), -60),
                   (('ringacute', 'one'), -40),
                   (('one', 'ringhalfleftmod'), -60),
                   (('ringhalfleftmod', 'one'), -40),
                   (('one', 'ringhalfrightmod'), -60),
                   (('ringhalfrightmod', 'one'), -40),
                   (('one', 'second'), -60),
                   (('second', 'one'), -40),
                   (('one', 'slash'), -30),
                   (('slash', 'one'), -40),
                   (('one', 'slash.case'), -30),
                   (('slash.case', 'one'), -40),
                   (('one', 'tilde'), -60),
                   (('tilde', 'one'), -40),
                   (('one', 'trademark'), -60),
                   (('trademark', 'one'), -40),
                   (('one', 'underscore'), -30),
                   (('underscore', 'one'), -30),
                   (('one', 'verticallinelowmod'), -30),
                   (('verticallinelowmod', 'one'), -30),
                   (('one', 'verticallinemod'), -60),
                   (('verticallinemod', 'one'), -40)],
        'seven': [   (('A', 'seven'), -50),
                     (('Aacute', 'seven'), -50),
                     (('Abreve', 'seven'), -50),
                     (('Abreveacute', 'seven'), -50),
                     (('Abrevedot', 'seven'), -50),
                     (('Abrevegrave', 'seven'), -50),
                     (('Abrevehook', 'seven'), -50),
                     (('Abrevetilde', 'seven'), -50),
                     (('Acircumflex', 'seven'), -50),
                     (('Acircumflexacute', 'seven'), -50),
                     (('Acircumflexdot', 'seven'), -50),
                     (('Acircumflexgrave', 'seven'), -50),
                     (('Acircumflexhook', 'seven'), -50),
                     (('Acircumflextilde', 'seven'), -50),
                     (('Adieresis', 'seven'), -50),
                     (('Adotbelow', 'seven'), -50),
                     (('Agrave', 'seven'), -50),
                     (('Agravedbl', 'seven'), -50),
                     (('Ahook', 'seven'), -50),
                     (('Ainvertedbreve', 'seven'), -50),
                     (('Amacron', 'seven'), -50),
                     (('Aogonek', 'seven'), -50),
                     (('Aring', 'seven'), -50),
                     (('Aringacute', 'seven'), -50),
                     (('Atilde', 'seven'), -50),
                     (('B', 'seven'), -20),
                     (('Beta', 'seven'), -20),
                     (('seven', 'C'), -20),
                     (('C', 'seven'), -20),
                     (('seven', 'Cacute'), -20),
                     (('Cacute', 'seven'), -20),
                     (('seven', 'Ccaron'), -20),
                     (('Ccaron', 'seven'), -20),
                     (('seven', 'Ccedilla'), -20),
                     (('Ccedilla', 'seven'), -20),
                     (('seven', 'Ccedillaacute'), -20),
                     (('Ccedillaacute', 'seven'), -20),
                     (('seven', 'Ccircumflex'), -20),
                     (('Ccircumflex', 'seven'), -20),
                     (('seven', 'Cdotaccent'), -20),
                     (('Cdotaccent', 'seven'), -20),
                     (('D', 'seven'), -30),
                     (('Dcaron', 'seven'), -30),
                     (('Dcroat', 'seven'), -30),
                     (('Ddotbelow', 'seven'), -30),
                     (('Dlinebelow', 'seven'), -30),
                     (('Eth', 'seven'), -30),
                     (('seven', 'G'), -20),
                     (('G', 'seven'), -30),
                     (('seven', 'Gbreve'), -20),
                     (('Gbreve', 'seven'), -30),
                     (('seven', 'Gcaron'), -20),
                     (('Gcaron', 'seven'), -30),
                     (('seven', 'Gcircumflex'), -20),
                     (('Gcircumflex', 'seven'), -30),
                     (('seven', 'Gcommaaccent'), -20),
                     (('Gcommaaccent', 'seven'), -30),
                     (('seven', 'Gdotaccent'), -20),
                     (('Gdotaccent', 'seven'), -30),
                     (('Germandbls', 'seven'), -20),
                     (('seven', 'Gmacron'), -20),
                     (('Gmacron', 'seven'), -30),
                     (('K', 'seven'), -20),
                     (('Kcommaaccent', 'seven'), -20),
                     (('M', 'seven'), -20),
                     (('Mdotbelow', 'seven'), -20),
                     (('seven', 'O'), -20),
                     (('O', 'seven'), -30),
                     (('seven', 'OE'), -20),
                     (('seven', 'Oacute'), -20),
                     (('Oacute', 'seven'), -30),
                     (('seven', 'Obreve'), -20),
                     (('Obreve', 'seven'), -30),
                     (('seven', 'Ocircumflex'), -20),
                     (('Ocircumflex', 'seven'), -30),
                     (('seven', 'Ocircumflexacute'), -20),
                     (('Ocircumflexacute', 'seven'), -30),
                     (('seven', 'Ocircumflexdot'), -20),
                     (('Ocircumflexdot', 'seven'), -30),
                     (('seven', 'Ocircumflexgrave'), -20),
                     (('Ocircumflexgrave', 'seven'), -30),
                     (('seven', 'Ocircumflexhook'), -20),
                     (('Ocircumflexhook', 'seven'), -30),
                     (('seven', 'Ocircumflextilde'), -20),
                     (('Ocircumflextilde', 'seven'), -30),
                     (('seven', 'Odieresis'), -20),
                     (('Odieresis', 'seven'), -30),
                     (('seven', 'Odieresismacron'), -20),
                     (('Odieresismacron', 'seven'), -30),
                     (('seven', 'Odotbelow'), -20),
                     (('Odotbelow', 'seven'), -30),
                     (('seven', 'Odotmacron'), -20),
                     (('Odotmacron', 'seven'), -30),
                     (('seven', 'Ograve'), -20),
                     (('Ograve', 'seven'), -30),
                     (('seven', 'Ogravedbl'), -20),
                     (('Ogravedbl', 'seven'), -30),
                     (('seven', 'Ohook'), -20),
                     (('Ohook', 'seven'), -30),
                     (('seven', 'Ohorn'), -20),
                     (('Ohorn', 'seven'), -30),
                     (('seven', 'Ohornacute'), -20),
                     (('Ohornacute', 'seven'), -30),
                     (('seven', 'Ohorndot'), -20),
                     (('Ohorndot', 'seven'), -30),
                     (('seven', 'Ohorngrave'), -20),
                     (('Ohorngrave', 'seven'), -30),
                     (('seven', 'Ohornhook'), -20),
                     (('Ohornhook', 'seven'), -30),
                     (('seven', 'Ohorntilde'), -20),
                     (('Ohorntilde', 'seven'), -30),
                     (('seven', 'Ohungarumlaut'), -20),
                     (('Ohungarumlaut', 'seven'), -30),
                     (('seven', 'Oinvertedbreve'), -20),
                     (('Oinvertedbreve', 'seven'), -30),
                     (('seven', 'Omacron'), -20),
                     (('Omacron', 'seven'), -30),
                     (('seven', 'Omacronacute'), -20),
                     (('Omacronacute', 'seven'), -30),
                     (('seven', 'Omacrongrave'), -20),
                     (('Omacrongrave', 'seven'), -30),
                     (('seven', 'Oogonek'), -20),
                     (('Oogonek', 'seven'), -30),
                     (('seven', 'Oslash'), -20),
                     (('Oslash', 'seven'), -30),
                     (('seven', 'Oslashacute'), -20),
                     (('Oslashacute', 'seven'), -30),
                     (('seven', 'Otilde'), -20),
                     (('Otilde', 'seven'), -30),
                     (('seven', 'Otildeacute'), -20),
                     (('Otildeacute', 'seven'), -30),
                     (('seven', 'Otildedieresis'), -20),
                     (('Otildedieresis', 'seven'), -30),
                     (('seven', 'Otildemacron'), -20),
                     (('Otildemacron', 'seven'), -30),
                     (('P', 'seven'), -30),
                     (('seven', 'Q'), -20),
                     (('Q', 'seven'), -30),
                     (('seven', 'Q.titl'), -20),
                     (('R', 'seven'), -20),
                     (('Racute', 'seven'), -20),
                     (('Rcaron', 'seven'), -20),
                     (('Rcommaaccent', 'seven'), -20),
                     (('Rdotbelow', 'seven'), -20),
                     (('Rgravedbl', 'seven'), -20),
                     (('Rinvertedbreve', 'seven'), -20),
                     (('Rlinebelow', 'seven'), -20),
                     (('Schwa', 'seven'), -30),
                     (('T', 'seven'), -30),
                     (('Tbar', 'seven'), -30),
                     (('Tcaron', 'seven'), -30),
                     (('Tcedilla', 'seven'), -30),
                     (('Tcommaaccent', 'seven'), -30),
                     (('Tdotbelow', 'seven'), -30),
                     (('Tlinebelow', 'seven'), -30),
                     (('X', 'seven'), -20),
                     (('Y', 'seven'), -40),
                     (('Yacute', 'seven'), -40),
                     (('Ycircumflex', 'seven'), -40),
                     (('Ydieresis', 'seven'), -40),
                     (('Ydot', 'seven'), -40),
                     (('Ydotbelow', 'seven'), -40),
                     (('Ygrave', 'seven'), -40),
                     (('Yhookabove', 'seven'), -40),
                     (('Ymacron', 'seven'), -40),
                     (('Ytilde', 'seven'), -40),
                     (('a', 'seven'), -30),
                     (('a.simple', 'seven'), -30),
                     (('aacute', 'seven'), -30),
                     (('aacute.simple', 'seven'), -30),
                     (('abreve', 'seven'), -30),
                     (('abreve.simple', 'seven'), -30),
                     (('abreveacute', 'seven'), -30),
                     (('abreveacute.simple', 'seven'), -30),
                     (('abrevedot', 'seven'), -30),
                     (('abrevedot.simple', 'seven'), -30),
                     (('abrevegrave', 'seven'), -30),
                     (('abrevegrave.simple', 'seven'), -30),
                     (('abrevehook', 'seven'), -30),
                     (('abrevehook.simple', 'seven'), -30),
                     (('abrevetilde', 'seven'), -30),
                     (('abrevetilde.simple', 'seven'), -30),
                     (('acircumflex', 'seven'), -30),
                     (('acircumflex.simple', 'seven'), -30),
                     (('acircumflexacute', 'seven'), -30),
                     (('acircumflexacute.simple', 'seven'), -30),
                     (('acircumflexdot', 'seven'), -30),
                     (('acircumflexdot.simple', 'seven'), -30),
                     (('acircumflexgrave', 'seven'), -30),
                     (('acircumflexgrave.simple', 'seven'), -30),
                     (('acircumflexhook', 'seven'), -30),
                     (('acircumflexhook.simple', 'seven'), -30),
                     (('acircumflextilde', 'seven'), -30),
                     (('acircumflextilde.simple', 'seven'), -30),
                     (('adieresis', 'seven'), -30),
                     (('adieresis.simple', 'seven'), -30),
                     (('adotbelow', 'seven'), -30),
                     (('adotbelow.simple', 'seven'), -30),
                     (('ae', 'seven'), -30),
                     (('aeacute', 'seven'), -30),
                     (('agrave', 'seven'), -30),
                     (('agrave.simple', 'seven'), -30),
                     (('agravedbl', 'seven'), -30),
                     (('ahook', 'seven'), -30),
                     (('ahook.simple', 'seven'), -30),
                     (('ainvertedbreve', 'seven'), -30),
                     (('amacron', 'seven'), -30),
                     (('amacron.simple', 'seven'), -30),
                     (('aogonek', 'seven'), -30),
                     (('aogonek.simple', 'seven'), -30),
                     (('apostrophemod', 'seven'), -20),
                     (('aring', 'seven'), -30),
                     (('aring.simple', 'seven'), -30),
                     (('aringacute', 'seven'), -30),
                     (('aringacute.simple', 'seven'), -30),
                     (('seven', 'at'), -70),
                     (('at', 'seven'), -30),
                     (('atilde', 'seven'), -30),
                     (('atilde.simple', 'seven'), -30),
                     (('b', 'seven'), -30),
                     (('b.italic', 'seven'), -30),
                     (('b.italic_191117-17_02', 'seven'), -30),
                     (('seven', 'backslash'), -20),
                     (('backslash', 'seven'), -120),
                     (('seven', 'backslash.case'), -20),
                     (('backslash.case', 'seven'), -120),
                     (('beta', 'seven'), -20),
                     (('bitcoin', 'seven'), -20),
                     (('braceleft', 'seven'), -40),
                     (('braceleft.case', 'seven'), -40),
                     (('seven', 'braceright'), -40),
                     (('seven', 'braceright.case'), -40),
                     (('seven', 'breve'), -20),
                     (('breve', 'seven'), -20),
                     (('seven', 'caron'), -20),
                     (('caron', 'seven'), -20),
                     (('seven', 'cedi'), -20),
                     (('seven', 'circumflex'), -20),
                     (('circumflex', 'seven'), -20),
                     (('seven', 'colonmonetary'), -20),
                     (('colonmonetary', 'seven'), -20),
                     (('seven', 'comma'), -150),
                     (('comma', 'seven'), -120),
                     (('seven', 'commaturnedmod'), -20),
                     (('commaturnedmod', 'seven'), -20),
                     (('seven', 'degree'), -20),
                     (('degree', 'seven'), -20),
                     (('seven', 'dieresis'), -20),
                     (('dieresis', 'seven'), -20),
                     (('seven', 'dotaccent'), -20),
                     (('dotaccent', 'seven'), -20),
                     (('e', 'seven'), -30),
                     (('e.italic', 'seven'), -30),
                     (('eacute', 'seven'), -30),
                     (('eacute.italic', 'seven'), -30),
                     (('ebreve', 'seven'), -30),
                     (('ebreve.italic', 'seven'), -30),
                     (('ecaron', 'seven'), -30),
                     (('ecaron.italic', 'seven'), -30),
                     (('ecedillabreve', 'seven'), -30),
                     (('ecedillabreve.italic', 'seven'), -30),
                     (('ecircumflex', 'seven'), -30),
                     (('ecircumflex.italic', 'seven'), -30),
                     (('ecircumflexacute', 'seven'), -30),
                     (('ecircumflexacute.italic', 'seven'), -30),
                     (('ecircumflexdot', 'seven'), -30),
                     (('ecircumflexdot.italic', 'seven'), -30),
                     (('ecircumflexgrave', 'seven'), -30),
                     (('ecircumflexgrave.italic', 'seven'), -30),
                     (('ecircumflexhook', 'seven'), -30),
                     (('ecircumflexhook.italic', 'seven'), -30),
                     (('ecircumflextilde', 'seven'), -30),
                     (('ecircumflextilde.italic', 'seven'), -30),
                     (('edieresis', 'seven'), -30),
                     (('edieresis.italic', 'seven'), -30),
                     (('edotaccent', 'seven'), -30),
                     (('edotaccent.italic', 'seven'), -30),
                     (('edotbelow', 'seven'), -30),
                     (('edotbelow.italic', 'seven'), -30),
                     (('egrave', 'seven'), -30),
                     (('egrave.italic', 'seven'), -30),
                     (('egravedbl', 'seven'), -30),
                     (('egravedbl.italic', 'seven'), -30),
                     (('ehook', 'seven'), -30),
                     (('ehook.italic', 'seven'), -30),
                     (('einvertedbreve', 'seven'), -30),
                     (('einvertedbreve.italic', 'seven'), -30),
                     (('seven', 'ellipsis'), -150),
                     (('ellipsis', 'seven'), -120),
                     (('emacron', 'seven'), -30),
                     (('emacron.italic', 'seven'), -30),
                     (('emacronacute', 'seven'), -30),
                     (('emacronacute.italic', 'seven'), -30),
                     (('emacrongrave', 'seven'), -30),
                     (('emacrongrave.italic', 'seven'), -30),
                     (('eng', 'seven'), -10),
                     (('eogonek', 'seven'), -30),
                     (('eogonek.italic', 'seven'), -30),
                     (('eth', 'seven'), -30),
                     (('etilde', 'seven'), -30),
                     (('etilde.italic', 'seven'), -30),
                     (('seven', 'four'), -30),
                     (('seven', 'fraction'), -150),
                     (('fraction', 'seven'), -20),
                     (('germandbls', 'seven'), -20),
                     (('grave', 'seven'), -20),
                     (('seven', 'guarani'), -20),
                     (('h', 'seven'), -10),
                     (('h.italic', 'seven'), -10),
                     (('hbar', 'seven'), -10),
                     (('hbrevebelow', 'seven'), -10),
                     (('hbrevebelow.italic', 'seven'), -10),
                     (('hcircumflex', 'seven'), -10),
                     (('hcircumflex.italic', 'seven'), -10),
                     (('hdotbelow', 'seven'), -10),
                     (('hdotbelow.italic', 'seven'), -10),
                     (('hungarumlaut', 'seven'), -20),
                     (('k', 'seven'), -30),
                     (('k.italic', 'seven'), -30),
                     (('kcommaaccent', 'seven'), -30),
                     (('kcommaaccent.italic', 'seven'), -30),
                     (('kgreenlandic', 'seven'), -30),
                     (('m', 'seven'), -10),
                     (('m.italic', 'seven'), -10),
                     (('seven', 'macron'), -20),
                     (('macron', 'seven'), -20),
                     (('seven', 'macronmod'), -20),
                     (('macronmod', 'seven'), -20),
                     (('mdotbelow', 'seven'), -10),
                     (('mdotbelow.italic', 'seven'), -10),
                     (('seven', 'minus'), -20),
                     (('seven', 'minute'), -20),
                     (('minute', 'seven'), -20),
                     (('n', 'seven'), -10),
                     (('n.italic', 'seven'), -10),
                     (('nacute', 'seven'), -10),
                     (('nacute.italic', 'seven'), -10),
                     (('napostrophe', 'seven'), -10),
                     (('napostrophe.italic', 'seven'), -10),
                     (('ncaron', 'seven'), -10),
                     (('ncaron.italic', 'seven'), -10),
                     (('ncommaaccent', 'seven'), -10),
                     (('ncommaaccent.italic', 'seven'), -10),
                     (('ndot', 'seven'), -10),
                     (('ndot.italic', 'seven'), -10),
                     (('ndotbelow', 'seven'), -10),
                     (('ndotbelow.italic', 'seven'), -10),
                     (('nhookleft', 'seven'), -10),
                     (('nlinebelow', 'seven'), -10),
                     (('nlinebelow.italic', 'seven'), -10),
                     (('ntilde', 'seven'), -10),
                     (('ntilde.italic', 'seven'), -10),
                     (('o', 'seven'), -30),
                     (('oacute', 'seven'), -30),
                     (('obreve', 'seven'), -30),
                     (('ocircumflex', 'seven'), -30),
                     (('ocircumflexacute', 'seven'), -30),
                     (('ocircumflexdot', 'seven'), -30),
                     (('ocircumflexgrave', 'seven'), -30),
                     (('ocircumflexhook', 'seven'), -30),
                     (('ocircumflextilde', 'seven'), -30),
                     (('odieresis', 'seven'), -30),
                     (('odieresismacron', 'seven'), -30),
                     (('odotbelow', 'seven'), -30),
                     (('odotmacron', 'seven'), -30),
                     (('oe', 'seven'), -30),
                     (('ograve', 'seven'), -30),
                     (('ogravedbl', 'seven'), -30),
                     (('ohook', 'seven'), -30),
                     (('ohorn', 'seven'), -30),
                     (('ohornacute', 'seven'), -30),
                     (('ohorndot', 'seven'), -30),
                     (('ohorngrave', 'seven'), -30),
                     (('ohornhook', 'seven'), -30),
                     (('ohorntilde', 'seven'), -30),
                     (('ohungarumlaut', 'seven'), -30),
                     (('oinvertedbreve', 'seven'), -30),
                     (('omacron', 'seven'), -30),
                     (('omacronacute', 'seven'), -30),
                     (('omacrongrave', 'seven'), -30),
                     (('oogonek', 'seven'), -30),
                     (('oslash', 'seven'), -30),
                     (('oslashacute', 'seven'), -30),
                     (('otilde', 'seven'), -30),
                     (('otildeacute', 'seven'), -30),
                     (('otildedieresis', 'seven'), -30),
                     (('otildemacron', 'seven'), -30),
                     (('seven', 'overline'), -20),
                     (('overline', 'seven'), -20),
                     (('p', 'seven'), -30),
                     (('seven', 'period'), -150),
                     (('period', 'seven'), -120),
                     (('seven', 'plus'), -20),
                     (('seven', 'primedblmod'), -20),
                     (('primedblmod', 'seven'), -20),
                     (('seven', 'primemod'), -20),
                     (('primemod', 'seven'), -20),
                     (('seven', 'question'), -30),
                     (('questiondown', 'seven'), -120),
                     (('seven', 'quotedbl'), -10),
                     (('quotedbl', 'seven'), -10),
                     (('seven', 'quotedblbase'), -150),
                     (('quotedblbase', 'seven'), -120),
                     (('seven', 'quotedblleft'), -20),
                     (('quotedblleft', 'seven'), -20),
                     (('seven', 'quotedblright'), -20),
                     (('quotedblright', 'seven'), -20),
                     (('seven', 'quoteleft'), -20),
                     (('quoteleft', 'seven'), -20),
                     (('seven', 'quoteright'), -20),
                     (('quoteright', 'seven'), -20),
                     (('seven', 'quotesinglbase'), -150),
                     (('quotesinglbase', 'seven'), -120),
                     (('seven', 'quotesingle'), -10),
                     (('quotesingle', 'seven'), -10),
                     (('seven', 'ring'), -20),
                     (('ring', 'seven'), -20),
                     (('seven', 'ringacute'), -20),
                     (('ringacute', 'seven'), -20),
                     (('seven', 'ringhalfleftmod'), -20),
                     (('ringhalfleftmod', 'seven'), -20),
                     (('seven', 'ringhalfrightmod'), -20),
                     (('ringhalfrightmod', 'seven'), -20),
                     (('schwa', 'seven'), -30),
                     (('seven', 'second'), -20),
                     (('second', 'seven'), -20),
                     (('seven', 'slash'), -150),
                     (('slash', 'seven'), -20),
                     (('seven', 'slash.case'), -150),
                     (('slash.case', 'seven'), -20),
                     (('tenge', 'seven'), -30),
                     (('thai:baht', 'seven'), -20),
                     (('thorn', 'seven'), -30),
                     (('seven', 'tilde'), -20),
                     (('tilde', 'seven'), -20),
                     (('seven', 'trademark'), -20),
                     (('trademark', 'seven'), -20),
                     (('seven', 'underscore'), -150),
                     (('underscore', 'seven'), -120),
                     (('seven', 'verticallinelowmod'), -150),
                     (('verticallinelowmod', 'seven'), -120),
                     (('seven', 'verticallinemod'), -20),
                     (('verticallinemod', 'seven'), -20),
                     (('x', 'seven'), -30),
                     (('x.italic', 'seven'), -30)],
        'six': [   (('apostrophemod', 'six'), -60),
                   (('six', 'backslash'), -40),
                   (('backslash', 'six'), -50),
                   (('six', 'backslash.case'), -40),
                   (('backslash.case', 'six'), -50),
                   (('braceleft', 'six'), -40),
                   (('braceleft.case', 'six'), -40),
                   (('six', 'braceright'), -40),
                   (('six', 'braceright.case'), -40),
                   (('bracketleft', 'six'), -30),
                   (('bracketleft.case', 'six'), -30),
                   (('six', 'bracketright'), -30),
                   (('six', 'bracketright.case'), -30),
                   (('six', 'breve'), -40),
                   (('breve', 'six'), -60),
                   (('six', 'caron'), -40),
                   (('caron', 'six'), -60),
                   (('six', 'circumflex'), -40),
                   (('circumflex', 'six'), -60),
                   (('six', 'comma'), -50),
                   (('comma', 'six'), -50),
                   (('six', 'commaturnedmod'), -40),
                   (('commaturnedmod', 'six'), -60),
                   (('six', 'degree'), -40),
                   (('degree', 'six'), -60),
                   (('six', 'dieresis'), -40),
                   (('dieresis', 'six'), -60),
                   (('six', 'dotaccent'), -40),
                   (('dotaccent', 'six'), -60),
                   (('six', 'ellipsis'), -50),
                   (('ellipsis', 'six'), -50),
                   (('six', 'fraction'), -50),
                   (('fraction', 'six'), -60),
                   (('grave', 'six'), -60),
                   (('hungarumlaut', 'six'), -60),
                   (('six', 'macron'), -40),
                   (('macron', 'six'), -60),
                   (('six', 'macronmod'), -40),
                   (('macronmod', 'six'), -60),
                   (('six', 'minus'), -40),
                   (('six', 'minute'), -40),
                   (('minute', 'six'), -60),
                   (('six', 'overline'), -40),
                   (('overline', 'six'), -60),
                   (('parenleft', 'six'), -40),
                   (('parenleft.case', 'six'), -40),
                   (('six', 'parenright'), -30),
                   (('six', 'parenright.case'), -30),
                   (('six', 'period'), -50),
                   (('period', 'six'), -50),
                   (('six', 'plus'), -40),
                   (('six', 'primedblmod'), -40),
                   (('primedblmod', 'six'), -60),
                   (('six', 'primemod'), -40),
                   (('primemod', 'six'), -60),
                   (('six', 'question'), -10),
                   (('questiondown', 'six'), -50),
                   (('six', 'quotedbl'), -40),
                   (('quotedbl', 'six'), -40),
                   (('six', 'quotedblbase'), -50),
                   (('quotedblbase', 'six'), -50),
                   (('six', 'quotedblleft'), -40),
                   (('quotedblleft', 'six'), -60),
                   (('six', 'quotedblright'), -40),
                   (('quotedblright', 'six'), -60),
                   (('six', 'quoteleft'), -40),
                   (('quoteleft', 'six'), -60),
                   (('six', 'quoteright'), -40),
                   (('quoteright', 'six'), -60),
                   (('six', 'quotesinglbase'), -50),
                   (('quotesinglbase', 'six'), -50),
                   (('six', 'quotesingle'), -40),
                   (('quotesingle', 'six'), -40),
                   (('six', 'ring'), -40),
                   (('ring', 'six'), -60),
                   (('six', 'ringacute'), -40),
                   (('ringacute', 'six'), -60),
                   (('six', 'ringhalfleftmod'), -40),
                   (('ringhalfleftmod', 'six'), -60),
                   (('six', 'ringhalfrightmod'), -40),
                   (('ringhalfrightmod', 'six'), -60),
                   (('six', 'second'), -40),
                   (('second', 'six'), -60),
                   (('six', 'slash'), -50),
                   (('slash', 'six'), -60),
                   (('six', 'slash.case'), -50),
                   (('slash.case', 'six'), -60),
                   (('six', 'tilde'), -40),
                   (('tilde', 'six'), -60),
                   (('six', 'trademark'), -40),
                   (('trademark', 'six'), -60),
                   (('six', 'underscore'), -50),
                   (('underscore', 'six'), -50),
                   (('six', 'verticallinelowmod'), -50),
                   (('verticallinelowmod', 'six'), -50),
                   (('six', 'verticallinemod'), -40),
                   (('verticallinemod', 'six'), -60)],
        'three': [   (('apostrophemod', 'three'), -50),
                     (('three', 'backslash'), -30),
                     (('backslash', 'three'), -30),
                     (('three', 'backslash.case'), -30),
                     (('backslash.case', 'three'), -30),
                     (('three', 'breve'), -30),
                     (('breve', 'three'), -50),
                     (('three', 'caron'), -30),
                     (('caron', 'three'), -50),
                     (('three', 'circumflex'), -30),
                     (('circumflex', 'three'), -50),
                     (('three', 'comma'), -60),
                     (('comma', 'three'), -30),
                     (('three', 'commaturnedmod'), -30),
                     (('commaturnedmod', 'three'), -50),
                     (('three', 'degree'), -30),
                     (('degree', 'three'), -50),
                     (('three', 'dieresis'), -30),
                     (('dieresis', 'three'), -50),
                     (('three', 'dotaccent'), -30),
                     (('dotaccent', 'three'), -50),
                     (('three', 'ellipsis'), -60),
                     (('ellipsis', 'three'), -30),
                     (('three', 'fraction'), -60),
                     (('fraction', 'three'), -50),
                     (('grave', 'three'), -50),
                     (('hungarumlaut', 'three'), -50),
                     (('three', 'macron'), -30),
                     (('macron', 'three'), -50),
                     (('three', 'macronmod'), -30),
                     (('macronmod', 'three'), -50),
                     (('three', 'minus'), -30),
                     (('three', 'minute'), -30),
                     (('minute', 'three'), -50),
                     (('three', 'overline'), -30),
                     (('overline', 'three'), -50),
                     (('three', 'period'), -60),
                     (('period', 'three'), -30),
                     (('three', 'plus'), -30),
                     (('three', 'primedblmod'), -30),
                     (('primedblmod', 'three'), -50),
                     (('three', 'primemod'), -30),
                     (('primemod', 'three'), -50),
                     (('three', 'question'), -20),
                     (('questiondown', 'three'), -30),
                     (('three', 'quotedbl'), -20),
                     (('quotedbl', 'three'), -50),
                     (('three', 'quotedblbase'), -60),
                     (('quotedblbase', 'three'), -30),
                     (('three', 'quotedblleft'), -30),
                     (('quotedblleft', 'three'), -50),
                     (('three', 'quotedblright'), -30),
                     (('quotedblright', 'three'), -50),
                     (('three', 'quoteleft'), -30),
                     (('quoteleft', 'three'), -50),
                     (('three', 'quoteright'), -30),
                     (('quoteright', 'three'), -50),
                     (('three', 'quotesinglbase'), -60),
                     (('quotesinglbase', 'three'), -30),
                     (('three', 'quotesingle'), -20),
                     (('quotesingle', 'three'), -50),
                     (('three', 'ring'), -30),
                     (('ring', 'three'), -50),
                     (('three', 'ringacute'), -30),
                     (('ringacute', 'three'), -50),
                     (('three', 'ringhalfleftmod'), -30),
                     (('ringhalfleftmod', 'three'), -50),
                     (('three', 'ringhalfrightmod'), -30),
                     (('ringhalfrightmod', 'three'), -50),
                     (('three', 'second'), -30),
                     (('second', 'three'), -50),
                     (('three', 'slash'), -60),
                     (('slash', 'three'), -50),
                     (('three', 'slash.case'), -60),
                     (('slash.case', 'three'), -50),
                     (('three', 'tilde'), -30),
                     (('tilde', 'three'), -50),
                     (('three', 'trademark'), -30),
                     (('trademark', 'three'), -50),
                     (('three', 'underscore'), -60),
                     (('underscore', 'three'), -30),
                     (('three', 'verticallinelowmod'), -60),
                     (('verticallinelowmod', 'three'), -30),
                     (('three', 'verticallinemod'), -30),
                     (('verticallinemod', 'three'), -50)],
        'two': [   (('apostrophemod', 'two'), -60),
                   (('two', 'backslash'), -30),
                   (('backslash', 'two'), -40),
                   (('two', 'backslash.case'), -30),
                   (('backslash.case', 'two'), -40),
                   (('braceleft', 'two'), -30),
                   (('braceleft.case', 'two'), -30),
                   (('two', 'braceright'), -30),
                   (('two', 'braceright.case'), -30),
                   (('two', 'breve'), -30),
                   (('breve', 'two'), -60),
                   (('two', 'caron'), -30),
                   (('caron', 'two'), -60),
                   (('two', 'circumflex'), -30),
                   (('circumflex', 'two'), -60),
                   (('two', 'comma'), -20),
                   (('comma', 'two'), -40),
                   (('two', 'commaturnedmod'), -30),
                   (('commaturnedmod', 'two'), -60),
                   (('two', 'degree'), -30),
                   (('degree', 'two'), -60),
                   (('two', 'dieresis'), -30),
                   (('dieresis', 'two'), -60),
                   (('two', 'dotaccent'), -30),
                   (('dotaccent', 'two'), -60),
                   (('two', 'ellipsis'), -20),
                   (('ellipsis', 'two'), -40),
                   (('two', 'fraction'), -20),
                   (('fraction', 'two'), -60),
                   (('grave', 'two'), -60),
                   (('hungarumlaut', 'two'), -60),
                   (('two', 'macron'), -30),
                   (('macron', 'two'), -60),
                   (('two', 'macronmod'), -30),
                   (('macronmod', 'two'), -60),
                   (('two', 'minus'), -30),
                   (('two', 'minute'), -30),
                   (('minute', 'two'), -60),
                   (('two', 'overline'), -30),
                   (('overline', 'two'), -60),
                   (('two', 'period'), -20),
                   (('period', 'two'), -40),
                   (('two', 'plus'), -30),
                   (('two', 'primedblmod'), -30),
                   (('primedblmod', 'two'), -60),
                   (('two', 'primemod'), -30),
                   (('primemod', 'two'), -60),
                   (('two', 'question'), -40),
                   (('questiondown', 'two'), -30),
                   (('two', 'quotedbl'), -30),
                   (('quotedbl', 'two'), -50),
                   (('two', 'quotedblbase'), -20),
                   (('quotedblbase', 'two'), -40),
                   (('two', 'quotedblleft'), -30),
                   (('quotedblleft', 'two'), -60),
                   (('two', 'quotedblright'), -30),
                   (('quotedblright', 'two'), -60),
                   (('two', 'quoteleft'), -30),
                   (('quoteleft', 'two'), -60),
                   (('two', 'quoteright'), -30),
                   (('quoteright', 'two'), -60),
                   (('two', 'quotesinglbase'), -20),
                   (('quotesinglbase', 'two'), -40),
                   (('two', 'quotesingle'), -30),
                   (('quotesingle', 'two'), -50),
                   (('two', 'ring'), -30),
                   (('ring', 'two'), -60),
                   (('two', 'ringacute'), -30),
                   (('ringacute', 'two'), -60),
                   (('two', 'ringhalfleftmod'), -30),
                   (('ringhalfleftmod', 'two'), -60),
                   (('two', 'ringhalfrightmod'), -30),
                   (('ringhalfrightmod', 'two'), -60),
                   (('two', 'second'), -30),
                   (('second', 'two'), -60),
                   (('two', 'slash'), -20),
                   (('slash', 'two'), -60),
                   (('two', 'slash.case'), -20),
                   (('slash.case', 'two'), -60),
                   (('two', 'tilde'), -30),
                   (('tilde', 'two'), -60),
                   (('two', 'trademark'), -30),
                   (('trademark', 'two'), -60),
                   (('two', 'underscore'), -20),
                   (('underscore', 'two'), -40),
                   (('two', 'verticallinelowmod'), -20),
                   (('verticallinelowmod', 'two'), -40),
                   (('two', 'verticallinemod'), -30),
                   (('verticallinemod', 'two'), -60)],
        'zero': [   (('apostrophemod', 'zero'), -60),
                    (('zero', 'backslash'), -10),
                    (('backslash', 'zero'), -50),
                    (('zero', 'backslash.case'), -10),
                    (('backslash.case', 'zero'), -50),
                    (('braceleft', 'zero'), -40),
                    (('braceleft.case', 'zero'), -40),
                    (('zero', 'braceright'), -50),
                    (('zero', 'braceright.case'), -50),
                    (('bracketleft', 'zero'), -30),
                    (('bracketleft.case', 'zero'), -30),
                    (('zero', 'bracketright'), -20),
                    (('zero', 'bracketright.case'), -20),
                    (('zero', 'breve'), -10),
                    (('breve', 'zero'), -60),
                    (('zero', 'caron'), -10),
                    (('caron', 'zero'), -60),
                    (('zero', 'circumflex'), -10),
                    (('circumflex', 'zero'), -60),
                    (('zero', 'comma'), -70),
                    (('comma', 'zero'), -50),
                    (('zero', 'commaturnedmod'), -10),
                    (('commaturnedmod', 'zero'), -60),
                    (('zero', 'degree'), -10),
                    (('degree', 'zero'), -60),
                    (('zero', 'dieresis'), -10),
                    (('dieresis', 'zero'), -60),
                    (('zero', 'dotaccent'), -10),
                    (('dotaccent', 'zero'), -60),
                    (('zero', 'ellipsis'), -70),
                    (('ellipsis', 'zero'), -50),
                    (('zero', 'fraction'), -70),
                    (('fraction', 'zero'), -60),
                    (('grave', 'zero'), -60),
                    (('hungarumlaut', 'zero'), -60),
                    (('zero', 'macron'), -10),
                    (('macron', 'zero'), -60),
                    (('zero', 'macronmod'), -10),
                    (('macronmod', 'zero'), -60),
                    (('zero', 'minus'), -10),
                    (('zero', 'minute'), -10),
                    (('minute', 'zero'), -60),
                    (('zero', 'overline'), -10),
                    (('overline', 'zero'), -60),
                    (('parenleft', 'zero'), -40),
                    (('parenleft.case', 'zero'), -40),
                    (('zero', 'parenright'), -30),
                    (('zero', 'parenright.case'), -30),
                    (('zero', 'period'), -70),
                    (('period', 'zero'), -50),
                    (('zero', 'plus'), -10),
                    (('zero', 'primedblmod'), -10),
                    (('primedblmod', 'zero'), -60),
                    (('zero', 'primemod'), -10),
                    (('primemod', 'zero'), -60),
                    (('zero', 'question'), -30),
                    (('questiondown', 'zero'), -50),
                    (('zero', 'quotedbl'), -30),
                    (('quotedbl', 'zero'), -40),
                    (('zero', 'quotedblbase'), -70),
                    (('quotedblbase', 'zero'), -50),
                    (('zero', 'quotedblleft'), -10),
                    (('quotedblleft', 'zero'), -60),
                    (('zero', 'quotedblright'), -10),
                    (('quotedblright', 'zero'), -60),
                    (('zero', 'quoteleft'), -10),
                    (('quoteleft', 'zero'), -60),
                    (('zero', 'quoteright'), -10),
                    (('quoteright', 'zero'), -60),
                    (('zero', 'quotesinglbase'), -70),
                    (('quotesinglbase', 'zero'), -50),
                    (('zero', 'quotesingle'), -30),
                    (('quotesingle', 'zero'), -40),
                    (('zero', 'ring'), -10),
                    (('ring', 'zero'), -60),
                    (('zero', 'ringacute'), -10),
                    (('ringacute', 'zero'), -60),
                    (('zero', 'ringhalfleftmod'), -10),
                    (('ringhalfleftmod', 'zero'), -60),
                    (('zero', 'ringhalfrightmod'), -10),
                    (('ringhalfrightmod', 'zero'), -60),
                    (('zero', 'second'), -10),
                    (('second', 'zero'), -60),
                    (('zero', 'slash'), -70),
                    (('slash', 'zero'), -60),
                    (('zero', 'slash.case'), -70),
                    (('slash.case', 'zero'), -60),
                    (('zero', 'tilde'), -10),
                    (('tilde', 'zero'), -60),
                    (('zero', 'trademark'), -10),
                    (('trademark', 'zero'), -60),
                    (('zero', 'underscore'), -70),
                    (('underscore', 'zero'), -50),
                    (('zero', 'verticallinelowmod'), -70),
                    (('verticallinelowmod', 'zero'), -50),
                    (('zero', 'verticallinemod'), -10),
                    (('verticallinemod', 'zero'), -60)]}
    
  4. arrowtype commented on Oct 15, 2021

    @arrowtype
    OwnerAuthor

    I’ve realized the fairly obvious solution here: make .pnum figures, then map kerning to those. Then, remove kerning from default figures.

    This is better than making new tnum figures without kerning, because the default characters already look tabular, and having tabular-by-default characters fits in with the spirit of this project.

  5. added
    fixed in sourcesIssue is resolved in sources and is awaiting new build + release.
    on Oct 15, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingfixed in sourcesIssue is resolved in sources and is awaiting new build + release.

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions