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

Jinsong Zhao jszhao at yeah.net
Wed Oct 26 13:08:31 CEST 2011


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...

>
> 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



More information about the R-help mailing list