[Rd] New version of X11, png and jpeg

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Feb 25 17:56:53 CET 2008

R-devel has new versions of the X11(), png() and jpeg() devices on 
Unix-alikes.  The intention is that these are used identically to the 
previous versions (which remain available) but will produce higher-quality 
output with more features.


Antialiasing of text and lines (can be turned off) but no blurring of 

Buffering of the X11 display and fast repainting from a backing image. 
(The intention is to emulate the timer-based buffering of the windows() 
device in due course, but not for 2.7.0.)

Ability to use translucent colours, including backgrounds, and produce
partially transparent PNG files.

Scalable text, including to sizes like 4.5 pt. This allows more accurate 
sizing on non-standard screen sizes (e.g. my home machine has a 90dpi 
1650x1024 display whereas standard X11 fonts are set up for 75 or 100 

Full support for UTF-8, so on systems with suitable fonts you can plot in 
many languages on a single figure (and this will work even in non-UTF-8 
locales).  The output should be locale-independent (unlike the current 
devices where even English text is rendered slightly differently in 
Latin-1 and UTF-8 locales).

A utility function savePlot() to make a PNG/JPEG/TIFF copy of the current 

The new png() and jpeg() devices do not require an X server to be running.


Needs more software installed - cairo, pango and support packages (which 
on all the systems we have looked at are pulled in by the packages checked 
for).  You will see something like

   Additional capabilities:   PNG, JPEG, iconv, MBCS, NLS, cairo
if configure finds the software we are looking for.

Slower under some circumstances (although on the test systems much faster 
than packages Cairo and cairoDevice).  This will be particularly true for 
X11() with a slow connection between the machine running R and the X 

The additional software might not work correctly.

The new versions are not currently the default, but can be made so by 
setting X11.options(type="Cairo"), e.g. as a load hook for package 
grDevices.  I am using

setHook(packageEvent("grDevices", "onLoad"),
     function(...) {
         if(getRversion() >= '2.7.0') grDevices::X11.options(type="Cairo")

Please try these out and let us know how you get on.  As a check, try the 
TestChars() examples in ?points - on one Solaris 10 system a few of the 
symbol font characters were incorrect.  It worked on an FC5 system with

auk% pkg-config --modversion pango
auk% pkg-config --modversion cairo

so the versions required are not all recent.

Although these devices would in principle work on Mac OS X, neither cairo 
nor pango is readily available.  We are working on other versions for 
Mac OS (X11 based on cairo/freetype, png/jpeg based on Quartz).

There are also new svg() and tiff() devices.

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

More information about the R-devel mailing list