dwalcerz
2010-Jan-12 15:36 UTC
[R] Placing eps files from R into Adobe InDesign documents: specifying fontfamily
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") ) -- View this message in context: http://n4.nabble.com/Placing-eps-files-from-R-into-Adobe-InDesign-documents-specifying-fontfamily-tp1012186p1012186.html Sent from the R help mailing list archive at Nabble.com.
S Devriese
2010-Jan-13 07:11 UTC
[R] Placing eps files from R into Adobe InDesign documents: specifying fontfamily
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
watson
2011-Jul-15 22:59 UTC
[R] Placing eps files from R into Adobe InDesign documents: specifying fontfamily
Also try using pdf() instead of postscript(). It seems to keep everything happy, and retain higher resolution. -- View this message in context: http://r.789695.n4.nabble.com/Placing-eps-files-from-R-into-Adobe-InDesign-documents-specifying-fontfamily-tp1012186p3671150.html Sent from the R help mailing list archive at Nabble.com.