LaTeX でドコモ絵文字を使いたい

<!-- # LaTeX でドコモ絵文字を使いたい -->

ドコモで購入される Android スマホ等の携帯端末では、絵文字の一部にドコモ絵文字と呼ばれる <ruby>古<rp>(</rp><rt>ガラケー</rt><rp>)</rp></ruby> の時代から存在する絵文字が使われていました。

しかし、[2025 年 5 月][docomo-release-20250521]、docomo は昨今の端末の絵文字の利用状況を鑑み 6 月下旬以降に発売する機種からドコモ絵文字の提供を終了することを発表しました。[^emojipedia-blog]
これによって、表舞台でドコモ絵文字を目にすることはより少なくなっていく見込みです。[^au-emoji]

[docomo-release-20250521]: https://www.docomo.ne.jp/info/notice/page/250521_01.html "ドコモからのお知らせ : ドコモ絵文字の提供終了について | お知らせ | NTTドコモ"

[^emojipedia-blog]: ドコモ絵文字終了を受けて [Emojipedia blog][emojipedia-blog20250525] では、その軌跡と功績をたたえるブログが掲載されています。

[emojipedia-blog20250525]: https://blog.emojipedia.org/docomo-emoji-set-to-be-officially-discontinued/ "Docomo Emoji Set To Be Officially Discontinued"

[^au-emoji]: ドコモ絵文字は docomo/au 共通絵文字として [2012 年 5 月以降][au-release-20120418]、au の絵文字をリニューアルする形で au でも利用できるようになっていました。しかしながら、au では Android 7 頃以降からドコモ絵文字を使用せずに [Noto Color Emoji][notocoloremoji] のみを使用する方法が提供されているようです。

[au-release-20120418]: https://www.kddi.com/corporate/news_release/2012/0418b/ "auの絵文字リニューアルについて | 2012年 | KDDI株式会社"
[notocoloremoji]: https://fonts.google.com/noto/specimen/Noto+Color+Emoji "Noto Color Emoji - Google Fonts"

しかし、1999 年から 20 年以上利用されてきたドコモ絵文字が見れなくなってしまうことは悲しいことです。せっかくなら LaTeX 文書の中だけでも利用できるようになっても良さそうじゃないか、と言うことで、本記事では LaTeX でドコモ絵文字が使えるようにする方法を紹介します。

## BXcoloremoji パッケージを使おう

LaTeX で絵文字を使うには、適切なパッケージを利用する必要があります。絵文字に関するパッケージについては、以下の記事に詳しいです。

https://qiita.com/Yarakashi_Kikohshi/items/79692e6a706914b3e7ac

本記事ではドコモ絵文字を利用したいので、任意の絵文字画像を絵文字として利用できる **BXcoloremoji パッケージ**を採用します。

BXcoloremoji パッケージを使うことで任意の絵文字画像を絵文字として扱うことが出来るようになりますが、いくつかの準備が必要です。この準備は [パッケージガイド][bxcoloremoji-pdf] (v1.0a) の 7 節「カスタムファミリ」に書かれています。（実際のところ、本記事はそこに書いてあることを具体的に履行するだけです）

[bxcoloremoji-pdf]: http://mirrors.ctan.org/macros/latex/contrib/bxcoloremoji/bxcoloremoji-ja.pdf "[PDF] BXcoloremoji パッケージ"

## ドコモ絵文字のデータ取得

ドコモ絵文字（docomo／au共通絵文字）の画像データは以下のページから取得できます。（あるいは [au][au-emoji-download] からダウンロードできます）

[au-emoji-download]: https://www.au.com/developer/android/kaihatsu/emoji_download/ "au/docomo共通絵文字データ ダウンロード | Android(TM) 技術情報 | au"

https://www.docomo.ne.jp/service/developer/smart_phone/make_contents/pictograph/download/index.html

利用規約を読んで同意できれば Zip 形式のファイルをダウンロードできます。ここには 698 の ai ファイル [^ai-extension] があります。
この Zip に含まれるドコモ絵文字の具体的なイメージは [pictograph_list.pdf][docomo-list-pdf] で見ることが出来ます。（より平易には [Emojipedia][emojipedia-docomo] で閲覧できます）

