/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
- * Copyright (c) 2001-2016 *
+ * Copyright (c) 2001-2019 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
// nettoyer la css de tout ce qui sert pas
// pas de commentaires
- $contenu = preg_replace(",/\*.*\*/,Ums", "", $contenu);
+ // https://core.spip.net/issues/3987 sauf les commentaires important commençant par un ! qui sont en general des credits
+ $contenu = preg_replace(",/\*[^!].*\*/,Ums", "", $contenu);
$contenu = preg_replace(",\s//[^\n]*\n,Ums", "", $contenu);
// espaces autour des retour lignes
$contenu = str_replace("\r\n", "\n", $contenu);
$contenu = preg_replace("/\b0+\.(\d+em)/ims", ".$1", $contenu);
// supprimer les declarations vides
$contenu = preg_replace(",(^|})([^{}]*){},Ums", "$1", $contenu);
- // zero est zero, quelle que soit l'unite (sauf pour % car casse les @keyframes cf https://core.spip.net/issues/3128)
- $contenu = preg_replace("/([^0-9.]0)(em|px|pt)/ms", "$1", $contenu);
+ // pas besoin d'unité quand la valeur est zéro (sauf pour % car casse les @keyframes cf https://core.spip.net/issues/3128 - préserve également les chaînes en base64 cf https://core.spip.net/issues/3991)
+ $contenu = preg_replace("/((?::|\s+|\()0)(em|px|pt|rem|ex|pc|vh|vw|vmin|vmax|cm|mm|in|ch)/ms", "$1", $contenu);
// renommer les couleurs par leurs versions courtes quand c'est possible
$colors = array(