工学社刊/清水美樹著「KivyではじめるPythonプログラミング」( ISBN978-4-7775-1796-1)の関連トピックです。
「KivyではじめるPythonプログラミング」サポートページの目次へ
このサイトの目次へ
Kivyアプリに日本語を表示させる
本書では文字を表示させるアプリは作りませんでしたが、本書に関連するダウンロード文書(工学社のサポートページから御利用いただけます)には、英文字を表示させる方法を解説しています。このページでは、さらに日本語を表示させる方法を解説します。
Python全般の事項
2バイトの文字コードを指定
実は、Pythonで日本語を表示させるのはちと面倒です。
多くのプログラミング言語では、「コメントアウト」すれば日本語でもなに語でもソース・コードに置くことができます。いかし、Pythonではコメントでさえも、日本語のような「2バイト文字」を書き込んだら、文字コードを指定する特殊な文をファイルの最初に書かなければいけません。
今のところ、2バイトコードは「UTF-8」が主流ですから、その場合についてのみ説明しましょう。
リスト1のように書きます。
リスト1 文字コード「UTF-8」を使うという宣言
# -*- coding: utf-8 -*-
Kivyに特化した事項
フォントファイルの場所の指定:概要
Kivyの場合、文字は「ラベル」として描画画面に載せます。そのため、フォント・ファイルの場所を指定する必要があります。
フォント・ファイルのうち、「TrueTypeフォント」と呼ばれるフォントは、異なるサイズのフォント情報をひとつのファイルとして扱えるので楽です。そうでないフォントは、大きさごとに別のファイルを指定しなければなりません。
フォントをもらってきて、好きな場所に置こう
「フォントの場所」とは、システム・フォントでOKですが、指定方法がいろいろと面倒ですから、オープンソースのフォントファイルを入手して使うのがよいと思います。
日本語のオープンソース・フォントとして有名なものに「IPAフォント」があります。IPAとは、あの独立行政法人情報処理推進機構です。
IPAフォントのダウンロードページ
ダウンロード時に同意を求められる使用条件は、オープンソースの使用条件です。個人が自分のパソコンの中で学習目的に使うぶんには、同意して問題ありません。
IPAフォントの最新の改良版「IPAexフォント」をダウンロードすると、たとえば「IPAexfont00201.zip」のような圧縮ファイルが得られます。展開すると、図1のような「IPAexfont00210.zip」というフォルダになります。
中を開けると、「ttf」という拡張子を持つファイルが含まれているでしょう。これらがTrueTypeのファイルです。このとき、Windowsで展開すると、同名のフォルダが2重になっている恐れがありますので、その場合は取り出してください。
図1 IPAexフォントのフォルダ。二重になっていないか注意
図2 図1のフォルダを開けると「ttf」ファイルがあるはず
このKivyアプリ中に置いて、日本語表示をする簡単なプログラムを書きましょう。
フォルダ名は何でもかまいません。たとえば「hellojp」としておきます。
「hellojp」フォルダの中にファイル「main.py」と、図1のフォントフォルダを置きます。
図3 アプリ「hellojp」の構造
「main.py」の内容
「main.py」に、リスト2のように書きましょう。
リスト2 「main.py」の全文
# -*- coding: utf-8 -*-
import kivy
kivy.require('1.7.2')
from kivy.app import App
from kivy.uix.button import Button
class MyJPApp(App):
def build(self):
return Button(text=u'どうでしょう世界', font_size = "48sp", font_name = 'IPAexfont00201/ipaexm.ttf')
if __name__ == '__main__':
MyJPApp().run()
画面に表示させるオブジェクトを「ボタン」にしているのは、実は「ラベルをウィジェットとして置いたグラフィック」より、簡単だからです。ボタンのラベルに表示される文字列を日本語にしているのです。
アプリの構造は、本書のサンプルアプリと同じで、本書のよりずっと簡単です。本書の「Fieldオブジェクト」がそのまま「Buttonオブジェクト」に置き換わったと考えてください。
注意しなければいけない点を以下に挙げます。
1. リスト1に示した「文字コードの使用宣言」をファイルの冒頭に書きます。
2. 文字列の内容を示すプロパティtextの値には、日本語を直接書きます。それを囲んだ「引用符」の「直前(外)」に「u」という小文字の符号を書きます。リスト3にその部分を示します。
リスト3 日本語の指定方法
text=u'どうでしょう世界'
この「u」が、UTF-8の2バイトコードを用いることを示します。
3. プロパティ「font_name」に、フォントファイル名を指定します。その部分をリスト4に示します。main.pyからの相対パスで示しています。「ipaexm.ttf」は明朝体のフォントファイルです。
リスト3 日本語の指定方法
リスト4 main.pyからの相対パスでフォントファイル名を指定
font_name = 'IPAexfont00201/ipaexm.ttf'
4.ファイルは、文字コードをUTF-8に指定して、保存します。
実行結果
実行結果は図4のようになります。画面に文字だけが表示されているように見えますが、実は画面イッパイに「ボタン」が表示され、そのボタンのラベルとして文字が表示されているのです。ボタンの大きさを指定しなかったからです。
図4 巨大なボタンにラベルが表示された
とにかく、これで日本語を表示できることが確かめられました。この方法で、みなさんのアプリも必要に応じて日本語化してください。
「KivyではじめるPythonプログラミング」サポートページの目次へ
このサイトの目次へ戻る