[emojipedia-docomo]: https://emojipedia.org/ja/docomo/2013 "Emojipedia - NTT Docomo"
[docomo-list-pdf]: https://www.docomo.ne.jp/binary/pdf/service/developer/smart_phone/make_contents/pictograph/pictograph_list.pdf "[PDF] docomo／au共通絵文字リスト"

[^ai-extension]: <samp>.ai</samp> は主に Adobe Illustrator で利用されるファイル拡張子です。本記事では人工知能の AI と区別するため小文字で表記します。

注意点として、キーキャップ絵文字、国旗は提供されていません。この他も含めて、計 51 の絵文字は利用できません。[^android-phone]（pictograph_list.pdf では通し番号の最後が 749 になっていますが、実際は 698 個です）

[^android-phone]: ちなみに、手元の docomo で購入した Android スマホを見ると、キーキャップ絵文字や国旗は Noto Color Emoji になっています。ただし、[Emojipedia][emojipedia-docomo] を見るとキーキャップ絵文字は存在するようです。

[emojipedia-docomo]: https://emojipedia.org/docomo "NTT Docomo"

### ai ファイルと PDF

ai ファイルは PDF をデータを含んでいます。そのため、(u)pLaTeX は ai ファイルであってもそのまま読み込むこと (`\includegraphics`) が出来ます。
しかし、LuaLaTeX で読み込もうとすると `Unknown graphics extension: .ai` と言うエラーメッセージが表示されます。

加えて、(u)pLaTeX で ai ファイルを使用する場合、ai ファイルは Adobe Illustorator を扱うための LaTeX にとって必要のない部分があるため、生成される PDF のファイルサイズが大きくなってしまいます。

したがって、LaTeX において ai ファイルは PDF ファイルに変換されているべきです。

### 変換する方法

ai ファイルを PDF に変換するには、基本的に Adobe Illustrator を使用します。しかし、このソフトは有料です。普段使わない人にとっては面倒です。

そこで考えられる変換方法は次の 2 つです。

- [convert.io][] のようなオンラインコンバータを利用する
- [Inkscape][] を利用する

[convert.io]: https://convertio.co/ja/ai-pdf/ "AI PDF 変換。オンライン フリー — Convertio"
[inkscape]: https://inkscape.org/ja/ "Inkscape - Draw Freely. | Inkscape"

オンラインコンバータを利用することが最も簡単ですが、多くの場合、24 時間当たりの変換ファイル数に制限が課されています。convert\.io では [ヘルプ][convertio-help] によれば 24 時間当たり 10 のみです。
今回、698 ものファイルを変換したいことを考えると現実的ではありません。（もちろん、有料プランに変更すれば無制限になる）

[convertio-help]: https://support.convertio.co/hc/en-us/articles/360004386774-Free-tier-limit-for-file-conversions "Free tier limit for file conversions - Convertio Help Center"

一方で、Inkscape は無料のベクターイメージ編集ソフトです。Adobe Illustrator とある程度の互換性があります。今回はこれを利用してバッチ処理します。

ここでは、簡単に Inkscape を使って ai ファイルから PDF に変換する方法を見ておきます。

```batch
inkscape --external-filename=output.pdf input.ai
```

ちなみに、convert\.io と Inkscape では変換の結果ファイルサイズに違いがあります。試しにの 10 のファイル（0001\~0010 番）を変換して合計を比較すると、次のようになりました。

| 変換ツール  | サイズ (kB) |
| :---------: | :---------: |
| convert\.io |    16.2     |
|  Inkscape   |    32.6     |

ファイルサイズに倍近い差があります。どうしてこのような結果を生むのか分かりませんが、ともかくこのような違いがあります。挿入する PDF 画像が大きければ生成される PDF も大きくなることに注意してください。

これらの他に ai ファイルを PDF に変換する方法でかつ、よりファイルサイズが小さくなる方法があれば教えてください。

## 準備

BXcoloremoji パッケージにドコモ絵文字を利用させるには、次のステップを踏みます。

1. [docomo][docomo-emoji-ai] から ai ファイルを取得する
1. ai ファイルを PDF に変換する
1. 各 PDF ファイルを BXcoloremoji パッケージが指定するファイル名に変更する
1. 設定ファイルを作成する
1. それぞれを適切な TEXMF ツリーに配置する
1. mktexlsr を実行する

