DG EMOJIK / 日本語

複合絵文字とZWJ:複数の文字から一つの図形になる仕組み

1つの表示される絵文字は、複数のUnicode文字で構成されている場合があります。ZWJ(ゼロ幅結合子)は、特定の絵文字シーケンスの要素間に位置し、合成表示を可能にします。受信側のシステムがそのシーケンスをサポートしていない場合、代わりに個別の図形が表示されることがあります。

ハンガリー語原文の完全な機械翻訳です。

積み重ねられたパズルのピースのクローズアップ。
イラスト。 · congerdesign / Pixabay

そのため、プログラムにとって1つの図形は1文字よりも長くなることがあります。コピー、削除、文字制限において、これには実用的な意義があります。3つの具体的な例で、どの要素を一緒に保つべきか見てみましょう。

技術者と一緒に見てみましょう

👩‍💻シーケンスは、女性、接続符、ラップトップの文字から構成されています。ZWJのコードポイントはU+200Dです。それ自体は表示されない記号です。サポートされているシーケンスは、レンダラーによって単一の形状として描画される可能性があります。しかし、任意の文字間に挿入されたZWJは、自動的にどこでも機能する新しい絵文字を作成するわけではありません。出典:Unicode Emoji – Emoji ZWJ Sequences

表示例 コードポイントの順序 シーケンスの構成要素
👩‍💻 U+1F469, U+200D, U+1F4BB 女性、接続符、ラップトップ。
👨‍🍳 U+1F468, U+200D, U+1F373 男性、接続符、料理を示す文字。
👩🏽‍💻 U+1F469, U+1F3FD, U+200D, U+1F4BB 女性、肌色修飾子、接続符、ラップトップ。

3番目の行では、肌色修飾子は女性の文字の後に続きます。接続符とは異なる役割を果たします。例えば、👋🏽手を振る絵文字には肌色が含まれますが、ZWJは含まれていません。肌色の選択だけでは、記号をZWJシーケンスにするわけではありません。国旗の文字ペアも複数の要素から構成されますが、異なる結合ルールに従います。

「1文字」とはどのような意味ですか?

読書時、プログラムが複数のコードポイントとして保存しているものを、1つの図形として知覚することがあります。Unicodeのテキスト分割ルールは、ユーザーが1つの単位として知覚するこのようなグループも扱います。技術的な名称は「字素クラスタ」です。出典:Unicode Text Segmentation

入力フィールドの長さ制限を調査する際は、3つの異なる質問を投げかけてください。表示される単位はいくつか、それらはどのコードポイントから構成されているか、そしてプログラムはどの単位をカウントしているか?「最大10文字」という表記は、インターフェースがユーザーの期待と異なるものをカウントしている場合、あまりにも少ない情報を提供します。

空のメモで試してみてください。👩🏽‍💻図形を貼り付け、その後削除します。一体として消えますか、それとも人間、ラップトップ、または肌色記号が残りますか?エディターの挙動はここからわかります。重要なテキストを短縮する際は、残る部分も確認してください。

コピー時に分解されるのはなぜですか?

2つの検証方向が有用です。1つは表示です。同じ完全なシーケンスが他のプログラムでも複数の画像として表示されるか?もう1つはデータです。コピーと保存中にシーケンスの要素は保持されましたか?2つのケースは外見上似ていても、異なる修正を必要とする場合があります。

まず、完全な記号を空のメモにコピーし、そこから元に戻します。その後、シンプルな笑顔も試してみてください。複雑な形状のみが変化する場合は、バグ報告に具体的なシーケンスと両方のアプリ名を記載してください。スクリーンショットは表示を示し、貼り付けたテキストは元の文字の調査も可能にします。

コピー時と短縮時は一体として保つ

図形の目に見えない中央でテキストを切らないでください。編集時は絵文字全体を選択し、短縮されたバージョンも確認してください。プログラム作成時は、ユーザーが知覚する文字境界を扱うテキスト処理を選択し、具体的な複雑な記号で試すのが賢明です。

公開前のテストはシンプルにしましょう。基本的な笑顔、肌色付きの手、ZWJシーケンスをテストテキストに含めます。保存、再読み込み、削除を確認してください。四角として表示される絵文字についてと、SMS文字制限についてのガイドは、関連する2つのデバッグ状況を解説しています。

要点を持ち帰る

3問の知識クイズ

読んだ内容をどう適用するか試してみてください。各質問につき1つの回答を選択してください。正解は1点です。評価はこの3つの状況に対するフィードバックを提供し、あなたの回答は保存も送信もされません。

1. フォームは👩‍💻記号を3つのコードポイントとしてカウントしますが、あなたは1つの図形を見ています。どの結論が妥当ですか?
2. 提示されたシーケンスにおけるZWJの役割は何ですか?
3. コピー後に図形が分解されます。どのバグ報告がより有用ですか?

解答と解説
  1. プログラムは、表示される図形の個数とは異なる単位でカウントします。 女性、ZWJ、ノートパソコンの3つのコードポイントが組み合わさって、1つの表示図形を形成する場合があります。
  2. 一緒に表示される要素間の不可視の結合子。 結合子はシーケンスの一部であり、合成された図像を表示するにはレンダリングのサポートも必要です。
  3. コピー可能なシーケンス、表示、および関連アプリケーションの名前。 データと表示を組み合わせることで、絵文字がどこで変化したかを特定するのに役立ちます。

正解数を数えてください:各1点です。未回答は0点です。

  • 3点: 3つの状況すべてにおいて、図形と保存されたシーケンスを別々に扱いました。メモアプリでコピーと削除を試してみてください。
  • 2点: どの構成要素やデバッグデータが欠落しているかを確認してください。
  • 0–1点: 技術的な分解から始めましょう:女性、ZWJ、ノートパソコン。

もう1つのおすすめ記事

すべての20記事 · 絵文字を探す