Windows 10: フォントの文字が不完全に表示される

Windows 10: フォントの文字が不完全に表示される
  • デフォルトでは、Windows 10にはsegoe ui 絵文字フォント
  • このフォントは、次の 4 つの Unicode 文字を持つ唯一のデフォルト フォントです。

答え1

最新の UI 要素は、従来の要素と同じようには動作しません。実行ダイアログとメモ帳はどちらも古い従来の要素であり、OS の他の部分とともに更新されません。検索バーは最新の OS 要素であるため、これは OS のすべての新しい要素の動作になるはずです。Segoe フォント ファミリは最新の UI 用に開発され、さまざまなテキスト表示機能に使用されています。とはいえ、Microsoft の開発は一貫性があるとは言えません。異なるチームによって開発された異なる要素が、異なる動作をしている場合があります。

「モダン」Windows 10 アプリケーションでフォントがどのように処理されるかの詳細については、次の記事をお読みください。https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/wpf のタイポグラフィ

WPF は、次の機能を提供することで、強化されたフォント サポートを提供します: すべてのテキストの Unicode。フォントの動作と選択に、文字セットやコード ページは不要になりました。

ここでは、最新のアプリがフォント ファミリ内の複数のフォントの文字を表示する方法について説明します。

答え2

@harrymc 「Windows のすべてのソフトウェアは、同じ Windows コンポーネントによってサポートされている同じ API を使用します。」

私: * これは「API」の定義に関連しています * どちらも .net で実行され、.net 自体は winrt (Windows ランタイム) で実行されます * ただし、インターフェイスが異なる場合があります * この点に注意すると、wiki ではこれらが異なることが示唆されています: https://en.wikipedia.org/wiki/Windows_Forms * 「Windows フォームは既存の Windows API 上に構築されており、一部のコントロールは基礎となる Windows コンポーネントを単にラップするだけです。」 https://en.wikipedia.org/wiki/Windows_Presentation_Foundation * 「WPF のアーキテクチャは、マネージ コード コンポーネントとネイティブ コード コンポーネントの両方にまたがっています。ただし、公開されているパブリック API はマネージ コード経由でのみ利用できます。WPF の大部分はマネージ コードですが、WPF アプリケーションをレンダリングする合成エンジンはネイティブ コンポーネントです。」

https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.fontfamily?view=netframework-4.8

「WPF フォント フォールバック メカニズムは、以前の Win32 フォント置換テクノロジに代わるものです。」

https://support.microsoft.com/en-us/help/3083806/一部のアプリで四角いボックス付きのテキストが表示される理由 (Windows 1 の場合)

「Windowsは依然としてUnicodeと国際テキストを強力にサポートしており、ユニバーサルWindowsアプリがデスクトップデバイスやその他のあらゆるフォームファクタで優れたテキスト表示を実現できることを保証しています。

@HackSlash「実行ダイアログとメモ帳はどちらも、OS の他の部分とともに更新されない古いレガシー要素です。」

私: * 正しくない * ただし、メモ帳はワードパッドほど頻繁に更新されません

注記 * この投稿はすぐに整理します * 懸賞金の期限が切れる前に、かろうじてこれを作成する時間がありました * @harrymc と @HackSlash はどちらも根本的な間違いを犯していました * そのため、より正確な情報を提供したいと思いました

答え3

受け入れられた回答には同意できません。Windows のすべてのソフトウェアは、同じ Windows コンポーネントでサポートされている同じ API を使用します。古いソフトウェアは時代遅れの API を使用することがありますが、これは現在も開発中のメモ帳やワードパッドには当てはまりません。

投稿者がメモ帳とワードパッドで経験した問題は、これらの製品の問題というよりも、ユーザー インターフェイスに関係しています。その証拠として、現在のフォントが Segoe UI Emoji として指定されている場合に文字が正しく表示されることが示されています。

ここに画像の説明を入力してください

ただし、現在のフォントが Segoe UI Emoji でない場合、これらの文字の 1 つ以上が現在のフォントに含まれていない限り、これらの文字を貼り付けても機能しないと考えられます。

Windows ダイアログの場合: ダイアログが作成されると、テキスト フィールドで使用されるフォントがダイアログの定義で指定されます。Segoe UI Emoji フォントは、通常のテキスト フォントとしては明らかに不適切であるため、このようなユーザー インターフェイスで使用されることはありません。

少なくとも、ダイアログの定義を含む.exeまたは.dllをハッキングしない限り、ダイアログでプログラムされているフォント以外のフォントを強制的に使用することはできません。したがって、ダイアログで絵文字を貼り付けても機能するとは期待できません。

編集

Unicode の文字範囲は非常に大きいですが、地球上のすべての言語のすべての文字を網羅するには不十分です。同じ Unicode コード ポイントを異なるフォントの異なる文字に使用できるため、フォントが重要なのです。

Windows クリップボードは、Linux クリップボードとは異なり、豊富な機能を備えています。文字だけでなく、言語、方向 (右、左)、フォントなどの情報も含めることができます。API はさまざまな形式を設定および取得することができ、また、保存された形式を取得したら、要求された形式に変換できるほどインテリジェントです。

したがって、特殊文字をコピーして貼り付けると何が得られるかは、ソース プログラムとターゲット プログラムで使用された API によって異なります。以下は、Wordpad を使用した例です。

これは Arial フォントの最初のテキストです。

ここに画像の説明を入力してください

次に、ブラウザから 4 番目の文字をコピーしてテキストの末尾に貼り付けると、奇跡が起こります。フォントが Segoe UI Emoji になりました。

ここに画像の説明を入力してください

そこで、「Arial」という単語をクリックすると、フォントが突然変わります。

ここに画像の説明を入力してください

これで、2つの異なるフォントのテキストができました。貼り付けた文字(

関連情報