Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set overlap bit on every glyph in every VF and keep it set #4405

Closed
davelab6 opened this issue Mar 24, 2022 · 53 comments
Closed

Set overlap bit on every glyph in every VF and keep it set #4405

davelab6 opened this issue Mar 24, 2022 · 53 comments
Assignees
Labels
-- Bad rendering Hinting issue mostly, or inconsistencies among servers I Tools / workflow / repo
Milestone

Comments

@davelab6
Copy link
Member

In order for TT VFs to be correctly rendered with outlines, each glyph in the glyf table needs to have the overlap bit set, or ideally each glyph that has overlaps although that's more complicated to implement.

And we need string regression checks to prevent that slipping, and that will be easier as well if it's just all VF glyphs I suppose.

@davelab6 davelab6 added I Tools / workflow / repo -- Bad rendering Hinting issue mostly, or inconsistencies among servers I Small Fix bugs fixed but nothing added II Commissioned Commissioned project to do III Improve rendering / layout by addition of manual hinting, kerning or else I Font Bug labels Mar 24, 2022
@davelab6 davelab6 added this to the 2022 Q2 milestone Mar 24, 2022
@aaronbell
Copy link
Collaborator

Don’t know if it is useful but this is the code I put in Cascadia Code’s build script to solve this problem:

def set_overlap_flag(varfont: fontTools.ttLib.TTFont) -> fontTools.ttLib.TTFont:
    glyf = cast(_g_l_y_f.table__g_l_y_f, varfont["glyf"])
    for glyph_name in glyf.keys():
        glyph = glyf[glyph_name]
        if glyph.isComposite():
            # Set OVERLAP_COMPOUND bit for compound glyphs
            glyph.components[0].flags |= 0x400
        elif glyph.numberOfContours > 0:
            # Set OVERLAP_SIMPLE bit for simple glyphs
            glyph.flags[0] |= 0x40

@madig
Copy link
Contributor

madig commented Mar 24, 2022

I remember reading on the FreeType devel list that FT will switch to more expensive supersamling mode when encountering overlap bits, which is why setting them indiscriminately may be a bad idea. The script by @aaronbell is what we use in production to quickly set the bit if needed, per glyph :) No idea if something needs to be done for CFF2.

@chrissimpkins
Copy link
Collaborator

chrissimpkins commented Mar 24, 2022

I remember reading on the FreeType devel list that FT will switch to more expensive supersamling mode when encountering overlap bits, which is why setting them indiscriminately may be a bad idea. The script by @aaronbell is what we use in production to quickly set the bit if needed, per glyph :) No idea if something needs to be done for CFF2.

This thread summarizes the state of the conversation around this as of late 2020 fonttools/fonttools#2059

@garretrieger
Copy link
Member

Don’t know if it is useful but this is the code I put in Cascadia Code’s build script to solve this problem:

def set_overlap_flag(varfont: fontTools.ttLib.TTFont) -> fontTools.ttLib.TTFont:
    glyf = cast(_g_l_y_f.table__g_l_y_f, varfont["glyf"])
    for glyph_name in glyf.keys():
        glyph = glyf[glyph_name]
        if glyph.isComposite():
            # Set OVERLAP_COMPOUND bit for compound glyphs
            glyph.components[0].flags |= 0x400
        elif glyph.numberOfContours > 0:
            # Set OVERLAP_SIMPLE bit for simple glyphs
            glyph.flags[0] |= 0x40

FYI fonttools has pretty much this exact function in the instancer library: https://github.com/fonttools/fonttools/blob/main/Lib/fontTools/varLib/instancer/__init__.py#L1075

@davelab6
Copy link
Member Author

https://jsbin.com/xewuzew has examples of the problems which can better solved when these bits are set

@twardoch
Copy link
Collaborator

