Skip to content

Variable fonts WERE about file size — and still are on your phone

The fashionable take is that variable fonts are not about file size. The fashionable take is wrong, or at least wrong by half.

Variable fonts are absolutely about file size. They are about it the same way airliners are about fuel economy: the design of the thing only makes sense once you accept the constraint. The constraint, on every device that fits in a pocket or a wrist, is bytes.

Latin makes file size look optional

If your typography lives on a desktop browser, in English, with maybe Spanish or German in the same family, you can ignore weight. A static Roboto family is a few hundred kilobytes. The variable version saves you something, but the savings disappear into the megabyte page weight that already shipped a hero video and a JavaScript framework. The file-size argument feels like accountancy.

This is the part of the room where the “never about file size” line was written. It is true for that room. That room is not the world.

The world is multilingual and the device is small

A modern phone or smartwatch has to render text in every language the user might touch. That means at minimum:

  • Latin with diacritics for European languages.
  • Cyrillic and Greek for Eastern Europe and the Balkans.
  • Arabic and Hebrew for right-to-left readers.
  • Devanagari, Bengali, Tamil, Gujarati, Telugu, Kannada, Malayalam, Gurmukhi — every Indic script the OS supports.
  • Thai, Lao, Khmer, Burmese.
  • Chinese (Simplified and Traditional), Japanese, Korean.
  • Emoji, which is its own font, and a fat one.

Each of these arrives as a separate font file because they have to. Source Han Sans (the joint Adobe/Google CJK family that ships as Noto Sans CJK on Android) is a hundred-plus megabytes across its weights. Noto Sans Devanagari is roughly half a megabyte per weight; multiply by seven weights and you have a few megabytes for one script. Repeat for ten scripts. Now do it on a watch with a strict app-storage cap and a need to keep several weights live so the UI can render hierarchy without falling back to bitmap.

A smartphone OS bundles fonts for billions of users it has not met yet. A smartwatch syncs fonts down a Bluetooth pipe to a battery-bound 32 GB. Web platforms in India and Southeast Asia serve users on metered data plans where every megabyte is a real cost. The file-size argument is not vanity in those rooms. It is the entire reason the format exists.

What variability actually buys

OpenType Font Variations, agreed in 2016 by Apple, Adobe, Google, and Microsoft, lets a single file describe a continuous design space — weight, width, optical size, custom axes — instead of a discrete grid of static cuts. The renderer interpolates the exact instance the UI asks for.

For Latin that means going from eighteen files to one. For CJK it means a single ~25 MB variable family replacing a ~125 MB static one across weights. For an Indic typeface it means one weight-range file in place of seven static weights. The savings compound across scripts and across devices, and they compound exactly where bytes are expensive: in flash storage on the watch, in OTA update windows on the phone, in cellular data on the train, in cache budgets on the next screen.

And then, also, the control

Once you stop paying for weight in megabytes, you start using it as a continuous parameter. UI teams pick weight 525 because that is what the column wants. Motion designers animate the same axis that makes a glyph bolder to make it land harder. Editorial teams adjust the colour balance of a paragraph by a slider rather than a dropdown. Polish, Spanish, Chinese, Japanese, and Korean tutorials over the past few years have all converged on this practical reading: weight, width, slant, and optical size become design tokens, not file picks.

This is the half of the variable-font story most people lead with, because it sounds more interesting than logistics. It is also strictly downstream of the file-size win. You only get to play with the slider on the wrist after the bytes have already left the data centre.

What the production tool has to do

Building these files needs capable software. FontLab 8 treats the variation space as the primary unit. Open a Light and a Black master and the engine establishes the axis. Add an intermediate master where linear interpolation muddies the middle weights. Tag a single-storey g to swap in past weight 850 via rvrn. Match Moves propagates a node adjustment across all visible masters at once — often the difference between shipping and missing a deadline on a serious multi-script family.

External reviewers flagged FontLab 8 as a complete variable-font production environment on macOS and Windows: interpolation, OpenType features, multi-axis export, all in one app. That is the back end behind every smartphone keyboard that does not stutter when you switch input language.

The point

The “never about file size” line was written by people whose typography never had to fly economy. The smaller files are not a side effect. They are the reason the format shipped, the reason it shipped joint among the four platforms, and the reason your phone can render Latin, Devanagari, and Hangul without sounding the low-storage warning. The continuous control is the lovely consequence. The bytes are the load-bearing wall.

References

Read more →