Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2023年09月024日] [更新 2023年10月02日]* Delphi 一般・その他 [未分類 - OS の操作等]
ワードへの Emoji ( 絵文字 ) の貼り付け
動作確認等 Windows 10 ビルド 19043 Pro 64 bit
Microsoft Word 2019
[整理番号 - 2000]







ワードへの貼り付けで絵文字がモノクロ ( 白黒 ) になる現象


当サイトの以下のリンクのページに Unicode Emoji の絵文字を掲載していいます。


Emoji の絵文字はカラー絵文字ですが、コピーしてワード (Microsoft Word) に貼り付けると、ワードの現在のフォントサイズとは異なるサイズのモノクロ (白黒) なったり、空白の文字なったりすることがあります。本ページは、その場合の対処方法の記事です。

😀😄👺🐵🌍
😀😄👺🐵🌍


下図は、この現象を確認した結果です。Microsoft Edge 117.0 で表示した上の最初の行の絵文字を、Microsoft Word 2019 に貼り付けてテストしています。
上の最初の行の Emoji は Segoe UI Emoji フォントを使用して表示しています。2 番目は、Noto Color Emoj フォントを使用していますが、結果は同じです。



図1
Microsoft Word 2019 起動時
  • フォントは 游明朝
  • フォントサイズは 10.5
図2
絵文字を貼り付けた結果
  • フォントが Segoe UI Emoji になっている
  • フォントサイズが 22.5 に変わっていて、
    モノクロ (白黒) になっている

今度は Noto Color Emoj フォントをシステムにインストールしてテストしてみました。 上の 2 番目の Noto Color Emoj フォントで表示している Emoji を貼り付けた結果です。
ウェブブラウザでは指定したフォントでの描画ができますが、Windows 10 のアプリでは基本的に Noto Color Emoj の絵文字は利用できません。その結果としての現象です。



図3
Noto Color Emoj の絵文字を貼り付けた結果
  • Noto Color Emoj をシステムにインストールしている場合
  • 空白文字となる
  • [Ctrl] + [A] で選択した状態

[備考 1]
この現象は、コピー元の絵文字、ウェブブラウザのクリップボード関係の機能、貼り付け先のアプリによって挙動が異なることがあります。

[備考 2]
文字 (テキスト) のコピーは、それらをクリップボードに格納する操作です。
この時、クリップボードに格納されるのは、画面に表示されている図形としての「文字 (テキスト)」ではなく、それらの文字のコードポイント、つまり、文字コードです。貼り付け先のアプリは、そのコードポイントに相当する文字のデータ (フォントデータ) をフォントファイルから読み出して文字を描画します。
したがって、通常、文字のサイズは、貼り付け先の設定となります。




01_[ Unicode テキスト ] として貼り付て Segoe UI Emoji にする


Microsoft Word 2019 の例です。

貼り付けたモノクロの絵文字、あるいは空白文字を削除します。
[ホーム] タブをクリックして [貼り付け] の下向き矢印をクリックします。[形式を選択して貼り付け] を選択すると
ダイアログが現れます。このダイアログで [Unicode テキスト] を選択します。選択したら、[OK] ボタンをクリックしてダイアログを閉じます。
このダイアログは、[Ctrl] + [Alt] + [V] のキー操作でも表示できます。

貼り付けた絵文字を選択して、フォントが Segoe UI Emoji になっていない場合は Segoe UI Emoji にします。絵文字の中には、Segoe UI Emoji と Segoe UI Symbol フォントの両方に収録されている文字があります。それらの中には、グリフのサイズやデザインが異なる絵文字があります。Segoe UI Emoji フォントに設定することによって字形を統一できます。

以下のリンクに、フォントの指定の違いによる例があります。



図4
貼り付け操作手順
  • 貼り付けた絵文字を削除
  • [ホーム] [貼り付け] で
    下向き矢印をクリック
  • [形式を選択して貼り付け]

  • [Unicode テキスト] 選択、
    ダイアログ下部の [Ok] をクリック

  • 文字を選択して、フォントを Segoe UI Emoji にする




02_ウェブページの文字 ( テキスト ) の貼り付け


この現象は、ウェブページの文字 (テキスト) を貼り付ける時に起こります。
ウェブページのテキストをコピーして、ワードの文書に貼り付ける時に、HTML の書式の一部が含まれて貼り付けされるために発生します。

Emoji の絵文字はカラーです。貼り付けるとモノクロ (白黒) になるので分かりますが、漢字や記号類でも同じです。ウェブページのテキスト (文字) を貼り付ける時は、[Unicode テキスト] として貼り付けします。単純に [貼り付け] すると、後の編集の際にトラブルの元になります。

本ページを Microsoft Edge 117.0 で表示した後、次のテキストをコピーして Microsoft Word 2019 に貼り付けてみます。Microsoft Word 2019 のフォントの設定は 游明朝、フォントサイズは 10.5 です。


