[cairo] Cairo PDFs - vector or raster?
Behdad Esfahbod
behdad.esfahbod at gmail.com
Fri May 8 13:13:11 PDT 2015
On 15-04-26 10:34 PM, C. Thomas Stover wrote:
> On Sat, 25 Apr 2015 15:28:37 +0930, Adrian Johnson wrote:
>
>> Cairo PDF and PS output uses embedded fonts for drawing text. The
>> embedded fonts are subsetted to remove unused glyphs while being careful
>> to preserve font hinting. The encoding used depends on the output format
>> and the characters used.
>>
>> For PDF, glyphs that map to characters in the PDF WinAnsiEncoding are
>> placed in an 8-bit font with that encoding. Other glyphs are placed in a
>> 16-bit font with a custom encoding (the glyphs ids are assigned
>> sequentially starting from 1). A ToUnicode map and optionally ActualText
>> is embedded to allow extracting the unicode characters for the glyphs.
>> Cairo user fonts are embedded using Type 3 fonts.
>>
>> Most of the font subsetting code is shared by PS and PDF. The PS
>> embedded fonts are the same as PDF with a couple of exceptions:
>>
>> - PS does not have a builting WinAnsiEncoding. Instead we create a
>> custom 8-bit font with the same encoding.
>>
>> - While it is possible to create PS composite fonts with a 16-bit
>> encoding, we use only 8-bits fonts. Multiple 8-bit fonts are used to
>> contain all glyphs that don't map the WinAnsi encoding.
>
> Thanks so much for your answer! That explains so much. Maybe you can
> comment on these.
>
> 1. Is the font rendering logic deterministic / predictable enough, such
> that given a font, one could compute the sizes of rendered text with
> enough confidence that the same result would be yielded from PS / PDF
> viewers, printer drivers, and printer firmware? I would imagine the
> answer is probably something like "usually". Is it just font metrics +
> kerning tables + ligatures substitutions, or are there more variables?
The kerning, ligatures, etc happen before PDF generation. PDF records the
exactly glyph indices and locations to show them.
> 2. Are the font metrics needed for the above rendering computations read
> from font files, hard coded tables, font "metrics" files, or combinations?
>
> 3. Some sources talk about a set of core fonts that some versions of PS
> and PDF support are guaranteed to have, yet those particular fonts have
> limited character code point coverages. Are these fonts ever used in
> cairo?
Definitely limited charset. Don't remember if cairo uses them. Guess not.
> 4. How much of this is done by cairo vs pango? Does pango do the size
> computations and cairo do the composite font file creations?
Yes. Pango does layout, cairo does font subsetting and embedding (including
composite fonts).
More information about the cairo
mailing list