TextRTDについて
Text Recordは、自由な構文のテキストを含むことごできるレコード
言語コードを含むことができるため
軽量な多言語対応テキストが作成可能
テキストレコードは
NDEF Message の中に複数含めることができるがこれは、多言語対応のため
このため、複数のテキストレコードがふくまれる場合、
複数表示ではなく
ユーザーが求める言語のいずれかのみ表示する
テキストレコードは
NDEF headerに以下の情報がセットする必要がある
TNF
0x01(NFC forum well known type)
そして、タイプ
RTD Text Type(“T” [0x54])
次に、payloadについて
以下の3つのフィールドで構成される
ステータスバイト
ISO/IANA言語コード
実テキスト
まず、ステータスバイトについて
ステータスバイトは
Text RTD のheaderのような役割をするバイト
このバイトは、以下のように定義されている
ビット数
7
0の場合、このテキストのエンコードがUTF-8であることを示す
1なら、UTF-16になる
6
必ず0をセットする
将来のために予約されているビット
5-0
ISO/IANA言語コードの長さを示す
単位はバイト
次に、ISO/IANA言語コードについて
jpやen-USなど
RFC3066
に則った言語コードが入る
また、ステータスバイトには
この言語コードの長さを
ステータスバイトの下位5ビットに含める必要がある
例えば、
jp なら 0x02
en-USなら 0x05
となる
この言語コードは、RFC3066に従わなくてはならない
次に、実テキストについて
これは、UTF-8、または、UTF-16でエンコーディングされた文字列のこと
このエンコーディングは
ステータスバイトで指定したエンコーディングと同じであること
他にもいくつか仕様で決まっていることがあり
テキストの改行コードはCRLFでなければならない
BOM(Byte Order Mark)は許容すること
BOMによりエラーになってはいけない
BOMが省略された場合、
UTF-16 BE(Big Endian)とする
改行(0x0D,0x0A)と,タブ文字(0x08)
を除いて制御文字(UTF-8でいう0x00-0x1F)は
表示する前に削除するべき
マークアップは埋め込まれてはいけない
マークアップはHTMLのようなコードのこと
この場合、text/xhtmlなどのMIMEタイプレコードを利用する
テキストレコードは
MIME-Typeで表すところの
text/plain
format-fixed
と等しくなるよう配慮することが必要