Please also keep in mind that these flags don’t currently make it into WOFF2 (there is no space for them). There is a proposal for revision to include them ( https://www.w3.org/TR/WOFF2/#p1 ) but I don’t know the implementation status of it. Certainly WOFF2 encoders (like fontTools or woff2_compress) and WOFF2 decoders (the libraries that are used by the browsers) will have to be updated to take this into account.

The bits are retained in WOFF (1.0).

@twardoch
Copy link
Collaborator

I don’t know when these changes into WOFF2 will be adopted (into the spec, and into the software). Or perhaps something already silently is supporting these changes? If not, then for now I believe still WOFF 1.0 is a "safer" format for VF delivery than WOFF2.

@rsheeter
Copy link
Collaborator

ideally each glyph that has overlaps although that's more complicated to implement.

I fear that is indeed what we want, unless we think the reality is that most glyphs do have overlaps so we wouldn't really save much by avoiding setting it unnecessarily.

There is a proposal for revision to include them ( https://www.w3.org/TR/WOFF2/#p1 ) but I don’t know the implementation status of it.

@garretrieger when do you expect the code change for this to hit https://github.com/google/woff2?

@dberlow
Copy link

dberlow commented Mar 25, 2022

Lorp: “It seems to me that the spec has been 100% clear on this since the early 1990s, and therefore I don’t agree with any suggestions to bypass it.”

Adam: “ Please also keep in mind that these flags don’t currently make it into WOFF2 (there is no space for them).”

wow.

@chrissimpkins
Copy link
Collaborator

chrissimpkins commented Mar 25, 2022

unless we think the reality is that most glyphs do have overlaps so we wouldn't really save much by avoiding setting it unnecessarily.

A quick glance through one master in a large multi-script project suggests that the ballpark may be many rather than most. n=1.

@madig
Copy link
Contributor

madig commented Mar 25, 2022

I wrote this script to set the overlap bits and count how many overlaps there are:

from __future__ import annotations

import argparse
from typing import Any, Mapping

import pathops
from fontTools.ttLib import TTFont
from fontTools.ttLib.removeOverlaps import componentsOverlap, skPathFromGlyph
from fontTools.ttLib.tables import _g_l_y_f


def set_overlap_bits_if_overlapping(varfont: TTFont) -> tuple[int, int]:
    glyph_set = varfont.getGlyphSet()
    glyf_table: _g_l_y_f.table__g_l_y_f = varfont["glyf"]
    flag_overlap_compound = _g_l_y_f.OVERLAP_COMPOUND
    flag_overlap_simple = _g_l_y_f.flagOverlapSimple
    overlapping_contours = 0
    overlapping_components = 0
    for glyph_name in glyf_table.keys():
        glyph = glyf_table[glyph_name]
        # Set OVERLAP_COMPOUND bit for compound glyphs
        if glyph.isComposite() and componentsOverlap(glyph, glyph_set):
            overlapping_components += 1
            glyph.components[0].flags |= flag_overlap_compound
        # Set OVERLAP_SIMPLE bit for simple glyphs
        elif glyph.numberOfContours > 0 and glyph_overlaps(glyph_name, glyph_set):
            overlapping_contours += 1
            glyph.flags[0] |= flag_overlap_simple
    return (overlapping_contours, overlapping_components)


def glyph_overlaps(glyph_name: str, glyph_set: Mapping[str, Any]) -> bool:
    path = skPathFromGlyph(glyph_name, glyph_set)
    path2 = pathops.simplify(path, clockwise=path.clockwise)  # remove overlaps
    if path != path2:
        return True
    return False


parser = argparse.ArgumentParser()
parser.add_argument("font", nargs="+", type=TTFont)
parsed_args = parser.parse_args()
fonts: list[TTFont] = parsed_args.font

for font in fonts:
    ocont, ocomp = set_overlap_bits_if_overlapping(font)
    num_glyphs = font["maxp"].numGlyphs
    ocont_p = ocont / num_glyphs
    ocomp_p = ocomp / num_glyphs
    print(
        font.reader.file.name,
        f"{num_glyphs} glyphs, {ocont} overlapping contours ({ocont_p:.2%}), {ocomp} overlapping components ({ocomp_p:.2%})",
    )
    font.save("a.ttf")

I get the following exemplary results for some git master copies:

> py mark-overlappers.py NotoSans-VF.ttf NotoSansCJKjp-VF.ttf
NotoSans-VF.ttf 3748 glyphs, 535 overlapping contours (14.27%), 44 overlapping components (1.17%)
NotoSansCJKjp-VF.ttf 65535 glyphs, 64169 overlapping contours (97.92%), 0 overlapping components (0.00%)

@chrissimpkins
Copy link
Collaborator

Lol. Range 14% - 98% overlapping. Now we know. :)

@madig
Copy link
Contributor

madig commented Mar 25, 2022

If you want, I can run the script over https://github.com/googlefonts/noto-fonts/tree/main/unhinted/variable-ttf and also try to write a program to benchmark FreeType (not sure how long that would take though and how useful it would be -- I imagine setting the bits on the glyphs that need them and praying it's not too slow is the best we can do).

@madig
Copy link
Contributor

madig commented Mar 25, 2022

Actually, running it over all of Noto's VFs is easy:

NotoKufiArabic-VF.ttf 850 glyphs, 469 overlapping contours (55.18%), 4 overlapping components (0.47%)
NotoLoopedLao-VF.ttf 181 glyphs, 117 overlapping contours (64.64%), 0 overlapping components (0.00%)
NotoLoopedLaoUI-VF.ttf 151 glyphs, 90 overlapping contours (59.60%), 0 overlapping components (0.00%)
NotoLoopedThai-VF.ttf 212 glyphs, 143 overlapping contours (67.45%), 0 overlapping components (0.00%)
NotoLoopedThaiUI-VF.ttf 157 glyphs, 106 overlapping contours (67.52%), 0 overlapping components (0.00%)
NotoNaskhArabic-VF.ttf 1614 glyphs, 95 overlapping contours (5.89%), 486 overlapping components (30.11%)
NotoNaskhArabicUI-VF.ttf 1614 glyphs, 94 overlapping contours (5.82%), 486 overlapping components (30.11%)
NotoNastaliqUrdu-VF.ttf 1406 glyphs, 254 overlapping contours (18.07%), 0 overlapping components (0.00%)
NotoRashiHebrew-VF.ttf 105 glyphs, 53 overlapping contours (50.48%), 0 overlapping components (0.00%)
NotoSans-Italic-VF.ttf 3762 glyphs, 523 overlapping contours (13.90%), 39 overlapping components (1.04%)
NotoSans-VF.ttf 3748 glyphs, 535 overlapping contours (14.27%), 44 overlapping components (1.17%)
NotoSansAdlam-VF.ttf 361 glyphs, 25 overlapping contours (6.93%), 0 overlapping components (0.00%)
NotoSansAdlamUnjoined-VF.ttf 155 glyphs, 14 overlapping contours (9.03%), 0 overlapping components (0.00%)
NotoSansArabic-VF.ttf 1661 glyphs, 365 overlapping contours (21.97%), 529 overlapping components (31.85%)
NotoSansArabicUI-VF.ttf 1576 glyphs, 466 overlapping contours (29.57%), 451 overlapping components (28.62%)
NotoSansArmenian-VF.ttf 107 glyphs, 52 overlapping contours (48.60%), 0 overlapping components (0.00%)
NotoSansBalinese-VF.ttf 361 glyphs, 234 overlapping contours (64.82%), 14 overlapping components (3.88%)
NotoSansBamum-VF.ttf 662 glyphs, 325 overlapping contours (49.09%), 0 overlapping components (0.00%)
NotoSansBassaVah-VF.ttf 49 glyphs, 1 overlapping contours (2.04%), 0 overlapping components (0.00%)
NotoSansBengali-VF.ttf 695 glyphs, 423 overlapping contours (60.86%), 36 overlapping components (5.18%)
NotoSansBengaliUI-VF.ttf 695 glyphs, 423 overlapping contours (60.86%), 36 overlapping components (5.18%)
NotoSansCanadianAboriginal-VF.ttf 762 glyphs, 177 overlapping contours (23.23%), 0 overlapping components (0.00%)
NotoSansCham-VF.ttf 131 glyphs, 77 overlapping contours (58.78%), 1 overlapping components (0.76%)
NotoSansCherokee-VF.ttf 273 glyphs, 36 overlapping contours (13.19%), 0 overlapping components (0.00%)
NotoSansDevanagari-VF.ttf 993 glyphs, 474 overlapping contours (47.73%), 72 overlapping components (7.25%)
NotoSansDisplay-Italic-VF.ttf 3327 glyphs, 518 overlapping contours (15.57%), 34 overlapping components (1.02%)
NotoSansDisplay-VF.ttf 3744 glyphs, 510 overlapping contours (13.62%), 48 overlapping components (1.28%)
NotoSansEthiopic-VF.ttf 594 glyphs, 521 overlapping contours (87.71%), 0 overlapping components (0.00%)
NotoSansGeorgian-VF.ttf 225 glyphs, 16 overlapping contours (7.11%), 0 overlapping components (0.00%)
NotoSansGujarati-VF.ttf 830 glyphs, 376 overlapping contours (45.30%), 24 overlapping components (2.89%)
NotoSansGunjalaGondi-VF.ttf 254 glyphs, 156 overlapping contours (61.42%), 0 overlapping components (0.00%)
NotoSansGurmukhi-VF.ttf 344 glyphs, 110 overlapping contours (31.98%), 9 overlapping components (2.62%)
NotoSansGurmukhiUI-VF.ttf 344 glyphs, 110 overlapping contours (31.98%), 9 overlapping components (2.62%)
NotoSansHanifiRohingya-VF.ttf 179 glyphs, 33 overlapping contours (18.44%), 67 overlapping components (37.43%)
NotoSansHebrew-VF.ttf 149 glyphs, 29 overlapping contours (19.46%), 0 overlapping components (0.00%)
NotoSansHebrewDroid-VF.ttf 179 glyphs, 24 overlapping contours (13.41%), 0 overlapping components (0.00%)
NotoSansHebrewNew-VF.ttf 149 glyphs, 29 overlapping contours (19.46%), 0 overlapping components (0.00%)
NotoSansKannada-VF.ttf 655 glyphs, 301 overlapping contours (45.95%), 45 overlapping components (6.87%)
NotoSansKannadaUI-VF.ttf 655 glyphs, 301 overlapping contours (45.95%), 45 overlapping components (6.87%)
NotoSansKayahLi-VF.ttf 60 glyphs, 13 overlapping contours (21.67%), 0 overlapping components (0.00%)
NotoSansKhmer-VF.ttf 363 glyphs, 216 overlapping contours (59.50%), 0 overlapping components (0.00%)
NotoSansKhmerUI-VF.ttf 381 glyphs, 233 overlapping contours (61.15%), 0 overlapping components (0.00%)
NotoSansLao-VF.ttf 116 glyphs, 17 overlapping contours (14.66%), 0 overlapping components (0.00%)
NotoSansLaoUI-VF.ttf 118 glyphs, 15 overlapping contours (12.71%), 0 overlapping components (0.00%)
NotoSansLisu-VF.ttf 60 glyphs, 8 overlapping contours (13.33%), 0 overlapping components (0.00%)
NotoSansMalayalam-VF.ttf 365 glyphs, 177 overlapping contours (48.49%), 24 overlapping components (6.58%)
NotoSansMalayalamUI-VF.ttf 364 glyphs, 177 overlapping contours (48.63%), 24 overlapping components (6.59%)
NotoSansMedefaidrin-VF.ttf 97 glyphs, 86 overlapping contours (88.66%), 0 overlapping components (0.00%)
NotoSansMeeteiMayek-VF.ttf 92 glyphs, 70 overlapping contours (76.09%), 0 overlapping components (0.00%)
NotoSansMono-VF.ttf 3787 glyphs, 761 overlapping contours (20.10%), 65 overlapping components (1.72%)
NotoSansMyanmar-VF.ttf 619 glyphs, 355 overlapping contours (57.35%), 10 overlapping components (1.62%)
NotoSansMyanmarUI-VF.ttf 615 glyphs, 370 overlapping contours (60.16%), 1 overlapping components (0.16%)
NotoSansOlChiki-VF.ttf 55 glyphs, 33 overlapping contours (60.00%), 0 overlapping components (0.00%)
NotoSansOriya-VF.ttf 513 glyphs, 359 overlapping contours (69.98%), 33 overlapping components (6.43%)
NotoSansOriyaUI-VF.ttf 513 glyphs, 359 overlapping contours (69.98%), 33 overlapping components (6.43%)
NotoSansSinhala-VF.ttf 645 glyphs, 479 overlapping contours (74.26%), 28 overlapping components (4.34%)
NotoSansSinhalaUI-VF.ttf 645 glyphs, 479 overlapping contours (74.26%), 28 overlapping components (4.34%)
NotoSansSoraSompeng-VF.ttf 42 glyphs, 29 overlapping contours (69.05%), 0 overlapping components (0.00%)
NotoSansSundanese-VF.ttf 89 glyphs, 12 overlapping contours (13.48%), 0 overlapping components (0.00%)
NotoSansSymbols-VF.ttf 1224 glyphs, 500 overlapping contours (40.85%), 63 overlapping components (5.15%)
NotoSansTaiTham-VF.ttf 824 glyphs, 115 overlapping contours (13.96%), 0 overlapping components (0.00%)
NotoSansTamil-VF.ttf 244 glyphs, 112 overlapping contours (45.90%), 14 overlapping components (5.74%)
NotoSansTamilUI-VF.ttf 244 glyphs, 112 overlapping contours (45.90%), 14 overlapping components (5.74%)
NotoSansTangsa-VF.ttf 94 glyphs, 88 overlapping contours (93.62%), 0 overlapping components (0.00%)
NotoSansTelugu-VF.ttf 958 glyphs, 418 overlapping contours (43.63%), 253 overlapping components (26.41%)
NotoSansTeluguUI-VF.ttf 958 glyphs, 418 overlapping contours (43.63%), 253 overlapping components (26.41%)
NotoSansThaana-VF.ttf 90 glyphs, 23 overlapping contours (25.56%), 0 overlapping components (0.00%)
NotoSansThai-VF.ttf 140 glyphs, 46 overlapping contours (32.86%), 0 overlapping components (0.00%)
NotoSansThaiUI-VF.ttf 140 glyphs, 47 overlapping contours (33.57%), 0 overlapping components (0.00%)
NotoSansVithkuqi-VF.ttf 103 glyphs, 61 overlapping contours (59.22%), 0 overlapping components (0.00%)
NotoSerif-Italic-VF.ttf 3703 glyphs, 520 overlapping contours (14.04%), 34 overlapping components (0.92%)
NotoSerif-VF.ttf 3691 glyphs, 533 overlapping contours (14.44%), 29 overlapping components (0.79%)
NotoSerifArmenian-VF.ttf 107 glyphs, 61 overlapping contours (57.01%), 0 overlapping components (0.00%)
NotoSerifBengali-VF.ttf 640 glyphs, 455 overlapping contours (71.09%), 4 overlapping components (0.62%)
NotoSerifDevanagari-VF.ttf 871 glyphs, 396 overlapping contours (45.46%), 32 overlapping components (3.67%)
NotoSerifDisplay-Italic-VF.ttf 3707 glyphs, 722 overlapping contours (19.48%), 31 overlapping components (0.84%)
NotoSerifDisplay-VF.ttf 3268 glyphs, 673 overlapping contours (20.59%), 19 overlapping components (0.58%)
NotoSerifDogra-VF.ttf 143 glyphs, 95 overlapping contours (66.43%), 0 overlapping components (0.00%)
NotoSerifEthiopic-VF.ttf 594 glyphs, 531 overlapping contours (89.39%), 0 overlapping components (0.00%)
NotoSerifGeorgian-VF.ttf 225 glyphs, 13 overlapping contours (5.78%), 0 overlapping components (0.00%)
NotoSerifGujarati-VF.ttf 456 glyphs, 296 overlapping contours (64.91%), 0 overlapping components (0.00%)
NotoSerifGurmukhi-VF.ttf 294 glyphs, 39 overlapping contours (13.27%), 4 overlapping components (1.36%)
NotoSerifHebrew-VF.ttf 152 glyphs, 34 overlapping contours (22.37%), 0 overlapping components (0.00%)
NotoSerifKannada-VF.ttf 417 glyphs, 279 overlapping contours (66.91%), 44 overlapping components (10.55%)
NotoSerifKhmer-VF.ttf 361 glyphs, 258 overlapping contours (71.47%), 0 overlapping components (0.00%)
NotoSerifKhojki-VF.ttf 421 glyphs, 278 overlapping contours (66.03%), 6 overlapping components (1.43%)
NotoSerifLao-VF.ttf 117 glyphs, 57 overlapping contours (48.72%), 0 overlapping components (0.00%)
NotoSerifMalayalam-VF.ttf 355 glyphs, 175 overlapping contours (49.30%), 1 overlapping components (0.28%)
NotoSerifNyiakengPuachueHmong-VF.ttf 76 glyphs, 19 overlapping contours (25.00%), 0 overlapping components (0.00%)
NotoSerifOriya-VF.ttf 690 glyphs, 286 overlapping contours (41.45%), 14 overlapping components (2.03%)
NotoSerifSinhala-VF.ttf 645 glyphs, 470 overlapping contours (72.87%), 25 overlapping components (3.88%)
NotoSerifTamil-VF.ttf 222 glyphs, 132 overlapping contours (59.46%), 0 overlapping components (0.00%)
NotoSerifTamilSlanted-VF.ttf 222 glyphs, 130 overlapping contours (58.56%), 0 overlapping components (0.00%)
NotoSerifTelugu-VF.ttf 728 glyphs, 536 overlapping contours (73.63%), 20 overlapping components (2.75%)
NotoSerifThai-VF.ttf 140 glyphs, 60 overlapping contours (42.86%), 0 overlapping components (0.00%)
NotoSerifTibetan-VF.ttf 1894 glyphs, 1817 overlapping contours (95.93%), 0 overlapping components (0.00%)
NotoSerifToto-VF.ttf 40 glyphs, 21 overlapping contours (52.50%), 0 overlapping components (0.00%)
NotoSerifVithkuqi-VF.ttf 103 glyphs, 66 overlapping contours (64.08%), 0 overlapping components (0.00%)
NotoSerifYezidi-VF.ttf 56 glyphs, 40 overlapping contours (71.43%), 0 overlapping components (0.00%)

So yeah, a lot of variation depending on script I suppose. Running the script was fairly quick though, so I imagine in the typical non-CJK case, checking for overlap is fast enough to be on by default.

@rsheeter
Copy link
Collaborator

I wrote this script to set the overlap bits and count how many overlaps there are

Only at the default position in design space iiuc? How likely do we think it is the answer changes as you meander about the designspace?

@rsheeter
Copy link
Collaborator

also try to write a program to benchmark FreeType

This would be very informative

@garretrieger
Copy link
Member

ideally each glyph that has overlaps although that's more complicated to implement.

I fear that is indeed what we want, unless we think the reality is that most glyphs do have overlaps so we wouldn't really save much by avoiding setting it unnecessarily.

There is a proposal for revision to include them ( https://www.w3.org/TR/WOFF2/#p1 ) but I don’t know the implementation status of it.

@garretrieger when do you expect the code change for this to hit https://github.com/google/woff2?

I have an updated implementation for https://github.com/google/woff2 written up that I'm just finalizing. Hopefully should be able to PR it next week.

@madig
Copy link
Contributor

madig commented Mar 25, 2022

Only at the default position in design space iiuc? How likely do we think it is the answer changes as you meander about the designspace?

Yes :) Hm! I have no idea and it would take me some time to test this.

@RosaWagner RosaWagner modified the milestones: 2022 Q2, 2022 Q3 Jul 1, 2022
@RosaWagner RosaWagner removed this from the 2022 Q3 milestone Sep 15, 2022
@RosaWagner RosaWagner removed the II Commissioned Commissioned project to do label Sep 15, 2022
@RosaWagner RosaWagner added this to the Icebox milestone Jun 1, 2023
@chrissimpkins
Copy link
Collaborator

What's the status here @m4rc1e?

@chrissimpkins chrissimpkins modified the milestones: Icebox, Backlog Jan 10, 2024
@chrissimpkins chrissimpkins modified the milestones: Backlog, 2024 Q2 May 3, 2024
@chrissimpkins
Copy link
Collaborator

chrissimpkins commented May 3, 2024

This issue impacts the Roboto family update as of the latest PR with variable font format files (#7231).

Moving it into Q2 and we'll address how to approach it in advance of landing the Roboto format update.

cc @anthrotype @rsheeter @davelab6

@chrissimpkins
Copy link
Collaborator

chrissimpkins commented May 3, 2024

@emmamarichal Can I ask you to collaborate with Marc on this? Let's come up with a solution for Roboto that works across the rest of the catalog. It can be design outline changes, a compiler solution, a font editor solution, ...

@chrissimpkins
Copy link
Collaborator

@m4rc1e mind summarizing the current consensus on the approach to our overlap bit flag settings in this thread?

@chrissimpkins
Copy link
Collaborator

@rsheeter can we consider this an issue that will be addressed in the internal pipeline and in no further need of a new approach in the fonts? Will backlog for now and we can move it back into our work plan if we can define an improved approach for our VF format files.

@chrissimpkins chrissimpkins modified the milestones: 2024 Q3, Backlog Oct 1, 2024
@rsheeter
Copy link
Collaborator

rsheeter commented Oct 1, 2024

It would be actively harmful to do as this issues title suggests. I suggest we close it and open more targeted issues if necessary.

@chrissimpkins chrissimpkins closed this as not planned Won't fix, can't repro, duplicate, stale Oct 2, 2024
@github-project-automation github-project-automation bot moved this from Todo to In Dev / PR Merged in Google Fonts Oct 2, 2024
@davelab6
Copy link
Member Author

davelab6 commented Oct 2, 2024

Thanks Rod! That's great news for upstream :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-- Bad rendering Hinting issue mostly, or inconsistencies among servers I Tools / workflow / repo
Projects
Status: In Dev / PR Merged
Development

Successfully merging a pull request may close this issue.