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

Add Reddit Sans #6812

Closed
9 tasks done
stephenhutchings opened this issue Sep 29, 2023 · 42 comments · Fixed by #7310
Closed
9 tasks done

Add Reddit Sans #6812

stephenhutchings opened this issue Sep 29, 2023 · 42 comments · Fixed by #7310
Assignees
Labels
I New Font II Accepted Non-commissioned projects that are accepted for onboarding
Milestone

Comments

@stephenhutchings
Copy link

Font Project Git Repo URL:
https://github.com/reddit/redditsans

Super short description of the Font Family:
Reddit Sans is a humanist sans-serif designed for Reddit. Reddit Sans is complemented by Reddit Sans Condensed and Reddit Mono, which are also contained in the same repository. Fonts can be previewed on the microsite.

Requirements:

Google Fonts will publish only fonts that match its requirements. Please familiarize yourself with the complete documentation in the Google Fonts Guide (GF-Guide) and ensure your font project complies with them before submitting the font family. You can also use the Google Fonts Project Template, which will help you create a repository that follows the needed structure and includes build requirements.

By filling this issue, you can confirm the project meets the requirements (by ticking the cases or putting x between the square brackets in text mode):

  • I read, agree, and comply with the full contributing requirements
  • The entire font project is licensed under the OFL
  • There is no "Reserved Font Name" mention in the OFL license
  • Family name is unique according to namecheck.fontdata.com
  • The font supports at least GF Latin Core glyphset
  • The repository respect the upstream repo structure
  • The source files are available in the repository
  • I am the author of the font, or the author agreed to this submission
  • I will maintain the repository and participate in the onboarding process (addressing, solving, and responding to issues, merging pull requests, etc)

Image:

Attach here a pic or a screenshot of the font. One image is enough, it can be a few letters, to give a quick overview.
Reddit Sans
Reddit Sans Condensed
Reddit Mono

@stephenhutchings stephenhutchings added I New Font II Submission pending proposal for non-commissioned fonts suggested in the issue tracker labels Sep 29, 2023
@eliheuer eliheuer added this to the 2023 Q4 milestone Sep 29, 2023
@eliheuer
Copy link
Collaborator

Thanks @stephenhutchings. I briefly looked at all the source files and everything looks good. I tagged this for review for onboarding to Google Fonts in Q4. We will review this submission in more detail soon.

@eliheuer eliheuer self-assigned this Oct 6, 2023
@eliheuer eliheuer added II Accepted Non-commissioned projects that are accepted for onboarding and removed II Submission pending proposal for non-commissioned fonts suggested in the issue tracker labels Oct 6, 2023
@eliheuer
Copy link
Collaborator

eliheuer commented Oct 9, 2023

Hello @stephenhutchings. This project has been accepted for onboarding to Google Fonts and we are moving forward with the onboarding process this week with Reddit Sans as a high priority project.

I left some issues in the project's issue tracker. These are things that have come up in the QA process and need to be fixed before onboarding the fonts. If for some reason these changes don't make sense in the upstream project's repository, Google Fonts can maintain a separate fork that meets all our QA requirements, but Ideally the project at github.com/reddit/redditsans would be as close to the version on Google Fonts as possible.

The main, most important issues that need to be addressed before onboarding are:

  • vertical metrics must be consistent across the family
  • nbspace and space need to be the same width
  • fsType must be set to 0

Also, do you have plans to release this as a variable font at some point? If so, would it make sense to combine Reddit Sans and Reddit Sans Condensed into one variable font with a weight and width axis?

I'm working on an updated version of the source files that makes the vertical metrics consistent across the family now, and can make a PR to your upstream repository with that file if you like, but I understand you will probably want to review the vertical metrics issue yourself and might have some opinions on how it is handled. Is there a good reason why the vertical metrics are now consistent across the family? Let me know.

Thanks!

@stephenhutchings
Copy link
Author

Thanks @eliheuer. Appreciate the detailed comments.

It won't be a problem addressing all of the issues you have raised in the main project, so there is no need to maintain a separate fork. I should be able to resolve all of those issues this week. With respect to inconsistent vertical metrics, that seems to be an oversight rather than intentional.

A variable font is a possibility with separate width and weight axes. However, there are currently no italics in the condensed width so it would be limited to the roman fonts. Nothing is planned at the moment, but I'll discuss this further with the Reddit team. If we do go down that route, what effect does that have on the Google Fonts side of things?

@stephenhutchings
Copy link
Author

I've released a new version (v1.012) that addresses the bulk of issues that you've highlighted.

There are two remaining issues related to copyright. If these are non-critical, Reddit's preference is to leave the copyright as is.

@RosaWagner RosaWagner linked a pull request Oct 12, 2023 that will close this issue
@RosaWagner
Copy link
Contributor

We merged a first version to see what it looks like in sandbox and speed up the onboarding process of the font, but it is not complying with our requirements so we would be waiting for an update :)

We would need:

@RosaWagner RosaWagner reopened this Oct 12, 2023
@stephenhutchings
Copy link
Author

Thanks for the update @RosaWagner.

If @eliheuer is happy to set up the gftools build step that would be much appreciated. I can make the other changes to the repo structure next week.

@tr000y
Copy link

tr000y commented Nov 8, 2023

Hey @RosaWagner @eliheuer ! Following up here. Stephen, our font designer made the necessary updates to Reddit Sans (v1.012) outlined here.

Question regarding this copyright convo. We'd like to keep the copyright attribution as "Reddit, Inc.". We have a CLA with Google in place. I wanted to check in and make sure this suffices here? I'll note that we will be updating the copyright URL to link out to the Reddit Sans repo, per your team's suggestion.

Other than these items, is there anything else needed from us to move forward? TY!

@tr000y
Copy link

tr000y commented Nov 20, 2023

Checking in here! Is there anything else needed from our team here? Thank you! @RosaWagner @eliheuer

@eliheuer
Copy link
Collaborator

@tr000y Hello, I will look into the copyright issue. The main problem is that the fonts need to be built with the Google Fonts build system described here: https://googlefonts.github.io/gf-guide/build.html

