DynaPDF Manual - Page 200

Previous Page 199   Index   Next Page 201

Function Reference
Page 200 of 839
Note that it is in fact not possible to determine whether a glyph is really missing. The function can
only check whether a glyph on index 0 is referenced somewhere or if a font does not contain a
requested glyph and falls back to notdef. Also the latter case can be wanted behaviour.
Index 0 is reserved for the notdef glyph in all font formats but many PDF creators decided to store
the first glyph on index 0. This was mostly an optimization in older PDF libraries but this kind of
optimization violates font standards. So, whether a glyph is really missing cannot be determined
algorithmically but we can assume that something went wrong during the file creation.
However, for a printer it is not relevant whether the glyph to be printed is located on index 0 or
somewhere else. So, whether missing glyph warnings should be ignored or not is up to the caller.
Font embedding
Printing errors on Postscript devices have mostly to do with non-embedded fonts. The function can
embed non-embedded fonts but it is also possible to convert glyphs of non-embedded fonts to
outlines with Optimize(). The latter solution is usually better because font substitution can lead to
visible distortions if the glyph metrics are not fully compatible.
The reason why the conversion of non-embedded fonts to outlines produces often better results is
the fact that glyphs of embedded fonts are not scaled to the destination widths as it would be the
case if the font is not embedded (PDF fonts contain the widths of all glyphs, also if the font is not
embedded).
Converted outlines preserve this scaling and that is the reason why the result looks often good also
if a substituted font contains incompatible metrics.
If you want to combine Optimize() with CheckConformance() without storing the result in a
temporary file then set the flag ofInMemory but do not set the flag ofNewLinkNames since this can
cause errors in the CheckConformance() call. Note that processing in memory should be done for
relatively small files only since the memory usage grows quickly if many pages need to be
converted.
PDF/A 1b:
When creating new PDF/A 1a or PDF/A 1b files, the following features are prohibited:
The fill or stroke alpha constant in an extended graphics state must be 1.0 if present (see
CreateExtGState()).
Transparency groups, blend modes, as well as alpha channels in images.
Layers (CreateOCG(), CreateOCMD() and all related functions).
Annotations which are not defined in PDF 1.4. Highlight annotations cannot be used since
these annotations require the blend mode Multiply.
Form fields (form fields will be flattened if present). Note that check boxes use the font
ZapfDingbats which is mostly not present on a Windows system.
 

Previous topic: Type3 font conversion, Summay, Normalization

Next topic: PDF/A 2b, 2u, 3b, 3u, PDF/A 4, 4e, 4f