[docomo-emoji-ai]: https://www.docomo.ne.jp/service/developer/smart_phone/make_contents/pictograph/download/index.html "作ろうスマートフォンコンテンツ：docomo／au共通絵文字画像データのダウンロード | サービス・機能 | NTTドコモ"

まず、ai ファイルを PDF に変換します。これを実行するために、Python で次のコードを書いてみました。これによって、PDF ファイル名も所定のものに変わります。（ファイル名命名規則の詳細はパッケージガイド (v1.0a) §7.2 を参照）

https://github.com/yarakos95/bxce-docomo

これによって作成された PDF ファイル群を <samp>$TEXMFLOCAL/tex/latex/BXcoloremoji/custom_images/docomoemoji/</samp> に配置します。[^texmflocal]

[^texmflocal]: `$TEXMFLOCAL` の場所は kpsewhich によって調べられます。（以下の例では D ドライブ直下にあることが分かります）

    ```console
    $ kpsewhich -var-value=TEXMFLOCAL
    D:/texlive/texmf-local
    ```

    すなわち、今回の例では <samp>D:/texlive/texmf-local/tex/latex/BXcoloremoji/custom_images/docomoemoji/</samp> に PDF ファイル群を置することを意味します。


次に、設定ファイル (<samp>bxcoloremoji-docomoemoji.cfg</samp>) ファイルを作成します。設定ファイル内は以下のようにします。

```latex
prefix = docomoemoji/docomoemoji-
extension = pdf
bbox = 0 0 24 24
```

`bbox` の値は画像によって変わりますが、この値は extractbb を用いて調べることが出来ます。

例えば、extractbb に `-O` オプション付きで調べると、次のように表示されます。ここの `BoundingBox` を `bbox` に転記すれば良いです。

```console
$ extractbb -O docomoemoji-1F386.pdf
%%Title: docomoemoji-1F386.pdf
%%Creator: extractbb.lua v1.1.0 (2025-02-11)
%%BoundingBox: 0 0 24 24
%%HiResBoundingBox: 0.000000 0.000000 23.999996 23.999996
%%PDFVersion: 1.5
%%Pages: 1
%%CreationDate: Mon May 26 22:26:15 2025
```

<samp>bxcoloremoji-docomoemoji.cfg</samp> ファイルは <samp>$TEXMFLOCAL/tex/latex/BXcoloremoji/cfg/</samp> に配置すれば良いでしょう。

すなわち、最終的なディレクトリ構成は次のようになります。

```tree
$TEXMFLOCAL/tex/latex/BXcoloremoji/
├─ cfg/
│	└─ bxcoloremoji-docomoemoji.cfg
└─ custom_images/
	└─ docomoemoji/
		├─ docomoemoji-1F386.pdf
		⋮
		└─ docomoemoji-2B1B.pdf
```

PDF ファイル群と <samp>bxcoloremoji-docomoemoji.cfg</samp> ファイルを適切な TEXMF ツリーに配置したら、最後に mktexlsr を実行します。これによって、TEXMF ツリーの一覧を更新します。（これ無しには追加配置したファイルが認識されません）

## 実際に使ってみる

BXcoloremoji パッケージを使って実際にドコモ絵文字を表示させてみましょう。

ドコモ絵文字を使用するには、`family` キーに `docomoemoji` を与えます。（<samp>.cfg</samp> ファイルのファイル名に対応しています）