But the fonts currently use .glyphsproject files which are not supported.

I will try to get a fork working with the Google Fonts build system as an example if possible.

@stephenhutchings
Copy link
Author

@eliheuer I made a bit of progress in the build step on the gf-onboarding branch. This required some changes to the source files, and I need to do a review to ensure the built fonts don't vary significantly from the current production fonts.

I'm not sure it's possible to get the build working without changing the source files, but if you have any insight here that would be great.

@RosaWagner
Copy link
Contributor

@eliheuer, as told in the meetings: we don't need to support the .glyphproject files, everything can be set up to export the default version of Reddit Sans (Roman + Italic), Reddit Sans Condensed and Reddit Mono using the builder (from the source files). .glyphsproject files are not sources, they are just an alternative way to set up instances in the GlyphsApp environment. Please ignore the subsets A B C etc for now, they are not meant to be onboarded right away, the first step and priority is for the 3 families in their default form.

@stephenhutchings

  • Since all the masters are compatible I would strongly recommend to build the variable font; it doesn't change much the workflow and would definitely increase the user experience ;)
  • We do need an instance at each 100, currently the medium instance is missing
  • you can set up the font origin to the Regular master in the font info tab
  • you need 3 .yaml file (one for each families).
  • periodcentered need to be centered in the middle of 2 L. We usually don't use kerning but negative sidebearing to make sure it displays correctly in all apps, for that a periodcentered.case is often needed.

@RosaWagner
Copy link
Contributor

RosaWagner commented Nov 22, 2023

I don't think @eliheuer handled a case of building multiple families in one repo with intermediate layers etc before, so I allowed myself to step in to show a way to handle that case. I arranged the sources in a fork to be able to build with gftools builder, but I didn't go into details for the QA. Also, I set up an "ideal" scenario which might differ from the "desired" output (explanations below).

link: https://github.com/RosaWagner/redditsans/tree/gf-onboarding

What I did in the sources

  • change glyphs format to version 3 (is this annoying for you?)
  • compatibility issue with f and f.ss01 in the Italic style: glyphsLib has issues with nested intermediate layers. I decomposed the 2 glyphs to be able to build.
  • added variable font origin (Regular master). So the default instance in the VF is Regular.
  • removed the alternate layer in slashlongcomb.cap [wght<700]: it didn't seem to have any effect on the interpolation and the value was a bit odd.
  • reordered the intermediate layers (I don't think this is a necessary step cause it doesn't change anything, but it helped me understand how the file was made)
  • the masters' values and the instances' values need to be consistent. There can't be a Light master at 32 and an Light instance at 64, therefore I renamed the master Light to ExtraLight and the master Bold to Black.
  • added an axis mapping for all the values present in the font (including the ones in the intermediate layers). (cf https://googlefonts.github.io/gf-guide/variable.htm about user and design values). The axis mapping is specific to gftools, Glyphs doesn't handle that the same way.
  • Added a medium instance at 104 (this can be adjusted, right now it is right in the middle of Regular ans SemiBold)
  • Added ExtraLight and Black to cover the entire designspace
  • Made the .yaml file for each families.
  • corrected the makefile to be able to generate all families. I am not sure the fontbakery and proff steps can handle multiple families so for now it proofs only the Reddit Sans family. The action is blocked at the "set up site" step; I don't know how to fix that. Therefore I built the fonts locally and added all of them into the fonts directory.

What to do about: the range of the weight axis is larger than the proposed set of instances.
There are different possibilities:

  1. A variable font with a weight axis with instances ranging from ExtraLight to Black
  2. A variable font with a weight axis with instances ranging Light to ExtraBold
  3. Only static instances ranging from Light to ExtraBold
  • Reddit, until now, has been distributing the scenario 3. To achieve it, we would only need to remove the 2 extra instances from the source files, and disable the export of the VF in the .yaml files.
  • I know GF would prefer the scenario 1, this is the proposal I set up in my fork. This is the better option for GF because they prefer shipping VF (file size economy + more complete user experience), and preferably the widest range possible.
  • Scenario 2 is a compromise but would require a bash script to slice the VFs because users will (for sure) complain about the fact that they don't have proper access to the entire range. The range of the weight axis would then be 300-800 instead of 200-900. This is achievable with varLib.instancer.

copyright
We can grant exception. @davelab6 just needs to confirm.

The blocker for this project
The intermediate layers in glyphsLib is having an issue: googlefonts/glyphsLib#954
As long as this issue is open we can't provide the exact same design as before, which is a bummer.

Here again there are several possibilities:

  1. wait until solved.
  2. workaround by adding intermediate layers in all composites referring to a component with intermediate layers
  3. Scenario 2 but with the added step of checking all intermediate layers to make sure they are all necessary (I am thinking of the combining marks which have a slight modification comparing to the default interpolation).

random stuff I noted but didn't fix

  • combining mark for case are having the suffix .cap instead of .case and the export for them is disabled. You need to export them to have a proper mark_to_base and mark_to_mark features for the uppercases.
  • problem with Ldot mentioned in previous comment
  • pair clashes between T and some accented letters

@stephenhutchings, once you've chose you preferred scenarios, @eliheuer can take over.

@tr000y
Copy link

tr000y commented Nov 22, 2023

@RosaWagner @eliheuer Thanks so much for outlining all of this! Our preference for 1. range of weight axis and 2. the glyphsLib issue is option two in both scenarios. For both issues, is this something GF would handle, or will we need to update on our end?

@RosaWagner
Copy link
Contributor

RosaWagner commented Nov 23, 2023

Thanks @tr000y, to make it clear you choose:

  • a variable font ranging from light to extra bold
  • workaround the glyphsLib issue by adding intermediate layers in all concerned composites

We can provide the bash script that exports the range you prefer, but you would have to add the intermediate layers everywhere (it might require a bit of scripting so it doesn’t take ages). Do you want to do that from the sources I already set up?

@RosaWagner
Copy link
Contributor

RosaWagner commented Nov 23, 2023

I made the bash script and created a PR to @eliheuer's fork so he can take over (eliheuer/redditsans#1). varLib.instancer is provoking a suspicious FAIL with ots sanitizer that we need to investigate. The team based in the US is in thanksgiving holidays so I don't know how much time it's going to take.

If you feel the emergency to fix the rest of the todo listed in the PR, I can also PR the current state of the branch to your branch.

Edit: issue with ots sanitizer filled in fonttools/fonttools#3350

@anthrotype
Copy link
Member

@RosaWagner please file an issue in fonttools about the instancer and will take a look, thanks

@simoncozens
Copy link
Collaborator

Marc is Mister STAT Table. :-)

