【发布时间】:2016-08-19 16:02:37
【问题描述】:
我无法在 Mac OS X 上的 JavaFX 应用程序中显示表情符号。在 Linux 上,只要系统上有表情符号字体(Symbola、Noto Emoji),字体替换就会启动。
然而,在 OS X 上,没有这样的运气。我尝试将Symbola 字体添加为资源,并且仅当我将标签的字体更改为 Symbola 时才有效。我不想这样做,因为:
- Symbola 是衬线字体,不符合我的应用程序的美感
- 用户最终应该能够选择自己的字体
Apple 有“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 tutorial
如您所见,显示的是黑条而不是????。
我真的很好奇如何解决这个问题。在开创它的平台上没有表情符号支持总是感觉很奇怪!
【问题讨论】:
-
有一个article in guigarage on emoji support,这个解决方案对你有用吗?
-
@jewelsea 该文章中的解决方案是更改为包含表情符号的字体,例如 Open Sans Emoji(过时)或 Symbola(衬线)。我宁愿让字体替换工作。理想情况下能够使用 Apple Color Emoji。那篇文章的作者暗示了一个可能的解决方案,但他再也没有发帖。
标签: java macos javafx fonts emoji