感情から表情を作れる絵文字を作った

感情から表情を作れる絵文字、VariEmojiというものを作りました。

 

6つの基本感情(喜び、悲しみ、怒り、驚き、嫌悪、恐怖)を操作して、怒ってるけどちょっと笑っていたり、通常の絵文字になさそうな表情を作ることができます。

f:id:junkino:20200719164454g:plain

 フォントはここから試せます。

juuunnnk.github.io

 

今回はこのフォントの作った過程と、使い方を説明します。

 

 

はじめに

この絵文字のベースとなっているのは、Variable Fontというフォント仕様になります。

Variable フォントは幅、太さ、スタイルごとに個別のフォントファイルを用意するのではなく、書体のさまざまなバリエーションを1つのファイルに組み込むことができる OpenType フォント仕様の進化版です。

引用:Variable フォントガイド - CSS: カスケーディングスタイルシート | MDN

 

VariEmojiは😐(U+1F610)のスタイルのバリエーションとしていろいろな表情を割り当てています。

Variable + Emoji で VariEmoji という名前にしているのですが、捻りがなさすぎてピンときてないです。もし他にいいのが出れば変えたいです。

 

 

 

作った経緯

このフォントを作る1週間前に小ネタ的なVariable Fontを作ったところ少しウケまして、以前から「ユニコードの規格にない絵文字を作りたい」という気持ちがぼんやりとあったこともあり、絵文字をVariable Fontで作ることにしました。

 

 

Variable FontはAxis(変化の軸)を設定することでパラメータを変化させることができます。

フリーザの時は一つの軸しか使用してなかったですが、Variable FontはWeightやWidthのように軸を複数設定することができます。今回の場合はその仕様を最大限活用したかったので6つの感情を軸にすることにしました。

 

f:id:junkino:20200719164845p:plain

引用元:Introducing OpenType Variable Fonts

 

なお、今回の6つの基本感情というのは、心理学者のポール・エクマンの理論にそって作成してます。(エクマン理論の感情と表情の関係は、厳密には文化圏によって異なるようなのですが、絵文字ということで今回はそこまで考慮してません。)

 

f:id:junkino:20200720003714p:plain

参考:It’s all in the _____(Embodiment)emotionalconnectionblog.wordpress.com

 

 

制作方法

自分はGlyphsを使ってVariable Fontを作ってます。Glyphs以外のフォント作成のソフトを使ってないので比較できないのですが、GlyphsはパスデータをIllustratorからコピペできたりするので楽です。

glyphsapp.com

 

大まかに作業内容をかくと、下記の内容になります。

  1. 極値となる形状の作成
  2. Glyphsで形状をベースにパスを調整
  3. Glyphsで軸・パラメータの設定
  4. variable font書き出し

作業として一番時間がかかるのは2の部分で、ここでパスが綺麗になっていないと4の書き出しで苦労します。

 

1. 極値となる形状の作成

はじめに極値となる部分のパスをイラレで作りました。今回の場合、Normalと6つの感情のあわせて7つ作ります。

f:id:junkino:20200719180800p:plain

最初に描いたスケッチ

 

f:id:junkino:20200719170602p:plain

スケッチから整えたベースとなる表情の絵文字

 

顔のパーツの共通化をしてます。基本的には眉、目、口で構成されていて、「悲しみ」と「怒り」の表情には顔以外の涙や💢マークを足しました。

 

2. Glyphsで形状をベースにパスを調整

目標とする形状ができたらGlyphsに持ってきます。通常のフォントと異なりVariable Fontを作る際には異なる軸の値同士でパスの数を合わせるように気を付けないといけないです。 

 

具体的には、NormalのパスをベースにしてJoyの表情にしていかないといけません。

f:id:junkino:20200719171925g:plain

地味ですが、Joyの表情になるようにパスを調整してます。

 

After Effectsなどでモーフィングのアニメーションを作ったとこがある人ならイメージがつきやすいと思います。

 

