From johannes_graumann at web.de  Fri Jan 25 20:54:11 2008
From: johannes_graumann at web.de (Johannes Graumann)
Date: Fri, 25 Jan 2008 20:54:11 +0100
Subject: [Rd] R CMD check and postscript fonts
References: <loom.20080124T214916-853@post.gmane.org>
	<Pine.LNX.4.64.0801242210070.9592@auk.stats>
	<loom.20080124T223622-976@post.gmane.org>
	<Pine.LNX.4.64.0801250621120.7483@auk.stats>
	<fnc5pi$15e$1@ger.gmane.org>
Message-ID: <fndepi$oa8$1@ger.gmane.org>

Johannes Graumann wrote:

> Prof Brian Ripley wrote:
> 
>> On Thu, 24 Jan 2008, Johannes Graumann wrote:
>> 
>>> Prof Brian Ripley <ripley <at> stats.ox.ac.uk> writes:
>>>
>>>>
>>>> On Thu, 24 Jan 2008, Johannes Graumann wrote:
>>>>
>>>>> Hello,
>>>>> I came across this by using R cmd check - otherwise I would probably
>>>>> not have noticed.
>>>>> One of my functions does something like this:
>>>>> # postscript()
>>>>> # plot(1, xlim = c(0, 10), ylim = c(0, 4), type = "n", ann = FALSE,
>>>>> # axes =
>>> FALSE)
>>>>> # text(1:10, 2, c("a","b"), cex = seqcex, family="mono",font=2)
>>>>>
>>>>> Which results in the error:
>>>>> Error in text.default(1:10, 2, c("a", "b"), cex = seqcex, family =
>>>>> "mono",  :
>>>>>  family 'mono' not included in PostScript device
>>>>>
>>>>> 'mono' is perfectly fine for my x11 device and
>>>>> # postscriptFonts()$mono
>>>>>
>>>>> gives me:
>>>>> $family
>>>>> [1] "Courier"
>>>>>
>>>>> $metrics
>>>>> [1] "Courier.afm"             "Courier-Bold.afm"
>>>>> [3] "Courier-Oblique.afm"     "Courier-BoldOblique.afm"
>>>>> [5] "Symbol.afm"
>>>>>
>>>>> $encoding
>>>>> [1] "default"
>>>>>
>>>>> attr(,"class")
>>>>> [1] "Type1Font"
>>>>>
>>>>> That looks all right to me no? How to remedy this?
>>>>
>>>> Use the 'fonts' argument to postscript():
>>>>
>>> Hmmm, my actual function contains this bit ... any idea on how to solve
>>> this as generic as possible? I do not want to make this require or
>>> prevent postscript as the dev, but make the test (postscript) pass and
>>> enable future use of postscript ... where to put the 'fonts'
>>> unobtrusively, so that other devs will still work?
>> 
>> It is device-specific.
> For now I'm going with
> 
> if(names(dev.list())[length(dev.list())]=="postscript"){
>   text(1:xreq, 2, vectorsequence, cex = seqcex, fonts="mono",font=2)
> } else {
>   text(1:xreq, 2, vectorsequence, cex = seqcex, family="mono",font=2)
> }
This just gives me issues if someone wants to plot to a on-screen device
(like windows or x11) and uses the gui to export to postscript: the plot
was produced with the 'family' option, but the postscript device it is now
piped to will not take it. Is there any way I could code around this
generally?

Thanks, Joh



[Rd] R CMD check and postscript fonts
Johannes Graumann