Au contraire, mon ami — URW Garamond does indeed contain the ffi and ffl ligatures. They occupy slots 30 and 31 respectively in their T1-encoded font tables.
In common with many typeface designs, URW Garamond splits the first f subglyph from the remaining fi or fl subglyphs in each ligature. You can see this in the rm
and sf
families, but not the tt
family where the designer has connected all subglyphs in each whole (see edit note, below). One mustn't simply assume that a ligature is not a single well-integrated type component simply because the full set of strokes comprising it are not completely connected. Font.com's recommendation is directed at cases where, e.g., the ffi and ffl ligatures are simply not available, and where, therefore, grafting a single f onto a trailing fi or fl might (subject to the quality of the kerning table) create a fairly unbalanced look. This is not the situation here. In this case, URW Garamond's designer has produced a well-integrated series of glyphs that should not be discarded simply because their various elements do not completely connect. These designs are very much part of URW Garamond's integrated look and feel. Your typeset works would suffer by excluding them.
Here's some code to help you check this out:
\documentclass{article}
\usepackage[urw-garamond]{mathdesign}
\usepackage[T1]{fontenc}
\usepackage{fonttable}
\begin{document}
\xfonttable{T1}{\rmdefault}{m}{n}\newpage
\xfonttable{T1}{\sfdefault}{m}{n}\newpage
\xfonttable{T1}{\ttdefault}{m}{n}\newpage
\end{document}
BTW, if you really want to force non-ligatures, a simple trick is to insert braces to keep your letters apart, e.g., of{}f{}icers. Apart from that, the microtype
package contains options to selectively disable just the ones you want. E.g.,
\DisableLigatures[?,!]{encoding = T1}
will inhibit ?‘ and !‘, but not fi, –, », etc. microtype
currently works under pdflatex and luatex but not, as far as I know, all that successfully with xelatex (there's a beta version out there but I haven't yet checked it out, mainly because everytime I do its website is down). Will's and Khaled's fontspec
package seems to provide control over ligatures at font load-time, but as I tend to stick to pdflatex (never in a million years could I bring myself to give up microtype
), and as fontspec
doesn't function in that environment, I'm still rather clueless about its detailed ins and outs. However, note that as URW Garamond is a Type1 font, fontspec
won't provide much assistance in your case.
EDIT:
Errg! I must learn to resist answering questions at 4am in the morning (Eastern Australian Time). Of course the sf
and tt
fonts printed by the code above are Computer Modern (or some such system-provided variants). They have nothing to do with URW Garamond. Nevertheless, except for confirming that I'm a klutz, everything else about all other aspects of my answer still stands.
Do you know if you actually have the URW Garamond font files installed? Those fonts do not use a completely free/open source license, and so are often not distributed with TeXlive or installable through its package manager (even if the mathdesign.sty file is).
On linux you can install them using the getnonfreefonts script -- I suspect that might work for BasicTeX too (on a mac?), but I don't have first hand experience of that.
Best Answer
Installation instructions:
.afm
and.pfb
files from here - urw-garamond..afm
files to<root>/fonts/afm/urw/garamond
, and all.pfb
files to<root>/fonts/type1/urw/garamond
, creating any missing folders in these paths. Where<root>
is your local (recommended) or global TeX tree. In Linux local tree is called usuallylocaltexmf
, respectivelytexmf
for the global tree. In Windows, MiKTeX has a default global tree as, for exampleC:\Program Files\MiKTeX 2.9
(Windows XP, MiKTeX 2.9). There is no default local tree created. You can create one via the Settings GUI.texhash
as root. In Windows, for MiKTeX issue the commandinitexmf --update-fndb
. Or via the Settings GUI press the button Refresh FNDB.\usepackage[urw-garamond]{mathdesign}
to use it.Edit: Added installation instructions.
Edit: Fixed a typo:
initexmf --update-fnbd
->initexmf --update-fndb