以前、Docurainが「外字」に対応済みであることをお知らせしましたが、Docurainは異体字セレクタ(IVS)にも対応*1しました。
異体字セレクタ(IVS)とは
Ideographic Variation Sequence(異体字シーケンス)の略称で、異体字の関係に ある文字に「異体字セレクタ」(VS / Variation Selector)というコード(枝番号) を振ることで、より確実な文字情報の交換を可能にする技術のこと
使用例
例えば、「尊」の異体字である
は対応するセルのフォントをIPAmj明朝にした上で、以下のようなJSONで表示できます。
:{ "str": "尊\uDB40\uDD04" }
または { "str": "尊\\U+E0104" }
:{ "str": "尊\uDB40\uDD05" }
または { "str": "尊\\U+E0105" }
Docurain独自の記述方法
{ "str": "尊\U+E0104" }
と\
(バックスラッシュ)は一つになるべきですが(実際これでもDocurainでは動きますが)、これはJSONエディタではエラーに判別され開発時に扱いづらいため、独自に { "str": "尊\\U+E0103" }
でも受付可能にしました。
異体字セレクタ(IVS)のデータで出力してみよう
テンプレート・JSONは以下のように作成しています。
サンプルはこちらからダウンロードできます。
{ "str1": "尊\\U+E0103", "str2": "尊\\U+E0104", "str3": "尊\\U+E0105", "str4": "㐄\\U+E0101", "str5": "㐄\\U+E0100", "str6": "㐪\\U+E0103", "str7": "㐪\\U+E0101", ...省略... }
出力結果は以下のようになります。
問題なく出力されていますね。
IPAmj明朝の文字一覧に存在するIVSの1万1,382文字は全て検証済みで出力可能です!
異体字セレクタ込みの文字列操作も簡単に
サロゲートペアを扱ったことがある方でしたらご存じの通り、 サロゲートペアが含まれた文字列は、もはや通常の「文字列」として扱うことができません。 なぜなら、サロゲートペアは「2文字で『1文字』を表す」という特殊な文字だからです。
例えば🍣や🍺はサロゲートペアです。なので、
"🍣と🍺".length
とJavascriptで実行すると、3
ではなく5
が返ってくるあたりで辛さがわかると思います。
先頭の1文字を切り取ろうとして、
"🍣と🍺".substring(0, 1)
とやると、"�"
という壊れた文字が返ってくる*2わけです。ましてや、IVS文字は「3文字で『1文字』を表す」という世界なので、例えば
"🍣と🍺と䄂\uDB40\uDD01".length
は9
になるわけです。表示結果は5文字*3なのに。辛い。
そこでDocurainでは、ユニコード専用の文字列操作を用意しています。 JSONで送ったデータの文字列オブジェクトのメソッドとして呼び出すことができます。
関数名 | 説明 |
---|---|
u_length | ユニコードを考慮した文字列長を返す。サロゲートペアおよび異体字セレクタの文字は1文字とカウントする。例えば"🍣と🍺と䄂\uDB40\uDD01" の長さは5 とカウントする。 |
u_charAt(int index) | ユニコードを考慮した文字取得メソッド。オリジナルのString#charAtとは異なり、このメソッドの戻り値は「1文字」を表す文字列になる。サロゲートペアおよび異体字セレクタの文字は1文字とカウントする |
u_toCharArray() | ユニコードを考慮して文字列を文字に分解する。オリジナルのString#toCharArrayとは異なり、このメソッドの戻り値は「1文字」を表す文字列の配列になる。サロゲートペアおよび異体字セレクタの文字は1文字とカウントする。 例えば `'🍣と䄂\uDB40\uDD01'`.u_toCharArray() の結果は["🍣","と","䄂\uDB40\uDD01"] になる |
u_substring(int from), u_substring(int from, int to) | ユニコードを考慮した部分文字列取得メソッド。サロゲートペアおよび異体字セレクタの文字は1文字とカウントする |
u_hasIVS() | 異体字セレクタを含む文字列か判定する |
u_removeIVS() | 異体字セレクタを除去して通常の字体のみにする |
最低限必要なものは用意しましたが、不足がありましたら随時追加していきます。
今回作成したサンプルは、無料トライアルページからも登録不要で試してみることが出来ます。 外字・異体字を扱う帳票の作成・出力が必要な際はぜひ試してみてください!
他にも様々な機能がありますので、ぜひアカウント無料登録してマニュアルを参照しお試しください。