```latex
\documentclass[uplatex, dvipdfmx]{jlreq}
\usepackage[family=docomoemoji]{bxcoloremoji}
\begin{document}

\noindent
\coloremojicode{2600 2601 2614 26C4 26A1 1F300 1F301 1F302 1F303 1F304 1F305 1F306 1F307 1F308 2744 26C5 1F309 1F311 1F314 1F313 1F319 1F315 1F31B 1F391 1F51C 1F51B 1F51A 23F3 231B 231A 1F550 1F551 1F552 1F553 1F554 1F555 1F556 1F557 1F558 1F559 1F55A 1F55B 23F0 2648 2649 264A 264B 264C 264D 264E 264F 2650 2651 2652 2653 26CE 1F30A 1F30F 1F30B 1F30C 1F340 1F337 1F331 1F341 1F338 1F339 1F342 1F343 1F530 1F33A 1F33B 1F334 1F335 1F33E 1F33D 1F344 1F330 1F33C 1F33F 1F352 1F34C 1F34E 1F34A 1F353 1F349 1F345 1F346 1F348 1F34D 1F347 1F351 1F34F 1F440 1F442 1F443 1F444 1F445 1F484 1F485 1F486 1F487 1F488 1F464 1F466 1F467 1F468 1F469 1F46A 1F46B 1F46E 1F46F 1F470 1F471 1F472 1F473 1F474 1F475 1F476 1F477 1F478 1F479 1F47A 1F47B 1F47C 1F47D 1F47E 1F47F 1F480 1F481 1F482 1F483 1F436 1F431 1F40C 1F424 1F425 1F427 1F41F 1F434 1F437 1F42F 1F43B 1F42D 1F433 1F435 1F419 1F41A 1F42C 1F426 1F420 1F439 1F41B 1F418 1F428 1F412 1F411 1F43A 1F42E 1F430 1F40D 1F414 1F417 1F42B 1F438 1F429 1F421 1F41C 1F43E 1F422 1F423 1F432 1F43C 1F43D 1F41D 1F41E 1F620 1F629 1F632 1F61E 1F635 1F630 1F612 1F60D 1F624 1F61C 1F61D 1F60B 1F618 1F61A 1F637 1F633 1F603 1F605 1F606 1F601 1F602 1F60A 263A 1F604 1F622 1F62D 1F628 1F623 1F621 1F60C 1F616 1F614 1F631 1F62A 1F60F 1F613 1F625 1F62B 1F609 1F63A 1F638 1F639 1F63D 1F63B 1F63F 1F63E 1F63C 1F640 1F645 1F646 1F647 1F648 1F64A 1F649 1F64B 1F64C 1F64D 1F64E 1F64F 1F3E0 1F3E1 1F3E2 1F3E3 1F3E5 1F3E6 1F3E7 1F3E8 1F3E9 1F3EA 1F3EB 26EA 26F2 1F3EC 1F3EF 1F3F0 1F3ED 2693 1F3EE 1F5FB 1F5FC 1F5FD 1F5FE 1F5FF 1F527 1F528 1F529 1F45E 1F45F 1F453 1F455 1F456 1F451 1F531 1F454 1F452 1F457 1F460 1F461 1F462 1F458 1F459 1F45A 1F45B 1F4B0 1F4B1 1F4B9 1F4B2 1F4B3 1F4B4 1F4B5 1F4B8 1F4F7 1F45C 1F45D 1F514 1F6AA 1F4A9 1F52B 1F525 1F52E 1F52F 1F4F9 1F52A 1F526 1F50B 1F4DC 1F50C 1F4D7 1F4D8 1F4D9 1F4D5 1F4DA 1F4DB 1F6C0 1F6BB 1F6BD 1F6BE 1F489 1F48A 1F170 1F171 1F18E 1F17E 1F380 1F381 1F382 1F384 1F385 1F38C 1F386 1F388 1F389 1F38D 1F38E 1F393 1F392 1F38F 1F387 1F390 1F383 1F38A 1F38B 1F4DF 260E 1F4DE 1F4F1 1F4F2 1F4DD 1F4E0 2709 1F4E8 1F4E9 1F4EA 1F4EB 1F4EE 1F4E2 1F4E3 1F4E1 1F4AC 1F4E4 1F4E5 1F4E6 2712 1F4BA 1F4BB 270F 1F4CE 1F4BC 1F4BD 1F4BE 2702 1F4CD 1F4C3 1F4C4 1F4C5 1F4C1 1F4C2 1F4D3 1F4D6 1F4D4 1F4CB 1F4C6 1F4CA 1F4C8 1F4C9 1F4C7 1F4CC 1F4D2 1F4CF 1F4D0 1F4D1 1F463 1F3BD 26BE 26F3 1F3BE 26BD 1F3BF 1F3C0 1F3C1 1F3C2 1F3C3 1F3C4 1F3C6 1F40E 1F3C8 1F3CA 1F683 1F687 24C2 1F684 1F685 1F697 1F699 1F68C 1F68F 1F6A2 2708 26F5 1F6B2 1F689 1F680 1F6A4 1F695 1F6B6 1F69A 1F692 1F691 1F693 26FD 1F17F 1F6A5 1F6A7 1F6A8 2668 26FA 1F3A0 1F3A1 1F3A2 1F3A3 1F3A4 1F3A5 1F3A6 1F3A7 1F3A8 1F3A9 1F3AA 1F3AB 1F3AC 1F3AD 1F3AE 1F004 1F3AF 1F3B0 1F3B1 1F3B2 1F3B3 1F3B4 1F0CF 1F3B5 1F3B6 1F3B7 1F3B8 1F3B9 1F3BA 1F3BB 1F3BC 303D 1F4FA 1F4BF 1F4C0 1F4FB 1F4FC 1F50A 1F4F0 1F48B 1F48C 1F48D 1F48E 1F48F 1F490 1F491 1F492 27BF 1F4F6 1F4F3 1F4F4 1F354 1F359 1F370 1F35C 1F35E 1F373 1F366 1F35F 1F361 1F358 1F35A 1F35D 1F35B 1F362 1F363 1F371 1F372 1F367 1F356 1F365 1F360 1F355 1F357 1F368 1F369 1F36A 1F36B 1F36C 1F36D 1F36E 1F36F 1F364 1F374 2615 1F378 1F37A 1F375 1F376 1F377 1F37B 1F379 2197 2198 2196 2199 2934 2935 2194 2195 2B06 2B07 27A1 2B05 25B6 25C0 23E9 23EA 1F53D 1F53C 23EC 23EB 2757 2049 203C 3030 27B0 2753 2754 2755 2764 1F493 1F494 1F495 1F496 1F497 1F498 1F499 1F49A 1F49B 1F49C 1F49D 1F49E 1F49F 2665 2660 2666 2663 1F6AC 1F6AD 267F 1F193 1F6A9 26A0 1F201 1F51E 26D4 1F197 1F196 A9 2122 3299 267B AE 1F232 1F233 1F234 1F235 1F19A 1F6B9 1F6BA 1F6BC 1F195 1F199 1F192 1F236 1F21A 1F237 1F238 1F250 1F239 1F202 1F22F 1F23A 1F51D 3297 2B55 274C 274E 2139 1F6AB 2714 2705 1F517 1F198 1F251 2795 2796 2716 2797 1F4A0 1F4A1 1F4A2 1F4A3 1F4A4 1F4A5 1F4A6 1F4A7 1F4A8 1F4AA 1F4AB 2728 2734 2733 1F534 1F535 26AA 26AB 1F533 2B50 1F31F 1F320 2B1C 2B1B 25AB 25AA 25FD 25FE 25FB 25FC 1F536 1F537 1F538 1F539 2747 1F53A 1F53B 1F4AE 1F4AF 1F520 1F521 1F522 1F523 1F524 1F194 1F511 21A9 1F191 1F50D 1F512 1F513 21AA 1F510 2611 1F518 1F50E 1F519 1F516 1F50F 1F503 1F4E7 270A 270C 270B 1F44A 1F44D 261D 1F446 1F447 1F448 1F449 1F44B 1F44F 1F44C 1F44E 1F450 1F532}

\end{document}
```

