Теги MathML неправильно отображаются в JavaFX WebView - PullRequest
0 голосов
/ 30 августа 2018

Теги MathML неправильно отображаются в JavaFX WebView

JDK Версия: 1.8.0_192

Например,

<math xmlns="http://www.w3.org/1998/Math/MathML"> 
   <msub> 
    <mi>
      S 
    </mi> 
    <mi>
      n 
    </mi> 
   </msub> 
   <mo>
     &lt; 
   </mo> 
   <mstyle displaystyle="true" scriptlevel="0"> 
    <mfrac> 
     <mi>
       π 
     </mi> 
     <mrow> 
      <mn>
        3 
      </mn>     
      <msqrt> 
       <mn>
         3 
       </mn> 
      </msqrt> 
     </mrow> 
    </mfrac> 
   </mstyle> 
 </math>

Код выше отображается как:

Chrome rendering

в Google Chrome, в то время как он отображается как:

WebView version

в JavaFX WebView.

Как решить эту проблему?

1 Ответ

0 голосов
/ 31 августа 2018

Результат на моем компьютере с кодом, который вы разместили?

Screenshot CaptainIRS MathML Code

Во-первых, убедитесь, что вы используете хотя бы Java / JavaFX 8 192 build 04 или JavaFX 11 (поддержка MathML не работает, в Java / JavaFX 9 и 10 и не будет исправлена ​​в этих версиях).

Во-вторых, проверьте свой список шрифтов. Может быть проблема с настройкой шрифта на вашем компьютере?

Должен быть установлен хотя бы один из этих шрифтов (в порядке предпочтения):

  • 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 шрифта:

enter image description here

Пример кода: вы использовали такой код?

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>&lt;</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();

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...