Choice of consistent unicode open-type fonts for Phd Thesis in Engineering
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 loadunicode-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 attc
file. You could also get it gratis with the PowerPoint 2007 viewer if you’re willing to unpack a fewcab
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}}
.
Summarising the comments into an answer:
Although not as exhaustive as true-type/PS1 fonts, there exist other unicode opentype free families providing the complete set of serif, sans serif, mono and most importantly, math fonts.
Tex Gyre Deja Vu, Asana Math, Libertinus etc are such examples.
Libertinus is considered stable for usage in large documents.
Although the summary on CTAN is a bit outdated, the unicode-math package does indeed support any unicode opentype math family (font with MATH tables)