I have had some fun in the last few days trying to put together an annotated map of China with R and some public GIS data: http://sourceforge.net/projects/outmodedbonsai/files/snpMatrix%20next/1.17.7.11/China_Choropleth_Maps.pdf/download It is done, and rather nice... there are a few issues: - the default pdf() device cannot do CJK with embedded fonts - and cairo_pdf() is not hooked up to Sweave yet. I have had a quick look, and it does not look too complicated, other than the fact that cairo_pdf() is mutually exclusive with pdf(); and the jpeg/png are new to 2.13 so it is probably just nobody has gotten round to it. (and cairo_pdf() also behaves differently with the onefile option). I guess I am almost saying I might get my hand dirty or help somebody else who wants to. So it is probably best to start some discussion. - Some of the ghostscript/CID font instructions in pdf() are a bit bizarre... - An earlier version of the above map does not work well with part of ghostscript (http://bugs.ghostscript.com/show_bug.cgi?id=692620). So that limits to some extent post-processing of cairo_pdf() output.
On 11-10-21 8:57 PM, Hin-Tak Leung wrote:> I have had some fun in the last few days trying to put together an annotated map of China with R and some public GIS data: > > http://sourceforge.net/projects/outmodedbonsai/files/snpMatrix%20next/1.17.7.11/China_Choropleth_Maps.pdf/download > > It is done, and rather nice... there are a few issues: > > - the default pdf() device cannot do CJK with embedded fonts - and cairo_pdf() is not hooked up to Sweave yet. I have had a quick look, and it does not look too complicated, other than the fact that cairo_pdf() is mutually exclusive with pdf(); and the jpeg/png are new to 2.13 so it is probably just nobody has gotten round to it. (and cairo_pdf() also behaves differently with the onefile option). I guess I am almost saying I might get my hand dirty or help somebody else who wants to. So it is probably best to start some discussion.It is not hard to write your own device functions, especially in 2.14.0. See rgl::rgl.Sweave for an example. Duncan Murdoch> - Some of the ghostscript/CID font instructions in pdf() are a bit bizarre... > > - An earlier version of the above map does not work well with part of ghostscript (http://bugs.ghostscript.com/show_bug.cgi?id=692620). So that limits to some extent post-processing of cairo_pdf() output. > > > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
On Sat, 22 Oct 2011, Duncan Murdoch wrote:> On 11-10-21 8:57 PM, Hin-Tak Leung wrote: >> I have had some fun in the last few days trying to put together an >> annotated map of China with R and some public GIS data: >> >> http://sourceforge.net/projects/outmodedbonsai/files/snpMatrix%20next/1.17.7.11/China_Choropleth_Maps.pdf/download >> >> It is done, and rather nice... there are a few issues: >> >> - the default pdf() device cannot do CJK with embedded fonts - and >> cairo_pdf() is not hooked up to Sweave yet. I have had a quick look, and it >> does not look too complicated, other than the fact that cairo_pdf() is >> mutually exclusive with pdf(); and the jpeg/png are new to 2.13 so it is >> probably just nobody has gotten round to it. (and cairo_pdf() also behaves >> differently with the onefile option). I guess I am almost saying I might >> get my hand dirty or help somebody else who wants to. So it is probably >> best to start some discussion. > > It is not hard to write your own device functions, especially in 2.14.0. See > rgl::rgl.Sweave for an example.And guess what the example in the Sweave manual uses? cairo_pdf() ... -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
Reading ?RWeaveLatex more carefully, I worked out that the outcome I want could be achieved without patching R, by having this towards the beginning: <<custom=hide>> cairo <- function(name, width, height, ...) grDevices::cairo_pdf(file = paste(name, "pdf", sep = "."), width = width, height = height) @ Then declaring grdevice= like this: <<another1,fig=TRUE,pdf=FALSE,grdevice=cairo,eval=TRUE,width=6,height=3>>grid.text("\u4F60\u597D", y=2/3, gp=gpar(fontfamily="CNS1")) @ So all is well. is there any chance of either updating ?RWeaveLatex with this actual use-case example, or make it easier with the attached patch (and updated version of what I did, just adding the corresponding documentation)? I thought there might be a a use for cairo_ps() as well, but then most people who can do latex could do pdflatex, especially those who has cairo installed. FWIW, besides Chinese, I am doing Tibetan and Arabic as well - needed/wanted those two for Sichuan (south-western China) and Ningxia (northern western, just south of Mongolia). --- On Sun, 23/10/11, Hin-Tak Leung <htl10 at users.sourceforge.net> wrote:> --- On Sat, 22/10/11, Prof Brian > Ripley <ripley at stats.ox.ac.uk> > wrote: > > > On Sat, 22 Oct 2011, Duncan Murdoch > > wrote: > > > > > On 11-10-21 8:57 PM, Hin-Tak Leung wrote: > > >> I have had some fun in the last few days > trying to > > put together an annotated map of China with R and > some > > public GIS data: > > >> > > >> http://sourceforge.net/projects/outmodedbonsai/files/snpMatrix%20next/1.17.7.11/China_Choropleth_Maps.pdf/download > > >> > > >> It is done, and rather nice... there are a > few > > issues: > > >> > > >> - the default pdf() device cannot do CJK > with > > embedded fonts - and cairo_pdf() is not hooked up to > Sweave > > yet. I have had a quick look, and it does not look > too > > complicated, other than the fact that cairo_pdf() is > > mutually exclusive with pdf(); and the jpeg/png are > new to > > 2.13 so it is probably just nobody has gotten round to > it. > > (and cairo_pdf() also behaves differently with the > onefile > > option). I guess I am almost saying I might get my > hand > > dirty or help somebody else who wants to. So it is > probably > > best to start some discussion. > > > > > > It is not hard to write your own device > functions, > > especially in 2.14.0.? See rgl::rgl.Sweave for an > > example. > > > > And guess what the example in the Sweave manual > uses?? > > cairo_pdf() ... > > I don't want a new device - I just wanted cairo_pdf() to be > hooked up to Sweave as an alternative to the default pdf(). > See my later post with the patch against? R trunk and > the worked examples. > > It looks like cairo_pdf() is just using my current > fontconfig settings. > >-------------- next part -------------- A non-text attachment was scrubbed... Name: cairo.diff Type: text/x-patch Size: 3261 bytes Desc: not available URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20111028/1bdcd1a8/attachment.bin>
Apparently Analagous Threads
- patch to add cairo support to Sweave (Re: Sweave, cairo_pdf, CJK, ghostscript)
- 2 bugs in R's grDevices, and fixes.
- 2 bugs in R's grDevices, and fixes.
- [FORGED] Re: Replaying a recorded plot (mixed base and grid) from pdf() in cairo_pdf() crashes R
- bug in codetools/R CMD check?