The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Using vector fonts

library(lofifonts)

Vector Fonts: included fonts

get_lofi_names('vector')
#> [1] "arcade"          "gridfont"        "gridfont_smooth"
Type Name Sizes Unicode? # glyphs
Vector gridfont Lower case ASCII only
Vector gridfont_smooth Lower case ASCII only
Vector arcade Upper case ASCII only

Vector font: functions

Vector font: Rendering text

Text may be rendered with a vector font to

  1. A data.frame of stroke endpoints
  2. A binary matrix of pixel locations
  3. A simple raster object
library(lofifonts)
vector_text_coords("Hello", font = 'gridfont_smooth') |> 
  head()
#> # A tibble: 6 × 8
#>   char_idx codepoint stroke_idx     x     y  line    x0    y0
#>      <int>     <int>      <int> <dbl> <dbl> <int> <dbl> <dbl>
#> 1        1       104          1 0      9        0 0      9   
#> 2        1       104          1 0      3        0 0      3   
#> 3        1       104          2 0      5.67     0 0      5.67
#> 4        1       104          2 0.167  6.33     0 0.167  6.33
#> 5        1       104          2 0.667  6.83     0 0.667  6.83
#> 6        1       104          2 1.17   7        0 1.17   7
vector_text_raster("Hello", "gridfont_smooth") |>
  plot()

Vector font: Bespoke pixel rendering

This is an example of bespoke rendering of the strokes for an example string.

For each character (char_idx) there are 1-or-more strokes (stroke). Each stroke has at least 2 points (indicated by idx).

When plotting with ggplot, draw path for the points-within-strokes-within-characters.

library(ggplot2)

coords <- vector_text_coords("Hello", "gridfont_smooth")
head(coords)
#> # A tibble: 6 × 8
#>   char_idx codepoint stroke_idx     x     y  line    x0    y0
#>      <int>     <int>      <int> <dbl> <dbl> <int> <dbl> <dbl>
#> 1        1       104          1 0      9        0 0      9   
#> 2        1       104          1 0      3        0 0      3   
#> 3        1       104          2 0      5.67     0 0      5.67
#> 4        1       104          2 0.167  6.33     0 0.167  6.33
#> 5        1       104          2 0.667  6.83     0 0.667  6.83
#> 6        1       104          2 1.17   7        0 1.17   7
ggplot(coords) +
  geom_path(aes(x, y, 
                group = interaction(char_idx, stroke_idx), 
                colour = as.factor(char_idx)), 
            linewidth = 4) +
  geom_point(aes(x, y), color = 'yellow') + 
  theme_bw() + 
  theme(legend.position = 'none') + 
  coord_equal()

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.