【p5js】loadFont()が効いてない!?という時でも Fontファイルを読み込んで使う2つの方法
投稿日:2019-12-29
ナカジ(@cp_nakajun)です。
「文字を表示するときのフォントは色んなものを使いたい」
そもそもこれにニーズがあるのか不安ですが…
何か試したいときに「よく使うモチーフ」を持ってないので、とりあえず「Crative Plus」と「Hello world」のように表示してます。
p5jsでも同じように
と思って公式Referenceのようにやり始めたところ
うまくいかなくて、ですね。
let myFont;
function preload() {
myFont = loadFont(‘assets/inconsolata.otf’);
}
preload()なのかloadFont()が機能している気がしなくて、悩んでいたのですが
別の方法で解決できたのでその2つの方法を残しておきます。
p5jsで外部フォントを使う方法
結論から書くと、簡単で
- Google Fontならhtmlのヘッダーにリンクを貼り付ける
- CSSから読み込む
とすると、あとはdraw()関数の中で簡単にtextFont(“フォント名”)とすることで使えます。
htmlのヘッダーにリンクを貼る
上記画像のように使いたいフォントへリンクすれば良い
<link href="https://fonts.googleapis.com/css?family=Righteous&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Monoton&display=swap" rel="stylesheet">
CSSから読み込む
CSSから読み込む場合は「@font-face」記述です。
@font-face { font-family: 'Diplomata'; src: url(./fonts/Diplomata-Regular.ttf); } @font-face { font-family: 'Fredericka the Great'; src: url(./fonts/FrederickatheGreat-Regular.ttf); }
sketch.js サンプル
上記の画像を表示したコードサンプルは以下になります。
function draw() { background(10); let tex_size = 80 ; //Load from Google Fonts fill('#D02158'); textSize(tex_size); textFont("Righteous"); text('Creative plus', 50, 100); fill('#FD6041'); textSize(tex_size - 20); textFont("Monoton"); text('Creative plus', 100, 200); //Load from CSS fill('#FEAA3A'); textSize(tex_size); textFont("Fredericka the Great"); text('Creative plus', 150, 300); fill('#2DA4A8'); textSize(tex_size - 20); textFont("Diplomata"); text('Creative plus', 200, 400); }
先に記載したhtmlとCSSを使うと上記の画像のようになります。