ChatGPT で使える日本語フォントは Droid Sans Fallback (2023/11現在)

ACCESS Advent Calendar 2023 の20日目です。
初日振りの @naohikowatanabe です。

# 結論

* 2023/11 現在、 ChatGPT(GPT-4)で使える日本語フォントは `Droid Sans Fallback`
* プロンプト/ Custom Instructions で「文字描画時は Droid Sans Fallback 使って、英数字は大文字で描画して。文字欠け回避のため」と言えば何とかそれっぽく表示できる

# デモ

## やること

ChatGPT さんに
「2023年のプロ野球日本一決定戦の『阪神タイガースがオリックスに7対1で勝利し日本一』をグラフ化して」
をやってもらいます。

元々これをやろうとしたきっかけは「2023/10下旬〜11月上旬頃に利用可能になった All Tools を試す」でした。
＃ All Tools = Advanced Data Analysis や DALL-E や Bing 検索が ChatGPT GPT-4 デフォに入るようになったもの
なので新し目の情報「2023年のプロ野球日本一決定戦」を聞いて、グラフ描画させてます。

参考： [Wikipedia](https://ja.wikipedia.org/wiki/2023%E5%B9%B4%E3%81%AE%E6%97%A5%E6%9C%AC%E3%83%97%E3%83%AD%E9%87%8E%E7%90%83)
```
日本シリーズ
SMBC日本シリーズ2023
11月5日（日）	第7戦	阪神タイガース	7 - 1	オリックス・バファローズ
優勝：阪神タイガース（38年ぶり2回目）
```

## 失敗1：デフォだと日本語が豆腐（文字欠け）

### 入力

```
2023年のプロ野球日本一決定戦の「阪神タイガースがオリックスに7対1で勝利し日本一」をグラフ化して
```

### 出力

英数字は表示され、日本語は豆腐。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/e2b8ef33-c1ae-fd20-c698-e0f73b25783a.png)

## 失敗2：Droid Sans Fallback 使用で日本語以外（英数字）が豆腐

### 入力

```
2023年のプロ野球日本一決定戦の「阪神タイガースがオリックスに7対1で勝利し日本一」をグラフ化して。
フォントは Droid Sans Fallback 使用して。
```

### 出力

日本語は表示されるが、英数字が豆腐。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/5187005a-55d8-08d0-1e5c-5f7db5b4059b.png)

## 成功

「Droid Sans Fallback 使用＋英数字全角指定」で日本語も英数字も表示可能

### 入力

```
2023年のプロ野球日本一決定戦、の「阪神タイガースがオリックスに7対1で勝利し日本一」をグラフ化して。
フォントは Droid Sans Fallback 使用して。

Python Matplotlib でグラフ描画時、グラフの各要素（タイトル、軸ラベル、凡例等）に1文字でも日本語が含まれる場合、以下実施して。
・英数字は全て全角化（Aa2 → Ａａ２等）
・フォントは/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttfを指定
・text関数とFontPropertiesオブジェクトを使用しDroidSansFallbackフォントを指定
・plt.bar関数はplt.xticks関数を使用してデフォルト目盛りを削除しplt.text関数でテキスト指定
・目的は文字欠け対策
```

後半は「グラフの全要素を日本語で表示してやる！」と頑張った結果なのでスルーお願いします。。ｗ

### 出力

（全角だけど）人間が普通に読めるようになった！やったぜ！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/723641a5-5b44-29a1-430f-4c6f351aaeda.png)



# 詳細・試行錯誤結果


## 2023/11 現在の使用可能なフォントリスト

```
現在の環境で利用可能なフォントのリスト教えて
```

```
現在の環境で利用可能なフォントのリストは以下の通りです：

C059
D050000L
DejaVu Sans
DejaVu Sans Display
DejaVu Sans Mono
DejaVu Serif
DejaVu Serif Display
Droid Sans Fallback
Liberation Mono
Liberation Sans
Liberation Sans Narrow
Liberation Serif
Nimbus Mono PS
Nimbus Roman
Nimbus Sans
Nimbus Sans Narrow
Noto Mono
P052
STIXGeneral
STIXNonUnicode
STIXSizeFiveSym
STIXSizeFourSym
STIXSizeOneSym
STIXSizeThreeSym
STIXSizeTwoSym
Standard Symbols PS
URW Bookman
URW Gothic
Z003
cmb10
cmex10
cmmi10
cmr10
cmss10
cmsy10
cmtt10
```

## テキスト描画結果

```
その全フォントで個別に「123abcあいう１２３ａｂｃ」と描画してみて。
```

```
全てのフォントで「123abcあいう１２３ａｂｃ」というテキストを描画し、それぞれのフォントについて画像ファイルを生成しました。これらの画像はZIPファイルにまとめられています。

以下のリンクからZIPファイルをダウンロードできます。
```

全体としては「英数字は表示、日本語と全角は文字欠け」が多い。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/8bc9858b-ade5-9539-e805-65b45b175db6.png)

DejaVu Serif （代表的なもの1つ抜粋）

![DejaVu_Serif.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/52666d60-b476-7b74-57e3-b7b2a17e769b.png)

Droid Sans Fallback だけは日本語が表示できる！全角英数字も！

![Droid_Sans_Fallback.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/10a98835-f6a9-afc5-f7e8-be643cc7420a.png)

# その他

## 都度フォントをプロンプトにインストールでも可

例えば https://launchpad.net/takao-fonts から TakaoFonts_00303.01.zip を落とし、中の TakaoGothic.ttf を食わせつつ、
```
takao font インストールして、「123abcあいう１２３ａｂｃ」というテキストを描画して
```
とお願いすると全部（半角英数、日本語、全角英数）表示可能。
都度フォントファイルアップロードが手間じゃなければこれでもOK。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35514/7b0236e9-e472-6d83-4412-ee0e8993ccc6.png)

# おわりに

ACCESS Advent Calendar 2023 、明日もお楽しみに！🎉