--- title: How to use OTF fonts with pdflatex author: nek0 tags: english, writing, programming description: A small howto for importing OTF fonts --- In the last days I had an interesting Problem to solve, which involved LaTeX, OTF font files and a special set of requirements. I needed to import and use the OTF fonts in a LaTeX document and this document needed to be compiled through pdflatex. First off: If you need to use OTF fonts in LaTeX documents, you can simply switch to XeLaTeX or LuaLaTeX, like I did in the first place. Both of these environments support the package `fontspec`, which makes using fonts installed in your system extremely easy. So if you can, switch the environment. If you can't switch the environment, don't want to, feel a little adventurous or even want to feel some of the innards of LaTeX you can choose the path I am about to show. Before you can start, you need to install the [LCDF typetools][lcdf], which is a set of tools for manipulating the font definitions of LaTeX. Most GNU/Linux distributions have them in their repositories, Mac users can install them through homebrew and even Windows binaries are available on the website. Additionally make sure, that you use `updmap` in system mode and have root privileges. To create the font mappings from the OTF, you simply run ```bash sudo otftotfm -a --vendor --typeface -e texnansx ``` Where you replace the items in the angle brackets. This not only produces the mappings, but also places them in the right directory. (If `otftotfm` complains because of `updmap`, run the `updmap` commands in the error messages as `updmap-sys`.) Before you can actually use the Font, you have to write your own font definition. A small template for this follows, which should be saved as `T1.df` ```latex \ProvidesFile{T1.fd} [YYYY/mm/dd foobar] \DeclareFontFamily{T1}{}{} \DeclareFontShape{T1}{}{m}{n} {<-> } {} \endinput ``` Here you can define `` as you wish, the other elements in angle brackets correspond to the box above. To actually use it, you can call ```latex \renewcommand*{\familydefault}{} ``` from your document to change the font in the whole document, assuming the `T1.fd` is in your project folder, or call ```latex Lorem ipsum {\fontfamily{}\fontseries{m}\fontshape{n} \selectfont dolor sit} amet ``` to change the font only for "dolor sit" in this example. There are tons of other options how to handle fonts in LaTeX, but this is the most convenient one I found. [lcdf]: http://www.lcdf.org/type/#typetools