テキスト


下図が貼り付けた結果です。フォントが MS ゴシック になって、フォントサイズも 30 に変わっています。実際のウェブページの本文の文字サイズはこんなに大きくはありません。気付かない可能性もあります。



図5
単なるテキストの [貼り付け] ではない
  • ォントが MS ゴシック に、フォントサイズも 30 に変わっている
図6
[Unicode テキスト] で貼り付けた結果
  • 既に貼り付けたのを選択して削除してから、再度 [Unicode テキスト] で貼り付ける

Firefox 117.0 で表示しているウェブページからのコピーの場合は、この現象も上の絵文字の現象も起こりません。文字のコピーは自動的にテキストで貼り付けとなります。表の罫線などを含めてコピーすると、自動的に [HTML 形式] での貼り付けとなります。その場合、[Unicode テキスト] で貼り付ければ、文字 (テキスト) だけの貼り付けとなります。



[備考]
[HTML 形式] の貼り付けが必ずしもウェブページでの見た目と同じになるとは限りません。HTML コード、CSS の設定、ブラウザによっても違ってきます。




03_ウェブページからの貼り付けをテキストにする設定


ウェブページでコピーした文字 (テキスト) をワードに貼り付ける時に、常にテキストとして貼り付けるように設定することができます。

下図は Microsoft Word 2019 の例です。

文書の作成中の時は、[ファイル] [その他] で [オプション] を選択します。ワードそのものを (新規文書作成状態でではなく) を起動した時は、左ペインの [オプション] をクリックします。
現れたダイアログの左ペインの [詳細設定] をクリックします。
右ペインに [切り取り、コピー、貼り付け] という項目があります。
その中の [他のプログラムからの貼り付け] のリストから [テキストのみ保持] を選択して、[OK] ボタンでダイアログを閉じます。



図7
詳細設定

[備考]
この設定は、デフォルトの動作の設定です。
本項の設定をしても、[貼り付け] [オプション] で [HTML 形式] の貼り付けはできます。




04_ワードに貼り付けた絵文字をモノクロ ( 白黒 ) の絵文字にする


ワードに貼り付けた絵文字をモノクロなど、単色の絵文字にできます。
単色にする絵文字を選択して、カラー選択ダイアログを表示して色を選択します。

フォントの色を [自動] にすると、元のカラー絵文字に戻ります。



図8
単色の絵文字にする
  • 単色にする絵文字゛を選択
  • カラー選択ダイアログを表示して色を選択
図9
モノクロにした結果
図10
任意の色にできる




05_Emoji の絵文字と Emoji ではない記号や絵文字


当サイトの以下のページに、Unicode の記号・絵文字類を掲載しています。これらは Unicode Standard の文字、つまり、一般的な Unicode の文字で、Unicdoe Emoji の文字ではありませんか、Unicode Emoji に登録されている文字もあります。
Unicode Emoji の文字には複数のコードポイントを結合した文字がありますが、以下のリンクに掲載してい文字も含めて、一般的な Unicode の文字は全て単一のコードポイントの文字です。



以下は、それらの中の女性と男性の記号です。これらは Unicode Emoji にも登録されています。これらの文字をウェブブラウザで表示する時、フォントの指定によってグリフが異なります。Segoe UI Emoji を指定して描画すれば Unicode Emoji の絵文字になります。

フォントの指定 U+2640 U+2642
游ゴシック
メイリオ
Segoe UI Symbol
Segoe UI Emoji


顔の絵文字の例です。
コードポイントが U+1F600 と U+1F610 の文字は、ウェブブラウザで表示するの時のフォントの指定に関係なく自動的、というよりも強制的に Segoe UI Emoji フォントが使用されて Emoji の絵文字になります。U+2639 の文字はフォントによってグリフが異なりますが、ウェブブラウザで表示する時のフォントを Segoe UI Emoji にすれば Emoji の絵文字になります。

これは、Unicode Emoji のコードポイントの組み合わせ手順 (シーケンス) によるものです。


フォントの指定 U+1F600 U+1F610 U+2639
游ゴシック 😀 😐
メイリオ 😀 😐
Segoe UI Symbol 😀 😐
Segoe UI Emoji 😀 😐


ウェブブラウザで表示しているこれらの文字をコピーして、ワードの文書に貼り付けた場合も同様の現象となります。

女性と男性の記号の場合、どちらも複数のグリフが Unicode Emoji に登録されています。それらはコードポイントのシーケンスが異なっています。単一のコードポイントのグリフもありますが、それらはユニコードコンソーシアムが「不適格」としています。
不適格なグリフは、Unicode Emoji のグリフとして自動では認識しません。そのため、現在のフォントの設定による描画となります。不適格であっても、フォントに Segoe UI Emoji を指定すれば、該当する Unicode Emoji のグリフをを描画してくれます。


