JavaFX中的字体测量点

JavaFX中的字体测量点,java,javafx-2,javafx,Java,Javafx 2,Javafx,我遇到了一个问题 当我使用CSS设置任何节点的字体大小时,无论我选择什么度量单位,我都尝试了pt和px,字体大小仍然是以像素为单位设置的。 我还尝试使用方法“setFont”为“Text”设置字体,该方法接受类型为“font”的参数 JavaFX2文档中说: 字体的大小被描述为在以下点中指定: 实际测量值约为1/72英寸 但字体大小仍然是以像素为单位设置的 在一个实验中,我在场景中添加了“WebView”,并在其中加载了一个页面,其中显示了两个div标记。在第一个div中,字体大小以pt表示,在

我遇到了一个问题

当我使用CSS设置任何节点的字体大小时,无论我选择什么度量单位,我都尝试了pt和px,字体大小仍然是以像素为单位设置的。 我还尝试使用方法“setFont”为“Text”设置字体,该方法接受类型为“font”的参数

JavaFX2文档中说:

字体的大小被描述为在以下点中指定: 实际测量值约为1/72英寸

但字体大小仍然是以像素为单位设置的

在一个实验中,我在场景中添加了“WebView”,并在其中加载了一个页面,其中显示了两个div标记。在第一个div中,字体大小以pt表示,在第二个div中,字体大小以px表示。正如我所建议的,字体大小不同,最后一个div中的字体大小与我在开始时提到的节点中的字体大小相同

为什么会这样?如何设置pt中的字体大小?此时为了解决这个问题,我使用以下公式将pt转换为px:px=pt/0.75 dpi我的屏幕是96

例如:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontSmoothingType;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

import java.net.URL;

public class TestFont extends Application {

    @Override
    public void start(Stage stage) throws Exception {

        final Group root = new Group();
        Scene s = new Scene(root, 500, 500);


        Text t = new Text(100, 250, "1) - abcdeABCDE12");
        t.setFontSmoothingType(FontSmoothingType.LCD);
        t.setStyle("-fx-font-size: 36pt; -fx-font-family: Calibri;");
        Text t2 = new Text(100, 300, "2) - abcdeABCDE12");
        t2.setFont(javafx.scene.text.Font.font("Calibri", FontWeight.NORMAL, FontPosture.REGULAR, 36));
        t2.setFontSmoothingType(FontSmoothingType.GRAY);
        Text t3 = new Text(100, 350, "3) - abcdeABCDE12");
        t3.setStyle("-fx-font-size: 36px; -fx-font-family: Calibri;");;
        t3.setFontSmoothingType(FontSmoothingType.GRAY);

        WebView wv = new WebView();
        wv.setLayoutX(100);
        wv.setLayoutY(360);
        URL urlWebViewCell = this.getClass().getResource("/testFont.html");
        wv.getEngine().load(urlWebViewCell.toExternalForm());

        root.getChildren().addAll(wv, t, t2, t3);

        stage.setScene(s);
        stage.show();

    }

    public static void main(String[] args) {
        launch(args);
    }
}
testFont.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title></title>

</head>
<body>
<div style="font-size: 36pt; font-family: Calibri;">4) - abcdeABCDE12</div>
<div style="font-size: 36px; font-family: Calibri;">5) - abcdeABCDE12</div>
</body>
</html>

我认为,通过应用Font.fontString方法,double仅搜索字体,顺便说一句,字体构造函数使用相同的大小参数,并且始终使用double值作为像素大小值。因此,没有办法选择您想要的度量

所以你现在为什么是最好的。 但您可以使用:

  Toolkit.getDefaultToolkit().getScreenResolution();
独立于决议之外