[Tex/LaTex] Choice of consistent unicode open-type fonts for Phd Thesis in Engineering

fontsmath-fontsopentypethesisunicode-math

Having written about 60% of my Phd thesis, I gave it to my advisor for review. I used Pdflatex and Latin Modern fonts for text and math. For source code listings, I did not change anything in particular and went with the standard \texttt{} variant of the font. My focus was to get content in quickly.

Now, my adviser knows a lot more about formatting than me, but rather than using latex, he uses inDesign and other WYSIWYG tools for final layout and has challenged me to come up with a contemporary look whilst keeping the overall document's gravitas. Having supervised dozens of students, all producing their thesis with computer modern or latin modern, I guess he is just looking for a fresher alternative. I wish to accept the challenge since I have sufficient time before final submission.

My adviser advised me to use Minion Math, along with Minion/Myriad Pro respectively. He strongly suggested me to use OpenType Unicode fonts and warned that I shall face difficulties when it comes to consistent math typefaces.

It looks like both xelatex or lualatex can handle the basic requirement of using arbitrary system fonts. But my problem is with Minion Math, since it is not free. My adviser said he will pay for it I cannot find an opentype unicode alternative consistent set of text/math/mono fonts.

This puts me in a dilemma. I really wish to use free & open-source fonts for my thesis because of the following reason. My adviser does not use latex and we were using Overleaf to share he document and obtain adviser feedback through its rich text interface, and we both liked this workflow. With proprietary fonts, maintaining this workflow might be difficult.

The only other complete set of open-type Unicode font family with math support seem to be STIX, XITS, STIX TWO, Tex Gyre Variants that all seem to be Times-like. I absolutely do not want to go with Times-like typeface for my thesis.

I recently came across Libertinus, that seems to provide all variants – serif, sans, mono and math, which seems promising. However, the github repository of this font suggests that things are still under development. How risky is it to go for this typeface? Are there other alternatives?

Best Answer

The situation with fonts is much better than you thought! I absolutely agree with your advisor that you should use OpenType fonts (and therefore, the unicode-math package on either XeLaTeX or LuaLaTeX). Any OpenType math font will have more-complete and consistent symbol coverage than any combination of legacy LaTeX packages, but the package also allows you to mix-and-match symbols and alphabets freely.

One thing I’m not entirely clear on is whether you want a monospaced font for code listings or typewriter-letter math symbols. Any complete OpenType math font contains the latter.

OpenType Math Fonts

You can find a list of OpenType math fonts, with samples, at this answer. Going over the list there:

  • Latin Modern Math is a clone of Computer Modern plus amssymb, but has more glyphs. It is the default when you load unicode-math. If you use this, you’ll get something that looks exactly like the default settings of TeX.
  • TeX Gyre Bonum, Pagella, Termes and Schola are clones of the fonts Bookman Old Style, Palatino, Times and Century Schoolbook, respectively. You said you don’t want Times, but you can have a look at the others.
  • TeX Gyre DejaVu Math adds math support to the DejaVu fonts, which are based on Arev, based on Bitstream Vera. There is also a sans-serif font. The DejaVu project calls this DejaVu Math TeX Gyre.
  • Asana Math is based on Palatino, and its symbols resemble those of mathpazo, and its successor, newpxmath.
  • Libertinus Math is based on Linux Libertine and Linux Biolinum.
  • GFS Neohellenic has very small serifs, giving it a unique look good for presentations.
  • Neo Euler is a clone of the Euler font by Hermann Zapf, originally created for DEK’s book Concrete Mathematics. This font is incomplete and doesn’t ship with TeX Live. It does not have nearly as many glyphs as the other fonts on this list. Therefore, you would need to download it separately, load only the glyphs it supports, and use another font, such as Asana Math or TeX Gyre Pagella, as your fallback font.
  • Stix, Stix Two and XITS are all based on the STIX project, which is based on Times. Since you said you don’t want something that looks like Times, these are out.
  • Cambria Math is not free, but it’s included with recent versions of Microsoft Windows and Office, so you might have it on your Windows partition as cambria_01.ttf or as a ttc file. You could also get it gratis with the PowerPoint 2007 viewer if you’re willing to unpack a few cab files. However, it is the default font for equations in Microsoft Office and looks a lot like Times.
  • Minion Math and Lucida are proprietary fonts.

You can find a sample of Asana Math here, all the TeX Gyre fonts here, and Libertinus here.

It is also possible to mix-and-match fonts, so as to use the symbols from a math font with the letters from your text font. One popular recommendation, for example, is Neo Euler for math with Palatino for text.

Font Families

Most of these fonts have a matching text font without Math in the name. Asana Math and Neo Euler are good matches for Palatino (and therefore its clone Pagella).

