Orbitron variable font remastering: progress log

197 views
Skip to first unread message

Eli Heuer

unread,
Jun 20, 2018, 9:26:13 AM6/20/18
to Google Fonts Discussions
Progress report: 2018-06-18

Hello all,

Yesterday I started work on remastering Orbitron as a variable font.

My working repo is here: https://github.com/eliheuer/orbitron/tree/vf-mastering
And the upstream repo is here: https://github.com/theleagueof/orbitron

Around 40% of the glyphs need some work to make them interpolate, the main issue is that some glyphs don't have the same number of points. See the attached image:

I have tried using fontmake to compile a variable font from the source ufos + a design.space file. I'm exporting my design.space from superpolator, which displays the interpolation, but when I try to load the fontmake generated .ttf in drawbot I only get one weight. I'm looking into fixing this now.

Dave Crossland

unread,
Jun 20, 2018, 10:10:03 AM6/20/18
to googlefonts-discuss
Thanks Eli!

I want to suggest using quadratic beziers instead of cubic, but having 2 off curve points so that it works similarly to cubic as a user experience, so that you can have the internal counters' roundness grow/shrink as the weight changes. 

The way it works with cubics is that if you place the off-curve points at the corner, there will be a small and inelegant rounding:

Screen Shot 2018-06-20 at 10.02.41.png



With quadratics, if you have two off-curve point at the corner, there is a sharp corner:

Screen Shot 2018-06-20 at 10.05.00.png



Then if you move the curve points back along the contours, you get a nicer rounded corner:
Screen Shot 2018-06-20 at 10.05.11.png



If you take a look at the rounding axis of Decovar (eg on www.axis-praxis.org) then you can see how that works during interpolation :)

GlyphsApp 2.5 now properly supports quadratic contours, if you use that app. 

Marc Foley

unread,
Jun 20, 2018, 10:15:18 AM6/20/18
to Google Fonts Discussions
Couldn't you script the corner rounding? there may be a script already?


Dave Crossland

unread,
Jun 20, 2018, 1:22:30 PM6/20/18
to googlefonts-discuss

Eli Heuer

unread,
Jun 21, 2018, 12:24:43 PM6/21/18
to Google Fonts Discussions
I'm converting to quadratic in RoboFont, for future reference here is the script I'm using:

from lib.tools.bezierTools import curveConverter
font
= CurrentFont()
coreFont
= font.naked()
for glyph in coreFont:
   
# convert from cubic to quad
    curveConverter
.bezier2quadratic(glyph)
   
   
# convert from quad to cubic
   
# curveConverter.quadratic2bezier(glyph)
   
coreFont
.segmentType = glyph.segmentType
print(“done”)


On Wednesday, June 20, 2018 at 1:22:30 PM UTC-4, Dave Crossland wrote:

Eli Heuer

unread,
Jun 22, 2018, 4:29:22 PM6/22/18
to Google Fonts Discussions


Progress report: 2018-06-22
Working repo: https://github.com/eliheuer/orbitron/tree/vf-mastering

I have a preliminary(uppercase only) version of the Orbitron variable font using quadratic beziers. I looked at Decovar and tried to implement the rounding of corners in a similar way: https://github.com/eliheuer/orbitron/tree/vf-mastering/fonts/variable


I was having some issues with the existing corner rounding scripts for RoboFont, so I've switched to using GlyphsApp for making the glyphs interpolatable. The GlyphsApp source file is here: https://github.com/eliheuer/orbitron/blob/vf-mastering/sources/Orbitron.glyphs

Has anyone used the above-linked CornerTools with RoboFont3? I couldn't get it to work. I'll give it a try with an older version of RoboFont and see if it's an easy fix. 


Dave Crossland

unread,
Jun 22, 2018, 4:43:05 PM6/22/18
to googlefonts-discuss


On Fri, Jun 22, 2018, 4:29 PM Eli Heuer <elih...@gmail.com> wrote:


Progress report: 2018-06-22
Working repo: https://github.com/eliheuer/orbitron/tree/vf-mastering

