# Can I have a list of all fonts available in plain TeX?

I need a list such as:

`cmr`, `cmss`, `cmsl`, `cmtt`, ...

Where can I find it?

(Do the available fonts depend on the TeX installation or are the same everywhere?)

• Perhaps the `LaTeX font Guide` may be of help? – Mario S. E. May 29 '14 at 10:06
• I just realized on page 5 of the document it says There are far too many font families to list them all... – Mario S. E. May 29 '14 at 10:08
• google latex fonts is ur friend. – user10274 May 29 '14 at 10:21
• what do you mean by "in plain tex" do you (a) mean preloaded in plain, with a predefined command such as `\tenrm`, or (b) preloaded in plain, or (c) available on the system to be loaded into a plain tex document? the answers to (a) and (b) are different, but the same everywhere. The answer to (c) is more or less asking what fonts are available in the world. – David Carlisle May 29 '14 at 10:53
• @Matteo if you use plain tex with xetex or luatex engines (almost) any fonts on your system can be used, in addition to the fonts distributed with texlive, or with classic tex restricted to tfm files distributed in texlive I just searched in texlive/2014/texmf-dist/fonts/tfm and there are 32,617 tfm files there, do you want someone to list them all here? – David Carlisle May 29 '14 at 11:47

the CTAN repository of Knuth’s fonts lists all that the great man provided for production use (files of the form “.mf”). to first order, those are the limit of what are available in plain tex; there are various font selection schemes that are available to plain.tex users, but i’ve never been sure whether they are the plain users nemesis or great help. the CTAN catalogue list of font selection packages shows several “for plain tex users”. there are probably things i've failed to classify properly in the catalogue; corrections always welcome to the CTAN maintainers’ list.

If you need only the name of the installed LaTeX font families run:

``````#!/bin/bash
TL=/usr/local/texlive/2013
echo "create list of font families via \\DeclareFontShape"
find \$TL -name '*.fd' -exec cat {} \; | grep '\DeclareFontShape{' | \
sed -e 's/^.*DeclareFontShape{\([a-zA-Z0-9]*\)}{\([a-zA-Z0-9]*\)}{\([a-zA-Z0-9]*\)}{\([a-zA-Z0-9]*\)}.*\$/\2,/g' - | \
grep -v '\DeclareFontShape{' |sort | uniq  | sed -e '\$s/,//g' - >fontList.txt
echo "fontList.txt created"
``````

It creates a file `fontList.txt` with a list of the found font families:

``````Acorn,
aealbattar,
aealmateen,
aealmothnna,
aealyermook,
aearab,
aeccr,
aecortoba,
aedimnah,
aefurat,
aegraph,
aehani,
...
``````

The follwoing shell script creates a pdf file for every installed font:

``````#!/bin/bash
find `kpsewhich -expand-var='\$TEXMFMAIN'`/fonts/tfm -name '*.tfm' -print | \
sed 's@.*/@@; s@\.tfm\$@@' | \
xargs sh -c 'for i in "\$@"; do (echo \$i; echo \\\sample\\\bye) | \
tex testfont; mv testfont.dvi \$i.dvi; dvips \$i.dvi; ps2pdf \$i.ps; \
rm -f \$i.dvi \$i.ps; echo \$i.pdf; done' sh
``````

For example:

``````-rw-r--r--  1 voss users 42201 29. Mai 13:32 Heuristica-BoldItalic-sup-ly1.pdf
-rw-r--r--  1 voss users 42960 29. Mai 13:33 Heuristica-BoldItalic-sup-t1--base.pdf
-rw-r--r--  1 voss users 42754 29. Mai 13:32 Heuristica-BoldItalic-sup-t1.pdf
-rw-r--r--  1 voss users 43362 29. Mai 13:32 Heuristica-BoldItalic-sup-t2a.pdf
...
``````

The first one is:

Attention: It creates a lot of pdf files. And, of course, you can easily modify the shell script for your needs.