@eliheuer
Copy link
Collaborator

cc @m4rc1e, but I think he is on vacation until the end of the year, I can do my best to look into it in his absence.

@RosaWagner
Copy link
Contributor

It can be workaround with patching a stat table without width axis with gen-stat at the end of the process using the bash script already there

@m4rc1e
Copy link
Collaborator

m4rc1e commented Dec 15, 2023

I'm currently looking into this issue. Will report back or fix.

@m4rc1e
Copy link
Collaborator

m4rc1e commented Dec 15, 2023

The STAT table for the Condensed family is being generated by the googlefonts axisregistry. I need to do some investigating to see whether it is complaint with the MS spec.

For the time being, we could just declare a STAT table in the sanscondensed.yaml yaml file? I'll happily do this.

I have no idea why the tool is adding a width axis in the STAT table

The Condensed Axis Record is being added because it found a Condensed token in the name table. It most likely used nameID 1 or 16. Perhaps we should only be discovering name record token using NameID 2 or 17.

@RosaWagner
Copy link
Contributor

@m4rc1e except if I missed something, when I tested that, it still added the width axis. I explained more in details the problem in this issue: googlefonts/gftools#801. But I tested a lot of stuff recently with different projects, so I might have confused something, does it work when you do it?

@m4rc1e
Copy link
Collaborator

m4rc1e commented Dec 15, 2023

Defining a stat table in the condensed yaml file works for me. I don't get a Condesed axis. PR submitted, reddit/redditsans#13

@chrissimpkins chrissimpkins modified the milestones: 2023 Q4, 2024 Q1 Jan 2, 2024
@emmamarichal
Copy link
Collaborator

emmamarichal commented Jan 19, 2024

Hello @tr000y and @stephenhutchings!
I'm Emma, I'm the new onboarder assigned to that project!
I tested the fonts from here: reddit/redditsans@011df2f

Here you can find my review for Reddit Sans (I'll start the Reddit Mono today). Feel free to ask if you have any questions!
Cheers!


/ Global comment
The Glyphset is slightly different in italic (around 50 glyphs missing). It’s better to have the same supported langages both in upright and italic. Here, it concerns stylistics sets and symbols. For stylistics sets, there aren’t supported by the API, so it’s ok to not have them in italics. For symbols, it would be nice :)

