[R] set different font family for strings in mtext or text?

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Oct 26 13:32:00 CEST 2011


On Wed, 26 Oct 2011, Jinsong Zhao wrote:

> Thank you very much for the quick reply.
>
> On 2011-10-26 18:24, Prof Brian Ripley wrote:
>> See ?par: check the 'family' paramater.
>> You can select 'family' for each call to mtext or text.
>
> Yes, I can select 'family' for each call to mtext or text. however, when it's 
> necessary to put both Chinese and English in one line, I should call text or 
> mtext several times with position explicitly. It will be really tedious. The 
> following code have been used for this purpose, however, I don't like this 
> design:
>
> put.text <- function(x, y, text, family, font, ...) {
>   str.n <- length(text)
>   sw.n <- numeric(length = str.n+1)
>   sw.n[1] <- 0
>
>   if (missing(family)) family <- rep("", str.n)
>   if (missing(font)) font <- rep(1, str.n)
>
>   for (i in 1:str.n) sw.n[i+1] <- strwidth(text[i], family = family[i], font 
> = font[i])
>   sw <- sum(sw.n)
>   for (i in 1:str.n)
>      text(x+sum(sw.n[1:i]), y, text[i], family = family[i], font = font[i], 
> adj = c(0,0.5), ...)
> }
>
> ## usage
> ## plot "中文(English)" with different font family
> ## 'song' is a user defined font family for CJK.
> pdf()
> plot(1:10, type = "n")
> put.text(5, 5, c("中文", "(English)"), c("song", "Times"))
> dev.off()
>
>
>> 
>> However, mixing families is rather ugly, and there are font families
>> that cover both English and Chinese.
>
> Yes, there are some font families that cover both English and Chinese, 
> however, in those font families, the English characters are ugly...

Not to my eyes in Arial Unicode MS (nor to millions of writers of Word 
documents).  Not elegant, but not ugly.

And that is one of the recommended choices in several places in the R 
documentation.

>
>> 
>> Note that the main problem with postscript() and pdf() is the limited
>> support in those languages for non-8-bit character encodings: R cannot
>> magically remove restrictions of languages designed in the 1970s.
>> See also http://cran.r-project.org/doc/Rnews/Rnews_2006-2.pdf
>> (referenced from ?pdf)
>
> Well, I have read this paper very careful, so I can draw CJK on the plot in 
> postscript() and pdf().
>
>> 
>> Users of other OSes have the option of using cairographics-based devices
>> (e.g. cairo_pdf), and so will Windows' users as from 2.14.0 (which is in
>> RC): however, the font flexibility is far less on Windows.
>
> I will try this device. Thanks for the information.
>
> Regards,
> Jinsong
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

-- 
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-help mailing list