我正在基于javafx实现文本编辑器。是否可以像在Intellij中使用相同的工作方式显示字体连字?
我在javafx API中找到了对连字支持的引用,但是我不知道这是否证明了有支持。
您可以使用tomas mikula richtextfx库。
https://github.com/fxmisc/richtextfx/
您在这里有很多选择:
1) InlineCssTextArea
使用
Node#setStyle(String cssStyle)
样式的方法
的文本对象InlineCssTextArea
对于每个单词或行,您可以使用:
来设置不同的样式InlineCssTextArea.setStyle(from,to,style);
我之前已经广泛使用了它,在同一行或行中具有不同的字体和样式。
2) StyleClassedTextArea
使用Node#setStyleClass(String styleClass)
方法来样式Text
对象。您可以在样式表中定义样式类。
因此,假设您在application.css
内部定义了5种具有不同字体的样式类。其中之一可能是...
.red { -fx-fill: red; }
因此您可以使用:
styleClassedTextArea.setStyleClass(from, to, "red");
这将文本呈现在红色的范围内。
3)有关更多信息,请检查https://github.com/fxmisc/richtextfx,它具有详细的描述。
您也可以在网络上搜索更多示例。
javafx将呈现所需的连接,但它没有能力选择可选的连接。跟踪添加API以启用此行为的问题是https://bugs.openjdk.org/browse/jdk-8091616。
另请参见来自OpenJFX开发邮件列表的此消息:https://mail.openjdk.org/pipermail/openjfx-dev/2022-october/036309.html