From johannes_graumann at web.de  Fri Jan 25 09:14:27 2008
From: johannes_graumann at web.de (Johannes Graumann)
Date: Fri, 25 Jan 2008 09:14:27 +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>
Message-ID: <fnc5pi$15e$1@ger.gmane.org>

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)
}

and will extend as I eun into trouble with more devices. Thanks for your
help.

Joh



[Rd] R CMD check and postscript fonts
Johannes Graumann