Emoji の文字 コードポイント 評価 テキストとしてワードに貼り付け
♀️ U+2640 U+FE0F 仕様に完全適合 強制的に Segoe UI Emoji が使用される
U+2640 不適格 Emoji ではない 絵文字 になる
Segoe UI Emoji にすれば Emoji になる
♂️ U+2642 U+FE0F 仕様に完全適合 強制的に Segoe UI Emoji が使用される
U+2642 不適格 Emoji ではない 絵文字 になる
Segoe UI Emoji にすれば Emoji になる


上で示した顔の絵文字の場合です。
U+1F600 と U+1F610 の文字は、Unicode Emoji にも同じ単一のコードポイントの文字が登録されていて、完全適合となっています。この場合は、自動的に、というよりは強制的に Segoe UI Emoji が使用され、該当グリフが描画されます。
上のリンクの記事 [Unicode の記号・絵文字 一覧] の文字でカラー絵文字になっている文字はこの形式の絵文字です。

U+2639 の文字は、複数のグリフが Unicode Emoji に登録されています。単一コードポイントのグリフもありますが、不適格となっています。不適格な Emoji は、自動で Emoji の絵文字として認識しません。したがって、Emoji ではない絵文字になります。
ただし、強制的に Segoe UI Emoji を使用する絵文字を貼り付けた直後は、フォントが Segoe UI Emoji になっていますから、自動的に、Segoe UI Emoji フォントを使用した絵文字になります。


Emoji の文字 コードポイント 評価 テキストとしてワードに貼り付け
😀 U+1F600 仕様に完全適合 強制的に Segoe UI Emoji が使用される
😐 U+1F610 仕様に完全適合 強制的Uに Segoe UI Emoji が使用される
☹️ U+2639 U+FE0F 仕様に完全適合 強制的に Segoe UI Emoji が使用される
U+2639 不適格 Emoji ではない絵文字になる
Segoe UI Emoji にすれば Emoji になる


ワードの文書に貼り付けた時に自動的に (強制的に) Segoe UI Emoji フォントを使用する絵文字は、フォントを変更できません。変更しようとしても Segoe UI Emoji に戻されます。

このような、単一コードポイント、または単一コードポイントに U+FE0F を結合した絵文字を、ユニコードコンソーシアムでは基本絵文字 (basic_Emoji) としています。基本絵文字は、Unicode Emoji 15.0 に 1,386 文字あります。現実問題として、コードポイントで文字を入力することはほとんどありませんから、操作の結果をそのまま受け入れることになると思われます。



[備考 1]
「不適格」は、Unicode Emoji のシーケンスとしては不適格という意味です。Unicode Standard に登録されている文字は全て単一のコードポイントの文字です。

[備考 2]
プログラマ用の情報です。
コードポイントが U+1F600 の文字は、いわゆるサロゲートペアな文字です。UTF-16 で扱うとエレメントが 2 の文字になります。U+1F600 のままで扱うには、文字列を UTF-32 で処理します。




06_かな漢字変換による入力と Emoji ではない絵文字への変換


記号類などの絵文字は IME パッド、あるいは絵文字パネルから入力できますが、かな漢字変換からもある程度は入力できます。


以下、Microsoft Word 2019 で、フォントを遊明朝、フォントサイズを 28 にしてテストしています。

下図は「て」を変換しているところです。このまま確定すれば Emoji の絵文字が入力できます。この絵文字は強制的に Segoe UI Emoji フォントを使用する絵文字です。



図11
「て」を変換
  • Emoji の絵文字が入力できる

前項の説明で使用した男性の記号を入力してみます。「おす」を変換します。下図では Emoji ではない絵文字になっていますが、そのまま確定すると、フォントは遊明朝のままですが Emoji の絵文字になります。


図12
「おす」を変換
  • この状態で確定する
図13
Emoji の絵文字になる
  • フォントは遊明朝のまま

前項で説明したように、このコードポイントの文字には Emoji ではない絵文字があります。
確定した絵文字を選択してコピーします。上の方で説明した方法で [Unicode テキスト] として貼り付けると、Emoji ではない絵文字になります。
かな漢字変換で入力した文字は、単一コードポイントの文字です。テキストとして貼り付けると、現在のフォントの設定が使用されます。この場合は遊明朝です。


図14
Emoji ではない絵文字に変換




07_アプリにおけるフォント名の選択操作


アプリのフォント名選択操作では、フォント名の先頭が半角の英字であれば、前方一致検索の機能が利用できます。下図は Microsoft Word 2019 の例です。IPAm または IPAmj まで入力すると自動的に「IPAmj明朝」を探してくれます。
文字のサイズも直接入力して設定できます。

Microsoft Word では、文字単位でフォント名や文字サイズを設定できますが、メモ帳のようなテキストエディタでは、フォント名も文字のサイズも編集中の文書で固定となります。




図15
フォント名の選択
  • IPAm または IPAmj まで入力