GitHubのREADMEでもTwemojiを使いたいよ〜!
先日、こんな記事を書きました。
そして、この記事で紹介したリポジトリが以下のものです。
このリポジトリを見てくれた方は以下の点に気づいたかもしれません。
「あれっ…」
pax.deno.devのREADME
「この絵文字…」
「Twemojiやん!!」
「READMEで普通の絵文字以外も表示できるのか」
「どうやっているの?」
では、その方法をご紹介しましょう。
表示方法
Twemojiはmaxcdnで配信されているので、それをページに埋め込みます。
以下に一覧ページがあります。
右クリックメニューから画像URLを取得しましょう。
普通にMarkdown上で表示する場合、取得したURLを参照すればOKです。
![sauropod](https://twemoji.maxcdn.com/v/13.1.0/72x72/1f995.png)
普通に画像として表示
しかしこれでは、文中に埋め込むことができません。画像として表示はできていますが、「絵文字」っぽくはないですよね。
そこで、GitHubのMarkdownではHTMLの記述もValidであるという仕様を使用します。
Markdown形式の画像表示(![]()
)では自動でdisplay:block
になるのですが、直接HTMLタグを書く(<img>
)とスタイルがつかず、display:inline
で表示されます。
<img src="https://twemoji.maxcdn.com/v/13.1.0/72x72/1f995.png" alt="sauropod">
これだけだと文字と画像のサイズが合わないので、公式が推奨しているスタイルをあてます。
以下のものです。
img.emoji {
height: 1em;
width: 1em;
margin: 0 .05em 0 .1em;
vertical-align: -0.1em;
}
これを該当のimg
タグの中に追記します。
<img src="https://twemoji.maxcdn.com/v/13.1.0/72x72/1f995.png" alt="sauropod" style="height:1em;width:1em;margin:0 0.05em 0 0.1em;vertical-align:-0.1em;">
ZennのMarkdownではHTMLタグを直接記述できないので、ここに表示することはできないのですが…GitHubでは動作するので試してみてください。
Zennの場合、サイズの変更はできるが、インラインにできない
TwemojiのURLを簡単に取得する
ここで、こんな脳内会議が繰り広げられました。
kawarimidoll「やり方は分かった、これでTwemojiを表示できそう」
kawarimidoll「でもTwemoji一覧ページが画像いっぱいで重たい」
kawarimidoll「目的の絵文字を探すのが面倒、Twemojiの配信URLを簡単に取得したい」
kawarimidoll「ええ…しょうがないなあ…」
ということで作りました。Deno Deploy上で動いています。
こちらのページの入力欄に絵文字を入力すると、対応するhttps://twemoji.maxcdn.com/...
のURLを取得できます。
https://twemoji.deno.dev/api?emoji=[emoji]
というAPIを設定し、これを呼んで取得しています。
こちらを直接叩けばサーバーサイドなどからの利用も可能ですのでご利用ください。もちろんパラメータの絵文字はURLエンコードが必要です。
おわりに
タイトルでは「GitHubのREADME」としていますが、img
タグを利用する方法なので、ほかにも使える環境はあると思います。
なお、GitHubのREADMEでTwemojiのURLを使用した場合、maxcdnに取得しに行くのではなく、camo.githubusercontent.comに画像を保存し、それを読み込んでいるようです。
リポジトリはこちらです。
Discussion
「DenoとGitHub ActionsでZennの最新記事をGitHub Profileに掲載して自動でCommitまでやる」の記事とあわせて参考にさせていただき、自分の GitHub Profile に Zenn 記事のタイトルをアイキャッチ(Twemoji) 付きで表示できるようになりました。
また、Twemoji の画像 URL 取得も API で簡単にできていて大変に助かっています。
しかし、その過程で GitHub 上で Twemoji をテキストのように表示させる方法について、少し問題を見つけてしまいました。
<img>
タグへの style 指定ですが、以下のときは適用されないようです。以下は、同じ端末で同じ README をブラウザと GitHub Mobile アプリで表示している例です。
ブラウザーでの表示
GitHub Mobile での表示
GitHub の仕様としてどちらが正しい挙動かわからなかったのですが、GitHub Mobile は他にも SVG ファイルの挙動がブラウザーと異なっていることもあるようです。
少し試したかぎりでは
<img>
にwidth
とheight
属性を指定することでブラウザーと GitHub Mobile の表示は同じようになりますが、「1em
のような指定ができない」「ブラウザーでも style が適用されなくなる」といった問題もあります。よい回避策は思い浮かばなかったのですが、ご報告まで。