[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