MS Core Fonts on Silverblue

Has anyone been able to install Microsoft’s Core Fonts on Silverblue?

I’ve done:

  1. rpm-ostree install cabextract
  2. reboot
  3. rpm-ostree install Download msttcore-fonts-installer-2.6-1.noarch.rpm (mscorefonts2)

The installation is stuck on “Running post scripts”. Running ps afx shows:

 2724 ?        Ssl    0:10 /usr/bin/rpm-ostree start-daemon
 5073 ?        S      0:00  \_ /usr/bin/bwrap --dev /dev --proc /proc --dir /tmp --chdir / --ro-bind /sys/block /sys/block --ro-bind /sys/bus /sys/bus --ro-bind /sys/class /sys/class --ro-bind /sys/dev /sys/dev --ro-bind /sys/devices /sys
 5074 ?        S      0:00      \_ /usr/bin/bwrap --dev /dev --proc /proc --dir /tmp --chdir / --ro-bind /sys/block /sys/block --ro-bind /sys/bus /sys/bus --ro-bind /sys/class /sys/class --ro-bind /sys/dev /sys/dev --ro-bind /sys/devices 
 5075 ?        S      0:00          \_ /bin/sh /usr/msttcore-fonts-installer.post 1
 5077 ?        S      2:20              \_ /bin/sh /usr/lib/msttcore-fonts-installer/refresh-msttcore-fonts.sh -F /usr/share/fonts/msttcore -L /usr/share/doc/msttcore-fonts-installer/READ_ME!
18102 ?        R      0:00                  \_ wget --no-verbose --timeout=5 -O EUupdate.EXE http://downloads.sourceforge.net/mscorefonts2/EUupdate.EXE

This last line, the wget of EUupdate.EXE disappears and reappears every few seconds but that’s as far as it gets.

I think that the problem is that the installer is trying to download the data with wget to the read-only destination and that won’t work on Silverblue. Looks like the installer needs to be modified to use a writable directory.

FYI, google-croscore-fonts and liberation-fonts are both designed to be compatible with the most common MS fonts.

Ah I see. Thanks for the pointers, I’ll try to workaround it with the croscore and liberation fonts for now. Definitely need proper fonts for interoperability with Microsoft Office. LibreOffice and WPS Office are nice, but not of much use if exchanged documents and presentations don’t look the same due to missing fonts…

You don’t really need to use any package overlaying for this (and it’s not as if these fonts are ever going to be updated).

Firstly build cabextract.

wget https://www.cabextract.org.uk/cabextract-1.9.1.tar.gz
tar -xvf cabextract-1.9.1.tar.gz
cd cabextract-1.9.1
./configure --prefix=/usr/local && make
sudo make install

Then just fetch and extract all the corefonts.

mscorefonts.sh

#!/bin/bash
_sfpath="http://downloads.sourceforge.net/corefonts"
fonts=($_sfpath/andale32.exe $_sfpath/arial32.exe $_sfpath/arialb32.exe $_sfpath/comic32.exe $_sfpath/courie32.exe $_sfpath/georgi32.exe
$_sfpath/impact32.exe $_sfpath/times32.exe $_sfpath/trebuc32.exe $_sfpath/verdan32.exe $_sfpath/webdin32.exe)

for i in "${fonts[@]}"
do
    wget $i
    cabextract $(basename $i) -d fonts
done

To install user-wide (Flatpak will see these)

mkdir ~/.local/share/fonts
mkdir ~/.local/share/fonts/mscorefonts
cp -v fonts/*.ttf fonts/*.TTF ~/.local/share/fonts/mscorefonts/

To install system-wide (Flatpak might not see these yet)

sudo mkdir /usr/local/share/fonts/
sudo mkdir /usr/local/share/fonts/mscorefonts/
sudo cp -v fonts/*.ttf fonts/*.TTF /usr/local/share/fonts/mscorefonts/

Edit: Can I comment how much I hate the Discourse editor.

4 Likes

If you own a Windows computer/VM or a Mac you can also just copy the fonts files directly from the computer. You get way more fonts and it’s technically from a license you’ve already bought so it’s really better in that regard as well. I’m not sure how Silverblue’s read-only filesystem will affect copying the files though.

Windows stores its font files in C:\Windows\Fonts and Mac uses two locations-- /System/Library/Fonts and /System Folder/Fonts (check both!). Just put the files in your /usr/share/fonts folder (preferably in its own descriptively named folder) and run sudo fc-cache -fv. If everything is good with the read-only filesystem, you should have a ton of proprietary fonts at your disposal.

2 Likes

also you don’t need to build cabextractor

you could use distrobox and install it on debian or whatever… and use it from there