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

Preparing Ysabeau for Google Fonts #28

Open
yanone opened this issue Nov 30, 2022 · 51 comments
Open

Preparing Ysabeau for Google Fonts #28

yanone opened this issue Nov 30, 2022 · 51 comments

Comments

@yanone
Copy link
Contributor

yanone commented Nov 30, 2022

Hello,

I'm commissioned to prepare Ysabeau for release on Google Fonts.

There are some aspects of the font which are not following GF specs. I'll start with the most glaring example, which makes Ysabeau unpublishable in its current shape: The weight setup.

You've reused weight classes several times in three instances, but weight classes must be unique, allowing a maximum of 9 instances (from 100 to 900). GF specs also allow weight class 1 and 1000, tho they are currently not yet supported by the API, meaning they will be dropped, but in future updates those could be made available.

See https://googlefonts.github.io/gf-guide/variable.html#wght
and https://github.com/googlefonts/axisregistry/blob/main/Lib/axisregistry/data/weight.textproto

Given that you've carefully spaced out the weights across the axis, I'm not sure how to continue.

But tbh, I don't think there's a way around redefining the weights to meet the specs. Any way I look at it, only a maximum of 11 weights are possible for Google Fonts, with only 9 being publishable right away, with the other 2 (1 & 1000) having to wait until they are officially supported (and we shouldn't wait for that)

@CatharsisFonts
Copy link
Owner

Hi Yanone,

I'm commissioned to prepare Ysabeau for release on Google Fonts.

Great, welcome!

But tbh, I don't think there's a way around redefining the weights to meet the specs.

OK, that's a bummer, but not a showstopper. I'm seeing two main options:

  • Redefine the weight axis so as to use only 9 weights.
  • Decouple the two lightest weights and offer them as a separate family, «Ysabeau Hairline» (RIBBI). I expect the super dark weights to be more useful for the web than the super light ones, so it wouldn't be much of a change.

A compromise option for the above would be to simply cut the lightest two weights and not publish them on GF. That would leave the GF instances consistent with my GitHub ones. I suppose GF users could still access the Hairline via the Variable Font, right?

Then again, I've always thought that I should have made the «Bold» heavier than it currently is; it's a holdover from when I only had two masters. So even if I get to keep the weight grid as it currently is (in the compromise solution), it might not be bad to come up with a better naming scheme.

Cheers, Christian

@yanone
Copy link
Contributor Author

yanone commented Dec 1, 2022

So the decision is yours, but here are my opinions, in descending priority:

The weights are spaced out too densely. Few people actually have ever any need for such finely grained weights, and those who really do can use the VF and sliders/precise numerical values. Redefining them and shrinking the amount to 9 is a clean and sensible solution, but it will break compatibility with older documents that use your old setup. You can tell best how big the impact would be to existing users. You can always give it a major version bump (2.0), which in software development signifies a break in compatibility. This change can be communicated transparently to the users. No one is required to use an update.

Skipping over two defined instances but leaving them accessible in the VF through their numeral values is possible, and the cleanest solution if you want to keep full compatibility for at least 9 weights. But keep in mind that you'll likely end up wanting to redefine them anyway, as currently two adjacent weights share the same weight class, one of which you need to remove, so you'll end up with gaps in the weight progression as accessible through named instances. It's those intermediate weights you'd have to skip over and make available indirectly, not the lightest or darkest. So honestly, I don't know how much sense this makes. This feels wrong.

Releasing the two lightest weights as a separate family is very likely not in Google Fonts’ interest, given that GF specifications exist and this font is commissioned (to my knowledge). If you insist I can raise this option with the team for discussion, though.

@CatharsisFonts
Copy link
Owner

The fine-grained weights make the most sense around the area where you'd want to set text. Light, Regular, and Medium are close to each other, but they make a big difference when setting body copy. I'm not enough of a designer to know whether Light and Medium are still sensible text weights or whether I can give up that triplet.

In any case, it would make sense for (1) the current Regular weight to remain where it is; I believe I tuned it to match the gray value of EB Garamond Regular; (2) the current Bold to remain an instance, though perhaps better called Semibold, simply because it's a master. I suppose we could then toss out one dark and one light weight, or two light weights.

I'm fine with stepping up to v2 and breaking backward compatibility. As I said, I've always wanted to move «Bold» to a heavier instance; this seems like a good opportunity. I have a Legacy folder in the repo where I can put v1 font files for whoever needs them (but technically the older Releases are meant for that).

Cheers, Christian

@yanone
Copy link
Contributor Author

yanone commented Dec 1, 2022

Cool. Please drop me a hint here when you're done.

@cmahte
Copy link

cmahte commented Dec 1, 2022 via email

@CatharsisFonts
Copy link
Owner

CatharsisFonts commented Dec 4, 2022

Hi @cmahte,

good to hear from you. I'm not a typesetter or designer and can't really judge how useful Ysabeau really is. It's great to hear you find it useful! 😬

Wouldn't the variable font of Ysabeau allow you to match the weight of other fonts, and in a more accurate fashion? It sounds like you could use a vertical metrics axis in addition to the weight axis...

I don't like the idea of matching two versions of Ysabeau to Cormorant and EB Garamond; it sounds like there would be lots of conceptual overlap between the two. At least decoupling the Hairline and Extralight would make some conceptual sense since the Hairline is monolinear whereas all other weights are visibly modulated.

Cheers, Christian

@tphinney
Copy link

tphinney commented Dec 4, 2022

Building different versions of Ysabeau feels like overkill to me. Seems to me that one could just have a single variable font, and make available info on which weights one would use to map best to different weights of Cormorant or EB Garamond. This is a general question of weight mapping across fonts, and if one wants to do it really well, then a variable font + different choices depending on what you are matching it with, are normal.

@cmahte
Copy link

cmahte commented Dec 4, 2022 via email

@CatharsisFonts
Copy link
Owner

CatharsisFonts commented Dec 9, 2022

It looks to me like the best choice is to keep the current full spectrum of weights for (1) the variable font and (2) the instanced desktop fonts in the repo, and (3) to trim away the bottom two weights for the Google Fonts webfonts. It does seem a bit overkill to publish those two Hairline weights separately; I wouldn't mind if they were available in the VF only.

I probably also should resist the urge to rename the Bold weight if it currently matches EB Garamond's Bold.

@davelab6, is that in keeping with your commission?

@davelab6
Copy link
Contributor

davelab6 commented Dec 13, 2022

@yanone

allowing a maximum of 9 instances (from 100 to 900

Well, the allowable range is 1 to 1,000, but only 9 weights 100 to 900 will be accessible in Workspace apps.

I filed googlefonts/axisregistry#103 to discuss how to handle weight 1..99 and 901..1000, but, it may be useful to solve this by using the full axis range.

Releasing the two lightest weights as a separate family is very likely not in Google Fonts’ interest, given that GF specifications exist and this font is commissioned (to my knowledge). If you insist I can raise this option with the team for discussion, though.

yes, this was commissioned; for me though, releasing the two lightest weights as a separate family is indeed not in Google Fonts’ interest, because we want to reduce the # of families and use the full range of OpenType technology - axes and features - to provide powerful typography tools based on standards.

@cmahte

It would be a loss to lose any of the weights

I agree, and that's not on the table - you should always be able to access all the weights via the Weight axis. this discussion is really only about the named styles and how to handle them. Your feedback about the cultural context of the named styles, such that this family's bold matches others it will commonly be paired with, is valuable! :) Thanks

@CatharsisFonts
Copy link
Owner

@davelab6

but, it may be useful to solve this by using the full axis range.

Do you mean by assigning the Hairline to 1 and the Black to 1000? If this means making the Black inaccessible to some usages, that would be unfortunate. I consider the Black one of the more useful instances. Would it be possible to assign the two lightest weights to 1 and 50, respectively?

@davelab6
Copy link
Contributor

Yes

@CatharsisFonts
Copy link
Owner

@yanone

Great, then let’s go with the 1, 50, … variant!

Cheers, Christian

@CatharsisFonts
Copy link
Owner

Dear @yanone, dear @davelab6,

I've changed the weight classes as discussed. There are 12 instances per cut, though, so I assigned the heaviest 9 instances to 100–900 and called the lighest 3 instances 1, 25, and 50. I think that's preferable over losing access to the Black. Unfortunately, the Regular and Bold weights no longer match up to weight classes 400 and 700 now, but I suppose that's just a technicality.

Are we ready to proceed?

Happy new year! Cheers, Christian

@yanone
Copy link
Contributor Author

yanone commented Jan 12, 2023

Hi Christian,

I've reviewed your changes and I'm sorry to say that we're not quite there yet.

The weight classes as shown in https://googlefonts.github.io/gf-guide/variable.html#wght are not negotiable, certainly not for the Regular and Bold. Defining weights in CSS heavily depends on numeric weight values. We need the fonts to deliver the expected results for (at the very least) weights 400 and 700, ideally for all of them.

Before I suggest to remove and redefine weights, I'll play the ball back to you one more time to see if you can find a way to handle your weights that meet the specifications.

Thanks,
Yanone

@CatharsisFonts
Copy link
Owner

Hey,

sorry, I'm currently swamped in dayjob work...

Here's Ysabeau interspersed in EB Garamond:
Screenshot 2023-01-21 at 23 22 44

Screenshot 2023-01-21 at 23 23 48

And in Cormorant Garamond:
Screenshot 2023-01-21 at 23 24 51

Screenshot 2023-01-21 at 23 25 29

The size difference that @cmahte mentioned is pretty noticeable; the line height increases when I change a word to Ysabeau. As for weight, EB Garamond Regular feels closer to Ysabeau Medium than Ysabeau Regular to me, and for Cormorand Garamond Regular, Ysabeau Semilight is the better match. EB Garamond Bold is heavier than Ysabeau Bold, which aligns with my urge to shift Ysabeau Bold upwards. Cormorant Garamond Bold is much lighter than the current Ysabeau Bold and fits pretty well onto Ysabeau Semibold.

In conclusion, I don't think the current weight definitions of Ysabeau are perfect matches to those other typefaces, so it might be worth it to redefine the scale rather than to kick out individual weights and leave gaps in the process.

Is there anything we can do about the size difference, short of rescaling the outlines (which would mess up the Hairline)? Maybe change the UPM? I suppose changing the vertical metric parameters would work as well, but then some Vietnamese accents might get cut off.

Cheers, Christian

@tphinney
Copy link

Changing vertical metric parameters, other than UPM, would not affect the scaling of the font.

@cmahte
Copy link

cmahte commented Jan 22, 2023 via email

@CatharsisFonts
Copy link
Owner

What's the visual grid?

@cmahte
Copy link

cmahte commented Jan 22, 2023 via email

@CatharsisFonts
Copy link
Owner

Hi @yanone

I noticed the link you listed includes the weight 1000 ExtraBlack... so then I could stuff the two lightest weights into 1 and 50 and the heaviest weight (currently called «Black») into ExtraBlack. Presumably that would remove the latter from use in contexts where only weights 100–900 are allowed, but if I understand correctly, that's going to be fixed in the long run...?

In any case, that would keep the current Regular and Bold at 400 and 700, respectively, and we could be done with it. If anyone wants to use the blackest weight reliably, I suppose they'll just have to use the variable font.

What do yo think?

Cheers, Christian

@CatharsisFonts
Copy link
Owner

Implemented that in the newest commit (v2.000).

@yanone
Copy link
Contributor Author

yanone commented Feb 2, 2023

What do yo think?

I think that sounds good. Will take a look soon

@yanone
Copy link
Contributor Author

yanone commented Feb 9, 2023

The weight setup looks good as far as I can tell. Thank you.

I would now make a few changes myself in order to create VFs that are suitable for Google Fonts and send you a PR with those changes. At first I'll put those into a separate folder (not overwriting your VFs), and you can later choose to keep either one.

If possible, try to refrain from making changes to the sources yourself until my PR is ready to avoid data conflicts. Should not take long.

@CatharsisFonts
Copy link
Owner

Sounds good!

Do you think the vertical metrics need some tuning? I don't have the technical background to judge.

@yanone
Copy link
Contributor Author

yanone commented Feb 9, 2023

I'll take a look. That's part of my work.

@yanone
Copy link
Contributor Author

yanone commented Feb 9, 2023

Okay, I sent you a PR.

After you've merged it, please review DESCRIPTION.en_us.html.
I added a stub from the README, but maybe you could elaborate a bit? (max 2000 characters in total incl. HTML)
Please refrain from adding references to you as a designer or your foundry. Those will be found on fonts.google.com underneath the info text as part of the designer info already.

I noticed that even though you already have fonts on GF that you don't actually have a bio yet. Please fill this form for it. Thank you.

@Bronnel721
Copy link

@CatharsisFonts
Copy link
Owner

CatharsisFonts commented Mar 4, 2023

Hi @yanone,

sorry for the delay; Life happened.

I expanded the description a bit; does that work? Is it OK to use some HTML formating?

I also filled in the bio.

Cheers, Christian

@yanone
Copy link
Contributor Author

yanone commented Mar 10, 2023

@Sayhone721 @CatharsisFonts I’m investigating the accent misalignment. It appears like it’s a fault in the production toolchain, most likely glyphsLib. Will report back.

@yanone
Copy link
Contributor Author

yanone commented Mar 10, 2023

@Sayhone721 @CatharsisFonts
The issue lies with an outdated version of ufo2ft that I used to generate the previous binaries. The issue is solved in the latest version. I generated new fonts and ask to please merge them: #31
Thank you

@CatharsisFonts
Copy link
Owner

CatharsisFonts commented Mar 13, 2023

@yanone, I can no longer export Ysabeau with Glyphs because the custom parameter changing the family name for the spin-off instances is no longer there. Did you delete those as part of your work, or did that come from somewhere else? (Such as a cutting-edge Glyphs version?)

BTW, I'm too dumb to figure out how to browse older commits for a file to search for the change...

EDIT: I did figure it out. Apparently the change appeared during your recent work. Would you mind if I added the «local family name» info back into the instances?

@yanone
Copy link
Contributor Author

yanone commented Mar 14, 2023

I did that, but I'm not 100% sure that it was truly necessary. And anyways I wanted to add them back after I was done and forgot. My apologies.

The reason was that Google Fonts can't deal with any of those instances and will only onboard the first set of standard instances. But since I didn't deactivate the other instances, I'm not sure whether deleting their family names was even any good idea.

Please do add them back. If we ever need to publish an update of Ysabeau, we'll have to look at this topic again. It's possible that we may need to introduce a build script that separates the wanted from the unwanted instances in either a pre or post-build stage to make the font conform to GF specs while at the same time allowing you to generate it in whichever way you like. We've done that before.

@CatharsisFonts
Copy link
Owner

OK, done!

@yanone
Copy link
Contributor Author

yanone commented Mar 20, 2023

Hi Christian,

Google Fonts has been struggling with the 3 extra sets that you've defined. Despite similar sets already being out for Cormorant, we've been debating how to produce them practically, since we don't want to generate fonts with Glyphs for quality reasons.

I've dug out and adapted an old script that uses a tool called pyftfeatfreeze to freeze the features, and I want to ask you to analyze the fonts, to what extent they follow your intention. The tools don't follow the same approach as you do in Glyphs where you remove features and rename glyphs. Instead, it reads the feature code and applies the substitutions as they are defined in the features. So it's possible that there are some differences between the two approaches, and while I'm confident, I think you as the author should see whether the new fonts are legit.

Please find them in my fork at https://github.com/yanone/Ysabeau/tree/master/fonts/googlefonts/variable

Thank you

@CatharsisFonts
Copy link
Owner

Hi @yanone,

I tried to open the fonts in both Axis-Praxis and the Dinamo Font Gauntlet, and failed in both cases. Is there a better way, or does that mean the fonts are broken?

I'd think it's less crucial for Ysabeau to have spin-off fonts than it is for Cormorant, since I consider Cormorant Garamond the main cut of the family whereas in Ysabeau it's the default cut. But I suspect users might be less inclined to use small caps if they have to use OT features to access them.

Cheers, Christian

@yanone
Copy link
Contributor Author

yanone commented Mar 20, 2023

Hi @yanone,

I tried to open the fonts in both Axis-Praxis and the Dinamo Font Gauntlet, and failed in both cases. Is there a better way, or does that mean the fonts are broken?

Yeah, I get the same problem when I download the fonts from the Github link I sent you. Weird. Try these instead:
Archiv.zip

I'd think it's less crucial for Ysabeau to have spin-off fonts than it is for Cormorant, since I consider Cormorant Garamond the main cut of the family whereas in Ysabeau it's the default cut. But I suspect users might be less inclined to use small caps if they have to use OT features to access them.

The Google Fonts API currently doesn't expose Small Caps, Stylistic Sets etc to the users. In other words, they get dropped. Including those features is unfortunately a low-priority task for them and isn't likely to arrive before a few years. Until then, we need to publish spin-off sets.

@CatharsisFonts
Copy link
Owner

Yeah, I get the same problem when I download the fonts from the Github link I sent you. Weird. Try these instead:
Archiv.zip

Those work! I'll give them a look.

BTW, I noticed the stylistic sets are not numbered consecutively. That's because I based them off stylistic sets of Cormorant. Should I rename them?

The Google Fonts API currently doesn't expose Small Caps, Stylistic Sets etc to the users. In other words, they get dropped. Including those features is unfortunately a low-priority task for them and isn't likely to arrive before a few years. Until then, we need to publish spin-off sets.

No small caps? In that case, the spin-offs are absolutely crucial...

@yanone
Copy link
Contributor Author

yanone commented Mar 27, 2023

BTW, I noticed the stylistic sets are not numbered consecutively. That's because I based them off stylistic sets of Cormorant. Should I rename them?

I don't think anyone has an opinion on that really, since they're currently getting stripped of the fonts being served on Google Fonts. Please decide that on your own. Since they are separate families, there is no need to keep them in sync, that's my 2 cents.

@CatharsisFonts
Copy link
Owner

CatharsisFonts commented Apr 23, 2023

Hi @yanone,

hope everything's going well on your side...

I tried out the Ysabeau VF on Axis-Praxis and found the following bug:
Screenshot 2023-04-23 at 21 43 10

I was trying out the stylistic alternates of /Q/ (which work as intended!) when I discovered that /Q/i/ will be rendered as overlapping, as if the spacing were off on /Q/. This is not the case in my own version of Ysabeau. Note that no stylistic alternate of /Q/ is used before /i/.

EDIT: The /i/ is not to blame. When sliding the weight from Hairline to Bold, the /Q/ loses about half its advance width and then regains it. I suspect it has to do with /Q/ being made of two components. I tried the /f_f_l/ ligature and found the same behavior, which supports this theory.

Can you fix it?

Cheers, Christian

@yanone
Copy link
Contributor Author

yanone commented Apr 24, 2023

I’m out of office until May 2nd because of moving apartments. I can look at it then if it's not too late.

@yanone
Copy link
Contributor Author

yanone commented May 5, 2023

I looked at this and can't see what you see.

Could you please clarify which file and combination of OT features (if any) you used?
I'm looking at the files of the zip archive I posted further up in this thread.

@kenmcd
Copy link

kenmcd commented May 5, 2023

BTW, I noticed the stylistic sets are not numbered consecutively. That's because I based them off stylistic sets of Cormorant. Should I rename them?

At a minimum, they should be the same in the families Regular/Italic.
I have been documenting how different fonts localize for Bulgarian, and noticed you also included the same BGR alternates in the stylistic sets.
Roman uses ss11
Italic uses ss10
So if a user was using ss11 on some text, and clicked the italic button, that text is no longer going to be Bulgarian alternates.

There may be some other situations like that so you may want to consider making them all the same.

@CatharsisFonts
Copy link
Owner

Actually, Bulgarian is SS10 in both styles. Roman also had SS11 for the Frankfurt-style Eszett. I've added that to the Italic as well now for consistency.

@CatharsisFonts
Copy link
Owner

CatharsisFonts commented May 5, 2023

@yanone

I looked at this and can't see what you see.

Could you please clarify which file and combination of OT features (if any) you used? I'm looking at the files of the zip archive I posted further up in this thread.

Apparently this happens with the VFs in the fonts/vf/ directory on GitHub, but not with the ones in your ZIP-file. Phew! Sorry for the confusion.

@kenmcd
Copy link

kenmcd commented May 5, 2023

Actually, Bulgarian is SS10 in both styles. Roman also had SS11 for the Frankfurt-style Eszett. I've added that to the Italic as well now for consistency.

In looking again it is ss10 in both. Guess I had a brain fart.
Was looking at the variable fonts from the ZIP above.
Have got 28 fonts open at once working on this.
Guess I need to take a break.
Sorry for the confusion.

@CatharsisFonts
Copy link
Owner

Hey, apparently Ysabeau got uploaded! Yay! 😬

Though it doesn't seem to work for everyone yet, see issue.

Thanks for your work!

Cheers, Christian

@CatharsisFonts
Copy link
Owner

Hi @yanone,
so did you decide to upload the base font before the spin-offs were ready? Will they be added in a later wave?
Cheers, Christian

@yanone
Copy link
Contributor Author

yanone commented May 25, 2023

Errm, so, I’m not completely sure why Ysabeau is online and why the others are left behind, as I've been through some life hectic the last couple of weeks. But I'll try like this: I think I was still waiting for your assessment of the spin-off files that I asked for (I checked this thread), while the normal Ysabeau got onboarded in the meantime because I didn't put a hold on it.

@CatharsisFonts
Copy link
Owner

Heh, yeah, that would explain it. I'm also in the middle of some hectic time over here, preparing to move appartments and for my classes' upcoming matura exams. As a result, I haven't had time to go over the spin-off fonts with a fine comb, and won't have the time for at least another month.

Superficially, though, the fonts look good to me. I propose you onboard them, and if there are any hidden problems, we'll fix them quickly.

Cheers, Christian

@anthony0030
Copy link

Congratulations on getting your beautiful typeface onto google fonts! 🎉
Keep up the great work.🔧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants