DivX PlusのMKV拡張機能 (1) – World Fonts(最適化された多言語字幕)

コンテンツをMKVで制作する利点のひとつは、異なる地域にいる視聴者があなたの作品を楽しめるように、複数の字幕トラックを含められることです。しかし、多言語字幕の追加に際しては不確実な要素が伴います。例えば、コンテンツの鑑賞に適したフォントを視聴者がインストールしているか、すべての視聴環境において字幕が正しい書式で表示されるか、あなたが含めたすべての言語の表示に対応していないデバイスでファイルを再生するとどうなるかなどです。

DivX PlusがMKVコンテナに提供する拡張機能であるWorld Fontsは、あらゆるプレーヤーが確実にフォントを読み込んで、すべての言語の字幕を表示できるように、適切なTrueTypeフォントをファイルに埋め込みます。特別な最適化手法によってフォントデータのサイズを大幅に削減することで、デスクトッププレーヤーだけでなく、DivX Plus Web Playerやメモリ容量に制約のあるハードウェアデバイスでもフォントを読み込めるようになります。

実際の動作を見る

Blender Foundationの作品であるSintelの予告編をエンコードし、日本語などの東アジア言語を含む4言語の字幕のそれぞれについて、World Fonts拡張機能が有効のものと無効のものを用意しました。World Fontsを含む字幕は、あなたのローカルシステムまたはプレーヤーがその言語をサポートしていなくても正しく表示されます。なお、DivX Web Player 2.0.2ではWorld Fontsの初期実装のみを提供しており、今後さらに最適化されます。

以下の字幕が利用可能です:

  1. フランス語
  2. フランス語(World Fonts有効)
  3. 中国語(現時点では正式サポートされていません)
  4. 中国語(World Fonts有効)
  5. 日本語(現時点では正式サポートされていません)
  6. 日本語(World Fonts有効)
  7. ロシア語
  8. ロシア語(World Fonts有効)

再生中のビデオを右クリックして字幕を選択してください。中国語と日本語は現時点ではDivX Plus Web Playerで正式サポートされていませんが、World Fontsが適用されていると正しく表示されることが確認できます。

ファイルをダウンロードして、DivX Plus Playerで再生することもできます。

動作の仕組み

World Fonts拡張機能によって、コンテンツ制作者は特定のTrueTypeフォントを独立したそれぞれの字幕トラックに関連付けることが可能になります。それぞれの字幕トラックを解析して表示に必要なすべての文字と記号を特定し、不要なデータを削除することで、フォントデータが最適化されます。そして、それぞれのフォントは.mkvファイルに埋め込まれ、その最適化対象となった字幕トラックに関連付けられます。ファイルサイズの削減によって、DivX Plus Web Playerやメモリ容量に制約のあるDivX対応デバイスでも、長時間にわたるバッファリングを要することなく多言語字幕を利用できます。

最適化の効果

ラテンアルファベットを使用するほとんどの西ヨーロッパ言語(英語、フランス語、ドイツ語、イタリア語、スペイン語など)の字幕を最適化すると、必要となるグリフは通常60から110になります。ちなみに、デスクトップソフトウェアで字幕を描画するのによく使われるフォントであるArialは、1,600以上のグリフを含んでいます。Arialを西ヨーロッパ言語の字幕のために最適化すると、通常86-92%のデータを節約できます。


典型的なフランス語の字幕トラックに最適化した西ヨーロッパフォント。
(クリックして拡大)

アジア言語ははるかに多くのグリフとフォントを使用するため、これらの言語に対応するフォントは巨大なサイズになることがあります。たとえば、Arphicの繁体中国語フォント”PL KaitiM”は14,000グリフを擁し10MB近い大きさです。多くのデバイスにおいて、このように大きなサイズのフォントを単純に読み込むことはできません。しかし、中国語や日本語などの言語の字幕トラックを表示するのに必要なグリフは、これらのごく一部だけです。


典型的な字幕トラックに最適化した簡体中国語フォント。
(クリックして拡大)

すべての言語をサポートする完全なUnicodeフォントは、さらに大きなものになります。たとえば、よく知られるArial Unicodeは、50,000を超えるグリフからなる22MB以上のデータです。これらのケースでは、多くの言語において、最適化によってデータの99%以上を節約できます。

.mkvファイルにWorld Fontsを追加する

.mkvファイルにWorld Fontsを追加するには、フォントの最適化を実行するユーティリティと、この拡張機能の要件を完全に満たすファイル書き込みプログラムを使用します。DivXでは、DivXMKVMuxサンプルツールにおいてリファレンス実装を提供しています。はじめに、DivXMKVMuxパッケージのダウンロードとインストールをしてください。


