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.
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.