Есть ли (аккуратный) способ вместо получения высоты определенного размера шрифта получить размер шрифта определенного шрифта (в данном случае SansSerif), который дает заданную высоту?

Я мог бы, конечно, перебирать размеры шрифтов или использовать какую-либо форму двоичного набора, но, если возможно, я хотел бы использовать что-то более чистое и менее ресурсоемкое. Лучший способ, который я нашел, - это использовать что-то вроде this.

4
Michael Berry 25 Авг 2011 в 18:17

3 ответа

Лучший ответ

При поиске TextLayout , показанный здесь и здесь, предоставит самые жесткие границы для данного текста.

2
Community 23 Май 2017 в 12:33

Там нет простого пути.

Во-первых, вы знаете, что 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)

3
woliveirajr 25 Авг 2011 в 14:49
FontMetrics metric = new FontMetrics(new Font("font"), Font.BOLD, 12);
metrics.getHeight()

Может быть, то, что вы ищете.

Дополнительная информация: http://download.oracle.com/ javase / 6 / docs / api / java / awt / FontMetrics.html

1
isakkarlsson 25 Авг 2011 в 14:22