gdtools provides functionalities to get font metrics and
to generate base64 encoded string from raster matrix. It is used by
rvg to allow font metric calculation but can
also be used to compute the exact size a text would have with specific
font options (size, bold, italic).
You can install the released version of gdtools from CRAN with:
And the development version from GitHub with:
# install.packages("devtools") devtools::install_github("davidgohel/gdtools")
library(gdtools) str_extents(c("a string", "a longer string"), fontsize = 24, bold = TRUE, italic = TRUE) #> [,1] [,2] #> [1,] 86.68359 22.60547 #> [2,] 166.68750 22.60547
This package needs X11 to be available on mac os machines. This will make cairo, font-config and other system dependancies available. This is documented here: R for Mac OS X ; X11 can be downloaded from XQuartz website.
Unable to load shared object
Sometimes, when your OS got updated, some font settings and several other settings can be changed. An error similar to the one below can be read :
Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared object '/Library/Frameworks/R.framework/Versions/.../gdtools/libs/gdtools.so': dlopen(/Library/Frameworks/R.framework/Versions/.../gdtools/libs/gdtools.so, 6): Library not loaded: /opt/X11/lib/libcairo.2.dylib Referenced from: /Library/Frameworks/R.framework/Versions/.../gdtools/libs/gdtools.so Reason: image not found
Error: package or namespace load failed for ‘xxxx’ in dyn.load(file, DLLpath = DLLpath, ...): unable to load shared object '/Library/Frameworks/R.framework/Versions/.../systemfonts/libs/systemfonts.so': dlopen(/Library/Frameworks/R.framework/Versions/.../systemfonts/libs/systemfonts.so, 6): Library not loaded: /opt/X11/lib/libfreetype.6.dylib Referenced from: /Library/Frameworks/R.framework/Versions/.../systemfonts/libs/systemfonts.so Reason: image not found
If you need to build the package from sources, make sure XCode is installed and you have accepted the license agreement.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.