是否有一種(整潔)的方式,而不是獲得特定字體大小的高度,獲得產生給定高度的特定字體(在這種情況下是SansSerif)的字體大小?Java獲取字體大小給定的高度
我當然可以通過字體大小循環或使用某種形式的二進制排序,但如果可能的話,我想使用一些更清潔,更少資源密集的東西。我發現的最好的方法是使用this之類的東西。
是否有一種(整潔)的方式,而不是獲得特定字體大小的高度,獲得產生給定高度的特定字體(在這種情況下是SansSerif)的字體大小?Java獲取字體大小給定的高度
我當然可以通過字體大小循環或使用某種形式的二進制排序,但如果可能的話,我想使用一些更清潔,更少資源密集的東西。我發現的最好的方法是使用this之類的東西。
在搜索時,TextLayout
,here和here中所示,將提供最嚴格的界限對於給定的文本。
FontMetrics metric = new FontMetrics(new Font("font"), Font.BOLD, 12);
metrics.getHeight()
可能是你在找什麼。
更多信息:http://download.oracle.com/javase/6/docs/api/java/awt/FontMetrics.html
有沒有簡單的方法。
首先,您知道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。
即使是邏輯字體也沒有保證總是相同的。你可以做的是獲得10pt的大小,並計算字體大小。像
font_size_in_points =((10 * desidered_measure)/ equivalent_measure_of_the_10pt)
我並不擔心可用的家庭,因爲我總是使用SansSerif,它是5之一。我只是尋找一種方法來獲得特定字體的字體大小與最接近的給定高度相匹配。如果是在編譯時選擇字體大小的情況下,我會做靜態類似於你的建議,但我需要能夠在運行時給定一個特定的高度。 – berry120
評論太大了,編輯了答案。 – woliveirajr
不 - 這會給我一個特定字體的高度(很簡單!)我正在尋找另一種方式,並根據我想要的高度獲得特定的字體大小。 – berry120