skosch / Crimson

The Crimson Text typeface
SIL Open Font License 1.1
518 stars 55 forks source link

TTF: regen. from OTFs #5

Closed adrientetar closed 10 years ago

adrientetar commented 10 years ago

The side effect of this is that TTFs are significantly bigger, e.g. 490Kb vs. 228Kb for the Roman weight when generating from SFD (I didn't see any visual difference vs. the old TTF, I mean besides the modified metrics).

Below are visual comparisons with Firefox 29 under Windows 7 DirectWrite rendering.

OTF:

otf

TTF:

ttf

For reference, the old TTF:

old-ttf

cc @rainerschuhsler, closes #3.

r? @skosch

rainerschuhsler commented 10 years ago

@adrientetar Interesting that the new TTF files are larger in filesize. I wonder what is contributing to that.

As far as how the new vs old render in Firefox, the hinting is identical. The only difference is the baseline, which we want to be the same as the OTF files. @skosch I'm good with this pull request.

rainerschuhsler commented 10 years ago

@adrientetar I found something else interesting regarding file sizes. I generated web fonts using your new TTF files with the same Font Squirrel settings I used on the OTF files, and the web fonts produced are roughly 20% larger in file size, yet they render exactly the same.

Here are some links if you would like to visually compare the two:

adrientetar commented 10 years ago

@rainerschuhsler Interesting. The TTF definitely looks better, but some weights are botched; this is the same problem I experienced with Fontsquirrel generator previously, look:

err

I have never seen this with FontForge, which is why I'm dubious about the generator.

rainerschuhsler commented 10 years ago

@adrientetar Wow, that is totally weird. I see what you mean now. I fired up Windows 7 and sure enough, I see exactly what you see, and in all of the latest versions of Internet Explorer, Firefox, and Chrome. I made separate versions of these pages that only load the EOT, WOFF, and TTF files respectively, and the issue persists across all formats in all browsers.

Interestingly, these pages render without issues in Firefox and Chrome on OS X. This leads me to believe that it's more of an issue with Windows than Font Squirrel, but who knows? Luckily, the web fonts in all three formats generated from the OTF files render correctly in all browsers on both Windows and OS X.

adrientetar commented 10 years ago

@rainerschuhsler What I did last time I used it was making repeated attempts till I got proper files, and it seems it's randomly giving working/botched files.
Might be specific to Windows rendering algorithms.

adrientetar commented 10 years ago

@rainerschuhsler Also, not sure why but your eot links show up under the baseline for me.

rainerschuhsler commented 10 years ago

@adrientetar

The TTF definitely looks better

I just compared the pages with web fonts generated from OTF files versus TTF files on Windows, and you're right, other than the botched weights, the fonts generated from the TTF files render better in Chrome and Firefox on Windows, but, in my opinion, the OTF-generated fonts render better in Internet Explorer.

As an experiment, I re-generated new web fonts from the OTF files but this time with Font Squirrel True Type Hinting checked, instead of Keep Existing, and the new web fonts produce better results across all three browsers on Windows with no botched weights.

Amazingly, all three of those pages render exactly the same in both Firefox and Chrome on OS X.

rainerschuhsler commented 10 years ago

@adrientetar

Also, not sure why but your eot links show up under the baseline for me.

That's because Firefox and Chrome do not support the EOT format, so it's actually loading the browser's default serif font as a fallback.

adrientetar commented 10 years ago

Amazingly, all three of those pages render exactly the same in both Firefox and Chrome on OS X.

It's no magic, Quartz renderer on Mac OS discards hinting information from TTFs and hints at runtime using its own proprietary algorithm. It's the same with FreeType on GNU+Linux, which ttfautohint uses to pack hinting instructions inside the font. (this is why you can't see botched fonts on Mac OS)

in my opinion, the OTF-generated fonts render better in Internet Explorer.

Personally I have the same impression in Firefox and IE (11), being that overall Fontsquirrel hinting is less blurry but it has more oddities in the letterforms – it's a compromise to make here.

rainerschuhsler commented 10 years ago

What I did last time I used it was making repeated attempts till I got proper files, and it seems it's randomly giving working/botched files.

I can confirm this. I repeatedly generated new web font files from your new set of TTF files and got mixed results each time. After the 9th time, I had a non-botched version of each weight. I combined the non-botched versions together and made yet another page:

Now comes the true test. I made two new pages to display the full alphabet at different sizes in each weight.

I've compared the two versions in all three browsers in Windows and there are minor differences that I prefer in both sets. @adrientetar What do you think?

skosch commented 10 years ago

Amazing! Since you guys are clearly the experts on this and I likely won't be online much for the next week or two, I've added you both as collaborators on the project, which (hopefully) means you can push changes to the repository. Thanks for your help!

adrientetar commented 10 years ago

I've added you both as collaborators on the project

Cool, thanks!

I've compared the two versions in all three browsers in Windows and there are minor differences that I prefer in both sets.

Likewise. Both of these have their own quirks and things done right. Both ain't perfect sadly. I would say that the TTF has less quirks at small sizes while the OTF has less at larger sizes. But both have quite botched ascenders terminals at small sizes for instance...

Maybe in the future this could be fixed by passing additional xgridfit instructions to ttfautohint (I know Eben Sorkin did that for Merriweather, the JUnicode font seems to do that also).

rainerschuhsler commented 10 years ago

@adrientetar If you had to pick one, which would it be? I'm leaning more toward the TTF-generated files. They're also a little smaller in file size.

adrientetar commented 10 years ago

@rainerschuhsler Let’s go with this then. Makes sense since TTFs have cubic Bézier curves which require less anchor points than OTF’s quadratics.

adrientetar commented 10 years ago

Just found another font generator that does ttfautohint pass: http://fontie.flowyapps.com/

It does not have advanced options like xheight matching through.

adrientetar commented 10 years ago

cc @lemzwerg: So I tried to hint Crimson with the latest ttfautohint (1.1) and the result were worse than with 1.0 (presented here). 1.1 gave better results than 1.0 with the Brill typeface through, so I guess it varies.

I can post screenshots if you are interested.

lemzwerg commented 10 years ago

cc @lemzwerg: So I tried to hint Crimson with the latest ttfautohint (1.1) and the result were worse than with 1.0 (presented here). 1.1 gave better results with the Brill typeface through.

I can post screenshots if you are interested.

Sorry for the late reply, I'm extremely busy right now; I will be able to check that in about a week. And yes, please send screenshots :-)

Werner
adrientetar commented 10 years ago

@skosch Will you update the SFDs? I'd rather work from the source at this point.

skosch commented 10 years ago

Thanks for the reminder Adrien! I've copied over the vertical metrics from Rainer's OTFs into the SFDs now; you should be able to see them in the repo. I hope there were no other discrepancies!

By the way: occasionally users request minor modifications to the font (e.g. #6: Correct horizontal position of caron on Latin Capital L with caron). I wouldn't want you to have to go through your build process everytime that happens, so once you've finished it would be truly amazing if we could think about automating what you did.

Thanks again! :)

adrientetar commented 10 years ago

Thanks man, I will cleanup the outlines first since it seems like there are points that aren't at extremas and so forth. I now have experience with FontForge so I will try to fix that (I wrote the details into the FontForge tutorial).