EPUB3で日本語―電子書籍を作る(7)

次は日本語を表示させます。

HelloWorld.xhtmlに「こんにちは!」と追加。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" lang="en" xml:lang="en">
<head> 
    <title>HelloWorld</title>
</head> 
<body> 
    <p>HelloWorld!</p>
    <p>こんにちは!</p>
</body> 
</html>



EPUB Validator (beta)による検証は問題なし。
helloworld2


しかしAdobe Digital Editions 2.0で表示してみると・・・
helloworld2文字化け
日本語の部分が文字化けしています。

先ほどのHelloWorld.xhtmlのlang属性とXMLのxml:lang属性の「言語コード」に日本語「ja」を指定。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" lang="ja" xml:lang="ja">
・
・
・

これで日本語の本文が表示できました。
helloworld2表示


次に本のタイトルも日本語に
パッケージ文書HelloWorld.opfのpackage要素のxml:lang属性と、metadata要素のdc:language属性で日本語「ja」を設定

<?xml version="1.0" encoding="UTF-8"?>
<package version="3.0" xml:lang="ja" xmlns="http://www.idpf.org/2007/opf" unique-identifier="pub-id">
    <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
        <dc:identifier id="pub-id">urn:uuid:B9B412F2-CAAD-4A44-B91F-A375068478A0</dc:identifier>
        <dc:language>ja</dc:language>
        <dc:title>こんにちは</dc:title>
・
・
・



さらに目次も日本語で
navi.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" xmlns:epub="http://www.idpf.org/2007/ops">
・
・
・
<nav epub:type="toc" id="toc">
    <ol>
        <li><a href="HelloWorld.xhtml">こんにちは</a></li>
・
・
・



helloworld2表示2


EPUB3での日本語表示は、EPUB Publications 3.0の3.4.1 The package Elementに記述されているように、パッケージ文書HelloWorld.opfのpackage要素でxml:lang属性(オプション)に「ja」を指定するのと、3.4.5 The DCMES language Elementに書かれているように、dc:language要素で「ja」を指定するだけでいいはずです。
しかし一部のブックリーダでは、xhtml文書中で言語属性を指定しなければ日本語が文字化けする可能性があるとかで、xhtml文書のhtml要素で、HTMLの言語属性lang=”ja”とXMLの言語属性xml:lang=”ja”を一緒に指定しておくらしい。

また、上の例でもわかるように、パッケージ文書HelloWorld.opfのpackage要素とdc:language要素に日本語を指定していなくても、それぞれのxhtml文書の言語属性をAdobe Digital Editions 2.0は判断して日本語で表示するようになっているようです。