3. Glyphsで軸・パラメータの設定

(Glyphsの仕様かもですが、)Variable Fontは軸が6つまでしか設定できないようです。

Variable Fontには元々、Weight、Width、Ilatic、Slantと軸が設定できるようになっていますが、独自の名前の軸の場合はVirtual Masterの設定が必要になり、軸の名前は4文字の英字で構成しないといけないです。今回の場合はそれぞれ下記のように設定しております。

 

  • Joy JOYY 0 ~ 900
  • Sad SADD 0 ~ 900
  • Angry ANGR 0 ~ 900
  • Surprise SPRS 0 ~ 900
  • Disgust DGST 0 ~ 900
  • Fear FEAR 0 ~ 900

f:id:junkino:20200719231434p:plain

気付いたら「だんご7兄弟」がいたGlyphsの画面

 

 4. Variable Font書き出し

設定できたら、GlyphsからFontの書き出しをします。前述の通り、パスの数が合っていなかったり、パスのカーブが綺麗でないとVariable Fontとして書き出しができません。

 

基本的にはGlyphsのサイトに必要な設定など細かく載っているので、より詳しく知りたい方はこちらを参考にしてください。

glyphsapp.com

 

ちなみに自分がつまずいた時はこの辺が参考になりました。

Variable font won't export due to TrueType curves
Too many inflections

 

使い方

ブラウザで使う場合、CSSのfont-variation-settingから軸を指定することで使用できます。


仕様としてVariEmojiの感情の軸の値は0 ~ 900まで設定できるようにしていますが、デモではそれぞれの最大値を500までにしてます。と言うのもあまり大きい値同士を組み合わせると簡単に表情が崩れてしまったので。

f:id:junkino:20200719220839p:plain

数値を大きくしすぎて壊れたカービィのキャラのようになった例
body {
    font-family: "variemo";
    font-variation-settings: 'JOYY' 900, 'SADD' 900, 'ANGR' 900, 'SPRS' 0, 'DGST' 0, 'FEAR' 900;
    color: #37b6db;
}

 

使用例 

このfontの良さをあげるとするならば、構成がシンプルなのと実装がしやすいことかと思ってます。 Variable Fontに対応している環境であれば、すぐにパラメータで絵文字を作れます。

 

そんな訳でおまけとしてこのVariEmojiの使用例のdemoを2種類作ってみました。あくまで実験的なものですので、実際に有効性があるかどうかは大目にみてください。

 

例1)評価のアイコン

https://juuunnnk.github.io/VariEmoji/demo1.html

f:id:junkino:20200720003214g:plain

レビューのアイコンを可変にする例

SNSだったりECサイトでレビューする際の「いいねアイコン」がこんな風にパラメータに応じて変わっていくと楽しそうですよね。ゲームの難易度選択とか相性良さそうかなと思います。

 

例2)アニメーション

https://juuunnnk.github.io/VariEmoji/demo2.html

f:id:junkino:20200720221006g:plain

表情のアニメーション

 

Variable Fontの使用例としてアニメーションはよくあります。上のデモはCSSアニメーションだけで実現しているので比較的簡単にできます。

 

ちなみに、この記事の最初にあげたデモ(https://juuunnnk.github.io/VariEmoji/)について、今後は作った絵文字を画像でダウンロードできるようにしようと思っているのですが、一番簡単に実装できると思っていたCanvasがfont-variation-settingに対応していないみたいで頭を抱えてます。

OpenType Features and Variable Fonts for Canvas · Issue #3571 · whatwg/html · GitHub

画像ダウンロードを実現するには、裏でパペッター等を使ってスクショを撮る仕組みを作らないといけなさそうでして、ゆっくりと実現できればと思ってますので、すみませんがもう少しお待ちください。

 

 

最後に

フォントのファイル自体はここにあります。

github.com

 

最近の環境であれば、比較的簡単に扱えると思いますのでよければ触ってみてください。