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

Reproducible build process #58

Open
skosch opened this issue Mar 17, 2017 · 62 comments
Open

Reproducible build process #58

skosch opened this issue Mar 17, 2017 · 62 comments

Comments

@skosch
Copy link
Owner

skosch commented Mar 17, 2017

I am not an expert on font production. I don't know how fonts (should) behave across different browsers, applications and OS, let alone what users' requirements are regarding OpenType features, hinting, subsetting, webfonts, etc.

I would like to figure out a process (build script?) to take care of the above, in order to help me and others take care of the 30+ issues that have accumulated on this repo.

  • Does it make sense to convert sources to UFO?
  • In 2017, what is the best way to maintain OT features?
  • What binaries do users need? OTFs? TTFs? Subsetted/web-optimized? (or should we leave the latter to users?)
  • Run FontBakery on all commits? Worth the trouble, yes/no?
  • Anything else?

@katef, you have written a Makefile, and I would love to get your input. @adrientetar and @khaledhosny, you guys have been so helpful in the past – if you know of any resources on the current best practices, I would be grateful if you could point me to them.

Thank you!

@adrientetar
Copy link
Collaborator

Hey. These days I"d just use fontmake with UFO sources.

@skosch
Copy link
Owner Author

skosch commented Mar 17, 2017

Sweet! Glad I asked, I'd never even heard of that. That looks great

@skosch
Copy link
Owner Author

skosch commented Mar 17, 2017

I think we have to fix #42 first, there's no way around it. I've opened fontforge/fontforge#3048.

@adrientetar
Copy link
Collaborator

adrientetar commented Mar 17, 2017

I think we have to fix #42 first, there's no way around it.

You can try exporting to UFO from FontForge and then putting the fea files in the UFO (features.fea). I see they were cleaned up manually.

@skosch
Copy link
Owner Author

skosch commented Mar 18, 2017

So I've tried that, but at the end of the day I get the same errors in FontForge. There are a few glyph names that don't reference nonexisting glyphs in the font. FF doesn't tell me which ones they are, just the line numbers, and there's a ton of them. Some of it has to do with glyph naming (that I can take care of), but others I believe were introduced by Igino Marini's iKern program and have never existed at all.

I'd like to merge the .fea and ignore all nonexistent glyphs. Any suggestions?

@adrientetar
Copy link
Collaborator

adrientetar commented Mar 18, 2017

Well, I guess you could write a script to parse the FEA file and take the glyph names inside groups @​​group = [<glyph names>]; they are space-separated then for each name check if it's in the font and remove it in the file is that's not the case.
That's a bit gross but it should do the job, otherwise it might be possible to use fonttools.feaLib to parse the fea then access the glyph names in the AST.

font = TTFont()
glyphMap = font.getReverseGlyphMap()
parser = feaLib.parser.Parser(feapath, glyphMap=glyphMap)
ast = parser.parse()

@katef
Copy link
Collaborator

katef commented Mar 18, 2017

I'd like to merge the .fea and ignore all nonexistent glyphs.

Here's what I think happened: Igino Marini must've written a program which groups glyphs into categories, and defined kerning rules for those categories (and then I guess tweaks stuff by hand where necessary). And then his code which outputs those categories presumably lists every glyph which possibly belongs in them - even ones this particular font doesn't have. I imagine those are categories he's built up over time, across many fonts.

So I'm guessing he essentially did that, and ignored all the non-existent glyphs. If that's right, then us ignoring them would be harmless, since they were never present in this font.

Maybe we could produce some test PDFs which show kerning pairs, just to eyeball for obvious mistakes?

@skosch
Copy link
Owner Author

skosch commented Mar 18, 2017

I have arrived at precisely the same conclusion. I just spent all afternoon manually removing any and all references to the phantom glyphs and, after some hours of pythoning and regexing (and cursing) have managed to convert all sfd+fea files into .ufo folders. @adrientetar your comment was super helpful – I couldn't have done it without feaLib for sure, so thank you.

