### Using non-standard fonts in Plain TeX

Plain TeX (in accordance with its description) doesn’t do anything fancy with fonts: it sets up the fonts that Knuth found he needed when writing the package, and leaves you to do the rest.

To use something other than Knuth’s default, the default mechanism is to use the `\``font` primitive:

>     \font\foo=nonstdfont
>     ...
>     \foo
>     Text set using nonstdfont ...

The name you use (`nonstdfont`, above) is the name of the `.tfm` file for the font you want.

If you want to use an italic version of `\``foo`, you need to use `\``font` again:

>     \font\fooi=nonstdfont-italic
>     ...
>     \fooi
>     Text set using nonstdfont italic...

This is all very elementary stuff, and serves for simple use of fonts. However, there are wrinkles, the most important of which is the matter of font encodings. Unfortunately, many fonts that have appeared recently simply don’t come in versions using Knuth’s eccentric font encodings — but those encodings are built into Plain TeX, so that some macros of Plain TeX need to be changed to use the fonts. LaTeX gets around all these problems by using a “font selection scheme” — this ‘NFSS’ (‘N’ for ‘new’, as opposed to what LaTeX 2.09 had) carries around with it separate information about the fonts you use, so the changes to encoding-specific commands happen automagically.

If you only want to use the EC fonts, you can in principle use the ec-plain bundle, which gives you a version of Plain TeX which you can run in the same way that you run Plain TeX using the original CM fonts, by invoking tex. (Ec-plain also extends the EC fonts, for reasons which aren’t immediately clear, but which might cause problems if you’re hoping to use Type 1 versions of the fonts.)

The font_selection package provides a sort of halfway house: it provides font face and size, but not family selection. This gives you considerable freedom, but leaves you stuck with the original CM fonts. It’s a compact solution, within its restrictions.

Other Plain TeX approaches to the problem (packages plnfss, fontch and ofs) break out of the Plain TeX model, towards the sort of font selection provided by ConTeXt and LaTeX — font selection that allows you to change family, as well as size and face. The remaining packages all make provision for using encodings other than Knuth’s OT1.

Plnfss has a rather basic set of font family details; however, it is capable of using font description (`.fd`) files created for LaTeX. (This is useful, since most modern mechanisms for integrating outline fonts with TeX generate `.fd` files in their process.)

Fontch has special provision for T1 and TS1 encodings, which you select by arcane commands, such as:

>     \let\LMTone\relax
>     \input fontch.tex

for T1.

Ofs seems to be the most thoroughly thought-through of the alternatives, and can select more than one encoding: as well as T1 it covers the encoding IL2, which is favoured in the Czech Republic and Slovakia. Ofs also covers mathematical fonts, allowing you the dubious pleasure of using fonts such as the pxfonts and txfonts.

`ec-plain`
  macros/ec-plain (gzipped tar, browse)
`fontch`
  macros/plain/contrib/fontch (gzipped tar, browse)
`font_selection`
  macros/plain/contrib/font_selection (gzipped tar, browse)
`ofs`
  macros/generic/ofs (gzipped tar, browse)
`plnfss`
  macros/plain/contrib/plnfss/

This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=fonts-pln