(クリックして拡大)

スタートメニューのDivX Plusプログラムグループの中にあるショートカットからコマンドコンソールを起動すると、DivXMKVMuxに簡単にアクセスできます。コンソールはインストールディレクトリで開始し、またインストールディレクトリは自動的にコンソールセッションのためのPATH環境変数に追加されるので、他のどのディレクトリからも単に”DivXMKVMux”と入力することができます。
以下のコマンドで、DivXMKVMuxの引数の完全なリストを参照できます:

DivXMKVMux –help

DivXMKVMuxはきわめて柔軟であるため、ヘルプの出力は膨大になります。しかし、必要な構文は実際のところ非常に単純です。DivXMKVMuxを使用して.mkvファイルに最適化したフォントを追加する方法はいくつかあります。もしまだ.mkvファイルに字幕を追加していないなら、1ステップの簡単な操作で字幕トラックと最適化したフォントを追加できます。既存の.mkvファイルをremuxすることを意味する -r を使用し、それから字幕ファイルと関連付けるフォントファイルを –s で指定します。

DivXMKVMux -o MyOutput.mkv -r MyInput.mkv -s font:MyEnglishFont.ttf lang:eng name:English English.srt -s font:MyFrenchFont.ttf lang:fre name:French French.srt -s font:MyGermanFont.ttf lang:ger name:German German.srt

字幕トラックの名前の指定は任意ですが、正しい言語コードを指定しなければなりません。言語コードを指定しないと、いくつかのプレーヤーで字幕トラックが正しくリストされないことがあります。有効なアルファベット3文字の言語コードは、ISO 639.2コード表で確認できます。空白を含むファイル名は、ダブルクォーテーション(””)で括ることを忘れないようにしてください。

すでに字幕トラックを含む.mkvファイルを使用する場合は、DivXMKVMuxが解釈する順番の通りにトラック番号がリストされるよう、はじめに既存のトラックを記載してください:

DivXMKVMux -l MyInput.mkv
Track language info:
Title 0:
Vid: 1 video stream(s)
0 – master video track
Aud: 1 audio streams(s)
0 – eng
Sub: 3 subtitle stream(s)
0 – eng
1 – fre
2 – ger

次に、-r を使用してファイルをremuxします。それぞれの字幕トラックに適切なフォントを –f で指定してください:

DivXMKVMux -o MyOutput.mkv -r MyInput.mkv -f add:MyEnglishFont.ttf outtrack:0 -f add:MyFrenchFont.ttf outtrack:1 -f add:MyGermanFont.ttf outtrack:2

DivXMKVMuxは、入力.mkvファイル中のそれぞれの字幕トラックについて、指定されたフォントを最適化してから出力.mkvファイルに追加します。

UTF-8でエンコードされた.srtファイルのみをDivXMKVMuxに渡すことが強く推奨されます。特にラテン以外の言語において、その他のエンコーディングが内部的に正しくUTF-8に変換されないリスクを回避することになります。UnicodeのBOMを持たない.srtファイルをDivXMKVMuxに渡した場合、-s codepage: オプションを用いてコードページ番号を明示的にオーバーライドしない限り、それらはANSIであると見なされ、既定のシステムコードページを用いてUTF-8に変換されます。メモ帳でSRTが正しく表示されない場合、そのファイルがUTF-8でなく、既定のコードページが変換に適切でない可能性があります。

入力.srtファイルのエンコーディングは簡単にUTF-8に変換できます。無料のテキストエディタNotepad++での手順は以下の通りです:

  • .srtファイルを開きます。
  • “Encoding(フォーマット)”メニューで”Encode in UTF-8(UTF-8エンコード)”が選択されているか確認してください。もしそうであればそのファイルはUTF-8です。
  • Encoding(フォーマット)メニューから適切な文字セットを選択し、テキストが正しく表示されるか確認してください。そして”Convert to UTF-8(UTF-8に変換)”を選びます。
  • .srtファイルを保存します。

はじめからUTF-8エンコーディングで.srtファイルを作成すれば、この手順は省略できます。

World Fontsへの対応状況

DivX Plus PlayerとDivX Plus Web PlayerはWorld Fonts拡張機能に対応しています。既知の問題については以下をご覧ください:

  • DivX Plus Web Player 2.0.2において、最初の字幕トラックを選択できない場合があります。その他の字幕を選んでから最初の字幕トラックに変更するか、JavaScript APIを使用することでこの問題を回避できます。
  • DivX Plus Player 8.1において、埋め込まれたフォントの書式がプレーヤーで設定されている書式と異なる場合に、埋め込みフォントが読み込まれない場合があります。例: プレーヤーでは斜体を使用するよう設定されていて、埋め込みフォントには標準書式が指定されている場合。

