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コマンド
少しでも、あなたの解析が楽になりますように!!