Blogue

Ainsi apparût SmartyPants Typographer

À l’image de PHP Markdown Extra, je dévoile aujourd’hui une version spéciale de PHP SmartyPants pour supporter différent types de guillemets et une conversion automatique des espaces autour des signes de ponctuation en espace insécable pour éviter les sauts de ligne indésirables. Laissez-moi vous présenter SmartyPants Typographer et sa petite histoire.

En français, il est usuel d’avoir une espace devant certain signes de ponctuation, comme le deux-point ” :” et à l’intérieur des « guillemets ». Il est aussi commun de retrouver une espace devant d’autres signes de ponctuation tel que le point d’exclamation, le point d’interrogation et le point-virgule. Le problème est que la majorité des gens ne savent pas, ou ne comprennent pas, ce qu’est une espace insécable. Ça s’affiche identiquement à une espace normale et à moins de voir une coupure de ligne là où il ne devrait pas y en avoir il est difficile de s’apercevoir du problème. Le problème arrive quand le navigateur adapte les sauts de ligne pour faire entrer le texte dans la page.

Typographer, en tant que projet, a commencé il y a quelques années quand je voulais une façon d’éviter ces sauts de ligne indésirable sur mon site web. Un peu après avoir porté le logiciel SmartyPants de John Gruber, j’ai commencé à travailler sur un petit projet du même genre appelé Cosmos pour rendre l’espace plus intelligent(e). Et ainsi j’ai construit une petite collection d’expression régulières qui remplacent les espaces par des espaces « intelligentes » autour de la ponctuation, à l’intérieur des nombres (en tant que séparateur de millier) et devant les symboles d’unités les plus courants (comme kg, °C, Ko).

J’ai aussi ajouté une façon de forcer l’insertion d’une espace quand il n’y en avait pas déjà. L’idée étant d’utiliser le script pour imposer des règles typographiques strictes. Mais puisqu’il ne semble pas y avoir de règle en français qui font l’unanimité, j’ai été contraint d’ajouter une configuration séparée pour chacun des caractères.

J’ai intégré Cosmos sur mon site web rapidement, aussi facilement que PHP SmartyPants et PHP Markdown, et j’étais prêt depuis ce moment à publier le logiciel en tant que script séparé qui aurait fonctionné sur WordPress et en tant que filtre de texte pour Smarty, comme PHP SmartyPants en fait. Il n’y avait qu’un problème : je voulais une configuration par défaut qui pouvait fonctionner pour tout le monde. Un autre inconvénient était qu’il que Cosmos ajoutait un étage supplémentaire de découpage HTML par dessus SmartyPants, ce n’est évidemment pas très grave, mais c’était tout de même quelque chose que j’aurais aimé éviter.

Cosmos a stagné comme ça pendant un an ou deux dans cet état presque prêt. Puis, en octobre 2005 est arrivé une discussion sur la liste de diffusion de Markdown qui m’a fait réfléchir. La discussion portait sur l’ajout de nouveau types de guillemets dans SmartyPants pour d’autres langues. J’en suis venu à la conclusion que SmartyPants pourrait facilement supporter les guillemets pour à peu près toutes les langues occidentales avec seulement quelque additions.

Tout ceci m’a beaucoup intéressé. Il m’est aussi venu à l’idée que je pourrais intégré Cosmos dans une nouvelle version internationale de SmartyPants. Quand j’ai suggéré cette idée sur la liste, John Gruber m’a répondu ceci (traduction libre) :

Pourrait faire une bonne addition. Ça correspond à peu près à une fonction de SmartyPants si on considère SmartyPants comme un système contrôlant tout ce qui se rapporte à la typographie sur le web et la mise en page, et non pas seulement la ponctuation.

J’ai ajouté de l’emphase sur les mots qui sont devenu l’inspiration du nouveau nom : SmartyPants Typographer. J’ai pensé à lui donner un nom distinct en français, comme je fais avec Contrôle Gamma, qui s’appelle Gamma Control en anglais, mais j’ai renoncé à mélanger deux langues dans le même nom, ce qui aurait donné SmartyPants Typographe, pas évident à prononcer correctement.

Au milieu de Mai, j’ai finalement décidé de me lancer dans la conception d’une version orienté objet de PHP Markdown. L’idée était de pouvoir utiliser à la fois PHP Markdown et PHP Markdown Extra dans le même script PHP, quelque chose que j’aurai besoin dans le futur. J’ai aussi fais la même chose avec PHP SmartyPants, mais avec le but un peu plus secret de créer Typographer. L’écrire en tant qu’extension à un SmartyPants orienté objet rend possible d’utiliser simultanément plusieurs configurations d’espacement dans le même script PHP en créant plusieurs instances du filtreur.

Alors j’ai créé Typographer en me basant sur le nouveau PHP SmartyPants orienté objet. J’ai ensuite décidé que j’avais besoin d’un peu plus grand bassin de test. Cosmos fonctionnait sur mon site web depuis longtemps, mais seulement pour ce que moi j’écrivais afin de forcer mes règles d’espacement personnalisé autour de la ponctuation dans mes textes en français. Alors j’ai demandé un peu d’aide à Rémi Prévost : je lui ai demandé d’installer Typographer sur son blogue basé sur WordPress. Il a accepté, et j’ai commencé à surveiller la conversion des espaces dans les différents commentaires qu’il a reçu. Je serais surpris que quiconque ait remarqué quoi que ce soit, mais en allant voir le code source des pages je pouvais m’assurer que les espaces insécables étaient placés aux bons endroits. La conclusion est qu’à l’exception de deux bogues mineurs, tout semble parfait. Merci Rémi pour les tests.

