How to embed fonts at compile time with pdflatex

Make sure the pdftexDownloadBase14 settings in the updmap.cfg file is set to true to make pdflatex to embed the base 14 pdf fonts. If you use normal latex then you should set dvipdfmDownloadBase14 to true. Best set both. On my TeXLive 2010 installation it is already set to true and I had never issues with my IEEE paper submissions.

You can edit this config file by running updmap --edit (under Linux most likely as root using sudo beforehand; not sure about M$ Windows).

Here the explanation from the updmap.cfg file:

# pdftexDownloadBase14
#
# Should pdftex download the base 14 pdf fonts? Since some configurations
# (ps / pdf tools / printers) use bad default fonts, it is safer to download
# the fonts. The pdf files will get bigger, though.
# Valid settings are true (download the fonts) or false (don't download
# the fonts). Adobe recommends embedding all fonts.
pdftexDownloadBase14 true

Also make sure that PDF or EPS files you include as images include all their fonts by themselves. This can be an issue if you generate these PDF or EPS images from e.g. M$ Office like Visio, because they use most definitive different fonts. AFAIK LaTeX can not include this missing fonts because they are not part of the main document but of the embedded object (image). The only solution here is to embed the fonts to them first, either by re-generate them with the correct settings in the software you use for this (e.g. PDF printer) or by running the ps2pdf14 command you mentioned on the images beforehand not the final document.


I know this is an old topic, but I stumbled across it while searching for a solution. I found one, so I share it with you. I usually embed pdfs generated by R. Unfortunately R also doesn't embed the fonts. Processing the output of LaTeX with ghostscript will preserve all the links in the document:

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dEmbedAllFonts=true -sOutputFile=$YOUR_OUTPUT_FILE.pdf -f $YOUR_INPUT_FILE.pdf

One could also add -dNOPLATFONTS to the command line to use the ghostscript versions of the standard pdf fonts like Palatino, Times and Helvetica, if the ones installed on the system don't have all the characters needed in the specific document.


Unfortunately Tobias' approach didn't work for me when trying to embed fonts in my images for use with pdfTeX. The following command line, based on an answer from StackOverflow did work for me:

 gs -dCompatibilityLevel=1.4 \
    -dPDFSETTINGS=/screen \
    -dCompressFonts=true \
    -dSubsetFonts=true \
    -dNOPAUSE \
    -dBATCH \
    -sDEVICE=pdfwrite \
    -sOutputFile=image_with_fonts.pdf \
    -c ".setpdfwrite <</NeverEmbed [ ]>> setdistillerparams" \
    -f image_without_fonts.pdf