GC 和 FontData 获取字体高度有啥区别?

Posted

技术标签:

【中文标题】GC 和 FontData 获取字体高度有啥区别?【英文标题】:What's the difference between GC and FontData for getting font height?GC 和 FontData 获取字体高度有什么区别? 【发布时间】:2012-11-16 06:28:37 【问题描述】:

这解释了字体度量

我认为我们可以像这样在 SWT 中获得“字体高度”;

GC gc = new GC(label);
System.out.println( gc.textExtent(label.getText()) );
System.out.println( label.getFont().getFontData()[0].getHeight() );

为什么这两个出局不一样?哪个是字符串的正确高度?

【问题讨论】:

【参考方案1】:

GC#textExtent()像素返回范围,而FontData字体返回。这里的单位不同。

【讨论】:

其实不太确定,但我会遍历字体高度,直到达到我需要的像素高度。 谢谢。但这似乎不是一种方便的方法。 @miqbal:你可以通过Device.getDPI()获取系统DPI,例如pixels = points * Device.getDPI() / 72 @EdwardThomson: Device.getDPI() 返回Point【参考方案2】:

使用FontMetrics.getHeight() 获取以像素为单位的高度。

FontMetrics fontMetrics = gc.getFontMetrics()

【讨论】:

使用此方法的问题是文本是否包含任何返回。使用 textExtent 将包含多行的像素。

以上是关于GC 和 FontData 获取字体高度有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Java的内置字体和第三方字体有啥区别?

新西兰GC、GD、PGD区别是啥呢?分别有啥优势呢?

使用 em 和百分比的 css 字体大小有啥区别? [复制]

js中的clientHeight和offsetHeight有啥区别么?

OpenType 字体和 TrueType 字体。有啥不同?

echarts滚动条高度和字体大小