如何在 OS X 上的 JavaFX 中显示表情符号?

2023-11-26

我在 Mac OS X 上的 JavaFX 应用程序中显示表情符号时遇到问题。在 Linux 上,只要系统上有表情符号字体(Symbola、Noto Emoji),字体替换就会启动。

然而,在 OS X 上却没有这样的运气。我尝试过添加Symbola字体作为资源,只有当我将标签的字体更改为 Symbola 时才有效。我不想这样做,因为:

  • Symbola 是衬线字体,不符合我的应用程序的美感
  • 用户最终应该能够选择自己的字体

苹果有“Apple Color Emoji”字体。如果我将标签设置为该字体,则会显示表情符号,但文本间距不稳定。

这是一个查看该问题的示例应用程序:

import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        Group root = new Group();
        Scene scene = new Scene(root, 300, 130, Color.WHITE);
        GridPane gridpane = new GridPane();
        gridpane.setPadding(new Insets(5));

        // Add cat emoji
        Label label = new Label("\uD83D\uDC31");

        GridPane.setHalignment(label, HPos.CENTER);
        gridpane.add(label, 0, 0);

        root.getChildren().add(gridpane);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

以上内容改编自JavaFX 教程

Black bars instead of the cat emoji

如您所见,显示的是黑条而不是

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 OS X 上的 JavaFX 中显示表情符号? 的相关文章

随机推荐

Powered by Hwhale