是否有一种(整洁的)方式,而不是获得特定字体大小的高度,获得产生给定高度的特定字体(在本例中为SansSerif)的字体大小?
我当然可以循环使用字体大小或使用某种形式的二进制文章,但如果可能的话,我想使用更清洁,资源更少的东西。我发现的最好方法是使用this之类的东西。
答案 0 :(得分:3)
没有简单的方法。
首先,您知道java只提供了五个逻辑字体系列。所有其他字体都不保证存在于您将运行该程序的系统中。
然后,不,系统上没有字体属性的自动映射。您必须加载它们并循环搜索您想要的度量。
使用this code,您可以循环使用可用的字体:
import java.awt.Font;
import java.awt.GraphicsEnvironment;
public class MainClass {
public static void main(String[] a) {
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] fonts = e.getAllFonts(); // Get the fonts
for (Font f : fonts) {
System.out.println(f.getFontName());
}
}
}
然后选择适合您需求的那个。更改代码以显示所需信息:例如,重量。
修改:注意http://download.oracle.com/javase/1.3/docs/guide/intl/addingfonts.html中的They are merely font-type names recognized by the Java runtime which must be mapped to some physical font that is installed on your system
观察结果。
即使逻辑字体也不保证始终相同。你能做的是获得10pt的大小并计算字体大小。像
font_size_in_points =((10 * desidered_measure)/ equivalent_measure_of_the_10pt)
答案 1 :(得分:2)
搜索时,显示TextLayout
和here的here将为给定文字提供最严格的界限。
答案 2 :(得分:1)
FontMetrics metric = new FontMetrics(new Font("font"), Font.BOLD, 12);
metrics.getHeight()
你可能正在寻找。
更多信息:http://download.oracle.com/javase/6/docs/api/java/awt/FontMetrics.html