gpt4 book ai didi

Java:获取具有特定高度(以像素为单位)的字体

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:03 25 4
gpt4 key购买 nike

使用 FontMetrics 可以很容易地确定字体的呈现高度,但是反过来呢?如何获得适合特定高度(以像素为单位)的字体?

"Give me Verdana in a size that is 30 pixels high from ascender to descender."

我如何向 Java 请求这个?

最佳答案

我知道这是一个非常古老的问题,但仍然有人可能会发现它:

The font height in Java (and many other places) is given in "typographic points", which are defined as roughly 1/72nd of an inch.

要计算特定像素高度所需的点,您应该能够使用以下内容:

double fontSize= 72.0 * pixelSize / Toolkit.getDefaultToolkit().getScreenResolution();

我还没有对此进行广泛的测试,但它似乎适用于我使用过的显示器。如果我发现它不起作用,我会报告。

对于我使用过的标准系统字体,这会将大写字母(即上升)的高度设置为提供的像素大小。如果需要将上升+下降设置为像素大小,可以使用 FontMetrics 更正该值:

FontMetrics m= g.getFontMetrics(font); // g is your current Graphics object
double totalSize= fontSize * (m.getAscent() + m.getDescent()) / m.getAscent();

当然,一些特定字母的实际像素高度将取决于字母和使用的字体,所以如果你想确保你的“H”是一些确切的像素高,你可能仍然想要使用其他答案中提到的试错法。请记住,如果您使用这些方法来获取要显示的每个特定文本的大小(如@Bob 建议的那样),您最终可能会在屏幕上出现随机字体大小困惑,其中文本如“ace” "将有比 "Tag"大得多的字母。为避免这种情况,我会选择一个特定的字母或字母序列(“T”或“Tg”或其他)并将其固定为您的像素高度一次,然后使用您从中获得的字体大小。

关于Java:获取具有特定高度(以像素为单位)的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5829703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com