World FontsはすべてのDivX Plus HD認証デバイスでサポートされています。

ご意見をお聞かせください

DivX Plus(.mkv)フォーラムで、この機能に関するご意見やご質問をお聞かせください(フォーラムは英語で運営されており、書き込みにはサインインが必要です)。

技術的な解説

ここでは、MKV EBML構造を理解している読者を想定し、World Fonts機能の技術的な実装について解説します。それほど専門的でない方は、このセクションに興味をお持ちにならないかもしれません。

下記の図は、World FontsがDivX Plus HDの.mkvファイルにおいてどのように表されるかを示しています。要点は以下の通りです:

  • この拡張機能は、様々な既存のMKV EBML要素IDを使用します。
  • これらのうちいくつかの要素は特定の値を持つ必要があります。詳細は下記の構文表を参照してください。
  • フォントはアタッチメントとして格納され、最適化対象の特定の字幕のTrackEntryに明示的に関連付けられる必要があります。関連付けにはAttachment FileUIDを参照するTrackEntry内のAttachmentLink要素を用います。この参照の解決が成功すると、関連付けが成立します。

また、使用するフォントには以下の制約があります:

  • フォントはTrueType(.ttf)フォントでなければなりません。
  • フォントにはMicrosoft Unicode文字マップ(Platform ID=1、Encoding ID=3の”cmap”テーブルエントリー)テーブルが含まれる必要があります。


(クリックして拡大)

World FontsのEBML要素は以下の通りです:

説明
要素名 EBML IDのフレンドリーネーム。
Lvl 要素が含まれるコンテナ階層レベル。セグメントをレベル0とする。
EBML ID 要素のユニークなEMBL ID。
Ma 親要素が存在する場合、.mkvファイルにおいて要素が必須であるか否か。これは、拡張機能が機能するために、要素の存在が必要か否かとは異なります。
Mu 1つの親インスタンスごとに、要素が複数存在するか否か。
Rng 要素のペイロードにおける値の範囲の制約。
Def 要素の既定値。要素がファイルに存在しないにもかかわらずその親要素が読み込まれた場合、既定値を持つ要素は存在するものとして解釈され、その既定値を引き継ぎます。
Type 要素の型。表中の型は以下の通りです:c – コンテナ
b – バイナリ
u – 符号なし整数
s – 文字列
8 – UTF-8文字列
D+ DivX Plus機能拡張において新規の要素であるか否か。
説明 要素の説明。

 

要素名 Lvl EBML ID Ma Mu Rng Def Type D+ 説明
Segment->Track->TrackEntry
TrackType 3 [83]  * - 1-254 - u - トラックの型。字幕トラックでは0×11です。
AttachmentLink 3 [74][46]  - - >0 - u - 字幕トラックに最適化済みのTrueTypeフォントを含むAttachedFileのFileUID。
Segment->Attachments->AttachedFile
FileDescription 3 [46][7E] - - - - 8 - この拡張機能では”true type font”です。
FileName 3 [46][6E] * - - - 8 - オリジナルのTTFフォントファイルのファイル名。
FileMimeType 3 [46][60] * - - - s - この拡張機能では”application/x-truetype-font”です。
FileData 3 [46][5C] * - - - b - 最適化済みTrueTypeフォントのバイナリコンテンツ。
FileUID 3 [46][AE] * - >0 - u - アタッチメントのユニークID。IDはTrueTypeフォントの最適化対象の字幕TrackEntryのAttachmentLink要素から参照されます。
FileUsedStartTime 3 [46][61] - - - - u * 最適化済みフォントアタッチメントの使用を開始するコンテキストのタイムコード。TimecodeScaleセグメントに基づく。この要素は将来の使用のために予約されており、記入される場合はセグメントの開始時間でなくてはなりません。
FileUsedEndTime 3 [46][62] - - - - u * 最適化済みフォントアタッチメントの使用を終了するコンテキストのタイムコード。TimecodeScaleセグメントに基づく。この要素は将来の使用のために予約されており、記入される場合はセグメントの終了時間でなくてはなりません。

 

関連記事:

DivX To Goならビデオの変換・転送が簡単、しかも無料!
Samsung GALAXY Noteを2分でレビュー
あなたがDivXを必要とする理由