True Type font または Open Type fontのアウトライン情報を取得することができるパッケージの紹介です。取得した情報を利用してggplot2などでプロットすることができます。色々な使い道があるのではと思います。パッケージにはアウトライン情報を「そのまま」、「加工」、「塗りつぶし」の処理を適応した情報を取得できるコマンドが収録されています。
なお、日本語を利用する際には環境によってはUTF-8へコードを変換する必要があります。紹介するコマンドでは変換にbaseのiconvコマンドを利用しています。
パッケージバージョンは0.0.4。windows 10のR version 4.1.2で動作を確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール
install.packages("devtools")
install.packages("string2path")
コマンドの紹介
下記コマンドを実行してください。詳細は各パッケージのヘルプを確認してください。
#パッケージの読み込み
library("string2path")
#ggplot2を使うためにtidyverse
#install.packages("tidyverse")
library("tidyverse")
#フォントファイルの種類とパスを確認
#install.packages("systemfonts")
FontPathData <dbl> <dbl> <dbl>
1 0.438 0 0 0
2 0.359 0 0 0
3 0.166 0.220 0 0
4 0.121 0.173 0 0
5 0.121 0 0 0
6 0.0602 0 0 0
7 0.0602 0.491 0 0
8 0.121 0.491 0 0
9 0.121 0.236 0 0
10 0.354 0.491 0 0
# ... with 1,224 more rows
#ggplot2でプロット
ggplot(PathData) +
geom_path(aes(x, y, group = path_id, colour = factor(glyph_id)), size = 1.5) +
theme_minimal() + coord_equal() +
theme(legend.position = "top")
########
###フォントアウトラインを加工:string2strokeコマンド#####
#フォントファイルからアウトラインを取得
#windowsではバックスラッシュの記述に注意"\\"
StrokData <dbl> <dbl> <dbl> <dbl>
1 0.370 0.0250 0 0 0
2 0.347 -0.0250 0 0 0
3 0.167 0.257 0 0 0
4 0.347 -0.0250 0 0 1
5 0.165 0.183 0 0 1
6 0.167 0.257 0 0 1
7 0.167 0.257 0 0 2
8 0.165 0.183 0 0 2
9 0.146 0.163 0 0 2
10 0.167 0.257 0 0 3
# ... with 7,805 more rows
#ggplot2でプロット
ggplot(StrokData) +
geom_polygon(aes(x, y, group = triangle_id, fill = factor(triangle_id %% 3)), size = 0.1) +
theme_minimal() + coord_equal() +
theme(legend.position = "top")
########
###フォントアウトラインを塗りつぶし:string2fillコマンド#####
#フォントファイルからアウトラインを取得
#windowsではバックスラッシュの記述に注意"\\"
PathData <dbl> <dbl> <dbl> <dbl>
1 0.262 -0.955 8 13 0
2 0.191 -0.954 8 13 0
3 0.193 -0.954 8 13 0
4 0.262 -0.955 8 13 1
5 0.193 -0.954 8 13 1
6 0.196 -0.953 8 13 1
7 0.262 -0.955 8 13 2
8 0.196 -0.953 8 13 2
9 0.198 -0.952 8 13 2
10 0.262 -0.955 8 13 3
# ... with 3,848 more rows
#ggplot2でプロット
#fillの剰余(%%)で色の分割を調整
ggplot(PathData) +
geom_polygon(aes(x, y, group = triangle_id, fill = factor(triangle_id %% 15))) +
theme_minimal() +
theme(legend.position = "none")
########
出力例
・string2pathコマンド

・string2strokeコマンド

・string2fillコマンド

少しでも、あなたの解析が楽になりますように!!