マルチプラットフォーム対応のアプリを開発するときにPythonのKivyを選択肢として調査しているときに、WindwosなどOS付属の日本語ってどうやって対応するの?って段階で挫折しないためのメモ
参考にした場所
マルチプラットフォーム対応のアプリを開発で比較調査
Kivyで日本語を使う時
- [Tofu issue 日本語フォントの表示 - Kivy Advent Calendar 2013] (https://cheeseshop.hatenadiary.org/entry/20131202/1385936070)
- システムフォントついて
- font-familyについて本気で考えてみた
- Python Kivyの使い方① ~Kv Languageの基本~ - Qiita
- PythonをインストールしてPygameを動かすまで - Qiita
pygame
日本語対応方向性
OS付属のsystem fontが使えれば、新規のフォントファイルを内包しなくても済むはず
やり方
動作環境によてOS付属のフォントから日本語の使えるフォントを指定する。フォントファイルの場所を見つけるのが面倒なのでpygameライブラリから機能を拝借する。
準備
Windows10 64bit Python 3.10.x へのKivy 2.x開発環境の構築手順
pip install pygame
実装
import pygame
import platform
from kivy.core.text import LabelBase, DEFAULT_FONT
_platform = platform.system()
if _platform == 'Windows':
LabelBase.register(DEFAULT_FONT, pygame.font.match_font('yugothic'))
これで、システムにあらかじめ入ってる日本語が使えるフォントを簡単に固定できるので、フォントを同梱しなくってもマルチプラットフォームの日本語対応が簡単にできますよ。もっと凝るならplatformでOSの版数などを確認してさらに分岐
システムフォントの一覧を調査するには
import pygame
print(pygame.font.get_fonts())
自分で使うグリフ(Glyph)や領域が入ったフォントの名前さえ調べとけばマルチプラットフォームのアプリ開発に簡単です。