Этот вопрос получил очень мало внимания, но после довольно долгих поисков мне удалось найти решение, которое работало для моих целей, и я делюсь им для справки.
Я не смог получить доступ к нанесенным на карту координатам персонажей, но вместо этого я смог сделать свои собственные глифы персонажей и нанести их на карту.
Увидев этот ответ https://stackoverflow.com/a/7745776/5825522 на несвязанный вопрос, я начал путь с помощью пакета grImport для трассировки файла postscript. И я смог вместе взломать решение (пример ниже), которое в конечном итоге сработало, хотя я не могу признаться, что понимаю все тонкости кода postscript и синтаксического анализа XML (поскольку это было мое первое знакомство с обеими темами!)
Обратите внимание, что во время моего исследования я также нашел этот пакет https://github.com/yixuan/fontr, который может быть более полезен для извлечения реальных координат нанесенных символов, но я не мог понять и использовать его.
library(grImport)
library(magrittr)
library(xml2)
# Create postscript file for the letter 'S' in times new roman
cat("%!PS
/Times-Roman findfont
10 scalefont
setfont
newpath 0 0 moveto (S) show",
file="example.ps")
# Trace the postscript file to an XML file
grImport::PostScriptTrace("example.ps", "example.xml")
# Read the XML
xml <- xml2::read_xml("example.xml")
# Extract the XML node associated with the letter paths
letter_paths <- xml_find_all(xml, "text/path")
# Extract coordinates
x <- letter_paths %>% xml_find_all("move|line") %>% xml_attr("x") %>% as.numeric()
y <- letter_paths %>% xml_find_all("move|line") %>% xml_attr("y") %>% as.numeric()
# Remove last pair of coordinates as the post script tracing leaves undesired xy coordinates.
# These corrections are tricky for glyphs that have 'holes' in them like 'O' and 'B'
x <- x[-length(x)]
y <- y[-length(y)]
# plot
plot(x,y, asp=1, type="l")
points(x,y)
И после некоторой возни я смог создать набор глифов, который работал на меня.
person
Holmestorm
schedule
21.09.2019