[R] Placing eps files from R into Adobe InDesign documents: specifying fontfamily

S Devriese
Wed, 13 Jan 2010 07:11:12 -0000

On 01/12/2010 04:36 PM, dwalcerz wrote:
>
> This is a solution I am posting for a problem that others may have.
>
> If you want to:
> 1.  Place lattice graphics from R into an Adobe InDesign document, and
> 2.  Use the export as eps function in R to maximize resolution (it is much
> better than exporting as a metafile or bitmap), and
> 3.  Use long strings of text in your titles or captions or to label your
> axes.
>
> Then you will have problems because:
> 1.  Adobe InDesign doesn't recognize R fontfamilies in eps files, and
> 2.  Adobe InDesing replaces the default R font, Helvetica, with a
fontfamily
> that looks like Courier, which significantly changes the physical length of
> each character string and disrupts the spacing and justification of titles,
> captions, and axis labels.
>
> The way I solved this problem is:
> 1.  When you execute a graph in R, use the Hershey family of fonts.  I
> particulary like HersheySans.  You can specify the fontfamily for axes and
> strips and titles as shown in the example below.
> 2.  Export the file in eps by right-clicking the on-screen display and
> selecting 'save as postscript'.
> 3.  Place the file in InDesign using the usual command (ctrl-D) and
> selecting the file.  You will still get the Adobe error about unrecognized
> fonts, but the automatic replacement that Adobe uses for the Hershey
> fontfamily is much better than the one they use for Helvetica, your spacing
> and justification will be almost perfect, and you get the excellent
> resolution and small size of vector-graphics.
>
> In the following example the fontfamily is specified for strips, axes, and
> titles with these lines:
> par.strip.text=list(fontfamily="HersheySans") #for strips
> scales=list(alternating=1, tck=c(1,0), fontfamily="HersheySans")
#for axes
> xlab=list("Combined Score", fontfamily="HersheySans")
#for titles such as
> 'main', 'sub', 'xlab' and 'ylab'
>
> Here is the example:
> bwplot(school.name~score|assessment+course_code, data=temp2.stack,
> 	plot.points=FALSE, drop.unused.levels=TRUE,
> 	panel=function(..., box.ratio, varwidth) {
> 		panel.violin(..., col="cornsilk", varwidth=FALSE,
box.ratio=box.ratio)
> 		panel.bwplot(..., box.ratio=0.1)
> 	},
> 	layout=c(2,3,1),
> 	par.strip.text=list(fontfamily="HersheySans"),
> 	scales=list(alternating=1, tck=c(1,0),
> 		fontfamily="HersheySans",
> 		x=list(relation="same", cex=0.7, rot=90),
> 		y=list(relation="same", cex=0.7, rot=0)),
> 	xlab=list("Combined Score", fontfamily="HersheySans"),
> 	ylab=list("School(State)(students)",
fontfamily="HersheySans")
> )
>

You might also have a look at the embedFonts function of the grDevices
packages

Stephan