[WinRT/Metro] 勝手に「ファミリー」が「ファ㍉ー」に変えられちゃうよぉ! (@@;
Windows ストア アプリを作ってると、 フォントのチグハグさに辟易するわけですよ。 Segoe UI のスマートな英数字に、 太い Meiryo UI の日本語が混じるとね。 (--;
で、 全部 Meiryo とか、 (Windows Phone SDK を入れてる人向けに) Yu Gothic とかを指定して、 英数字と日本語がバランス良く表示されるようにするわけですな。
ところが…、 昨日気が付きました。
コレ↓ (@@;
喰わせてるデータは「ファミリー」なのに、 表示は「ファ㍉ー」に化けてる! orz
なんじゃそりゃ~!? ってことで調べてみたら。
犯人は、 StandardStyles.xaml のスタイルに定義されている…
Typography.DiscretionaryLigatures = "True"
…でした (実際は、 スタイル セッターの構文)。
これは MSDN を見ると、 「随意合字」というものらしい。 どういう文字列が「合体」しちゃうかは、 次の画像で分かるように、 フォントによって違います。 デフォルトで使われてる Meiryo UI では「合体」しません。 Meiryo と Yu Gothic は「合体」しちゃいますが、 その範囲は違います。 これはもう、 予想不能。
さて、 フォント ファイルから「合体」しちゃう文字列を列挙するには、 どうしたらいいのかしらん?
ともあれ、 StandardStyles.xaml に定義されている Typography.DiscretionaryLigatures を False に変更しておくのが吉でありましょう。
※ ファイル内に 3箇所あります。 検索して全部潰しましょう。(ついでに、「マウス」→「Mouse」も)
※ [2013/7/4 追記] Win8.1 では StandardStyles.xaml が居なくなっちゃいました。 地道に、 TextBlock に適用するスタイルを再定義するほかないようです。 (generic.xaml に引っ越したんだけど、 このファイルをいじっちゃうと違う PC でビルドしたら違う結果になってしまう)
[2013/2/21追記]
この「随意合字」、欧文フォントでは有効に働きます。
画像の上段が「合体」している状況。 "ffi"、"fi"、"fl"、"ff"がくっついています。読みやすくなる方向に働いていますね。だから、 Windows ストア アプリのテンプレートでは ON にしてあるのでしょう。 よもや日本語でこんな恥ずかしいことになるとは思いもよらずに…。
| 固定リンク
« [WinRT/Metro] Windows ストア アプリの「セッション」と、データと、保存タイミング | トップページ | VS2012 Update2 の落とし穴 ~ BCL.Async と PCL [⇒解決] »
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
「* プログラミング ( Metro スタイル )」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
- 【#UWP】 15063用の Acrylic Effect を、ちゃんと実装してみる(2017.08.05)
この記事へのコメントは終了しました。
コメント