2011-10-29 3 views
0

私が見つけることができるすべてのドキュメントと私が行うすべての検索は、SilverlightではFontHeightをピクセル単位で設定し、LineHeightと同じように設定すると主張しています。 TextBlock実際にはそうではありません。Lucida Sans Unicodeのような共通のフォントでフォントの高さ(および行の高さ)を22に設定すると、行間の実際の高さは33ピクセルになります。 (実際には33と小数点以下)なぜ、Silverlightはフォントの高さがピクセルであると主張しますか?

これを回避するために、私はJavaアプレットで行ったことを試しました。フォントメトリックを使用して実際のテキストの高さを調べます。これを行う唯一の方法は、サンプルテキストをオフスクリーンのTextBlockにレンダリングし、測定し、それがどのくらい高いのかを確認することです。それは非常に便利な答えを返しました:32ピクセル。

これは正確なALMOSTです。オンスクリーンのTextBlockはフォントを33ピクセル高くし、オフスクリーンのフォントは32ピクセル高くしました。テキストを正確に測定する唯一の方法は、「オフスクリーン」ブロックを画面上に透明に、実際の画面上に置くことであることが正確に分かりました。測定結果は33を返します。

ここでは何が欠けていますか?なぜ誰もが高さがピクセルであると言っていますが、ここでの数値は実際の高さをpixel-and-halfsで表したものであり、さらに正確な比率はコントロールがアクティブページの一部であるか、離れて自給自足?私は何を理解していないのですか?

メモの追加:テキストの行が占める高さと実際のグリフの高さの違いを認識しています。しかし、フォントの高さがピクセルであると言う同じドキュメントでは、行の高さはピクセル単位であり、既定値はフォントの高さと同じであるとも言われています。これは明らかに、グリフの高さだけでなく、使用されるすべての垂直方向のスペースがフォントの高さに含まれることを意味します。


最後の注意:私は最後に私の問題は、私はシルバーについての誤報に実行し、その後、私はそれを読んだところ忘れて、私はそれが正確な情報と混ざっ取得しておくことだと思います。キャンバスのコンテンツを保持するためにキャンバスが伸びていると読んだのはどこですか?それはしません。

+0

をグリッドを使ってタイポグラフィ

に1,5回の首都高です。画素について何も言わない。 – vorrtex

+0

次のページはそれぞれ「ピクセル単位」と呼ばれます。 http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.fontsize%28v=VS.95%29.aspx http://msdn.microsoft.com/en-us/library/cc189010%28vs.95%29.aspx –

答えて

2

Here「フォントサイズ」の概念の説明です。

サイズ200ピクセルのテキストの例を作成しました。黄色の矩形があまりにも200個のピクセルのサイズを有する。

<Rectangle Height="200" Width="96" Fill="Yellow" /> 
<TextBlock FontSize="200" FontFamily="Arial" Text="ÂSj" /> 

enter image description here

  • アセント(Aの高さ)= 180個の画素、

  • 降下(AおよびSの下方の空間)= 50個のピクセル、

  • 内部(A上記サーカムフレックス)を主要= 30個の

    画素
  • フォント高さ=アセント+ディセント= 180 + 50 = 230画素

  • フォントサイズ=フォントの高さ - 内部リーディング= 230から30 = 200画素

ご覧のように、実際の200ピクセルのフォントの高さは230ピクセルです。したがって、22ピクセルのフォントは、実際の高さが33ピクセルである。

結論:文字以上のアクセントがフォントサイズに含まれていませんが、それらはフォントの高さに含まれています。

+0

なぜSilverlightドキュメントは、デフォルトでLineHeightがFontSizeと等しいことを示しているのですか?私は明示的にLineHeightとFontSizeを22に設定し、それは33になってしまいます。むしろ、33と分数に...正確なメトリックを行うには、浮動小数点の使用が必要です。 –

+0

33ピクセルになると、文字の高さはどのくらいですか?それは..... 18.子孫とはどうですか? 21.それは正しい球場にありますが、LineHeightはFontSizeと大きく異なるはずです。 –

+0

@PaulKienitz「FontSizeとオフセットに基づいて有効な行の高さ」と言われています。しかし、実際にはこのプロパティは複数行のテキストボックスに使用され、テキストサイズはまったく変更されません。この記事の「備考」セクションを参照してください。http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.lineheight%28v=vs.95%29.aspx – vorrtex

関連する問題