Bientôt text-shadow dans gecko
Par Laurentj le jeudi, septembre 22 2005, 22:40 - Technologies Web - Lien permanent
Il y a des bugs (ou plutôt dans notre cas, une demande d'évolution) dans Mozilla, qui trainent depuis pas mal de temps. Celui dont je vais parler ici date de juillet 1999. Son numéro, 10713, atteste d'ailleurs son ancienneté (on en est aujourd'hui à plus de 305375 et des poussières). Il s'agit de la demande d'implementation de la propriété CSS text-shadow. Cette propriété text-shadow permet d'ajouter une ombre à un texte. On peut spécifier sa portée et sa couleur.
Aprés plus de six ans d'attente, cette propriété est en train d'être implémentée. Par contre, elle ne sera pas disponible dans Firefox 1.5 mais dans Firefox 2.0 (autrement dit, le moteur Gecko 1.9).
Pourquoi tant d'attente ? Je pense qu'en premier lieu, c'est une question de priorité. Ce n'est pas une propriété indispensable et à l'époque (un peu plus d'un an aprés la libération du code de Mozilla), ils avaient certainement plus important à faire (c'est à dire la refonte de Gecko, l'implementation de XUL etc..). Ensuite, ce genre d'effet graphique est assez compliqué à implémenter. Il faut pouvoir faire un effet de flou, de fondu (blur), ce que ne permettait pas la "vieille" bibliothèque graphique gfx de Mozilla, utilisée jusqu'à maintenant.
Mais maintenant que la version de développement de Gecko est entièrement basée sur la bibliothèque Cairo, et que Cairo permet de faire ce genre d'effets graphiques, l'implémentation de text-shadow s'en trouve facilitée. D'ailleurs l'implementation de SVG dans Firefox 1.5 utilise Cairo et permet de faire du "gaussian blur" dans les graphiques.
(Pour comprendre toutes ces histoires de Cairo et de bibliothèques graphiques dans Mozilla, voir quelques petites explications sur l'architecture de Gecko sur Xulfr.)
À noter que Safari et Konqueror implémente cette propriété depuis quelques temps déjà.
Commentaires
Je n'ai pas regardé le dernier patch, mais j'ai suivi un peu le bug, et l'implementation n'avait rien a voir avec cairo la derniere fois que j'ai regardé. Par contre, c'est sur que cairo *devrait* faciliter ce genre de choses, mais en tout cas, pour le moment, c'est fait sans, du moins je crois.
Oui, en regardant le patch, on voit qu'il n'y a aucun rapport avec Cairo. Tout simplement parce que la partie graphique contient une API Abstraite, et que le code qui permet de dessiner effectivement une ombre est déjà là. En effet, Cairo est utilisé depuis un certain temps déjà pour dessiner le SVG. Et dans le tronc (puisqu'il s'agit d'un patch pour le tronc), Cairo est maintenant utilisé pour *tout* dessiner.
C'est pour cela qu'on ne voit pas dans le patch du code qui dessine proprement dit une ombre. C'est juste les modifications apportées d'une part dans le parser CSS pour reconnaître la propriété text-shadow, et d'autre part dans le layout pour appliquer le style et ajouter les instructions qui vont appeler la couche graphique pour dessiner une ombre.
Si la lib GFX était toujours utilisée, on aurait à ne pas en douter, dans le patch, le code qui dessine une ombre... (ce qui est la partie difficile que j'ai évoqué, et qui donc n'a pas été réalisée jusqu'à maintenant, et ne sera jamais réalisée puisque cairo s'en occupe :-) )