I am now trying to use fontmake to compile to OTF/TTF, but there seem to be issues with the outlines still (I'm getting errors like ufoLib.glifLib.GlifLibError: line can not have an offcurve.). Hopefully once those are taken care of I can push everything and we can start to work on other (real) issues.

@skosch
Copy link
Owner Author

skosch commented Mar 19, 2017

... alright, I've uploaded stuff to the ufo branch. According to FontBakery, a whole bunch of metrics numbers are off 🙄 but for now I have to get some sleep. Feel free to test and tweak things!

@davelab6
Copy link

@Fonthausen reviewed the ufo branch and found there is no kerning there, but the OTFs have it. Was the kerning done with iKern? I forget. Also, the UFOs have no anchors, which OTFs have.

So I propose that @m4rc1e convert the project to a Crimson.glyphs source base (which builds with fontmake) - however, I'm not sure if @skosch is determined to use FontForge?

@Fonthausen
Copy link

No file has anchors, I might have been unclear.

@m4rc1e
Copy link

m4rc1e commented Jul 13, 2017

@davelab6 @Fonthausen, I fancy dedicating my morning to this mission. I'll get the build chain and other stuff transferred into the .ufos.

@m4rc1e
Copy link

m4rc1e commented Jul 13, 2017

screen shot 2017-07-13 at 11 21 35

Kerning is coming back

@Fonthausen Anchors didn't exist in the .sfd files either. We'l ignore them for the time being

@m4rc1e
Copy link

m4rc1e commented Jul 13, 2017

I've almost completed the mastering. However, there's too many design inconsistencies for us to releaase this at the moment. I suggest a designer forks my fork and does the fixes to my gf mastering branch.

crimsontext

More than happy to have a hangout on how to do this.

@Fonthausen
Copy link

It is difficult to see on your gif, due to the lowres quality. With design inconsistencies, you mean accent positioning etc. or real form/outline problems.

I was asked by Dave to go through the known issues and solve them. My first step would be to add proper anchors and rebuild all combined characters.

@m4rc1e
Copy link

m4rc1e commented Jul 13, 2017

@Fonthausen it was more just a demo to show that there are multiple issues.

Its really up to you and @davelab6 how far you take this. Bare in mind this font is not Multiple Master based. This means you'll need to do the anchors across six fonts individually. I'd advise you just shift the components by hand (I know this is bad) and fix the issues which GF Regression reports.

@davelab6
Copy link

davelab6 commented Jul 13, 2017 via email

@skosch
Copy link
Owner Author

skosch commented Jul 13, 2017

@davelab6 to answer your questions:

  • I'm not married to Fontforge at all, UFO all the way
  • The kerning data I think is in the features.fea file. It was done with iKern but we had some trouble with it (see earlier discussion in this thread).

Also I vaguely recall the kerning data in the OTF having been corrupted, so if you took the kerning from there you may want to look at a page of specimen text to spot any problems (don't take my word for it, this is all too long ago; I hope I'm wrong).

I apologize for the sorry state the files are in. I'm all the more grateful for your contributions!

@davelab6
Copy link

davelab6 commented Jul 13, 2017 via email

@skosch
Copy link
Owner Author

skosch commented Jul 13, 2017

And yeah it's not MM unfortunately. However most of the semibold is an interpolation, so the glyphs are for the most part homomorphic. If your time and budget allows for it, consolidating it all into MM would be just amazing. I'm aware that's a lot of work though.

@m4rc1e
Copy link

m4rc1e commented Jul 13, 2017

@skosch don't worry about it. The project is great, let's make it better!

@davelab6 this project will take @Fonthausen some time to get right, it isn't a simple push new release as we expected :-)

@Fonthausen let me know when you're free so we can do some git magic :-)

@davelab6
Copy link

davelab6 commented Jul 14, 2017 via email

@madig
Copy link

madig commented Jul 31, 2017

Just chiming in to say that some best practices according to SIL are collected here: https://silnrsi.github.io/FDBP/en-US/index.html

Something making a UFO-based workflow harder is that doing multiple masters with UFO in Glyphs.app is somewhat annoying... Maybe some day I'll write a file type plugin that uses designspace files...

@skosch
Copy link
Owner Author

skosch commented Oct 19, 2017

@Fonthausen I can't help but ask – when do you hope to be able to take this on? Now that Montserrat is done, and I love how that turned out! ... is Crimson up next? :)

@Fonthausen
Copy link

@skosch I would love to take Crimson as the next project. But at the moment I am working on other none GF font projects. Maybe you can ask @davelab6 if he knows how the future planning will be for Crimson.

Montserrat ended in being a large project and leaving me less time for other ones.

@skosch
Copy link
Owner Author

skosch commented Oct 19, 2017

I see, no worries Jacques. @davelab6 what are your thoughts?

@davelab6
Copy link

davelab6 commented Oct 19, 2017 via email

@skosch
Copy link
Owner Author

skosch commented Oct 19, 2017

Ah, that's a bummer. I'll be looking forward to 2018 then!

@EbenSorkin
Copy link

On one hand this seems like a good candidate project to be turned into a Multiple Master in the sense that the style of type will be seen as basic/core to a font Library. The argument against might be the existence of Spectral. But Crimson is a 16th C type and Spectral is really much more 19th C

@xenocrat
Copy link

I never sat down with a design concept; Crimson kinda just grew into the Frankenstein that it is today.

@skosch I just want to say that I think you do yourself a massive disservice with this statement. I absolutely adore Crimson (v2) with all its quirks and peculiarities. I'm using it in a couple of places and I think it is a lovely font; crisp and commanding, but also with a whimsy that I find very rare in serif faces. I would be reluctant to exchange it for anything else.

I'm very pleased to see any progress toward stabilising/normalising the build process and squashing the gremlins, so that Crimson can really shine as it deserves to.

@davelab6
Copy link

davelab6 commented Feb 17, 2018 via email

@Fonthausen
Copy link

Fonthausen commented Feb 17, 2018 via email

@skosch
Copy link
Owner Author

skosch commented Feb 18, 2018

@xenocrat Thank you for your kind words; I meant to say that with a wink, not with bitterness. I'm pleased as punch that the font is liked by so many, but I'm just a dabbler and I have no delusions about it (currently) being a professional-grade product, that's all.

@davelab6 Let's talk naming. I'm not emotionally invested in this decision but if you want to keep v1 around (which given precedent I understand) then it may be wise to offer v2 as something other than just Crimson. Opinions on suffixes, anyone? Crimson Neue?

@Fonthausen Any thoughts yet on the character set?

@xenocrat
Copy link

Crimson Neue gets the job done, but imho it doesn't really speak to the character of this typeface.

Crimson Prime? (inspired by Courier Prime)
Crimson Next? (inspired by Avenir Next)
Crimson Novus? (inspired by Nimbus Sans Novus)

I quite like the sound of Crimson Prime.

@skosch
Copy link
Owner Author

skosch commented Feb 18, 2018

Crimson Prime. I like that too. Novus/-um/-a is awkward with non-latinate names.

@Fonthausen
Copy link

Fonthausen commented Feb 18, 2018 via email

@skosch
Copy link
Owner Author

skosch commented Feb 18, 2018

Carmine, Vermilion, Cinnabar, Cochineal are all taken. Minium isn't but I'd rather not feed accusations that the font is a Minion knockoff. :)

