[reportlab-users] Re: ReportLab + Macintosh TTFs

Just van Rossum reportlab-users@reportlab.com
Wed, 3 Jul 2002 10:44:04 +0200

Marius Gedminas wrote:

>          # The following tables are simply copied from the original
>          for tag in ('name', 'OS/2', 'cvt ', 'fpgm', 'prep'):
> -            output.add(tag, self.get_table(tag))
> +            try:
> +                output.add(tag, self.get_table(tag))
> +            except KeyError:
> +                # Apparently some of the tables are optional (cvt, fpgm,
> +                # The lack of the required ones (name, OS/2) would have
> +                # been caught before.
> +                pass

Aren't you supposed to copy anything you don't know about? Maybe not true when
embedding TTF in PDF, I'm just guessing.

Btw: in general, the OS/2 table is only required on Windows. Don't know about
when embedding in PDF.

> A couple of related formats are OpenType fonts with PostScript shapes
> (probably they'd need to be converted to Type1 before embedding) and

Those PostScript outlines are stored in the "CFF " table. CFF is a font format
by itself and can be *directly* embedded in PDF (it's actually one of the
reasons for it's existence: it stands for Compact Font Format). Subsetting would
be quite a bit harder than subsetting T1, though. The most efficient way to
embed Type 1 would be to convert it to CFF before embedding, and I think that's
exactly what Distiller does.

> font collections.  Check the first 4 bytes -- 'OTTO' means it's OpenType
> with PostScript outlines, 0x00010000 means TrueType (= OpenType with
> TTF outlines), 'ttcf' means TrueType Collection.

Apple ships TT fonts which have "true" as the first four bytes...