Solving font substitution and font rendering issues

Q: I have a PDF file in which some characters are strange (the "'"
becomes a square). It seems that the the viewer/rasterizer can't find
the correct font on the system. Can you help me with this problem?
A: If upgrading to the latest version of PDFNet (http:// does not help, it is most likely
that the problem is due to font substitution. When PDFNet encounters a
missing font (a font that is referenced, but not embedded in the
document) it tries to find a system font with similar characteristics.
Because font substitution is an error prone process, it is recommended
that all fonts are embedded when generating the PDF. PDF consumers
(readers) can't guarantee 100% accurate text rendering for missing

PDFNet SDL allows users can override the default font substitution
using PDFNet.AddFontSubst(...) function. For example,

PDFNet.AddFontSubst("MinionPro-Regular", "c:/myfonts/MinionPro-
PDFNet.AddFontSubst("Times-Roman", "c:/windows/fonts/times.ttf");
PDFNet.AddFontSubst("Times-Italic", "c:/windows/fonts/timesi.ttf");
PDFNet.AddFontSubst("Avenir-Black", "c:/myfonts/ArialUnicode.otf");

Also for improved support for missing fonts, we recommend that client
machines have 'Arial Unicode MS' font installed. Arial Unicode MS
( comes as part of
Microsoft Office, but it is also bundled with Mac OS X v10.5 and
later. It may also be purchased separately (as Arial Unicode) from
various font companies.

Other fonts covering different Unicode ranges would also work. For
example, to support PDF documents that reference, but do not embed,
Asian (i.e. CJKV) fonts, the user may want to install Acrobat Asian
Font Pack (
acrrasianfontpack.html). After downloading and installing the font
pack you can copy fonts from 'C:\Program Files\Adobe\Acrobat
7.0\Resource\CIDFont' to 'C:\WINDOWS\Fonts'. Please note that Arial
Unicode would also work for CJKV documents, but to exactly match
Acrobat output (for CJKV) the user would need to install Adobe's Asian
Font Pack.