![docomo-image-image-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590705/8ac2bd7e-4ee7-477a-a883-f46034fff476.png)

顔の絵文字はちょっとだけ小さい感じになってしまうので、`scale` オプションで大きくすると良いかも知れません。（PDF に変換する段階で自動的に大きさを調整するように変換した方が実用的ではあるものの、そこまで手が回っていません…… :confounded:）

## 余談

BXcoloremoji パッケージに絵文字を追加することでドコモ絵文字を使えるようにする方法を紹介しました。

パッケージガイドを読めば一目瞭然ですが、ネット上には絵文字を追加する方法に関する記事はまだ無いようでした。もしも追加に困っている人がいれば一助になっていれば良いなと思います。

また、これを機に他の絵文字の追加にも挑戦してみてはいかがでしょうか。（筆者環境では、[Noto Color Emoji][noto-emoji] や [OpenMoji][] 等が特に意味もなく利用できるようになっています）

[noto-emoji]: https://github.com/googlefonts/noto-emoji "googlefonts/noto-emoji: Noto Emoji fonts"
[openmoji]: https://github.com/hfg-gmuend/openmoji "hfg-gmuend/openmoji: Open source emojis for designers, developers and everyone else!"

[moma-emoji]: https://www.moma.org/collection/works/196070 "Shigetaka Kurita. Emoji. 1998-1999 | MoMA"