@katef
Copy link
Collaborator

katef commented Feb 19, 2018

i vote for Kateson :D

@davelab6
Copy link

davelab6 commented Feb 19, 2018 via email

@Fonthausen
Copy link

Hi Dave (@davelab6) & Sebastian (@skosch),

I have had a good look at Crimson and Crimson Text. The idea is to develop both into full grown serious typefaces to either GF Plus or Pro encoding. Standalone, but still family members :)

Sebastian, Dave asked me to make a time table on the work on both families. Please read it and tell me if I missed something. Maybe you don’t agree with my intentions/solutions. This would help to make a good estimate of the work.

Dave, you should have a look at the highlighted issues/questions.

Crimsons Text

After having a good look at Crimson Text (CT) I noticed the following.

– CT consists of a Latin with Vietnamese, with matching smallcaps. The Regular and Italic have Cyrillic and Greek.
– Including superior and inferior numerals.
– Including superior and inferior upper/lowercase characters.
– Including superior and inferior punctuation.
– Including smallcaps punctuation.
– Tabular and oldstyle figures. Proportional lining and smallcaps figures.
– Ligatures.

Design/work:

– The outlines have to be checked, with care. Some are quite bumpy, but this also adds charm (and function) to the typeface.
The widths of the glyphs have to be reviewed. Some are too narrow, some too wide. This influences the overall rhythm. Visually most obvious in the uppercase.
– Detailing, like the ear on the lc /g, or the right bottom serif on lc /r among many other issues :)
Spacing and kerning needs to be redone completely.
– Typeface has no anchors. Anchors will be added and all composed characters re-generated.

