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

______________________________________________
R-help@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.

Reply via email to