ScientificWare

Accueil > Nouvelles > Java, JavaFx, OpenJFX et MathML (1) ?

Java, JavaFx, OpenJFX et MathML (1) ?

Comment écrire des formules mathématiques avec Java et son JavaFX

jeudi 5 mai 2016, par scientificware

Pour mémoire, JavaFX utilisant WebKit devrait déjà être capable d’afficher du MathML.

Mise à jour 17 décembre 2017
Les outils pour porter le package swing/text vers JavaFX existent voir le rapport de bug JDK-8136346

OpenJFX mail list 20171216 : Text classes

OpenJFX mail list 20171209 : JDK-8147476 Rendering issues with MathML token elements (Message for Murali Billa)

Mise à jour 21 octobre 2017
Discussion sur MathML au W3G (La place de ce lien devrait être sans doute dans un article sur ScientificPad).

Mise à jour 13 octobre 2017 et 4 janvier 2018
Les problèmes d’affichage datent de la version 8 et se prolongent pour l’instant sur la version 9. Apparemment l’affichage était correct sur la version 7. Contrairement à ce que je pensais, le problème ne vient pas de Webkit mais plutôt d’une partie du code en C située entre le code Webkit et le code Java. Sous JavaFx une grande partie des fonctions sont natives et écrites en C.
Ce problème est connu depuis 2015. Après une très courte discussion avec les mainteneurs d’OpenJFX, le dernier rapport de bug a été mis à jour : l’équipe de développement estime pour l’instant que ce n’est pas une priorité. L’argument avancé est que seul FireFox supporte correctement MathML.
Pour plus d’informations voir les rapports de bogues

Mise à jour 22 avril 2018
Dépôt d’une demande d’aide sur le référentiel GitHub de JavaFX.
https://github.com/javafxports/openjdk-jfx/issues/71

Mise à jour 10 mai 2018
Mon travail avance sur le référentiel GitHub de JavaFX.
Je remontre le fil du bug.
Un petit patch permet de voir ce qui se passerait sans ce problème.
https://github.com/javafxports/openjdk-jfx/issues/71

Version initiale
Voici un petit tour en une image ou en vrai pour ceux qui me feront confiance (voir Avertissement de sécurité ci-dessous). Pour 130 lignes de code en Java, voici un petit éditeur HTML et MathML ... oui oui oui ... .
Plus précisément, c’est 30 lignes de Java et le reste c’est du code HTML5.


En raison d’une nouvelle politique de sécurité d’Oracle, si vous souhaitez exécuter ce programme, vous devrez me faire confiance et ajouter une exception de sécurité pour "http://www.scientificware.com" dans le "Panneau de configuration Java" !


Pour lancer l’application JavaFXMathML cliquer sur le bouton ci-dessous

Alors votre avis ... Effectivement, pour l’instant ce n’est pas brillant !

Bon, pour répondre aux questions, « Mais que se passe-t-il ? » et « Pourquoi ne pas aller plus loin ? » . Je dirai que :

  1. JavaFX, s’appuie sur WebKit pour afficher une page web. Plus exactement, il s’agit de WebPage qui lui-même se base sur WebCore. Cependant JavaFX n’utilise pas la toute dernière version de WebKit dont une refonte est en cours. (Il me semble qu’ils renoncent à une approche tout CSS pour adopter une « mise en boite » comme tout programme dérivé de TEX, ou de l’API Java javax.swing.text). Ce travail est mené par Frédéric Wang. Il a été terminé en août 2016. Les prochaines version du JDK à partir de JDK8u152 pour JDK8 puis JDK9 et JDK10 devraient intégrer cette nouvelle version de WebKit. C’est également lui qui travaille sur le support des tables Mathématiques dans Harfbuzz. ScientificPad est basé sur l’API javax.swing.text de Java donc c’est cette approche que j’utilise depuis l’origine.
  2. Webkit n’est pas le seul moteur de rendu HTML qui pourrait être utilisé par Java : JCEF en est un autre.
  3. Toute l’API de JavaFX n’est pas encore disponible sous JavaFX 8. HTMLEditorSkin deviendra en partie disponible à partir de la version 9. Créer une application se basant sur JavaFX 8 risquerait de rendre cette application inutilisable avec les versions futures.

Un message, un commentaire ?

Forum sur abonnement

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d’indiquer ci-dessous l’identifiant personnel qui vous a été fourni. Si vous n’êtes pas enregistré, vous devez vous inscrire.

Connexions’inscriremot de passe oublié ?