Hi,

I'm slightly confused here, what you (Simon) describe looks a lot like
PR#14128 which was fixed last December,

------------------------------------------------------------------------
r50695 | ripley | 2009-12-09 13:37:27 +0100 (Wed, 09 Dec 2009) | 1 line

adjust line textures for butt end caps on postscript() and pdf() devices
------------------------------------------------------------------------

Was there another bug lurking around that only got apparent after this
change or is it unrelated? I checked the diff between the two versions
but I'm still not sure.

Thanks,

baptiste



On 13 February 2010 17:30, Simon Urbanek <simon.urba...@r-project.org> wrote:
>
> On Feb 12, 2010, at 4:37 PM, Ken Knoblauch wrote:
>
>> Ken Knoblauch <ken.knoblauch <at> inserm.fr> writes:
>>> First, I want to thank everybody who responded for their
>>> helpful comments and suggestions, though the problem is
>>> still unresolved and if anyone has any additional ideas,
>>> I would be grateful.  Second, if I can test your patience
>>> just a bit more, I have found an additional clue that
>>> perhaps will help solve the mystery of the missing dotted
>>> lines (on my system, apparently).
>>>
>>> I tried on another Leopard system (64 bit R) with the same result, and then
>>> on a system running Tiger (all with a version of R 2.10.1 patched),
>>> The dotted lines appeared on Tiger.  I transferred the Tiger generated
>>> file to my Leopard Mac and the dotted line appears on the viewer,
>>> here, as well.  So, I investigated how the files might differ
>>> and the only thing that I can find is that the Tiger generated
>>> version contains the lines
>>>
>>> 1 J
>>> 1 j
>>>
>>> whereas, in the Leopard generated version, I only see
>>>
>>> 1 j
>>>
>>> If I add a line of 1 J to the Leopard generated file, after line 35,
>>> the dotted lines do appear in my viewer.
>>>
>>> I don't know what these commands do in pdf (I don't speak pdf).
>>> Would anyone have an idea what could have happened that my pdf()
>>> command does not produce them and most importantly, any ideas on
>>> how to fix it?
>>
>>>>> --
>>>>> Ken Knoblauch
>>>>> Inserm U846
>>>>> Stem-cell and Brain Research Institute
>>>>> Department of Integrative Neurosciences
>>>>> 18 avenue du Doyen Lépine
>>>>> 69500 Bron
>>>>> France
>>>>> tel: +33 (0)4 72 91 34 77
>>>>> fax: +33 (0)4 72 91 34 61
>>>>> portable: +33 (0)6 84 10 64 10
>>>>> http://www.sbri.fr/members/kenneth-knoblauch.html
>>
>> Some additional search in the pdf reference manual and I found that
>> 1 j refers to linejoin choice (ljoin = 1 in par)
>> 1 J to line end (lend = 1 in par)
>>
>>> From this I tried,
>>
>>
>> pdf(file = "testPP.pdf")
>> par(lend = 1) # the default is 0 according to ?par
>> x <- 1:10
>> plot(x, type = "l", lty = 3, lwd = 3)
>> lines(x, 0.5 * x)
>> dev.off()
>>
>> which produces the correct dotted line (in my viewer)...
>>
>
> Great, I think I know what's happening. The good news is that I have 
> committed the fix to R. Let me explain what we see and then the issue.
>
> The issue comes from the fact that dots in lines are created by using 
> 0-length pattern segments. What this means is that the appearance is mainly 
> defined by the line end setting:
>
> lend0 = PDF1 = round = circle
> lend1 = PDF0 = butt = nothing since it's a rectangle of the length 0
> lend2 = PDF2 = square = squares in the direction of the line
>
> So what happens in the case where you see nothing is that the line end is set 
> to butt (lend=1 -> 0 J) which produces 0-width rectangles and thus is 
> invisible.
>
> The main bug was that the PDF device failed to set the line end (in the PDF) 
> if the texture (lty) was also to be set. Therefore R would think that it 
> changed the line cap to round, but in fact it did not so it was up to the 
> viewer's default what the line cap would be. If it happened to be butt then 
> the line would become invisible, because R thought it's round so it can use 
> 0-length segment. R is smart enough to use 1-length segment if the type is 
> butt cap so that's why butt cap worked for you. The difference in the output 
> was due to the difference in R versions - not really due to OS versions - 
> because the behavior wrt line cap = butt was changed between R 2.10.1 release 
> and now.
>
> That is now all fixed in R-devel and R-patched.
>
> Thanks for your persistence, Ken, your digging was very helpful to pinpoint 
> he right spot and the bug was not Mac-specific (in fact Quartz was 
> unaffected), so many R users will be thankful :).
>
> Thanks,
> Simon
>
>
>
>> I can add par(lend = 1) throughout my Sweave document, I guess.
>> If anybody has any further suggestions, or how to fix this globally,
>> I'm interested in hearing from you.  Thanks.
>>
>> Ken
>>
>> _______________________________________________
>> R-SIG-Mac mailing list
>> R-SIG-Mac@stat.math.ethz.ch
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>
> _______________________________________________
> R-SIG-Mac mailing list
> R-SIG-Mac@stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>

_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

Reply via email to