[R] Characters Failing in SVG Output
Donald Macnaughton
donm@c @end|ng |rom m@t@t@t@com
Fri Aug 20 02:55:00 CEST 2021
Hello list,
The following program illustrates my problem:
# The program illustrates an apparent error generating SVG files.
# Note how the figure renders properly in the R graphics window, but
# fails if you open it in in an SVG-capable viewer, such as Chrome,
# Firefox, or Edge.
# It appears that something in the svg() device is failing to
# handle characters in higher parts of the Unicode range.
# This program runs under Windows and the system must have the Cambria
# Math font, which comes builtin with Windows.
# (The font and range below are used by the Microsoft Word equation
# editor, so it's desirable to use the same font and range in some
# graphics to duplicate the algebraic characters used in math
equations
# in Word documents.)
# Don Macnaughton August 2021.
# Specify where to save the generated svg file.
SVGfile = "C:/Temp/TestSVG.svg"
# Make the Cambria Math font available to R.
windowsFonts("Cambria Math"=windowsFont("Cambria Math"))
# Use a loop to draw the graph twice, once in the SVG file and once
# in the graphics window.
for (i in 1:2){
graphics.off()
# If this is the first pass, specify the file for the SVG graph.
if (i == 1) {svg(SVGfile)}
xvals = c(0,100)
yvals = c(0,100)
# Draw an invisible graph to establish the ranges
# using using the two points in xvals and yvals defined above.
plot(xvals, yvals, type="n", xlab=" ", ylab=" ", axes=FALSE)
llab <- '\U01d44e' # the letter a in the math italic range
text(x=1,y=60,labels=llab,family="Cambria Math",adj=0,cex=3)
text(x=7,y=63,
labels="<- The desired lowercase math italic a in the Cambria Math
font",
adj=0)
llab <- '\U000061' # the letter a in the standard range.
text(x=1,y=40,labels=llab,family="Cambria Math",adj=0,cex=3,font=3)
text(x=7,y=40,
labels="<- The lowercase italic a in the standard range in the
Cambria Math font",
adj=0)
if (i == 1) {dev.off()}
# End of the loop to draw the graph twice:
}
# End of program.
Here's my sessionInfo()
R version 4.1.1 (2021-08-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.1.1 tools_4.1.1
Thank you for your help,
Don Macnaughton
More information about the R-help
mailing list