First, this post is not sponsored by anyone and has no links or ads that make me any money. Let's go!
I grew quite a bit of a sympathy for Helvetica fonts recently and
ended up buying
Helvetica Neue a few days ago eventually.
Users of macOS
While buying and then integrating the font into my Linux setup I learned a few things… that I would like to share with you.
Buying process + choices I had to make
Precisely I bought bundle "Neue Helvetica Pro Basic Family", 8 weights, each italic and not italic, desktop license 1-5 computers, Pro OpenType TTF, 20% discount from a promo code from signing up for their newsletter prior to buying, totaling at 141.85 Euro including VAT.
Helvetica Neue over
because it seemed like one of the more modern options fit for 2020.
Also I had seen it work very well before
(with content of The Futur in particular), and
it was not an experiment (like
Helvetica Now would have been),
and it was more affordable than some of the other options.
I picked OpenType TTF over OpenType CFF for the desktop download because in my local prior experiments, TTF fonts rendering looked different and better. I should not pay twice to get both formats though, that's not cool.
Out of all the font-selling websites run by Monotype with close to identical offerings — fontshop.com, fonts.com, linotype.com, myfonts.com — I went for FontShop for buying because I liked the arty feeling about the site and because they allow experimenting with a font prior to buying in a more fun way than the others.
What that go me was 16
Installing them was easy:
create a folder like
put the 16
.tfffiles in, and
fc-cacheto update the Fontconfig cache.
Integrating with Linux more
But I wanted a bit more. I often saw website refer to plain Helvetica —
e.g. through CSS like
font-family: [..],Helvetica,Arial,sans-serif,[..]; —
and I wanted browser to use my Helvetica Neue for that. Also, I wanted
change the default choice for
sans-serif to Helvetica Neue, at least to see
how it would feel for a few days. To summarize I wanted:
Helvetica Neuefor all applications and
Helvetica Neueas the default
sans-seriffont for all applications.
Took me a few takes to get that right but looking back it's actually not that hard.
fc-match helped me understand where I was at.
When I started out,
sans-serif mapped to
Liberation Sans and
Helvetica mapped to
TeX Gyre Heros as can be seen here:
# fc-match Helvetica texgyreheros-regular.otf: "TeX Gyre Heros" "Regular" # fc-match sans-serif LiberationSans-Regular.ttf: "Liberation Sans" "Regular"
Those mappings are configured
.conf files below
/etc/fonts/ and also
So I learned from the existing
.conf files I found, put two more files
~/.config/fontconfig/, one per task, and ran
This is how I named my files:
Let's a have a closer look at their content.
Helvetica Neue win over
TeX Gyre Heros I came up with this:
# cat ~/.config/fontconfig/conf.d/01-helvetica-neue-aliases.conf <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <description> Serve Helvetica Neue when asked for Helvetica </description> <!-- needs binding="same" to win over TeX Gyre Heros --> <alias binding="same"> <family>Helvetica</family> <prefer> <family>Helvetica Neue LT Pro</family> </prefer> </alias> </fontconfig>
Helvetica Neue was similar, slightly easier:
# cat ~/.config/fontconfig/conf.d/02-neue-helvetica-default-sans-serif.conf <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <description> Make Helvetica Neue the default sans-serif </description> <alias> <family>sans-serif</family> <prefer> <family>Helvetica Neue LT Pro</family> </prefer> </alias> </fontconfig>
fc-match, it was easy to verify those files worked:
# fc-match Helvetica HelveticaNeueLTPro-Roman.ttf: "Helvetica Neue LT Pro" "Regular" # fc-match sans-serif HelveticaNeueLTPro-Roman.ttf: "Helvetica Neue LT Pro" "Regular"
During my experiments, I played with a downloaded copy of
Web Font Specimen
to make sure that both Firefox and Chromium were doing what I expected.
(I had one of the
<prefer> tags be an
<accept> earlier and that made
Firefox and Chromium behave differently — I still need to figure out why,
but use of
<prefer> fixed things for me.)
I also got curious in which order
fc-cache process the
in particular how user config and system config would blend together.
Why not just spy on
fc-cache while it does the work… using
I'll trim this down a bit to the interesting part:
# strace -F -efile fc-cache |& fgrep openat \ | grep -Eo '"[^"]+\.conf"' | sed 's,",,g' | nl 1 /etc/fonts/fonts.conf 2 /etc/fonts/conf.avail/10-hinting-slight.conf 3 /etc/fonts/conf.avail/10-scale-bitmap-fonts.conf 4 /etc/fonts/conf.avail/20-unhint-small-vera.conf [..] 10 /etc/fonts/conf.avail/50-user.conf 11 /home/user/.config/fontconfig/conf.d/01-helvetica-neue-aliases.conf 12 /home/user/.config/fontconfig/conf.d/02-neue-helvetica-default-sans-serif.conf 13 /home/user/.config/fontconfig/fonts.conf 14 /etc/fonts/conf.avail/51-local.conf [..] 51 /etc/fonts/conf.avail/70-yes-bitmaps.conf
So that's where
fonts.conf and user config come in.
It's controlled by
50-user.conf, cut down to the interesting bits:
# cat /etc/fonts/conf.avail/50-user.conf <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <description>Load per-user customization files</description> <!-- Load per-user customization files where stored on XDG Base Directory specification compliant places. it should be usually: $HOME/.config/fontconfig/conf.d $HOME/.config/fontconfig/fonts.conf --> <include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include> <include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include> </fontconfig>
My personal summary
I'm very happy to have desktop access to
Helvetica Neuenow, e.g. for use with future presentation slides.
I will probably revert back to
DejaVu Sansfor a
sans-serifdefault though, will see.
Mapping or re-mapping fonts on Linux is not that hard.
Fontconfig configuration can be adjusted without root permissions by putting a small XML file into directory
fc-matchare the Fontconfig commands needed to get user fonts and configuration to work.
Font Manager is great for browsing and previewing installed fonts on a Linux System.
Googling for differences between OpenType TFF and OpenType CFF for quite a while did not help me making the choice easier. Converting one font TTF-to-CFF and another CFF-to-TFF using FontForge and comparing results did.
Enough fonts for me today.
Facebook post 26 Essential Typefaces Recommended by Chris Do or
the Futur's Typography Tutorial on YouTube.
To me, their use of font in general and Helvetica in particular seems excellent so I got interested in Helvetica myself more. With multiple different Helveticas in the top 50 best-selling fonts on MyFonts it didn't take long to get me confused: Helvetica, Helvetica Neue, Helvetica Now, Neue Haas Grotesk — phew! Are they even different? Which one would I want to use?
Let me put my findings on available Helveticas on a date-of-publishing timeline:
1957 Neue Haas Grotesk – the original font
1960 Helvetica — renamed version by Linotype
1982 Arial — custom Helvetica by Monotype for Microsoft
2010 Neue Haas Grotesk (Display/Text) — restoration remake by Linotype
2019 Helvetica Now — remake by Monotype
That's a quite a few. From comparing their looks side by side and researching more I came to these…
When someone says "Helvetica" in 2020 they probably don't mean the original Helvetica from the late 50s; they probably refer to a more recent version.
When someone says "Neue Haas Grotesk" in 2020 they probably don't mean the original font from the late 50s but "Neue Haas Grotesk Display" or "Neue Haas Grotesk Text" released in 2010.
Letters to recognize Helvetica style fonts easily are lower
Gand the rectangle dots seen with
jand full stops.
Different versions of Helvetica can be distinguished by a closer look at lower letters
tand capital letters
The Futur has been using Helvetica Neue precisely back in 2016.
I find recent version of Helvetica to be beautiful; it is obvious to me now why Helvetica has been used so much.
Each of these fonts is rather expensive and their licensing rules do not seem "sane" to me; potentially a topic for another post. I hear that IBM has been spending over a million dollars every year to use Helvetica prior to their move to font IBM Plex — wow! I'll explore other legal free options more before putting this much money into a font for personal use as an individual.
From comparing different Helveticas side by side, Helvetica Now feels the most natural, balanced and beautiful to me by quite a bit.
Monotype's Helvetica Now 2019 marketing seems to ignore Linotype's prior effort with Neue Haas Grotesk Text/Display from 2010 altogether.
There are some resources I found on the way that I consider worth sharing, in particular:
The official user guide for Helvetica Now (PDF)
Some key visual differences between Helvetica and Arial (PNG, Wikipedia)
Typography Manual ed. 2018 by the Futur (PDF)
Article History of Neue Haas Grotesk by Indra Kupferschmid
Fontsc's list of free alternatives to Helvetica Font
That's it; enough Helvetica for me today.
Some people care if software is free of cost or if it has the best features. I don't. I care that I can legally dissect its parts, adjust it to my needs, and share my modifications with the community: run, study, redistribute, improve. That's why I happily avoid macOS, Windows, Skype, Photoshop. I love … free software!
has been released yesterday. This release
fixes a security issue
a heap buffer over-read known as
reported by Joonun Jang
resulting in Denial of Service
—, starts using the
rand_s function on Windows and MinGW (ending the previous
includes non-security bugfixes,
many build system fixes and improvements,
improvements to xmlwf usability,
For more details regarding the latest release, please check out the changelog.
If you maintain Expat packaging or a bundled copy of Expat or a pinned version of Expat somewhere, please update to 2.2.8. Thank you!
I ran into this talk, and found it very interesting: Managing Data in Microservices
I found this talk about technical debt both smart and interesting. There is a bit of a dry segment in the middle that you need to get past. After that even the Q'n'A at the end is interesting. A slide with a definition of technical debt and interest(!) is at 3m42s.
See for yourself:
libexpat is a fast streaming XML parser written in C. Alongside libxml2, Expat is one of the most widely used software libre XML parsers written in C. It is cross-platform and licensed under the MIT license.
Expat 2.2.7 has been released a few days ago. Besides improvements to the build system, 2.2.7 fixes security issue CVE-2018-20843 that allowed use of specially crafted XML to cause Denial of Service. The issue was found during fuzzing of LibreOffice by the Chromium team and reported by Caolán McNamara.
With regard to Denial of Service protection, libexpat still needs a partner to sponsor additional development workforce — my own time remaining free but limited — to prevent Denial of Service through Billion laughs attacks by default, for the masses, with sane defaults, and with knobs for tuning. If you operate software accepting XML from the internet in an enterprise and aim at 99.9%-and-beyond availability per year, please get in touch.
For more details regarding the latest release, please check out the changelog.
If you maintain Expat packaging and/or a bundled copy of Expat and/or a pinned version of Expat somewhere, please update to 2.2.7. Thank you!