WEBページでパソコンに登録していない外字を表示する

WOFFファイルを使って閲覧者（クライアントのブラウザ）のパソコンに外字が登録されていなくてもブラウザから外字の表示ができるか試してみました。

# ＜環境・前提条件＞
この記事はWindows 10でやってみた内容になっています。
動作を確認したブラウザはchrome,FireFox,Edgeで、バージョンは投稿当時の最新版です。

# ＜目次＞

1. [とりあえずテストするための外字フォントを作成する](#とりあえずテストするための外字フォントを作成する)

2. [外字フォントをWEBで使えるようにWOFF形式にする](#外字フォントをwebで使えるようにwoff形式にする)

3. [表示確認用HTMLを作成する](#表示確認用htmlを作成する)

4. [表示確認](#表示確認)

# ＜とりあえずテストするための外字フォントを作成する＞
外字エディタ（eudcedit）でテスト用に外字を作成します。
今回は**[F040]**の**[0]**のコードに外字を作成しました。
外字の作成は[こちら](https://support.microsoft.com/ja-jp/topic/%E5%A4%96%E5%AD%97%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E5%A4%96%E5%AD%97%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-b95ff5f3-505d-196c-6cb8-4cf36484c94d)を参考にしました。

<img width="400" alt="外字エディタ" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1983887/acec84c3-141d-88c4-8bb7-a32c9dab75d5.png">

## 試しに外字を表示してみる
テキストエディタに今回作成した外字を表示させてみます。
登録したコード[F040]を入力して変換すると「[文字コード変換]...」というのがあります。
<img width="100" alt="外字変換" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1983887/07a2f23d-5af8-ba0e-7ae8-a52603fb3a14.png">
これを選択すると、
<img width="100" alt="外字変換2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1983887/e1bed7f8-50d3-de5a-cf1d-e0768eceba39.png">
今回作成した「ヤレバデキル」外字が選択できるようになっています。選択すると、
<img width="400" alt="外字表示" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1983887/ecfb17b5-5230-f5b6-009b-f188a23cf706.png">
表示できました。

# ＜外字フォントをWEBで使えるようにWOFF形式にする＞
## WOFFとは？
WOFFは「**Web Open Font Format**」の頭文字でWebページで表示に用いる事を想定されて開発されたフォントファイル形式です。CSSでこのフォントを指定すると閲覧者のパソコンにフォントがインストールされていなくてもブラウザ上では表示できるようになります。

## 外字フォントファイル（EUDC.TTE）をWOFF形式に変換する
外字フォントファイル（EUDC.TTE）は標準では C:\Windows\Fonts\ に保存されています。
ただ、 C:\Windows\Fonts\ ディレクトリは特殊なディレクトリなので普通にエクスプローラで表示してもEUDC.TTEは表示されません。
なので、コンソールからアクセスしてコピーします。

```
PS C:\Windows\Fonts> dir .\EUDC.TTE

    ディレクトリ: C:\Windows\Fonts

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2021/09/19     10:52          78260 EUDC.TTE

PS C:\Windows\Fonts> cp .\EUDC.TTE ../../
PS C:\Windows\Fonts>
```

今回はTTEファイルをWOFFファイルに変換してくれる「[WOFFコンバータ](https://opentype.jp/woffconv.htm)」を使いました。
投稿時現在はフリーソフトで商用利用も可能のアプリです。

「EUDC.TTE」ファイルを「gaiji.woff」ファイルに変換しました。

# ＜表示確認用HTMLを作成する＞
外字の表示を確認するHTMLは以下です。

```sample.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style type="text/css">
@font-face {
  font-family: "myFont";
  src: url("gaiji.woff")  format('woff');
}
.myFontClass {
  font-family: "myFont";
}
* {
  font-size: 30px;
}
</style>

<body>
<p>サンプル文字列は「<span class="myFontClass"></span>」です。</p>
</body>
</html>
```

皆さんのパソコンでは「``<span class="myFontClass"></span>``」のspanタグで括られた文字は正しく表示されていないと思います。（外字フォントがインストールされていないから）

# ＜表示確認＞
このHTMLを先ほど変換したgaiji.woffファイルと同じディレクトリに配置して各ブラウザで表示してみました。
もちろん、外字を作成したパソコンからではなく、外字フォント登録していない別パソコンにsample.htmlとgaiji.woffファイルだけコピーして表示しました。（本当はどこかのWEBサーバに配置して確認すればいいんだけど、面倒だった。。。）
<figure><img width="400" alt="chrome" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1983887/7c228ac4-f5a8-d693-6f7e-fcf40f2b27c6.jpeg"><figcaption>chrome</figcaption></figure>
<figure><img width="400" alt="FireFox" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1983887/ca8d9df8-7ea7-5b09-c5b3-2c376fef2a4d.jpeg"><figcaption>FireFox</figcaption></figure>
<figure><img width="400" alt="Edge" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1983887/c642f862-3932-1293-1b1a-01570fd2728d.jpeg"><figcaption>Edge</figcaption></figure>