Three of the font families I listed above have matching serif, sans serif and monospace fonts: Latin Modern Mono, DejaVu Sans Mono and Libertinus Mono. Latin Modern Mono is a clone of Computer Modern Monospace, which you might or might not find attractive and again looks just like the default cmtt. Some of the more obscure variants of Computer Modern, such as Upright Italic, are available through Computer Modern Unicode. There is also a monospace font in the TeX Gyre collection, TeX Gyre Cursor, but it is a clone of Courier and therefore not really a match to any of the TeX Gyre Math fonts.

If you don’t use one of these, there are a large number of free monospace fonts out there, in addition to the ones that ship with your operating system.

You can also use any OpenType monospaced font you want for your typewriter-letter math symbols with a command such as \setmathfont[range=\mathtt]{Inconsolata}.

You might or might need an accompanying sans-serif font in your document. If you want to use sans-serif throughout, you would have to remap a sans-serif family to the up, bfup, it and bfit math alphabets, but as an alternative for titles and headers, most of those font families come with small caps.

The Script/Calligraphic Quirk

LaTeX packages historically had separate commands for \mathscr and \mathcal, which displayed different symbols. The Unicode Consortium decided that these were really just presentation forms and no mathematician used both \mathcal{I} and \mathscr{I} to mean different things in the same text. Therefore, it allocated only one range of codepoints for both alpabets.

The unicode-math package by default sets up \mathcal and \mathscr as synonyms for each other, but it supports loading different alphabets into either (as well as \mathfrac, \mathbb, and so on). Furthermore, several math fonts contain separate \mathscr and \mathcal alphabets intended to be used this way. You can load them with one of the commands \setmathfont[range={mathcal,mathbfcal},Alternate,Scale=MatchUppercase]{Asana Math} or \setmathfont[range={mathscr,mathbfscr},StylisticSet=1,Scale=MatchUppercase]{XITS Math}. Stix Math or Stix Two Math use the same syntax as XITS Math.

If you don’t actually use \mathcal or \mathbfcal in your thesis, you can of course completely ignore this.

My Recommendation

I personally like Asana Math, with Palatino (or a clone such as TeX Gyre Pagella) as the text font. However, you say in the comments that you don’t like its upright style. (I assume you mean the slant of symbols such as the integral; it contains both upright and italic letters, like all the math fonts.) Inconsolata is a free monotype font that I think, as a humanist sans, goes well with it. It ships with TeX Live, but only as a Type 1 font, so you would need to download the newer version. (Either double-click on the file and hit the install button, or on Linux, you can copy it to ~/.fonts or /usr/local/share/fonts.)

The official sans-serif companion font for Palatino is the commercial font Palatino Sans, but Optima, its free clone URW Classico, or Gillius No2 (based on Gill Sans) might be a good free alternative, and it ships with TeX Live.

Since you said this is an Engineering thesis, I’ll assume you want to use ISO style, which is the math-style=ISO option to unicode-math. To get upright letters for constants as it recommends, you can use, e.g., \symup{e}, but unicode-math defines \muppi for the constant π.

I recommend the microtype package to make the right margins and word spacing look neater, with less hyphenation (I contributed a few improvements to it myself).

You also mention the need to support both English and South Asian languages. You should be able to do something like \newfontfamily\devanagarifont[Script=Devanagari]{Shobhika} for Indic and \newfontfamily\malayalamfont[Script=Malayalam]{Free Serif} for Malayalam. That should enable Sanskrit in Polyglossia, but for Malayalam, you would need to select \malayalamfont manually. However, the code will still work if Polyglossia adds support for Malayalam later.

Legacy Fallback

If you absolutely must use pdflatex, first load \usepackage[T1]{fontenc}. It wouldn’t hurt to add \usepackage[utf8]{inputenc}, but that’s now the default. The packages tgpagella, newpxmath, inconsolata and classico would set your main, math, monospace and sans-serif font to a combination I like. (The only real problem with it is that Palatino might be overused, but at least it will be taken seriously.) If you want to tweak the math alphabets some more, look at the package options to newpxmath and consider a package such as mathalfa or isomath.

If you need to support PDFLaTeX, you can use the \iftex package to wrap the leagacy NFSS preamble and the modern unicode-math preamble in conditional blocks. Then, you’ll use modern features if your TeX engine supports them.

PS

I have one other quirk in my papers: Math fonts use wildly different symbols for Q.E.D. I personally like to use the black “tombstone”, introduced by Paul Halmos and used in the 1997 edition of The Art of Computer Programming by DEK. The command for this is \setmathfont[range="220E]{XITS Math}, and to use it with amsthm, \renewcommand{\qedsymbol}{\ensuremath{\char"220E}}.