plot issues -> favor pdfcairo [new changeset]
Benjamin Lindner
lindnerben at gmx.net
Tue Jun 9 08:26:12 CDT 2009
Ben Abbott wrote:
>
> On Jun 7, 2009, at 3:13 PM, Benjamin Lindner wrote:
>
>> Ben Abbott wrote:
>>> On Jun 6, 2009, at 10:38 AM, Ben Abbott wrote:
>>>> On Jun 6, 2009, at 7:49 AM, Benjamin Lindner wrote:
>>>>
>>>>> Ben Abbott wrote:
>>>>>> On Jun 5, 2009, at 4:08 PM, Ethan Merritt wrote:
>>>>>>> On Friday 05 June 2009 11:12:52 Benjamin Lindner wrote:
>>>>>>>> Ethan Merritt wrote:
>>>>>>>>> On Friday 05 June 2009, Ben Abbott wrote:
>>>>>>>>>
>>>>>>>>>>>> Petr, what are the benefits of the pdfcairo and pngcairo
>>>>>>>>>>>> terminals
>>>>>>>>>>>> over the pdf and png terminals?
>>>>>>>>>
>>>>>>>>> Aside from licensing issues for PDFLib, using cairo to generate
>>>>>>>>> the plots
>>>>>>>>> allows antialiasing, transparency, and UTF-8 support.
>>>>>>>>
>>>>>>>> This may be a sutpid question, but what should a vector-based
>>>>>>>> graphics
>>>>>>>> description support antialiasing for?
>>>>>>>
>>>>>>> Ben asked about both pdfcairo and pngcairo.
>>>>>>> The anti-aliasing is an issue for png, not for pdf.
>>>>>>> Conversely, the transparency support is an issue for pdf but not
>>>>>>> for png.
>>>>>>>
>>>>>>>> pdfcairo might be superior if you require transparency and UTF-8,
>>>>>>>> granted, but the quality of the generated output is disappointing
>>>>>>>> compared to pdf via postscript.
>>>>>>>> I do a lot of image plots and found that the resulting file
>>>>>>>> sizes with
>>>>>>>> the pdfcairo terminal are 4-8 times larger than a ps->pdf
>>>>>>>> output. Also
>>>>>>>> you don't have good control over font selection, which is IMO a
>>>>>>>> knock-out criteria when doing high-quality plots for e.g. latex
>>>>>>>> inclusion.
>>>>>>>
>>>>>>> All I can say is that I have had the opposite experience.
>>>>>>> Maybe that's because I work in a UTF environment and need support
>>>>>>> for CJK character sets. PostScript is basically hopeless for those.
>>>>>>> There are some very fragile workarounds, but they are so
>>>>>>> installation-
>>>>>>> specific that it doesn't work to build scripts or work flow
>>>>>>> around them.
>>>>>>>
>>>>>>> For latex inclusion, ps2pdf or direct PDF generation should be
>>>>>>> exactly
>>>>>>> the same, and subject to the same limitations of whatever converted
>>>>>>> Computer Modern fonts you are using. If that is a primary concern,
>>>>>>> then using one of the latex-based terminals directly is a better
>>>>>>> bet.
>>>>>>>
>>>>>>> Ethan
>>>>>> It doesn't appear to me that there is one solution that is
>>>>>> preferred over the other in all cases.
>>>>>> I'll propose the following, and encourage all to comment.
>>>>>> -----------
>>>>>> 1) if "pdfcairo" is present => use "set term pdfcairo ..."
>>>>>> 2) if "pdf" is present => use "set term pdf ..."
>>>>>> 3) if neither => use "set term postscript ..." and then convert
>>>>>> using ghostscript
>>>>>> -----------
>>>>>
>>>>> Sounds very reasonable to me.
>>>>>
>>>>>> Although I'm a big LaTeX user, I elevated pdfcairo over pdf for
>>>>>> the transparency feature.
>>>>>> Similarly for png
>>>>>> -----------
>>>>>> 1) if "pngcairo" is present => use "set term pngcairo ..."
>>>>>> 2) if "png" is present => use "set term png ..."
>>>>>> 3) if neither => use "set term postscript eps ..." and then
>>>>>> convert using ghostscript
>>>>>> -----------
>>>>>
>>>>> same as above
>>>>>
>>>>>> For LaTeX, I will soon be adding support for the Lua/TikZ
>>>>>> terminal. Its rendering is a bit slow, but produces excellent
>>>>>> results for both latex and pdflatex.
>>>>>> The solutions above will only work well for gnuplot 4.3+. Prior to
>>>>>> that the variable GPVAL_TERMINALS does not exist, and octave has
>>>>>> no manner to check for the existence of specific terminals.
>>>>>
>>>>> For windows platform this is OK, since a working console
>>>>> application is only possible with 4.3+
>>>>> Also interactive zooming with piped gnuplot works only with 4.3+
>>>>>
>>>>> benjamin
>>>>
>>>> Great!
>>>>
>>>> I've attached a changeset for the pdf part. It is combined with a
>>>> changeset for forcing mono rendering (there is some problem with
>>>> rgb2gray that has delayed me in pushing that change).
>>>>
>>>> In any event, I'd appreciated confirmation form linux and window's
>>>> users that this chageset works correctly.
>>>>
>>>> Ben
>>> I've rolled up all the changesets for these plot issues. The attached
>>> must be applied to the current sources. With this change applied, the
>>> print command will favor the cairo terminals and will properly render
>>> a gray-scale image when the -mono option is specified.
>>> I'd appreciate some testing to make sure there are no surprises.
>>> I also noticed we've been on bug list. I've moved this over to the
>>> maintainers list (I should have done that many emails ago).
>>
>> Hmm, I tried to import your changeset, but it fails for all hunks.
>> My tip is 9305:52b4d82e5b4f from http://www.octave.org/hg/octave
>>
>> benjamin
>
> I did find a problem with the prior changeset (new bug), but I don't
> understand why it wouldn't apply for you. In any event, try the attached
> version.
Argh, stupid CRLF line endings mess.
Got the changeset to apply.
However, it does not work as expected.
I have a gnuplot version, which has the pdfcairo and pngcairo terminals
and has the png terminal.
Printing to pdf as "print -dpdf" now still invokes ghostscript.
I believe I can guess where the problem is.
available_terminals = __gnuplot_get_var__ (gcf, "GPVAL_TERMINALS");
available_terminals = regexp (available_terminals, "\\b\\w+\\b",
"match");
gnuplot_supports_term = any (strcmp (available_terminals, termn));
This yields for the gnuplot under test a cell array available_terminals
which includes a terminal "pdfcairo" but does *not* include a terminal
"pdf". Thus a "print -dpdf" will yield gnuplot_supports_term=false, and
then the check for the cairo terminals is never done.
I guess the same will happen if gnuplot supports pngcairo but does not
support the png terminal.
The decision logic is the wrong way round.
benjamin
More information about the Octave-maintainers
mailing list