我竭尽全力试图理解用户选择或指定的字体大小(例如,使用 FontDialog )与.NET中 Font 类报告的em大小之间的差异。
例如:
using (FontDialog dlg = new FontDialog()) {
if (dlg.ShowDialog() == DialogResult.OK) {
Console.WriteLine("Selected font size: " + dlg.Font.SizeInPoints.ToString("0.##"));
}
}
使用上面的代码,您将得到一些令人困惑的结果:
在对话框中选择11会产生11.25
在对话框中选择12会产生12
在对话框中选择14将产生14.25
在对话框中选择16将产生15.75
不管您选择哪种字体,都会发生此行为。从上面可以看出,差异没有规律,似乎在+0.25到-0.25之间随机变化。
我通过仅将字体大小显示为四舍五入的整数来解决这个问题,但是我发誓我已经看到了允许用户选择小数字体大小的文字处理/DTP程序包-这些程序包不显示上述行为与Windows字体对话框交互时。
谁能为此提供合理的解释?是否存在用于在UI中显示字体大小的最佳实践技术?用户何时需要小数位数(例如“10.5”)怎么样?
最佳答案
如您所见,字体大小以0.75的增量发生。
编辑:如果不使用字体对话框,则可以微调大小,但是我怀疑结果不会比“首选”大小令人满意。