1

プログラムで構築された Windows フォーム (C# を使用) で、コントロール間の垂直方向の距離を最小限に抑えようとしています。これには、Height プロパティを適切に設定することが含まれます。

コントロールのテキストにディセンダーを含む文字が含まれていない場合 (つまり、j、g、p、q、または y のいずれの文字も含まれていない場合)、コントロールの高さは、含まれている場合よりも小さくなる可能性があることがわかりました。そのような文字 (ディセンダーを含む文字が含まれている場合、高さが十分でない場合、ディセンダーは切り取られます)。

言語が英語または英語である限り、上記の 5 文字のいずれかをテストしても問題なく動作しますが、(ほぼ) どの言語にも対応できる必要があります。

任意の Unicode 文字 (およびおそらくフォント) を指定して、その Unicode 文字にディセンダーがあるかどうかを判断する方法はありますか?

4

2 に答える 2

1

ディセンダーの存在を示す Unicode 文字用に定義されたプロパティはありません。これは実際には、文字ではなくグリフ デザインの機能です。たとえば、「Q」には多くのフォントでディセンダーがあり、「J」にはいくつかのフォントにディセンダーがあります。さらに、コンテキストを考慮して、基本文字の子孫だけでなく、文字の下に配置された分音記号も考慮する必要があります。そしておそらく、文字の上の分音記号も。

そのため、文字の寸法に関するフォント情報 (利用可能な場合) を読むか、ソフトウェアで仮に文字を描画して寸法を測定する必要があります。

経験則として、行の高さがフォント サイズの 1.1 倍未満であると、一部の文字やフォントで問題が発生します。1 を使用する (「ベタを設定する」) だけでは十分ではありません。文字が実際にはフォント サイズからはみ出している可能性があるためです。

于 2012-07-16T10:59:37.740 に答える