Brick by Brick, the FontStruct Blog

The FontStruct Blog

OpenType Downloads (with CFF outlines)

News | | March 4th, 2021

Note: This blog post is about a FontStruct feature which is currently exclusive to FS Patrons.

CFF vs TrueType contours

Today we’re excited to introduce a new kind of download for our Patron FontStructors: OpenType font files using CFF outlines with the .otf filename suffix.

All FontStruct downloads have been OpenType font files for quite a while now, but OpenType fonts can contain different kinds of “outline” (in FontStruct, the outlines are the actual brick shapes).

Hitherto, we have only offered downloads with TrueType outlines. From today, we’re also offering CFF outlines.

CFF outlines differ from TrueType in several ways, including:

  1. (mostly) Smaller file sizes.
  2. (often) More accurate and economical description of curves. For example, rounder circles.
  3. (optionally and experimentally) “fixed point” coordinates, which may facilitate more accuracy of detail for certain downloads.

Smaller File Sizes

The new CFF downloads will often be smaller than their TrueType counterparts. For example, the illustration shown below uses the font “zporty eYe/FS” by elmoyenique. This has a font file size of 444K for the TrueType download, and only 162K for the CFF – that’s much less than half the size. File size is important, as fonts take up memory and large fonts can crash software. Some downloaded FontStructions are very large!

More Accurate and Economical Curves

In a CFF file, curves are represented using two control points (these curves are called “cubic béziers”), as opposed to the TrueType outline format which represents curves using single control points (“quadratic béziers”). For many FontStructions this difference may not be noticeable, but in some cases you will find that CFF outlines are more accurate. For example, you can see the distinction clearly in the case of circular bricks, especially when you use a great number of small circles in your design:

CFF vs TTF

Some of you may have noticed the dough-like melting which afflicts FontStruct’s circle bricks in TrueType downloads. Many years ago, Luc Devroye shamed FontStruct on this point, and quite right too! Things have improved in the intervening time, but CFF outlines now give us our best, and most reliable circles ever!

Fixed Point Coordinates

We’ve also added an option to create CFF outlines with “fixed point” coordinates. I’d like to stress that this is quite an unusual format variant. As far I as I know, it’s seldom employed in professional type production.

In a standard OpenType font, all the contour points are placed on a grid of possible positions, the resolution of which is called the “em square”. Roughly speaking, if you have an em square of 1000, then all your contour points must sit on a 1000 x 1000 unit grid. “Design with Fontforge” has a good page explaining the em square format.

OpenType fonts with TrueType outlines traditionally use an em square of 2048 or 1024 (the former is the default for FontStruct) while OpenType with CFF outlines generally have an em square of 1000 (Although it can be more. We’re trying 2000 as FontStruct’s default for CFF.)

Crucially, all the points in your designs have to sit exactly on the intersections of this notional grid. So, in a standard OpenType font, despite it being an infinitely-scalable vector format, there are very clear and finite limits as to where your points can sit. You can position a point at exactly a grid coordinate of (100,100), but not at (100.5, 100.5). i.e. You can only have integer (whole number) coordinates.

From today, FontStruct also gives you access to an option, allowed by CFF, which overcomes this limitation. You can choose to define your coordinates as “fixed point” numbers. This will not affect your design work the FontStructor, but it will affect accuracy when it comes to converting your design to a font file. Using fixed point numbers, the font generator can position points more “freely”, at 100.5, 100.5 or even 100.3333, 100.3333 etc. if it needs to.

To be honest, I’m not sure how useful this fixed-point coordinate option will prove to be, but considering how complex and detailed some FontStructions are, it may help in exceptional cases. We will see!

It’s important to note, that if you do opt for fixed-point coordinates, this will make your download sizes significantly larger.

For background on this topic, I recommend the seminal article by Read Roberts at Typekit.

Download Configuration

To support our new download format, we’ve added some additional download configuration options to the FontStruction pages, and also one important option on your personal settings page.

On your personal settings page, you can opt to allow any of your shared designs to be downloaded by others as OpenType fonts. You can also override this setting on a FontStruction-by-FontStruction basis.

On the FontStruction page, you can access the new options by clicking on “Advanced Settings…”

New Download Settings

– Here you will find a couple of familiar options along with some new ones.

You can now choose to:

  • Share alternate formats (i.e. OpenType CFF) with other users (only if you are sharing the FontStruction for download of course). This setting overrides the global setting from your personal settings page.
  • Choose an em Square for TrueType and CFF downloads from a list of sensible options.
  • Use fixed point coordinates. (experimental)

Interested in using CFF downloads today? Not a patron yet? Learn more …

Happy FontStructing!


4 Comments

  1. elmoyenique

    WOW! The time begins to study in depth and digest the new advances. And thanks for choice my “zporty”, dear Boss.

    elmoyenique — March 4, 2021 #

  2. four

    Yes, looking forward to trying this out!

    four — March 4, 2021 #

  3. BWM

    The “Learn More” Link leads to a 404 error…

    BWM — March 9, 2021 #

  4. Rob Meek (meek)

    Thank you @BWM. That’s fixed now.

    Rob Meek (meek) — March 12, 2021 #