在JavaFX WebView中无法正确呈现MathML标记
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>
上面的代码呈现为:
在Google Chrome中,虽然它呈现为:
在JavaFX WebView中。
如何解决此问题?
发布于 2018-08-31 05:32:02
在我电脑上的结果和你发布的代码??
首先,确保您使用的至少是Java/JavaFX8192 build 04或JavaFX 11 (在Java/JavaFX9和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 ContentStackOverFlow = ""
+ "<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(ContentStackOverFlow);
primaryStage.setTitle("OpenJFX MathML Rendering WebBrowser Test");
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
}
https://stackoverflow.com/questions/52098692
复制相似问题