Adding Apple Typography Information to an Opentype Font

Apple's native typography support in OS X is driven by a set of
special tables stored in Truetype and Opentype fonts. This information
includes ligatures and features such as small caps.

Opentype has similar facilities. Unfortunately Apple's code won't
read the tables describing these facilities. So if you want to use a
standard Opentype font with Pages and other Apple tools that understand
typography, you'll need to add the appropriate tables to your OTF fonts.

You'll need to download the tools and documentation. However this
page will include examples that should make it fairly easy to do what
you want.

You'll probably want to create two files for each font: font.mif
and font.jif. Font.mif contains ligatures and features such as small
caps and old-style figures. Font.jif contains specifications for
justification.

To apply these, you use a command like this:

ftxenhancer -l -m j.mif -j j.jif jansontextltstd-roman.otf

This says to apply the MIF from j.mif and the JIF from j.jif to the
font. It changes the font in place, so you probably want to save a copy
of the original somewhere.

The files I used for all 4 weights of Janson Text are given at
the end. They should work for many cases, although you'll need to
change the glyph indices (i.e. the numbers used to refer to specific
characters in the font).

I recommend disabling the font using Fontbook and exiting from any
application that might be using it before doing the update, and
then reenabling it.

The features show up in the "Typography" function of the "Show
Fonts" dialog. You need to click the icon that looks like a gear,
at the lower left of the dialog, to bring up the Typography menu.
The first couple of times I did this after changing the font, I
got an odd display from the Typography menu, but it eventually
stabilized. I've also seen it come up with both "unchanged" and
a function checked. But again, once you check the option you want,
it should work. (You may need to go back and forth the first time
to make it work.)

Getting Information about the Font

The MIF file refers to glyphs either by name or glyph index in
the font. However with my test Adobe OTF font I found that the Apple tools
don't seem to be able to see the names, so I had to use the glyph
index. The glyph index is visible if you open the file in Fontlab.
(Fontlab in demo mode should work fine, as you don't need to save the
font.) Otherwise, you can use the Apple tools:

ftxanalyzer -u j.list jansontextltstd-roman.otf

will produce a listing of the font which you can open in Textedit, by
Unicode index.

ftxdumperfuser -u -t cmap jansontextltstd-roman.otf > j.cmap

will produce a listing that goes from Unicode name or index to glyph
index. This would actually be enough, except that some of the glyphs
I needed don't have Unicode names. I needed the output of ftxanalyzer
to identify them. But clearly Fontlab is the easier approach.

A JIF File

This part is optional. By default, Apple does justification by expanding
the space both within words and between them. This is generally considered
a bad idea. When you get to the point of needing to increase spacing
within a word, you should probably not be doing justification.

The following JIF
file changes the policy so that spacing between letters is never adjusted.
It's all done by adjusting the space. If you look at the documentation
you'll find that you can create all kinds of interesting policies, some
of which change the letter shapes as well.

I will say that I can't get many of the features of JIF to work as
documented. This example does what it claims, but policies that
involve combining the two types of spacing don't seem to do quite what
is documented. Furthermore, the feature that is supposed to decompose
ligatures when spacing is changed doesn't seem to work.