– The Regular and Italic have Cyrillic and Greek. Bold and Bold Italic need this as well. Maybe Dave has numbers on how often the Greek/Cyrillic is actually being used ?
– The Latin characters all have smallcaps counterparts. Do we maybe need that for Greek and Cyrillic as well ?

The Bold weight should be overall wider for the use in small grades, as the typeface is intended for.
– There is one other important design issue I noticed in the Bold weight. The weight distribution is a lot more vertical than in the Regular. In the Regular it is similar to Garamond, Sabon etc. The Bold is more like Baskerville. I think this should be changed. Unless this is part of the original design philosophy/concept ?

Should we maybe add tabular old style figures as well ?

– CT has some mathematic characters, but not a complete set. Do we need all the superior/inferior characters/punctuation/math signs etc. ? Or do we leave them in for legacy issues ?

Crimson Prime

After having a good look at Crimson Prime (CP) I noticed the following.

Sebastian, for what size did you intend to use CP ? Mid size text or display size ? Spacing, kerning etc. would be different each case.

– CP consists of a Latin with Vietnamese. The Regular and Italic have Cyrillic and Greek. The Bold has an incomplete Greek layout and no Cyrillic. Bold Italic has no Greek and no Cyrillic.
– Matching smallcaps. Excluded the Bold Italic.
– Only the Regular has a complete set of superior and inferior numerals.
– Including smallcaps punctuation. Excluded the Bold Italic.
– Tabular, lining and oldstyle figures. Bold has no oldstyle figures.
– Ligatures.

Design/work:

– The outlines have to be checked/corrected, with care. Some could be a lot smoother but this also adds charm to the typeface.
The widths of the glyphs have to be reviewed. Some are too narrow, some too wide. This influences the overall rhythm. Visually most obvious in the uppercase.
– Detailing.
Spacing and kerning needs to be redone completely.
– Typeface has no anchors. Anchors will be added and all composed characters re-generated.

– Overall width Bold looks like it should be in order.
– Several characters in the Regular/Bold and Italic/Bold Italic should match better.

Do we need to work/add the Greek and Cyrillic at this moment, or do we want to make it a future project ? This would mean we would take it out for this project.

Should we maybe add tabular old style figures as well ?

– CP has some mathematic characters, but not a complete set. Do we need this for this project ?

We are going to develop both families as standalone, but still as family members. Does this mean both family should have the same encoding and containing the same (amount of) glyphs ? For CP this would mean extra work.

Best regards,
Jacques

@skosch
Copy link
Owner Author

skosch commented Feb 20, 2018

That's quite the list :)

I do agree with your design suggestions – outlines, glyph widths and details are the main issues for sure.

CT I'll leave up to you completely.

CP was intended for (and is mostly used for) body text. I think it currently looks best headline-sized. That's part of the reason that I think exploring simpler, sturdier serifs and terminals is a good idea.

I'm actually perfectly happy with Igino's iKern metrics for the CP – is there anything in particular that makes you want to redo the spacing/kerning completely?

I'm also curious if @davelab6 has usage stats on the more exotic characters, as I'm not sure what's worth maintaining and what isn't (quality > quantity). A solid Greek set, mostly for math use, would be on my personal wishlist but I've no idea whether that's a worthwhile time investment. Small caps are nice as well. But I'm not personally attached to all the inferiors/superiors etc.; unless Dave considers it necessary I don't think CP and CT need to have the exact same character set.

Lastly, are you going to interpolate a semibold again?

@Fonthausen
Copy link

Fonthausen commented Feb 20, 2018 via email

@skosch
Copy link
Owner Author

skosch commented Feb 20, 2018

