+<?php
+
+/***************************************************************************\
+ * SPIP, Systeme de publication pour l'internet *
+ * *
+ * Copyright (c) 2001-2014 *
+ * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
+ * *
+ * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
+ * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+// Correction typographique francaise
+
+function typographie_fr($t) {
+
+ static $trans;
+
+ if (!isset($trans)) {
+ $trans = array(
+ " " => '~',
+ "»" => '»',
+ "«" => '«',
+ "”" => '”',
+ "“" => '“',
+ "°" => '°',
+ "'" => '’'
+ );
+ switch ($GLOBALS['meta']['charset']) {
+ case 'utf-8':
+ $trans["\xc2\xa0"] = '~';
+ $trans["\xc2\xbb"] = '»';
+ $trans["\xc2\xab"] = '«';
+ $trans["\xe2\x80\x94"] = '--';
+ $trans["\xe2\x80\x9d"] = '”';
+ $trans["\xe2\x80\x9c"] = '“';
+ $trans["\xc2\xb0"] = '°';
+ $trans["\xe2\x80\x89"] = '~'; # &finesp;
+ break;
+ default:
+ $trans["\xa0"] = '~';
+ $trans["\xab"] = '«';
+ $trans["\xbb"] = '»';
+ $trans["\xb0"] = '°';
+ break;
+ }
+ }
+
+ # cette chaine ne peut pas exister,
+ # cf. TYPO_PROTECTEUR dans inc/texte
+ $pro = "-\x2-";
+
+ $t = str_replace(array_keys($trans), array_values($trans), $t);
+
+ # la typo du ; risque de clasher avec les entites &xxx;
+ if (strpos($t, ';') !== false) {
+ $t = str_replace(';', '~;', $t);
+ $t = preg_replace(',(&#?[0-9a-z]+)~;,iS', '$1;', $t);
+ }
+
+ /* 2 ; ajout d'insecable */
+ $t = preg_replace('/»| --?,|(?::| %)(?:\W|$)/S', '~$0', $t);
+
+ // {ยป} guillemet en italiques : ne pas doubler l'insecable
+ $t = str_replace('~{~', '~{', $t);
+ $t = str_replace('~}~', '}~', $t);
+
+
+ /* 3 */
+ $t = preg_replace('/[!?][!?\.]*/S', "$pro~$0", $t, -1, $c);
+ if ($c) {
+ $t = preg_replace("/([\[<\(!\?\.])$pro~/S", '$1', $t);
+ $t = str_replace("$pro", '', $t);
+ }
+
+ /* 4 */
+ $t = preg_replace('/«|M(?:M?\.|mes?|r\.?|°) |[nN]° /S', '$0~', $t);
+
+ if (strpos($t, '~') !== false)
+ $t = preg_replace("/ *~+ */S", "~", $t);
+
+ $t = preg_replace("/--([^-]|$)/S", "$pro—$1", $t, -1, $c);
+ if ($c) {
+ $t = preg_replace("/([-\n])$pro—/S", "$1--", $t);
+ $t = str_replace($pro, '', $t);
+ }
+
+ $t = preg_replace(',(' ._PROTOCOLES_STD . ')~((://[^"\'\s\[\]\}\)<>]+)~([?]))?,S', '$1$3$4', $t);
+ $t = str_replace('~', ' ', $t);
+
+ return $t;
+}