Есть ли (аккуратный) способ вместо получения высоты определенного размера шрифта получить размер шрифта определенного шрифта (в данном случае SansSerif), который дает заданную высоту?
Я мог бы, конечно, перебирать размеры шрифтов или использовать какую-либо форму двоичного набора, но, если возможно, я хотел бы использовать что-то более чистое и менее ресурсоемкое. Лучший способ, который я нашел, - это использовать что-то вроде this.
3 ответа
При поиске TextLayout
a>, показанный здесь и здесь, предоставит самые жесткие границы для данного текста.
Там нет простого пути.
Во-первых, вы знаете, что java предоставляет всего пять логических семейств шрифтов. Наличие всех остальных шрифтов в системе, в которой вы будете запускать программу, не гарантируется.
Тогда нет, в вашей системе не будет автоматического сопоставления свойств шрифтов. Вам нужно будет загрузить их все и выполнить поиск нужной меры.
С помощью этого кода можно зациклить доступные шрифты:
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());
}
}
}
А затем выберите тот, который соответствует вашим потребностям. Измените код, чтобы отобразить нужную информацию: например, вес.
Изменить: обратите внимание на наблюдение 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
в http://download.oracle.com/javase/1.3/docs/guide/intl/addingfonts.html.
Даже логические шрифты не всегда одинаковы. Что вы можете сделать, так это получить размер 10pt и рассчитать размер шрифта. Нравиться
Font_size_in_points = ((10 * желаемое_мерение) / эквивалент_мер_о_10pt)
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
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].