Do you want it to be altered, so it will function better in small sizes ? Asking to know if I understood it right. I thought it was like a display counterpart...

It's a redesign of CT, which was intended for body text, so yes: giving it a subtle bit more bite at smaller sizes would be something I would aim for.

As much as I like the idea of creating a proper text/display-pair family ... I believe the reality is that users right now use both versions mostly for body text, and the characters/skeletons of the two are quite different. Crimson Prime Display would be better off as its own MM axis :)

@davelab6
Copy link

davelab6 commented Feb 21, 2018 via email

@Fonthausen
Copy link

Fonthausen commented Feb 21, 2018 via email

@Fonthausen
Copy link

Fonthausen commented Feb 21, 2018 via email

@Fonthausen
Copy link

@davelab6
Any thoughts on the Greek and Cyrillic for CT and CP ? If so, with or without smallcaps counterparts ?

@Fonthausen
Copy link

This week I started working on Crimson Text, a Garamond inspired text typeface.
Crimson Text (CT) is a project from Sebastian Kosch.

The last few days the Google team, Kosch and I have spoken on what could be done on CT.
Since the last release, Kosch has been working on another version of Crimson, Crimson Prime (CP). (The outlines of the new CP are being used in Amiri on GF.)
CP is more sharp and somewhat smoother and it is according to Kosch developed as a more contemporary version of CT.

We have discussed how the two versions relate to each other and where they differ. Would it be an option to develop CP as a standalone project or not ? Crucial is that they should differ enough in design and purpose.

On GitHub I made a list of issues I think are needed to take CT to the next level. We also agreed on making a much wider range of weights to enable CT to become a versatile and very usable typographic tool. With this amount of intended work in the back of our head, we discussed if it might also be an idea to take the best from both designs, CT and CP, and merge them it into one strong authoritative family.

This is the first step I will undertake this week. I will work on the letters of the word Adhesion of Hamburgerfonts and make a deck where everything is compared and explained. This will give a good insight on the initial part of the development.

@davelab6
Copy link

davelab6 commented Mar 14, 2018 via email

@Fonthausen
Copy link

This week I have been working on the draft for the new version of Crimson. In the link below you will find my deck (presentation) with a description of my first draft.

https://docs.google.com/presentation/d/1owMuJz3xwXSvB_3cevZcjniWFaS-iL4qgvqlYxiI7Pk/edit?usp=sharing

@xenocrat
Copy link

Thank you for sharing this. It's interesting to see this glimpse into your process!

@Fonthausen
Copy link

@xenocrat You are very welcome !

Here you can find an even more elaborate step by step project explanation:
https://groups.google.com/forum/#!topic/googlefonts-discuss/lZGJqeigS3I

@xenocrat
Copy link

I have been keeping a close watch on the progress of Crimson Pro these past months. Now the work is done, this seems like an appropriate time and as good a place as anywhere to say a huge thank you to @Fonthausen, @davelab6, and @skosch. Jacques, I am absolutely thrilled with what you have done to Sebastian's lovely "Frankenstein" creation. Crimson Pro is a gorgeous typeface. Thank you all for your hard work and dedication.

@Fonthausen
Copy link

Hi Daniel ! Thank you very much for your nice compliments. It feels like a nice reward after the energy we put in the project.

I took the liberty of looking on your website and saw you are using Crimson Pro ! The design is minimalistic and therefore one can concentrate on the content of your articles. I like it very much and am happy that Crimson was the type of your choice. To me it feels like a proof of concept, readability and character without disturbing the reader. Thanks.

I haven't had the time to read all your articles, but I certainly will try ! :)

@skosch
Copy link
Owner Author

skosch commented Dec 14, 2018

Wow, that looks great indeed. Those italics are so. nice.

@xenocrat
Copy link

Hello @skosch and @davelab6. Can you say when Crimson Pro will be published on Google Fonts? It was merged into the GF repo in January but it hasn't yet appeared on the website.

@thekalinga
Copy link

Appreciate if someone can help w.r.t @xenocrat question. Thanks!

@xenocrat
Copy link

Today I noticed that Crimson Pro has been published on Google Fonts. Yay!

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

No branches or pull requests

10 participants