[NTG-pdftex] 1.20b-rc0 font replacement bug
The Thanh Han
hanthethanh at myrealbox.com
Thu Nov 25 02:58:38 CET 2004
Many thanks Hartmut. Martin, shall you apply the patch by Hartmut?
Best,
Thanh
On Thu, Nov 25, 2004 at 02:25:06AM +0100, Hartmut Henkel wrote:
> Hi Thanh,
>
> when a PDF file with embedded fonts is included by \pdfximage, fonts
> will be replaced through lookup_ps_name() heuristics. However it's
> actually not checked there whether the font file itself is available.
> Problem example:
>
> Some PDF file comes with a Palatino-Roman. TFM entry pplr8r is listed in
> the mapfile together with fontfile <pplr8a.pfb. But pplr8a.pfb isn't on
> the PC. Still the font embedded in the PDF file will be replaced by ---
> nothing. One gets an invalid stream, missing letters.
>
> But if the fontfile is not available, the replacement of embedded fonts
> in PDF files shouldn't be done at all; instead the font coming with the
> PDF file should be used as is. Below is a quick patch. Only roughly
> checked.
>
> Regards, Hartmut
>
>
> --- mapfile.c.orig Sun Nov 7 14:34:23 2004
> +++ mapfile.c Thu Nov 25 02:06:08 2004
> @@ -721,8 +721,9 @@
> /* lookup_ps_name looks for an entry with a given ps name + slant + extend.
> * As there may exist several such entries, we need to select the `right'
> * one. We do so by checking all such entries and return the first one that
> - * fulfils the following criteria (in descending priority):
> + * fulfills the following criteria:
> *
> + * - the font file is available, and (in descending priority):
> * - the tfm has been used (some char from this font has been typeset)
> * - the tfm has been loaded (but not used yet)
> * - the tfm can be loaded (but not loaded yet)
> @@ -732,6 +733,7 @@
> static fm_entry *lookup_ps_name(fm_entry *fm)
> {
> fm_entry *p, *p2;
> + ff_entry *ff;
> struct avl_traverser t, t2;
> strnumber s;
> int a;
> @@ -750,14 +752,16 @@
>
> /* search forward */
> do {
> - if (used_tfm(p))
> + ff = check_ff_exist(p);
> + if (ff->ff_path != NULL && used_tfm(p))
> return p;
> p = avl_t_next(&t);
> } while (p != NULL && comp_fm_entry_ps(fm, p, NULL) == 0);
>
> /* search backward */
> while (p2 != NULL && comp_fm_entry_ps(fm, p2, NULL) == 0) {
> - if (used_tfm(p2))
> + ff = check_ff_exist(p2);
> + if (ff->ff_path != NULL && used_tfm(p2))
> return p2;
> p2 = avl_t_prev(&t2);
> }
>
> _______________________________________________
> ntg-pdftex mailing list
> ntg-pdftex at ntg.nl
> http://www.ntg.nl/mailman/listinfo/ntg-pdftex
>
More information about the ntg-pdftex
mailing list