The problem is that these fonts have embedded bitmap versions of very low quality, and the font rendering system on Linux will choose these in too many cases. Modern fonts do not have bitmap versions, which is why every other font that is not from Microsoft will work beautifully on Linux.
The fix is to tell Linux to not use the embedded bitmaps in font files.
I want this setting to be applied to all users, so here are the instructions.
1- Open a terminal, and type:
sudo gedit /etc/fonts/conf.d/20-no-embedded.confYou will need to enter your password.
2- Paste these lines in the text editor:
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<edit name="embeddedbitmap" mode="assign">
3- Close and save that file. To be absolutely sure the setting is applied, reboot your computer, or at least log out and log in.
That should do it!
Found at (among many other places):
Alternatively, you can use the fonts "Carlito" and "Caladea" instead of "Calibri" and "Cambria". Install them with this line:
sudo apt-get install fonts-crosextra-.*Then you can use LibreOffice's font substitution table in the Options, to use Carlito and Caladea whenever it finds Calibri and Cambria in a document.
The Debian wiki also has a great explanation:
However, be warned that the proprietary versions will likely look much worse on your screen than the OFL ones. This is because Microsoft decided to embed surprisingly bad bitmaps in their fonts and Debian's fontconfig does not disable embedded bitmaps in scalable fonts.