googlefonts / roboto-2

The Roboto family of fonts
Apache License 2.0
3.85k stars 309 forks source link

v2.138 roboto-hinted.zip not fully hinted, missing Condensed-Medium #261

Open codeman38 opened 7 years ago

codeman38 commented 7 years ago

The roboto-hinted.zip release for version 2.138 seems to be incomplete on two counts:

m4rc1e commented 7 years ago

It is missing the Condensed Medium and Condensed Medium Italic styles that are present in roboto-unhinted.zip.

The Condensed Medium and Condensed Medium Italic do not have any hinted VTT binaries, https://github.com/google/roboto/tree/master/src/hinted. The roboto-hinted.zip fonts steal the hinting from the fonts in the directory I've just linked. The Condensed Medium weights were introduced in https://github.com/google/roboto/commit/0d86e31b8f6e97740408bf0d90ab4d90f123a5f6

Only ~30% of the glyphs in each style contain any instructions.

Judging by just the file size and a quick ttx. Your assumption is correct. I'll gen off the old v2.136 and see if the problem is being introduced by the chain.

@jamesgk Sorry to disturb you. I'm assuming roboto-hinted.zip for each of your releases comes from, https://github.com/google/roboto/blob/master/Makefile#L45-L57?

cc @davelab6

davelab6 commented 7 years ago

The first point is as intended since those styles aren't hinted. The zip could be updated with info about this in the readme, though.

The second, is that a regression from the previous release?

m4rc1e commented 7 years ago

@davelab6 I think both his queries relate to the v2.138 roboto-hinted.zip.

jamesgk commented 7 years ago

I'm assuming roboto-hinted.zip for each of your releases comes from, https://github.com/google/roboto/blob/master/Makefile#L45-L57?

Actually, from https://github.com/google/roboto/blob/master/Makefile#L59-L72. The "android from hinted" target probably should be removed as it actually stripped hints from the hinted sources to create binaries from android (now the regular android target should work just as well).

m4rc1e commented 7 years ago

@jamesgk thanks for the rapid response.

I'm not entirely sure the previous roboto-hinted.zip archives have come from the lines you've quoted in the makeFile. When you run make web, the web fonts are subsetted (1,284 glyphs) whilst the files in the previous hinted zips are not (3,387 glyphs). Perhaps it was run with https://github.com/google/roboto/blob/master/Makefile#L69-70 commented out?

Apologies, I'm not trying to point fingers. I just need to make sure this gets updated correctly.

In any case we should remove the roboto-hinted.zip archive from the v2.138 release now.

cc @davelab6

davelab6 commented 7 years ago

remove the roboto-hinted.zip archive from the v2.138 release now.

done

jamesgk commented 7 years ago

I'm not entirely sure the previous roboto-hinted.zip archives have come from the lines you've quoted in the makeFile. When you run make web, the web fonts are subsetted (1,284 glyphs) whilst the files in the previous hinted zips are not (3,387 glyphs). Perhaps it was run with https://github.com/google/roboto/blob/master/Makefile#L70 commented out?

I think you're right! Maybe separate "hinted" and "web" targets should be made, like we have with the "crunch" and "android" targets. Though most other touchup steps would be generally important for the hinted output I think.

m4rc1e commented 7 years ago

Thank you for your help James! I hope all is well with your new venture as well!

I'll add a hinted option to the Makefile, if dropping the subsetting script works.

m4rc1e commented 7 years ago

If you add a new option to the Makefile:

hinted:
    mkdir -p out/hinted
    for source in src/hinted/*.ttf; do \
        basename=$$(basename $$source); \
        case $$source in \
            src/hinted/Roboto-*) unhinted=out/RobotoTTF/$$basename ;; \
            *) unhinted=out/RobotoCondensedTTF/$$basename ;; \
        esac; \
        touched=$$(mktemp); \
        final=out/hinted/$$(basename $$source); \
        python scripts/touchup_for_web.py $$source $$unhinted $$final Roboto && \
        rm $$touched; \
    done

It will create a new dir ./out/hinted which contains a new set of fonts which have web fixes applied and no subsetting. If you archive these files, the zip is approx 5.2mb which is more inline with the v2.136 release. I'm not 100% sure this is the final solution so I will spend some time finding it tomorrow.

Thanks again @codeman38

@davelab6 I'll dedicate some time to this tomorrow.

m4rc1e commented 7 years ago

After adding my snippet to the Makefile, it will now generate the hinted ttfs. I'll get this added as a pr after a few more checks and a small tidy up.

screen shot 2017-08-04 at 15 18 59

The only major difference is the removal of duplicate glyphs in GDEF > MarkGlyphSetsDef which was introduced in https://github.com/google/roboto/pull/254/commits/e2c5a2f14fcdf5f9464ee59d0dddad683ea057a1

balazer commented 6 years ago

I don't know where the hinting stands on Roboto, but I can tell you the webfont version that Google is now using across the Gmail main page has little or no hinting. I mean, look at this: roboto_font_sample

The 'i' has a line segment one pixel wide, but a splotch of a dot 3 pixels wide. The 'u' has different widths for its left and right vertical segments. The spaces between letters vary from 1 to 5 pixels.

It looks horrible on standard-DPI laptop screens. What's going on?

m4rc1e commented 6 years ago

@balazer which OS and Browser are you using?

balazer commented 6 years ago

Hi, @m4rc1e . I'm in Windows 7 and I have font smoothing disabled. I've tried Chrome and Firefox with very similar results.

The above image was in Firefox with display scaling at 149%. It's from Gmail's inbox, which has letter-spacing of 0.2px, so the irregular gaps between the letters are bigger compared to the default letter-spacing.

Here's a screenshot of https://fonts.google.com/specimen/Roboto in Chrome 69 in Windows 7, with display scaling at 125% (the default) and font smoothing disabled, so this should be easily reproducible: roboto_chrome_win7_125pct_nosmoothing You might need to save that image and view it in an image viewer at 1:1 pixel scaling to see exactly what I see. The fifth sample line of "Communications" is the regular style, and lines up pretty well with my Gmail/Firefox sample above, differences in letter-spacing aside.

You get different artifacts in the rendering depending on the font size. At 17px I got the 'u' and 'i' to look that way with the unbalanced vertical segments and the irregularly shaped dot. At other sizes, you can get artifacts in other characters. Arial seems to have none of these problems under the same conditions.

sergeevabc commented 5 years ago

2.138 incompletely hinted release was removed on August 2017. It is the end of April 2019 now and some of us are still waiting.