Jinsong Zhao
2011-Oct-26 09:55 UTC
[R] set different font family for strings in mtext or text?
Hi there, Is it possible to set different font family for strings in mtext or text? For example, on windows platform with windows() device: plot(1:10, type = "n") text(5,5, "Chinese (English)") #Chinese for Chinese characters it will give the correct Chinese and English characters with two different font family, i.e., English character in default sans family, and Chinese character in the system default font family (it seems that the Chinese font family can not be set or changed). However, when using pdf() or postscript(), if setting the font family to "Times", then error message will appear: conversion failure on '...' in 'mbcsToSbcs': dot substituted for... When set the family "song" (a CJK font family), the English character will be displayed in that CJK font family. I hope to know, is there a mechanism that can be used to set different font family for one string, e.g., if one character can not be find in the default font family, then search for another font family? Any suggestions or comments will be really appreciated? Regards, Jinsong
Prof Brian Ripley
2011-Oct-26 10:24 UTC
[R] set different font family for strings in mtext or text?
See ?par: check the 'family' paramater. You can select 'family' for each call to mtext or text. However, mixing families is rather ugly, and there are font families that cover both English and Chinese. 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) 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. On Wed, 26 Oct 2011, Jinsong Zhao wrote:> Hi there, > > Is it possible to set different font family for strings in mtext or text? > > For example, on windows platform with windows() device: > > plot(1:10, type = "n") > text(5,5, "Chinese (English)") #Chinese for Chinese characters > > it will give the correct Chinese and English characters with two different > font family, i.e., English character in default sans family, and Chinese > character in the system default font family (it seems that the Chinese font > family can not be set or changed).It certainly can, and the rw-FAQ describes how to do so.> However, when using pdf() or postscript(), if setting the font family to > "Times", then error message will appear: > conversion failure on '...' in 'mbcsToSbcs': dot substituted for... > > When set the family "song" (a CJK font family), the English character will be > displayed in that CJK font family. > > I hope to know, is there a mechanism that can be used to set different font > family for one string, e.g., if one character can not be find in the default > font family, then search for another font family?You have to specify the family: R will not guess what you wanted.> Any suggestions or comments will be really appreciated? > > 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