[NTG-pdftex] [PATCH v3] pdftex - Add support for encfile and \pdfgentounicode for PK fonts

Pali Rohár pali.rohar at gmail.com
Thu Mar 30 09:35:39 CEST 2017


On Wednesday 29 March 2017 23:58:06 Karl Berry wrote:
> I installed the patch, thanks.
> 
> But I admit I am still confused about the documentation. It's clear that
> with this new patch, both
> \pdfmapline{cmr10}
> and
> \pdfmapline{cmr10 <7t.enc}
> get the same output -- cmr10.3600pk and cmr10.600pk are embedded
> separately. That's what we want.
> 
> But, as I read the documentation, this is the exact opposite of what it
> calls a "scalable Type 3" font. pdftex-t.tex says:
> 
>     Lines containing nothing apart from {\em tfmname} [now, possibly
>     with a re-encoding] stand for scalable Type~3 fonts. For scalable
>     fonts as Type~1, TrueType and scalable Type~3, all the fonts loaded
>     from a \TFM\ at various sizes will be included only once in the
>     \PDF\ output. Thus if a font, let's say \type{csr10}, is described
>     in one of the map files, then it will be treated as scalable. As a
>     result the font source for csr10 will be included only once for
>     \type{csr10}, \type{csr10 at 12pt} etc. So \PDFTEX\ tries to do its
>     best to avoid multiple embedding of identical font sources. 
> 
> But here, with or without the re-encoding, we are embedding cmr10
> separately from cmr10 at 60pt.

I forgot to include this part of patch:

--- source/src/texk/web2c/pdftexdir/mapfile.c
+++ source/src/texk/web2c/pdftexdir/mapfile.c
@@ -537,7 +537,7 @@ static void fm_scan_line(void)
             set_opentype(fm);
         else
             set_type1(fm);
-    } else
+    } else if (is_std_t1font(fm))
         set_type1(fm);          /* assume a builtin font is Type1 */
     if (check_fm_entry(fm, true) != 0)
         goto bad_line;

Previous (-) line caused that every type3 font was marked as type1.

(I have pdftex in local git repository and forgot to export whole patch
into svn diff)

$ cat test.tex

\pdfmapline{cmr10}
\font\ff=cmr10
\font\fg=cmr10 at 60pt
\ff ABC
\fg ABC
\bye

$ pdffonts test.pdf 
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
[none]                               Type 3            yes no  no       4  0

Now is cmr10 really marked as scalable and included in output PDF only
once (for cmr10 and also for cmr10 at 60pt).

> In other words, as far as I can see, scalable Type 3 fonts in the sense
> of the current documentation are not supported at all. (After your first
> patch and before today's patch, accidentally, they were supported when a
> re-encoding was given but not otherwise.)
> 
> Am I getting things backward?
> 
> I believe the original idea of scalable Type 3 was that the font code
> itself would do the scaling to different sizes; that's why the font only
> had to be included once. Like a Type 1.

Yes, I understand that idea in same way.

> But since the demise of PGC et al., that was no longer operative.
> 
> To sum up, I think the current behavior is good, and I should change the
> manual to get rid of PGC stuff, get rid of the phrase "scalable Type 3",
> and explain the current behavior.

I'm going to play with PGC files as I think it still could be useful for
ability to include any PDF shape into font file...

> ?
> 
> Thanks,
> Karl

-- 
Pali Rohár
pali.rohar at gmail.com


More information about the ntg-pdftex mailing list