運転免許証ICチップ内の氏名や住所情報はJIS X 0208で記録されています。
JIS X 0208で規定されない文字(JIS漢字第三水準・第四水準など)は外字(画像)として記録されます。
具体的には以下の情報に外字を含むことがあります。
LibJeID 20200228 以降、これらの外字を適切に扱うためのDLStringクラスを提供しています。 DLStringはこれらの外字を含む文字列をテキスト形式・JSON形式・HTML形式でフォーマットします。
記載情報を送信、記録するようなケースではJSON形式、アプリなどのUIに表示するような場合HTML形式を使用することを想定しています。
例) 山﨑 太朗(「﨑」と「朗」が外字)
山【※1】 太【※2】
というテキストで表現します。欠字の場合は【※欠】となります。
DLString#toJSON()は以下のようなJSONフォーマットを返します。
例) 山﨑 太朗(「﨑」と「朗」が外字)
[
{"type": "text/plain", "value": "山"},
{"type": "image/png", "value": "iVBORw0KGgoAAAA..."}, //「﨑」のPNG画像をbase64エンコードしたもの
{"type": "text/plain", "value": " "}, // 氏名の区切りは全角スペース
{"type": "text/plain", "value": "太"},
{"type": "image/png", "value": "iVBORw0KGgoAAAA..."}, //「朗」のPNG画像をbase64エンコードしたもの
]
※実際のJSON文字列は最小化されており、改行やスペースは含まれません。
※旧API(DriverLicenseEntries#getNameJson()など)はテキストをUnicodeエスケープしていましたが、DLString#toJSON()はUnicodeエスケープを行わないよう仕様変更しています。
外字は最大7つまで記録されます。 氏名や住所にJIS X 0208に含まれない文字が8文字以上使われ、 外字として記録されていない場合、その文字は欠字として扱われます。
例) 山﨑 太朗(「﨑」が外字、「朗」が欠字)
[
{"type": "text/plain", "value": "山"},
{"type": "image/png", "value": "iVBORw0KGgoAAAA..."}, //「﨑」のPNG画像をbase64エンコードしたもの
{"type": "text/plain", "value": " "},
{"type": "text/plain", "value": "太"},
{"type": "image/x-missing"}, // 欠字
]
外字を含む文字列をHTMLで表現します。画像はData URI形式でHTMLに埋め込まれます。
ブラウザなどのWebUIで表示する際はフロントエンドでJSONデータをJavaScriptでHTMLに変換する方法もご検討ください。
参考) dlstring.js