Les deux bogues sont corrigés. Maintenant que je suis satisfait du résultat, maintenant que tout a été testé et que je sais que ça fonctionne bien, je vous laisse essayer PHP SmartyPants Typographer, que vous pouvez télécharger depuis la page d’accueil de PHP SmartyPants. Vous pouvez aussi l’essayer à partir du Banc d’essai de PHP Markdown.

Notez que Typographer, dans sa configuration par défaut, n’ajoute pas ni n’enlève d’espace à votre texte ; il ne fait que rendre les espaces insécables là où ça fait du sens. Il devrait s’accorder avec à peu près n’importe quelle langue, et devrait passer plutôt inaperçu, excepté pour l’absence de coupure de ligne aux mauvais endroits autour de la ponctuation.


Le SCRS a-t-il provoqué Toronto ?

On peut trouver un peu partout sur le net des gens qui croient que le coup de filet de terroristes à Toronto a été monté de toutes pièces par la police et le SCRS. Il y a beaucoup de choses bizarres en effet : le nitrate d’ammonium a été fourni par la police, les terroristes auraient dit qu’ils voulaient décapiter Stephen Harper, et l’information que les accusés savaient à l’avance qu’ils étaient surveillés par les services secrets ne font rien pour donner du sérieux à l’accusation. Alors je suis ravi de voir qu’un journaliste de la Presse ait décidé d’approfondir le sujet.

Dans son article, André Noël cite l’avocat de la défense des accusés qui explique pourquoi de telles arrestations tombent juste à point pour les services de sécurité du pays :

Ma vision cynique des choses, c’est que ces arrestations tombent à un moment formidable pour le SCRS, dit M. Galati. Tout le spectacle qui a été déployé autour d’elles avec des snipers sur les toits des édifices et des tas d’allégations coulées dans les médias me laisse croire que le SCRS avait des objectifs bien précis. Le premier : gagner le vote à la Chambre des communes pour étendre les lois antiterroristes qui doivent être révisées d’ici quelques semaines. Le deuxième : influencer la Cour suprême, qui se penche sur la constitutionnalité des certificats de sécurité (qui permettent d’expulser ou d’emprisonner des immigrants ou des réfugiés soupçonnés de terrorisme sans leur fournir de preuve). Toute l’atmosphère créée autour des arrestations visait aussi à influencer les tribunaux pour refuser des libérations sous caution.

S’il est commun que les détails des accusations criminelles et des preuves soit gardés secret jusqu’au jour du procès, la police c’est montré beaucoup plus ouverte dans ses déclarations publiques cette fois-ci. Il est indéniable qu’il y a une intention d’impressionner les médias et de faire un effet dans l’opinion publique. Plus je regarde cette affaire, plus ça ressemble une manœuvre politique.


Multi-Safari, maintenant en téléchargement

Il y a exactement un an, je dévoilais une méthode pour faire fonctionner les anciennes version de Safari sur des nouvelles version du système d’exploitation, et pour les faire rouler simultanément. Depuis, j’ai collectionné toutes les versions de Safari que j’ai pu trouver et j’ai créé des versions intégrés. Il y a quelque jours, Stefan Skotte m’offre d’héberger les fichiers, ce qui me permet aujourd’hui de les rendre disponible publiquement pour le plaisir de tout ceux qui voudrait tester leur pages web dans des navigateurs obsolètes.

One chose importante à prendre note est que les versions de Safari pour Panther (Mac OS X 10.3.x) ne fonctionneront pas sur Tiger (10.4.x), et l’inverse est aussi vrai. J’ai abandonnée l’idée il y a quelque temps. Donc pour pouvoir tester dans toutes les versions de Safari, vous aurez besoin de deux installations du système d’exploitation. Bien que ce ne soit pas idéal, c’est bien mieux que d’avoir une installation de Mac OS X pour chaque version de Safari.

Comme quelqu’un me l’a fait remarqué durant le dernier mois, toutes les sources de Web Kit depuis le début sont disponibles dans le dépôt SVN, donc je suppose que quelqu’un d’entreprenant pourrais lancer le projet de rendre compatible les vieilles versions. Mais je doute que quelqu’un le fasse, parce que ce n’est pas nécessairement si facile, et surtout ce n’est pas très intéressant de passer du temps à maintenir des vieux logiciels.


Québec Solidaire

Un nouveau parti politique se fait tranquillement une place dans la province. Fondé l’automne dernier par la fusion de l’UFP et du mouvement Option Citoyenne, Québec Solidaire se prépare tranquillement à faire son entrée aux prochaines élections provinciales. Et avec déjà 4000 membres — c’est plus que ce n’en compte l’ADQ — ce petit nouveau fera très certainement quelque remous sur la scène politique.

La plateforme de Québec Solidaire n’est pas encore vraiment définie, mais pour vous faire une idée du parti, je vous invite à lire ce billet du blogue de Françoise David. Elle me fait penser au parti de gauche que le Parti Québécois aurait si souvent voulu incarner, avec moins d’accent sur la souveraineté et plus d’accent sur la justice sociale.



  • © 2003–2024 Michel Fortin.