MathML 标记无法在 JavaFX WebView 中正确呈现
Posted
技术标签:
【中文标题】MathML 标记无法在 JavaFX WebView 中正确呈现【英文标题】:MathML tags don't render properly in JavaFX WebView 【发布时间】:2019-02-05 11:55:37 【问题描述】:JDK 版本:1.8.0_192
例如,
<math xmlns="http://www.w3.org/1998/Math/MathML">
<msub>
<mi>
S
</mi>
<mi>
n
</mi>
</msub>
<mo>
<
</mo>
<mstyle displaystyle="true" scriptlevel="0">
<mfrac>
<mi>
π
</mi>
<mrow>
<mn>
3
</mn>
<msqrt>
<mn>
3
</mn>
</msqrt>
</mrow>
</mfrac>
</mstyle>
</math>
以上代码呈现为:
在谷歌浏览器中,它呈现为:
在 JavaFX WebView 中。
如何解决这个问题?
【问题讨论】:
【参考方案1】:您发布的代码在我的计算机上的结果? ?
首先,请确保您至少使用 Java/JavaFX 8 192 build 04 或 JavaFX 11(Java/JavaFX 9 和 10 中的 MathML 支持已损坏,并且不会在这些版本中得到修复)。
其次,验证您的字体列表。可能是您计算机上的字体配置问题?
必须至少安装其中一种字体(按优先顺序):
Latin Modern Math
STIX Two Math
XITS Math
STIX Math
Libertinus Math
TeX Gyre Termes Math
TeX Gyre Bonum Math
TeX Gyre Schola
DejaVu Math TeX Gyre
TeX Gyre Pagella Math
Asana Math
Cambria Math
Lucida Bright Math
Minion Math
Times New Roman
我电脑上的结果也是,但是在Latin Modern Math
字体安装之后:
代码示例:你使用过这样的代码吗?
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class NavigateurTest extends Application
final StackPane root = new StackPane();
final WebView webView = new WebView();
String Content*** = ""
+ "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
+ " <msub>"
+ " <mi>S</mi>"
+ " <mi>n</mi>"
+ " </msub>"
+ " <mo><</mo>"
+ " <mstyle displaystyle=\"true\" scriptlevel=\"0\">"
+ " <mfrac>"
+ " <mi>π</mi>"
+ " <mrow>"
+ " <mn>3</mn>"
+ " <msqrt>"
+ " <mn>3</mn>"
+ " </msqrt>"
+ " </mrow>"
+ " </mfrac>"
+ " </mstyle>"
+ "</math>";
public void init()
root.getChildren().add(webView);
@Override
public void start(Stage primaryStage)
//webView.getEngine().load("https://www.qwant.com");
webView.getEngine().loadContent(Content***);
primaryStage.setTitle("OpenJFX MathML Rendering WebBrowser Test");
primaryStage.setScene(new Scene(root));
primaryStage.show();
【讨论】:
谢谢。但是,EA 版本中似乎存在一个错误,阻止 IntelliJ 使用 OpenJDK 11。Details here 任何解决方法? 这真的离你最先发的主题很远吗? ? ? 安装了上述字体的 jdk 8u192 build 4 也不起作用。 我不确定你的任务是什么。 JFX 8 和 JFX 11 中的 MathML 支持是相同的。实际上,我很久以前就开始使用 JDK 11 和 JFX 11,所以我从不使用 IDE,因为它们还没有准备好使用 JDK 11 和 JFX11。目前,我正在使用自己的 JFX 构建脚本。 我用 Windows 和 Linux 测试过,结果是一样的。你的操作系统是什么?以上是关于MathML 标记无法在 JavaFX WebView 中正确呈现的主要内容,如果未能解决你的问题,请参考以下文章