FontForge has a number of features built in to it to deal with TeX.
It can read "pk" and "gf" bitmap files and autotrace them to generate outline fonts. It can even invoke metafont directly on a ".mf" file, generate a "gf" bitmap from that, autotrace it and generate an outline font.
It can read ligature, kerning information from a ".tfm" file. It can create a tfm file.
The encodings file has a number of standard TeX encodings built in to it.
For large CJK truetype fonts it can read a sub-font definition file as defined in the ttf2tfm man page and generate a series of postscript type-1 fonts based on those two.
In consultation with the lilypond group we have designed a new SFNT table 'TeX ' for storing TeX specific information in True/OpenType files.
Before you generate a tfm file you should perform some of the following
Italic Correction
from the pulldown list
TeX Glyphlist
from the pulldown list
TeX Extension list
from the pulldown list
Note: When FontForge does a File->Merge Kern Info on a tfm file, it will set these values appropriately.
Having done this to your satisfaction you are ready to generate a tfm file. Go to File->Generate Fonts, select one of the postscript encodings from the pulldown list, press the [Options] button and turn on the [*] Tfm & Enc check box.
I'm not sure what you do with these files yet, but this should create them.
I am a novice TeX/LaTeX user so my comments should be taken with a grain of salt. I did manage to get this process to work on my own system.
Installing a PostScript font for TeX is more complicated than one would hope (and so far I've only figured out how to install a Latin font). Instead of just moving the font file to some standard directory you must:
I suggest that before you read further you look at the following resources on the web:
I did the following:
#!/bin/bash # You will need to change the next two lines to suit your font. # You may need to change the two after that as well. BASE=fcu PACKAGE=cupola VENDOR=public LOCALTEXMF=/usr/local/share/texmf # remove any old files that might be lying around and might confuse us later on csh -c "rm fi.tex *.mtx *.pl *.vpl" # create a little script to get TeX to create various useful files it needs echo "\\input fontinst.sty" >fi.tex echo "\\latinfamily{$BASE}{}" >>fi.tex echo "\\bye" >>fi.tex #execute that script tex fi # But we need to do a bit more processing on some of those files for file in *.pl ; do pltotf $file done for file in *.vpl ; do vptovf $file done # Get rid of stuff we don't need any more rm fi.tex *.mtx *.pl *.vpl # create the directories we need for the various components mkdir -p $LOCALTEXMF/fonts/type1/$VENDOR/$PACKAGE \ $LOCALTEXMF/fonts/afm/$VENDOR/$PACKAGE \ $LOCALTEXMF/fonts/tfm/$VENDOR/$PACKAGE \ $LOCALTEXMF/fonts/vf/$VENDOR/$PACKAGE \ $LOCALTEXMF/tex/latex/$VENDOR/$PACKAGE # move everything into its expected directory cp $BASE*.pfb $LOCALTEXMF/fonts/type1/$VENDOR/$PACKAGE cp $BASE*.afm $LOCALTEXMF/fonts/afm/$VENDOR/$PACKAGE mv $BASE*.tfm $LOCALTEXMF/fonts/tfm/$VENDOR/$PACKAGE mv $BASE*.vf $LOCALTEXMF/fonts/vf/$VENDOR/$PACKAGE mv *$BASE*.fd $LOCALTEXMF/tex/latex/$VENDOR/$PACKAGE # finally create the LaTeX package for this font (and put it in the right place) echo "\\ProvidesPackage{$PACKAGE}" > $LOCALTEXMF/tex/latex/$VENDOR/$PACKAGE/$PACKAGE.sty echo "\\renewcommand{\\rmdefault}{$BASE}" >> $LOCALTEXMF/tex/latex/$VENDOR/$PACKAGE/$PACKAGE.sty echo "\\endinput" >> $LOCALTEXMF/tex/latex/$VENDOR/$PACKAGE/$PACKAGE.sty # but updating the map files required a bit more knowlege than this script has # so I left that to be done by hand echo "*********************************************************************" echo You need to create your own map files echo One should be called $LOCALTEXMF/dvips/config/$BASE.map and should echo " contain a line for each file in the family. One might look like this:" echo "${BASE}r8a $PACKAGE-Regular \"TexBase1Encoding ReEncodeFont\" <8r.enc <${BASE}r8a.pfb" echo Then change the config.ps file by looking for the location defining the echo " standard map file and adding:" echo "p +$BASE.map" echo " after it." echo Then go to $LOCALTEXMF/pdftex/config/ echo Make a copy "(or a link)" of $LOCALTEXMF/dvips/config/$BASE.map echo and edit pdftex.cfg and insert echo "p +$BASE.map" echo at the appropriate place in it too.