I have a preliminary(uppercase only) version of the Orbitron variable font using quadratic beziers. I looked at Decovar and tried to implement the rounding of corners in a similar way: https://github.com/eliheuer/orbitron/tree/vf-mastering/fonts/variable

Awesome!




Love to see this and the source @ https://github.com/eliheuer/orbitron/blob/vf-mastering/documentation/specimen-sources/animated-specimen-basic.py - glad to see Petr van Blokland's Typographics NYC workshop paying off :)



I was having some issues with the existing corner rounding scripts for RoboFont, so I've switched to using GlyphsApp for making the glyphs interpolatable. The GlyphsApp source file is here: https://github.com/eliheuer/orbitron/blob/vf-mastering/sources/Orbitron.glyphs

Has anyone used the above-linked CornerTools with RoboFont3? I couldn't get it to work. I'll give it a try with an older version of RoboFont and see if it's an easy fix. 

Gustavo Ferreira has been dropping drive-by rf3 PRs on various extension repos, you could review his GitHub activity for pointers on what to update... I think the RF3 docs seemed well prepared to aid in this effort :)

Cheers
Dave

Eli Heuer

unread,
Jun 25, 2018, 3:48:16 PM6/25/18
to Google Fonts Discussions
Progress report 2018-06-25

99% of the glyphs in the original UFO masters are now updated and interpolatable, see the .glyphs source or the .ttf in the fonts directory: https://github.com/eliheuer/orbitron/tree/vf-mastering



Next, I'm getting ready to start building with FontMake and fixing FontBakery errors.

Dave Crossland

unread,
Jun 25, 2018, 4:02:42 PM6/25/18
to googlefonts-discuss
:D

Felipe Sanches

unread,
Jun 25, 2018, 4:08:29 PM6/25/18
to googlefonts-discuss
I loved the grid in the animated-gif!
Very reminescent of the arcades era :-) Nice touch!

2018-06-25 20:02 GMT+00:00 'Dave Crossland' via Google Fonts Discussions <googlefon...@googlegroups.com>:
:D

--
You received this message because you are subscribed to the Google Groups "Google Fonts Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to googlefonts-discuss+unsub...@googlegroups.com.
To post to this group, send email to googlefonts-discuss@googlegroups.com.
Visit this group at https://groups.google.com/group/googlefonts-discuss.
To view this discussion on the web visit https://groups.google.com/d/msgid/googlefonts-discuss/CAOgqPYefzRn3-FMkZTRut61XoOt2Hp2xoXFVXOYKp9KqcH%3D7bg%40mail.gmail.com.

For more options, visit https://groups.google.com/d/optout.

Felipe Sanches

unread,
Jun 25, 2018, 4:09:48 PM6/25/18
to googlefonts-discuss
Eli, be sure to contact me if you face any issue with Fontbakery!

2018-06-25 20:08 GMT+00:00 Felipe Sanches <ju...@members.fsf.org>:
I loved the grid in the animated-gif!
Very reminescent of the arcades era :-) Nice touch!
2018-06-25 20:02 GMT+00:00 'Dave Crossland' via Google Fonts Discussions <googlefonts-discuss@googlegroups.com>:
:D

--
You received this message because you are subscribed to the Google Groups "Google Fonts Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to googlefonts-discuss+unsubscribe...@googlegroups.com.

To post to this group, send email to googlefonts-discuss@googlegroups.com.
Visit this group at https://groups.google.com/group/googlefonts-discuss.

Eli Heuer

unread,
Jun 28, 2018, 2:45:49 PM6/28/18
to Google Fonts Discussions
Progress report 2018-06-28:

I'm fixing FontBakery issues, at the latest push to the git repo I have 1 WARN and 1 FAIL: https://github.com/eliheuer/orbitron/tree/vf-mastering

I'm cleaning up the repo and fixing some of the glyphs with drawing issues. Dave and I have a Hangout chat scheduled with Micah Rich this Saturday at 10am, so I'm working to have the first pull request candidate ready for review by Dave or Micah tomorrow. 

The WARN I'm working on fixing is com.google.fonts/check/072: "Font enables smart dropout control in "prep" table instructions?"

The FAIL I'm working on fixing is com.google.fonts/check/062: "Is 'gasp' table set to optimize rendering?"

