Collaborate with other libre font editor web app projects on common libraries
See original GitHub issueWow! Massive congratulations on the kickstarter - I’m sure you’ll go way beyond your modest target! 😃
There are a few other font tool web apps that I’d like to suggest collaborating with:
Typism (by @xxyxyz) is a traditional outline font editor for SVG fonts. It exports SVG fonts to be compiled offline, the same as Prototypo.
Glyphr Studio (by @mattlag) is a traditional outline font editor for OpenType-CFF. It exports TTX xml to be compiled offline.
Metapolator (by @simonegli and many others) is a parametric font editor that applies ‘convention over configuration’ to hijack metafont; it can do interpolation of masters made with outline editors (so-called ‘superpolation’) and it can derive new masters from 1+ existing ones, using ‘off the peg’ metafont programs (‘metapolation’.) It is a reboot of the Metaflop project, which has a client-side UI of slides that set parameters of true (hand-coded) metafonts, and a server-side system to run metapost on the metafont with the given parameters and return an OTF as a web font. The first prototype of metapolator reused this design. The new prototype is 100% client-side, using NodeBox’s opentype.js for superpolation and a metapost.js (made with Emscripten) for metapolation.
Font Bakery (maintained by @hash3g) and now is a continuous integration server and web interface for UFO and TTX format fonts stored in git. It clones a repo, locates font files to build, runs tests on UFO and TTX source fonts, compiles them with FontForge and fontTools (and ttfautohint) and runs more tests on the font binaries. It provides a utilitarian UI to proven server-side font tools, and Bootstrap is more than enough. However, a fonts dashboard to droni.io might be better, as that CI server has good momentum and would allow Font Bakery to focus on the things that make it unique.
Impallari Testing Tool by @impallari is a document-driven typeface test app, to test the design of a type. By improving this and making the tests encapsulated, I hope it can be embedded in other tools - all those I just listed, and prototypo.
I think there is a lot of value in the fundamentally different approaches each project takes, and I do not propose merging them. Yet I see 3 clear common areas that all projects will benefit from, by pooling our limited resources on our common goals to maximize our impact 😃
Git and Github repo reading and writing
Its great for studios of designers to store known-good versions of their projects in git, even if they aren’t using for every little revision of every file.
The Github REST API is powerful enough that it can serve as a ‘file system’ to web apps, and http://prose.io is a great example.
Font Bakery already uses git to structure its input of UFO/TTX font files, and it would be great if all font editor web apps also had this option.
Once a web app has access to a binary font file, of course, then its time for…
Client Side SFNT Reading
opentype.js by Frederik @fdb De Bleser, is seeing active community contributions and core development thanks to Prototypo 😃 So this currently seems to be the leading candidate, and both prototypo and metapolator use this.
ttf.js At the Libre Graphics Meeting, I met in person with Denis @moyogo Jacquerye (of DejaVu fonts fame, now a software engineer at Dalton Maag) who is working on the development branch of ttf.js, which is very similar to opentype.js, written in coffeescript. It would be great to not duplicate this effort.
ufoJS Also at LGM was Lasse @graphicore Fister, who worked on ufoJS a while ago, and will be much more active on this in the coming months as part of metapolator. Perhaps this code can partner with another.
binary-parser Mike @Pomax Kamermans worked on this a while back, and many other fonts-in-browsers experimental utilities, and of course was involved in pdf.js. The spec file approach is neat, and follows Brandon @Benvie Benvie (also at Mozilla)'s approach from 2 years ago in reified ttf example
opentype Bram @bramstein Stein works in Adobe Typekit and made this, which already (I think) has more OTL table support than ttf.js or opentype.js. Again, it would be great not to duplicate this effort.
fontTools In theory, @behdad’s fontTools could be transpiled to C and then transpiled to JS. This brings us to the next item…
Client Side SFNT Writing
Louis-Rémi emailed me a while back about funding opentype.js to add font binary generation, and I’ve since emailed a bit with Frederik about it. But neither thread reached a clear conclusion…
I know Glyphr Studio, Prototypo and Metapolator would love to have this. The immediate option is to do it server-side, using fontTools or FontForge.
Glyphr offers TTX files as a download format, and requires users to run fontTool’s ttx offline to build binary files.
If we make a fontTools.js, then Glyphr could immediately provide binaries 100% client-side.
All other font editor web apps would then merely need to export TTX files in the same way.
It would also be possible to put FontForge through Emscripten, although a fontforge.js would be heavier than a fonttools.js. (The next stable release of fontforge is coming soon - June?)
Eventually @adobe will make the FDK libre, then we could also make a fdk.js
The nice thing about FontForge is that is has so many features. The pity is that its UI is from the 90s (or earlier 😃 Which leads me to…
Font Editor UI Toolkit
Both metapolator and prototypo use AngularJS as an MVC framework. Glyphr Studio uses its own.
This month Alex @Troush has been shedding Metapolator’s python parts and taking it full client, starting with a directive for an opentype.js interpolator using paperjs and-or two.js for <canvas>
rendering. He has also set up bower and gulp (instead of grunt) to structure the setup process.
Angular promises the possibility of making a ‘font editor web app toolkit’.
I would like to suggest we share as much as possible.
Issue Analytics
- State:
- Created 9 years ago
- Comments:47 (9 by maintainers)
Top GitHub Comments
Sure, no need to capture it elsewhere for me.
Since the last comment, a few summary thoughts:
https://www.google.com/search?q=opentype+variable+fonts happened - which is really great 😃
@devongovett has done an amazing job with https://github.com/devongovett/fontkit (eg http://fontkit-demo.now.sh using it as a polyfill for variable fonts) and it seems to be leading the other js sfnt libraries discussed above
https://github.com/byte-foundry/prototypo/ has been continuously developed, although not as a typical libre software project
@metapolator went very far but not far enough to be really useful to end users as prototypo now is, although I expect @graphicore will continue to push it forwards
glyphr studio is undergoing a complete rewrite, which as a hobby project is fine per https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/ 😉
@adrientetar launched https://github.com/trufont/trufont which is a Python 3 font editor platform that uses many of the foundation libraries of RoboFont, but with PyQt instead of Apple’s Cocoa library
This issue is collecting quite a bit of dust in my github.com/issues/mentioned list because it’s been open for 2 years since the last comment: is it possible to close this and capture the information in it on a repo wiki page instead?