groff
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Groff] .PSPIC seems to be broken


From: Werner LEMBERG
Subject: Re: [Groff] .PSPIC seems to be broken
Date: Sun, 10 Feb 2013 15:59:14 +0100 (CET)

> But I still mistrust things I can't repair with a text editor.

:-)

> According to Adobe, CFF fonts are "based on all of the same concepts
> for drawing paths and hinting" as Type 1 fonts, and "a Type 1 font
> can be converted into CFF/Type2 format, and back to Type 1 again,
> without any loss of quality".

Yeah, while correct for most fonts, this is not true in general.
Type 1 -> Type 2 charstrings (as used in CFF fonts) always works, but
Type 2 charstrings have some extensions like the `random' operator
which isn't supported in Type 1 fonts.  Well, othersubr #28 returns a
random number (no idea where exactly this has been defined), but only
othersubr #0-#4 are defined for Type 1.

> With this in mind, I've attached a shell script that represents my
> "fix" of the lilypond file import issue.  It works by completely
> removing the embedded fonts from the lilypond-generated Postscript
> file and replacing them by corresponding %%IncludeResource comments,
> which will later be resolved by grops's resource manager facility.

There is another Lilypond option to let the fonts be loaded by
GhostScript directly:

  lilypond --ps -dbackend=eps -dgs-load-fonts ...

This uses GhostScript's `.loadfont' operator, making the section look
like this on my GNU/Linux box:

  %%BeginProlog
  /lilypond-datadir where
    {pop}
    {userdict
     /lilypond-datadir (/usr/local/share/lilypond/2.17.11) put}
  ifelse

  %%BeginResource: font Emmentaler-11
  lilypond-datadir
    (/fonts/otf/emmentaler-11.otf)
    concatstrings
  (r)
  file
  .loadfont
  %%EndResource

A nice side effect is that the EPS files become much smaller, but of
course they are no longer self-contained.  Again, grops understands
this just fine, but you *must* use GhostScript afterwards to further
process the output file.

>  * Lilypond outputs a space character at the top left.  Since I have
>    no experience with lilypond I don't know what generates this, and
>    my solution is to simply edit it out.

IIRC, this is a bug which I haven't been able to catch yet (mostly due
to time constraints).

>  * The rest of the script gets rid of the auto-positioning
>    and calls ghostscript to find the bounding box.  Make sure
>    ghostscript also has access to the fonts.

Using -dbackend=eps, you don't need this since a bounding box gets
emitted.


    Werner



reply via email to

[Prev in Thread] Current Thread [Next in Thread]