Version: In the version exported I checked, it’s the 1.012, should be bumped to 1.014 (to avoid any confusion with that PR: #6850 and with the version on the main branch of your repo -which is not the last one if I well understood-)

/ Fontbakery report remarks

Fails:
🔥 Copyright: we are agree for this exception
🔥 Check variable font instances: With Rosalie, you agreed to have a 300-800 range instead of 200-900.

What can be improved to remove WARNS:

(To check in every fonts)

  • Are there caret positions declared for every ligature?
    -> add anchors in each ligatures (caret ones)

  • Remove soft hyphen (no longer in the GF Glyphset)

  • Interpolation issues, only in the upright:
    northEastArrow.case
    southEastArrow.case
    southWestArrow.case
    northWestArrow.case
    leftRightArrow.case

Screenshot 2024-01-19 at 15 09 37

Check math signs have the same width
-> It’s better, but if not it’s ok to leave them like this.

Italic: same remarks + weird behaviour with the Caron (looks a bit far in the regular master)

Screen.Recording.2024-01-19.at.14.41.48.mov

FontBakery report

fontbakery version: 0.10.9

[2] Experimental checks
WARN: Shapes languages in all GF glyphsets. (com.google.fonts/check/glyphsets/shape_languages)
  • WARN GF_Latin_Core glyphset:
Language FAIL messages
nb_Latn (Norwegian Bokmål) No exemplar glyphs were defined for language Norwegian Bokmål

[code: warning-language-shaping]

WARN: Shapes languages in all GF glyphsets. (com.google.fonts/check/glyphsets/shape_languages)
  • WARN GF_Latin_Core glyphset:
Language FAIL messages
nb_Latn (Norwegian Bokmål) No exemplar glyphs were defined for language Norwegian Bokmål

[code: warning-language-shaping]


[1] Family checks
INFO: Check axis ordering on the STAT table. (com.google.fonts/check/STAT/axis_order)
  • INFO From a total of 2 font files, 0 of them (0.00%) lack a STAT table.

    And these are the most common STAT axis orderings:
    ('wght-ital', 2) [code: summary]


[20] RedditSans-Italic[wght].ttf
🔥 FAIL: Copyright notices match canonical pattern in fonts (com.google.fonts/check/font_copyright)
  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright (c) 2020-2023, Reddit, Inc. (https://www.reddit.com)" [code: bad-notice-format]
🔥 FAIL: Check variable font instances (com.google.fonts/check/fvar_instances)
  • 🔥 FAIL fvar instances are incorrect:
  • Add missing instances
Name current expected
ExtraLight Italic N/A wght=200.0
Light Italic wght=300.0 wght=300.0
Italic wght=400.0 wght=400.0
Medium Italic wght=500.0 wght=500.0
SemiBold Italic wght=600.0 wght=600.0
Bold Italic wght=700.0 wght=700.0
ExtraBold Italic wght=800.0 wght=800.0
Black Italic N/A wght=900.0
WARN: Checking OS/2 achVendID. (com.google.fonts/check/vendor_id)
  • WARN OS/2 VendorID value 'NONE' is not yet recognized. If you registered it recently, then it's safe to ignore this warning message. Otherwise, you should set it to your own unique 4 character code, and register it with Microsoft at https://www.microsoft.com/typography/links/vendorlist.aspx
    [code: unknown]
WARN: Check for codepoints not covered by METADATA subsets. (com.google.fonts/check/metadata/unreachable_subsetting)
  • WARN The following codepoints supported by the font are not covered by
    any subsets defined in the font's metadata file, and will never
    be served. You can solve this by either manually adding additional
    subset declarations to METADATA.pb, or by editing the glyphset
    definitions.

  • U+02B9 MODIFIER LETTER PRIME: not included in any glyphset definition

  • U+02BA MODIFIER LETTER DOUBLE PRIME: not included in any glyphset definition

  • U+02BE MODIFIER LETTER RIGHT HALF RING: not included in any glyphset definition

  • U+02BF MODIFIER LETTER LEFT HALF RING: not included in any glyphset definition

  • U+02C7 CARON: try adding one of: tifinagh, canadian-aboriginal, yi

  • U+02C8 MODIFIER LETTER VERTICAL LINE: not included in any glyphset definition

  • U+02C9 MODIFIER LETTER MACRON: not included in any glyphset definition

  • U+02CA MODIFIER LETTER ACUTE ACCENT: not included in any glyphset definition

  • U+02CB MODIFIER LETTER GRAVE ACCENT: not included in any glyphset definition

  • U+02CC MODIFIER LETTER LOW VERTICAL LINE: not included in any glyphset definition
    84 more.

Use -F or --full-lists to disable shortening of long lists.

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext, vietnamese [code: unreachable-subsetting]

WARN: License URL matches License text on name table? (com.google.fonts/check/name/license_url)
WARN: Are there caret positions declared for every ligature? (com.google.fonts/check/ligature_carets)
  • WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
WARN: Is there kerning info for non-ligated sequences? (com.google.fonts/check/kerning_for_non_ligated_sequences)
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + f

    • f + i

    • i + f

    • f + l

    • l + f

    • i + l

    • r + slash [code: lacks-kern-info]

WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table. (com.google.fonts/check/meta/script_lang_tags)
  • WARN This font file does not have a 'meta' table. [code: lacks-meta-table]
WARN: Check font contains no unreachable glyphs (com.google.fonts/check/unreachable_glyphs)
  • WARN The following glyphs could not be reached by codepoint or substitution rules:

    • NULL

    • eight.sinf

    • eight.subs

    • eight.sups

    • five.sinf

    • five.subs

    • five.sups

    • four.sinf

    • four.subs

    • four.sups

    • 23 more.

Use -F or --full-lists to disable shortening of long lists.
[code: unreachable-glyphs]

WARN: Does the font contain a soft hyphen? (com.google.fonts/check/soft_hyphen)
  • WARN This font has a 'Soft Hyphen' character. [code: softhyphen]
WARN: Check math signs have the same width. (com.google.fonts/check/math_signs_width)
  • WARN The most common width is 1061 among a set of 2 math glyphs.
    The following math glyphs have a different width, though:

Width = 1044:
plus

Width = 1051:
equal, notequal

Width = 1090:
logicalnot

Width = 1056:
plusminus

Width = 1014:
multiply

Width = 1042:
minus, divide

Width = 1137:
approxequal

Width = 1016:
lessequal, greaterequal
[code: width-outliers]

WARN: Are there any misaligned on-curve points? (com.google.fonts/check/outline_alignment_miss)
  • WARN The following glyphs have on-curve points which have potentially incorrect y coordinates:

    • asterisk (U+002A): X=290.5,Y=1476.0 (should be at cap-height 1474?)

    • nine (U+0039): X=455.0,Y=1.0 (should be at baseline 0?)

    • nine (U+0039): X=234.0,Y=1.0 (should be at baseline 0?)

    • at (U+0040): X=1370.0,Y=-2.0 (should be at baseline 0?)

    • K (U+004B): X=545.0,Y=1472.0 (should be at cap-height 1474?)

    • t (U+0074): X=532.5,Y=-0.5 (should be at baseline 0?)

    • uni0136 (U+0136): X=545.0,Y=1472.0 (should be at cap-height 1474?)

    • uni0163 (U+0163): X=532.5,Y=-0.5 (should be at baseline 0?)

    • tcaron (U+0165): X=536.5,Y=-0.5 (should be at baseline 0?)

    • tbar (U+0167): X=532.5,Y=-0.5 (should be at baseline 0?)

    • 18 more.

Use -F or --full-lists to disable shortening of long lists. [code: found-misalignments]

WARN: Ensure soft_dotted characters lose their dot when combined with marks that replace the dot. (com.google.fonts/check/soft_dotted)
  • WARN The dot of soft dotted characters used in orthographies must disappear in the following strings: į̀ į́ į̂ į̃ į̄ į̌ ị̀ ị́ ị̂ ị̃ ị̄

The dot of soft dotted characters should disappear in other cases, for example: į̆ į̇ į̈ į̉ į̊ į̋ į̏ į̑ į̒ į̛̀ į̛́ į̛̂ į̛̃ į̛̄ į̛̆ į̛̇ į̛̈ į̛̉ į̛̊ į̛̋

Your font fully covers the following languages that require the soft-dotted feature: Ebira (Latn, 2,200,000 speakers), Ma’di (Latn, 584,000 speakers), Dutch (Latn, 31,709,104 speakers), Lithuanian (Latn, 2,357,094 speakers), Igbo (Latn, 27,823,640 speakers), Navajo (Latn, 166,319 speakers).

Your font does not cover the following languages that require the soft-dotted feature: Basaa (Latn, 332,940 speakers), Avokaya (Latn, 100,000 speakers), Ejagham (Latn, 120,000 speakers), Koonzime (Latn, 40,000 speakers), Ukrainian (Cyrl, 29,273,587 speakers), Aghem (Latn, 38,843 speakers), Kom (Latn, 360,685 speakers), Dan (Latn, 1,099,244 speakers), Nateni (Latn, 100,000 speakers), Lugbara (Latn, 2,200,000 speakers), Belarusian (Cyrl, 10,064,517 speakers). [code: soft-dotted]

INFO: Show hinting filesize impact. (com.google.fonts/check/hinting_impact)
  • INFO Hinting filesize impact:
RedditSans-Italic[wght].ttf
Dehinted Size 229.4kb
Hinted Size 229.4kb
Increase 24 bytes
Change 0.0 %
[code: size-impact]
INFO: Font has old ttfautohint applied? (com.google.fonts/check/old_ttfautohint)
  • INFO Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: ['Version 1.012'] [code: version-not-detected]
INFO: EPAR table present in font? (com.google.fonts/check/epar)
INFO: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? (com.google.fonts/check/gasp)
  • INFO These are the ppm ranges declared on the gasp table:

PPM <= 65535:
flag = 0x0F
- Use grid-fitting
- Use grayscale rendering
- Use gridfitting with ClearType symmetric smoothing
- Use smoothing along multiple axes with ClearType®
[code: ranges]

INFO: Check for font-v versioning. (com.google.fonts/check/fontv)
  • INFO Version string is: "Version 1.012"
    The version string must ideally include a git commit hash and either a "dev" or a "release" suffix such as in the example below:
    "Version 1.3; git-0d08353-release" [code: bad-format]
INFO: Font contains all required tables? (com.google.fonts/check/required_tables)
  • INFO This font contains the following optional tables:

    • loca

    • prep

    • GPOS

    • GSUB

    • gasp [code: optional-tables]

INFO: List all superfamily filepaths (com.google.fonts/check/superfamily/list)
  • INFO . [code: family-path]

[21] RedditSans[wght].ttf
🔥 FAIL: Copyright notices match canonical pattern in fonts (com.google.fonts/check/font_copyright)
  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright (c) 2020-2023, Reddit, Inc. (https://www.reddit.com)" [code: bad-notice-format]
🔥 FAIL: Check variable font instances (com.google.fonts/check/fvar_instances)
  • 🔥 FAIL fvar instances are incorrect:
  • Add missing instances
Name current expected
ExtraLight N/A wght=200.0
Light wght=300.0 wght=300.0
Regular wght=400.0 wght=400.0
Medium wght=500.0 wght=500.0
SemiBold wght=600.0 wght=600.0
Bold wght=700.0 wght=700.0
ExtraBold wght=800.0 wght=800.0
Black N/A wght=900.0
WARN: Checking OS/2 achVendID. (com.google.fonts/check/vendor_id)
  • WARN OS/2 VendorID value 'NONE' is not yet recognized. If you registered it recently, then it's safe to ignore this warning message. Otherwise, you should set it to your own unique 4 character code, and register it with Microsoft at https://www.microsoft.com/typography/links/vendorlist.aspx
    [code: unknown]
WARN: Check for codepoints not covered by METADATA subsets. (com.google.fonts/check/metadata/unreachable_subsetting)
  • WARN The following codepoints supported by the font are not covered by
    any subsets defined in the font's metadata file, and will never
    be served. You can solve this by either manually adding additional
    subset declarations to METADATA.pb, or by editing the glyphset
    definitions.

  • U+02B9 MODIFIER LETTER PRIME: not included in any glyphset definition

  • U+02BA MODIFIER LETTER DOUBLE PRIME: not included in any glyphset definition

  • U+02BE MODIFIER LETTER RIGHT HALF RING: not included in any glyphset definition

  • U+02BF MODIFIER LETTER LEFT HALF RING: not included in any glyphset definition

  • U+02C7 CARON: try adding one of: tifinagh, canadian-aboriginal, yi

  • U+02C8 MODIFIER LETTER VERTICAL LINE: not included in any glyphset definition

  • U+02C9 MODIFIER LETTER MACRON: not included in any glyphset definition

  • U+02CA MODIFIER LETTER ACUTE ACCENT: not included in any glyphset definition

  • U+02CB MODIFIER LETTER GRAVE ACCENT: not included in any glyphset definition

  • U+02CC MODIFIER LETTER LOW VERTICAL LINE: not included in any glyphset definition
    110 more.

Use -F or --full-lists to disable shortening of long lists.

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext, vietnamese [code: unreachable-subsetting]

WARN: License URL matches License text on name table? (com.google.fonts/check/name/license_url)
WARN: Are there caret positions declared for every ligature? (com.google.fonts/check/ligature_carets)
  • WARN This font lacks caret position values for ligature glyphs on its GDEF table. [code: lacks-caret-pos]
WARN: Is there kerning info for non-ligated sequences? (com.google.fonts/check/kerning_for_non_ligated_sequences)
  • WARN GPOS table lacks kerning info for the following non-ligated sequences:

    • f + f

    • f + i

    • i + f

    • f + l

    • l + f

    • i + l

    • r + slash [code: lacks-kern-info]

WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table. (com.google.fonts/check/meta/script_lang_tags)
  • WARN This font file does not have a 'meta' table. [code: lacks-meta-table]
WARN: Check font contains no unreachable glyphs (com.google.fonts/check/unreachable_glyphs)
  • WARN The following glyphs could not be reached by codepoint or substitution rules:

    • NULL

    • eight.sinf

    • eight.subs

    • eight.sups

    • five.sinf

    • five.subs

    • five.sups

    • four.sinf

    • four.subs

    • four.sups

    • 24 more.

Use -F or --full-lists to disable shortening of long lists.
[code: unreachable-glyphs]

WARN: Does the font contain a soft hyphen? (com.google.fonts/check/soft_hyphen)
  • WARN This font has a 'Soft Hyphen' character. [code: softhyphen]
WARN: Detect any interpolation issues in the font. (com.google.fonts/check/interpolation_issues)
  • WARN Interpolation issues were found in the font:

    • Contour 2 start point differs in glyph 'arrowboth.case' between location wght=400 and location wght=200

    • Contour 2 start point differs in glyph 'arrowboth.case' between location wght=200 and location wght=328

    • Contour 1 start point differs in glyph 'uni2196.case' between location wght=400 and location wght=200

    • Contour 1 start point differs in glyph 'uni2196.case' between location wght=200 and location wght=328

    • Contour 1 start point differs in glyph 'uni2198.case' between location wght=400 and location wght=200

    • Contour 1 start point differs in glyph 'uni2198.case' between location wght=200 and location wght=328

    • Contour 1 start point differs in glyph 'uni2197.case' between location wght=400 and location wght=200

    • Contour 1 start point differs in glyph 'uni2197.case' between location wght=200 and location wght=328

    • Contour 1 start point differs in glyph 'uni2199.case' between location wght=400 and location wght=200

    • Contour 1 start point differs in glyph 'uni2199.case' between location wght=200 and location wght=328 [code: interpolation-issues]

WARN: Check math signs have the same width. (com.google.fonts/check/math_signs_width)
  • WARN The most common width is 1016 among a set of 6 math glyphs.
    The following math glyphs have a different width, though:

Width = 1052:
greater, less

Width = 1010:
logicalnot

Width = 984:
multiply

Width = 1098:
approxequal

Width = 992:
lessequal, greaterequal
[code: width-outliers]

WARN: Are there any misaligned on-curve points? (com.google.fonts/check/outline_alignment_miss)
  • WARN The following glyphs have on-curve points which have potentially incorrect y coordinates:

    • asterisk (U+002A): X=382.5,Y=1473.5 (should be at cap-height 1474?)

    • asterisk (U+002A): X=485.5,Y=1473.5 (should be at cap-height 1474?)

    • comma (U+002C): X=158.0,Y=1.5 (should be at baseline 0?)

    • semicolon (U+003B): X=182.0,Y=1.5 (should be at baseline 0?)

    • r (U+0072): X=744.0,Y=1062.0 (should be at x-height 1060?)

    • uni0123 (U+0123): X=539.0,Y=1476.0 (should be at cap-height 1474?)

    • uni02BC (U+02BC): X=157.0,Y=1476.0 (should be at cap-height 1474?)

    • uni0312 (U+0312): X=123.0,Y=1476.0 (should be at cap-height 1474?)

    • uni0361 (U+0361): X=797.5,Y=1472.0 (should be at cap-height 1474?)

    • uni0361 (U+0361): X=176.5,Y=1473.0 (should be at cap-height 1474?)

    • 35 more.

Use -F or --full-lists to disable shortening of long lists. [code: found-misalignments]

WARN: Ensure soft_dotted characters lose their dot when combined with marks that replace the dot. (com.google.fonts/check/soft_dotted)
  • WARN The dot of soft dotted characters used in orthographies must disappear in the following strings: į̀ į́ į̂ į̃ į̄ į̌ ị̀ ị́ ị̂ ị̃ ị̄

The dot of soft dotted characters should disappear in other cases, for example: į̆ į̇ į̈ į̉ į̊ į̋ į̏ į̑ į̒ į̛̀ į̛́ į̛̂ į̛̃ į̛̄ į̛̆ į̛̇ į̛̈ į̛̉ į̛̊ į̛̋

Your font fully covers the following languages that require the soft-dotted feature: Ebira (Latn, 2,200,000 speakers), Ma’di (Latn, 584,000 speakers), Dutch (Latn, 31,709,104 speakers), Lithuanian (Latn, 2,357,094 speakers), Igbo (Latn, 27,823,640 speakers), Navajo (Latn, 166,319 speakers).

Your font does not cover the following languages that require the soft-dotted feature: Basaa (Latn, 332,940 speakers), Avokaya (Latn, 100,000 speakers), Ejagham (Latn, 120,000 speakers), Koonzime (Latn, 40,000 speakers), Ukrainian (Cyrl, 29,273,587 speakers), Aghem (Latn, 38,843 speakers), Kom (Latn, 360,685 speakers), Dan (Latn, 1,099,244 speakers), Nateni (Latn, 100,000 speakers), Lugbara (Latn, 2,200,000 speakers), Belarusian (Cyrl, 10,064,517 speakers). [code: soft-dotted]

INFO: Show hinting filesize impact. (com.google.fonts/check/hinting_impact)
  • INFO Hinting filesize impact:
RedditSans[wght].ttf
Dehinted Size 255.9kb
Hinted Size 255.9kb
Increase 24 bytes
Change 0.0 %
[code: size-impact]
INFO: Font has old ttfautohint applied? (com.google.fonts/check/old_ttfautohint)
  • INFO Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: ['Version 1.012'] [code: version-not-detected]
INFO: EPAR table present in font? (com.google.fonts/check/epar)
INFO: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? (com.google.fonts/check/gasp)
  • INFO These are the ppm ranges declared on the gasp table:

PPM <= 65535:
flag = 0x0F
- Use grid-fitting
- Use grayscale rendering
- Use gridfitting with ClearType symmetric smoothing
- Use smoothing along multiple axes with ClearType®
[code: ranges]

INFO: Check for font-v versioning. (com.google.fonts/check/fontv)
  • INFO Version string is: "Version 1.012"
    The version string must ideally include a git commit hash and either a "dev" or a "release" suffix such as in the example below:
    "Version 1.3; git-0d08353-release" [code: bad-format]
INFO: Font contains all required tables? (com.google.fonts/check/required_tables)
  • INFO This font contains the following optional tables:

    • loca

    • prep

    • GPOS

    • GSUB

    • gasp [code: optional-tables]

INFO: List all superfamily filepaths (com.google.fonts/check/superfamily/list)
  • INFO . [code: family-path]

Summary

💔 ERROR ☠ FATAL 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
0 0 4 25 207 15 243 0
0% 0% 1% 5% 42% 3% 49% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • PASS
  • DEBUG

@emmamarichal
Copy link
Collaborator

emmamarichal commented Jan 19, 2024

For Reddit Mono:

-> Same remarks as for Reddit Sans for license url and soft hyphen
-> Please consider that WARN: ⚠ WARN: Checking correctness of monospaced metadata.

Small outlines issues:
Screenshot 2024-01-19 at 15 57 16

Screenshot 2024-01-19 at 15 56 07

circumflex doesn't look well aligned

Screen.Recording.2024-01-19.at.16.00.13.mov

Same in the O
Screenshot 2024-01-19 at 16 01 22

The y's dot is a bit too much on the right:
Screenshot 2024-01-19 at 16 02 26

Same issue with Lcaron
Screenshot 2024-01-19 at 16 06 22

FontBakery report

fontbakery version: 0.10.9

[1] Experimental checks
WARN: Shapes languages in all GF glyphsets. (com.google.fonts/check/glyphsets/shape_languages)
  • WARN GF_Latin_Core glyphset:
Language FAIL messages
nb_Latn (Norwegian Bokmål) No exemplar glyphs were defined for language Norwegian Bokmål

[code: warning-language-shaping]


[1] Family checks
INFO: Check axis ordering on the STAT table. (com.google.fonts/check/STAT/axis_order)
  • INFO From a total of 1 font files, 0 of them (0.00%) lack a STAT table.

    And these are the most common STAT axis orderings:
    ('wght', 1) [code: summary]


[18] RedditMono[wght].ttf
🔥 FAIL: Copyright notices match canonical pattern in fonts (com.google.fonts/check/font_copyright)
  • 🔥 FAIL Name Table entry: Copyright notices should match a pattern similar to: "Copyright 2019 The Familyname Project Authors (git url)"
    But instead we have got:
    "Copyright (c) 2020-2023, Reddit, Inc. (https://www.reddit.com)" [code: bad-notice-format]
🔥 FAIL: Check variable font instances (com.google.fonts/check/fvar_instances)
  • 🔥 FAIL fvar instances are incorrect:
  • Add missing instances
Name current expected
ExtraLight N/A wght=200.0
Light wght=300.0 wght=300.0
Regular wght=400.0 wght=400.0
Medium wght=500.0 wght=500.0
SemiBold wght=600.0 wght=600.0
Bold wght=700.0 wght=700.0
ExtraBold wght=800.0 wght=800.0
Black N/A wght=900.0
WARN: Checking OS/2 achVendID. (com.google.fonts/check/vendor_id)
  • WARN OS/2 VendorID value 'NONE' is not yet recognized. If you registered it recently, then it's safe to ignore this warning message. Otherwise, you should set it to your own unique 4 character code, and register it with Microsoft at https://www.microsoft.com/typography/links/vendorlist.aspx
    [code: unknown]
WARN: Check for codepoints not covered by METADATA subsets. (com.google.fonts/check/metadata/unreachable_subsetting)
  • WARN The following codepoints supported by the font are not covered by
    any subsets defined in the font's metadata file, and will never
    be served. You can solve this by either manually adding additional
    subset declarations to METADATA.pb, or by editing the glyphset
    definitions.

  • U+02B9 MODIFIER LETTER PRIME: not included in any glyphset definition

  • U+02BA MODIFIER LETTER DOUBLE PRIME: not included in any glyphset definition

  • U+02BE MODIFIER LETTER RIGHT HALF RING: not included in any glyphset definition

  • U+02BF MODIFIER LETTER LEFT HALF RING: not included in any glyphset definition

  • U+02C7 CARON: try adding one of: tifinagh, canadian-aboriginal, yi

  • U+02C8 MODIFIER LETTER VERTICAL LINE: not included in any glyphset definition

  • U+02C9 MODIFIER LETTER MACRON: not included in any glyphset definition

  • U+02CA MODIFIER LETTER ACUTE ACCENT: not included in any glyphset definition

  • U+02CB MODIFIER LETTER GRAVE ACCENT: not included in any glyphset definition

  • U+02CC MODIFIER LETTER LOW VERTICAL LINE: not included in any glyphset definition
    110 more.

Use -F or --full-lists to disable shortening of long lists.

Or you can add the above codepoints to one of the subsets supported by the font: latin, latin-ext, vietnamese [code: unreachable-subsetting]

WARN: License URL matches License text on name table? (com.google.fonts/check/name/license_url)
WARN: Ensure fonts have ScriptLangTags declared on the 'meta' table. (com.google.fonts/check/meta/script_lang_tags)
  • WARN This font file does not have a 'meta' table. [code: lacks-meta-table]
WARN: Check font contains no unreachable glyphs (com.google.fonts/check/unreachable_glyphs)
  • WARN The following glyphs could not be reached by codepoint or substitution rules:

    • NULL

    • eight.sinf

    • eight.subs

    • eight.sups

    • five.sinf

    • five.subs

    • five.sups

    • four.sinf

    • four.subs

    • four.sups

    • 23 more.

Use -F or --full-lists to disable shortening of long lists.
[code: unreachable-glyphs]

WARN: Does the font contain a soft hyphen? (com.google.fonts/check/soft_hyphen)
  • WARN This font has a 'Soft Hyphen' character. [code: softhyphen]
WARN: Check accent of Lcaron, dcaron, lcaron, tcaron (derived from com.google.fonts/check/alt_caron) (com.google.fonts/check/alt_caron)
  • WARN dcaron is decomposed and therefore could not be checked. Please check manually. [code: decomposed-outline]
WARN: Checking correctness of monospaced metadata. (com.google.fonts/check/monospace)
WARN: Are there any misaligned on-curve points? (com.google.fonts/check/outline_alignment_miss)
  • WARN The following glyphs have on-curve points which have potentially incorrect y coordinates:

    • comma (U+002C): X=595.5,Y=-0.5 (should be at baseline 0?)

    • semicolon (U+003B): X=595.5,Y=-0.5 (should be at baseline 0?)

    • threequarters (U+00BE): X=350.0,Y=1472.0 (should be at cap-height 1474?)

    • eogonek (U+0119): X=714.5,Y=-1.0 (should be at baseline 0?)

    • uni0123 (U+0123): X=507.0,Y=1476.0 (should be at cap-height 1474?)

    • uni01C5 (U+01C5): X=622.0,Y=1472.0 (should be at cap-height 1474?)

    • uni01C5 (U+01C5): X=1110.0,Y=1472.0 (should be at cap-height 1474?)

    • uni01C6 (U+01C6): X=628.0,Y=1472.0 (should be at cap-height 1474?)

    • uni01C6 (U+01C6): X=1116.0,Y=1472.0 (should be at cap-height 1474?)

    • uni0312 (U+0312): X=181.0,Y=1476.0 (should be at cap-height 1474?)

    • 15 more.

Use -F or --full-lists to disable shortening of long lists. [code: found-misalignments]

INFO: Show hinting filesize impact. (com.google.fonts/check/hinting_impact)
  • INFO Hinting filesize impact:
RedditMono[wght].ttf
Dehinted Size 199.2kb
Hinted Size 199.2kb
Increase 24 bytes
Change 0.0 %
[code: size-impact]
INFO: Font has old ttfautohint applied? (com.google.fonts/check/old_ttfautohint)
  • INFO Could not detect which version of ttfautohint was used in this font. It is typically specified as a comment in the font version entries of the 'name' table. Such font version strings are currently: ['Version 1.012'] [code: version-not-detected]
INFO: EPAR table present in font? (com.google.fonts/check/epar)
INFO: Is the Grid-fitting and Scan-conversion Procedure ('gasp') table set to optimize rendering? (com.google.fonts/check/gasp)
  • INFO These are the ppm ranges declared on the gasp table:

PPM <= 65535:
flag = 0x0F
- Use grid-fitting
- Use grayscale rendering
- Use gridfitting with ClearType symmetric smoothing
- Use smoothing along multiple axes with ClearType®
[code: ranges]

INFO: Check for font-v versioning. (com.google.fonts/check/fontv)
  • INFO Version string is: "Version 1.012"
    The version string must ideally include a git commit hash and either a "dev" or a "release" suffix such as in the example below:
    "Version 1.3; git-0d08353-release" [code: bad-format]
INFO: Font contains all required tables? (com.google.fonts/check/required_tables)
  • INFO This font contains the following optional tables:

    • loca

    • prep

    • GPOS

    • GSUB

    • gasp [code: optional-tables]

INFO: List all superfamily filepaths (com.google.fonts/check/superfamily/list)
  • INFO . [code: family-path]

Summary

💔 ERROR ☠ FATAL 🔥 FAIL ⚠ WARN 💤 SKIP ℹ INFO 🍞 PASS 🔎 DEBUG
0 0 2 10 110 8 126 0
0% 0% 1% 4% 43% 3% 49% 0%

Note: The following loglevels were omitted in this report:

  • SKIP
  • PASS
  • DEBUG

@emmamarichal emmamarichal added the -- Needs Upstream Resolution Upstream fix required before moving forward label Jan 24, 2024
@emmamarichal
Copy link
Collaborator

Hello @stephenhutchings,
What is the status here? Do you have any questions about this feedback?

Cheers!

@stephenhutchings
Copy link
Author

Hi @emmamarichal. I am looking at these issues, although I have limited time due to other work. Hopefully I'll make some headway in the next few days.

@stephenhutchings
Copy link
Author

@emmamarichal I believe the latest fonts on the gf-onboarding branch address most issues you raised above, except for one.

  • Exported fonts bumped to 1.014
  • Update all URLs to Open Font Licence
  • Add missing symbol glyphs to italic fonts
  • Remove softhyphen, softhyphen.case and feature reference
  • Add caret anchors to ligature glyphs
  • Fix interpolation issues in select arrow glyphs
  • Fix caron positioning in Lcaron, dcaron, tcaron, lcaron and alternates
  • Fix cedilla alignment in Tcedilla and other glyphs
  • Fix stacked circumflex acute/grave alignment in uppercase glyphs
  • Fix dotbelow positioning in ydotbelow
  • Misaligned ogenek in eogonek (U+0119) in variable fonts

The position of the ogonek component on "ę" seems to be correct in the source files and the non-variable font exports. I am not sure why the variable fonts use a different position. Any help here would be appreciated.

@emmamarichal
Copy link
Collaborator

@stephenhutchings Yes sorry, for the ogonek, I think I looked at the .ttf and it's normal to have this kind of issue in a font editor. But all looks great otherwise. Thank you!

You can merge this branch to the main one so I can start the onboarding process.
For the condensed version, not sure to understand: do you want to wait the italic version in order to make a variable font later? (with two axis: weight and width) Or do you want to onboard it now, following the discussion above, with Marc's changes?

@stephenhutchings
Copy link
Author

@emmamarichal It's the end of the day for me here but I'll look at getting this merged into master this week.

Let's move forward with onboarding the condensed without italics. Marc's changes to the sanscondensed.yaml file have been merged onto that branch, so they will come across at the same time.

@emmamarichal
Copy link
Collaborator

Ok, since I didn't know what was the decision about it, I didn't review the condensed version yet. Let me do it today, I'll add a comment here with my review :)

@emmamarichal
Copy link
Collaborator

Reddit Sans Condensed review

Weird caron position:

Screen.Recording.2024-02-07.at.13.56.24.mov

In uni022B, the macron seems very closed to the dieresis, compared to uni022A:
Screenshot 2024-02-07 at 13 59 09

Position issue:

Screen.Recording.2024-02-07.at.13.58.01.mov

@stephenhutchings
Copy link
Author

Thanks @emmamarichal I will look at getting these fixed as soon as possible.

@stephenhutchings
Copy link
Author

@emmamarichal These issues are now fixed and merged onto the main branch, with release tag v1.014.

@tr000y
Copy link

tr000y commented Feb 20, 2024

Hey @emmamarichal, following up here. Is anything else needed on our end to move forward? Ty!

@emmamarichal
Copy link
Collaborator

Ah yes sorry, I was quite busy last week! Will take a look this week and see if I can do a PR to the GF repo :)

@emmamarichal emmamarichal linked a pull request Feb 22, 2024 that will close this issue
@emmamarichal emmamarichal removed the -- Needs Upstream Resolution Upstream fix required before moving forward label Feb 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
I New Font II Accepted Non-commissioned projects that are accepted for onboarding
Projects
Status: Live
Development

Successfully merging a pull request may close this issue.

9 participants