I need to add components and anchors that the original files didn't have. For example, the source file didn't have any combining marks, so I added those.  

I'm also having an issue with the VF output from FontMake not working well with DrawBot, but this is a low priority.

Dave Crossland

unread,
Jun 28, 2018, 2:49:51 PM6/28/18
to googlefonts-discuss

Felipe Sanches

unread,
Jun 28, 2018, 2:52:42 PM6/28/18
to googlefonts-discuss
hmmm ...perhaps we may want to suggest gftools in some fontbakery FAIL log messages, where we see fit?

2018-06-28 18:49 GMT+00:00 Dave Crossland <da...@lab6.com>:

--
You received this message because you are subscribed to the Google Groups "Google Fonts Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to googlefonts-discuss+unsub...@googlegroups.com.

To post to this group, send email to googlefonts-discuss@googlegroups.com.
Visit this group at https://groups.google.com/group/googlefonts-discuss.

Dave Crossland

unread,
Jun 28, 2018, 3:06:18 PM6/28/18
to googlefonts-discuss

Eli Heuer

unread,
Jul 6, 2018, 2:26:28 PM7/6/18
to Google Fonts Discussions
Progress report 2018-07-06:

I'm in the final stages of preparing Orbitron for a pull request back to the remote master.

Please see the working branch here: https://github.com/eliheuer/orbitron/tree/vf-mastering

Here are the final 4 FAILs and 2 WARNs I want to deal with today:


FAIL: com.google.fonts/check/001 Checking file is named canonically.

This just needs to be updated in FontBakery for variable fonts, so this isn't really a fail.


WARN:  com.google.fonts/check/054 Show hinting filesize impact.

I processed the file with ttfautohint already, not sure what I need to do to remove this WARN. 


WARN: com.google.fonts/check/035 Checking with ftxvalidator.

I have ftxvalidator installed on my Mac and running FontBakery from my command line doesn't give me this error, so I guess this is ok?


FAIL: com.google.fonts/check/037 Checking with Microsoft Font Validator.

Lots going on here, I'm looking into it: http://35.225.170.228/report/1323eb85-fba0-4bf5-b68e-7bdac926f946

FAIL: com.google.fonts/check/036 Checking with ots-sanitize.

I'm pretty sure I ran this though ots-sanitize, this seems like it could be an easy fix or a dumb mistake, looking into it. 

FAIL
 
ots-sanitize returned an error code. Output follows : ERROR: Layout: bad delta format: 32768 ERROR: GPOS: Failed to parse device table in value record ERROR: GPOS: Failed to parse value record in format 1 pair set table ERROR: GPOS: Failed to parse pair set table 0 ERROR: GPOS: Failed to parse pair pos format 1 ERROR: Layout: Failed to parse lookup subtable 1 ERROR: Layout: Failed to parse subtable 0 ERROR: Layout: Failed to parse lookup 0 ERROR: GPOS: Failed to parse lookup list table Failed to sanitise file!


FAIL: com.google.fonts/check/038 FontForge validation outputs error messages?

I'm looking into this:

FAIL
 
fontforge did print these messages to stderr: Ignoring 'HVAR' Ignoring 'STAT' Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table Bad device table

Dave Crossland

unread,
Jul 6, 2018, 4:03:55 PM7/6/18
to googlefonts-discuss, Felipe Sanches
Thanks! I think you can ignore all those except the device table one, and Felipe will update FB to prevent these false negatives from reoccurring :) 

For that one I think there is a fontmake issue about it

Khaled Hosny

unread,
Jul 6, 2018, 7:28:02 PM7/6/18
to 'Dave Crossland' via Google Fonts Discussions, Felipe Sanches
On Fri, Jul 06, 2018 at 02:03:41PM -0600, 'Dave Crossland' via Google Fonts Discussions wrote:
> Thanks! I think you can ignore all those except the device table one, and
> Felipe will update FB to prevent these false negatives from reoccurring :)

The device table issue is most likely FontForge not (properly?)
supporting OT font variation extensions.

Regards,
Khaled
Reply all
Reply to author
Forward
0 new messages