Mammouth du PHP |
1107 Messages
21 déc. 2009, 17:54
Me revoilà.
D'abord, merci beaucoup jojolapine, je vient d'opter pour cufon, et ça marche plutôt pas mal.
Mais je rencontre un petit problème. J'ai actuellement 3 polices custom proposées sur mon application. Je charge donc les 3 scripts Cufon correspondants :
<!-- SCRIPTS CUFON -->
<script language="javascript" type="text/javascript" src="http://127.0.0.1/Projects/2009-11 - Formatic Evolution/site/common/tools/Balloon_Extra_400.font.js"></script>
<script language="javascript" type="text/javascript" src="http://127.0.0.1/Projects/2009-11 - Formatic Evolution/site/common/tools/Bookman_Old_Style_300-Bookman_Old_Style_600-Bookman_Old_Style_italic_300-Bookman_Old_Style_italic_600.font.js"></script>
<script language="javascript" type="text/javascript" src="http://127.0.0.1/Projects/2009-11 - Formatic Evolution/site/common/tools/French_Script_MT_400.font.js"></script>
<!-- SCRIPTS CUFON END -->
Le problème, c'est que ces 3 scripts contiennent tous les 3 la même fonction :
Code : Tout sélectionner
Cufon.registerFont({"w":226,"face":{"font-family":"Balloon Extra","font-weight":400,"font-stretch":"normal","uni
Code : Tout sélectionner
Cufon.registerFont({"w":131,"face":{"font-family":"French Script MT","font-weight":400,"font-stretch":"normal","units-p
Du coup, seule la dernière fonction est prise en compte, et c'est cette police qui est utilisée, peu importe celle que je choisis.
Je vois 2 solutions :
- rendre cette fonction dépendante d'une variable, qui serait la police que je souhaite utiliser à l'instant T.
- à chaque fois que je dois mettre mon texte de prévisualisation à jour, charger dynamiquement le script Cufon correspondant, et "décharger" le précédent. Est-ce possible ?
Quelle solution semble la meilleure ? A priori la première, mais je ne sais pas du tout comment m'y prendre.
Le fichier Cufon général (seulement la partie qui semble intéressante) :
Code : Tout sélectionner
api.registerFont = function(data) {
var font = new Font(data), family = font.family;
if (!fonts[family]) fonts[family] = new FontFamily();
fonts[family].add(font);
return api.set('fontFamily', '"' + family + '"');
};
api.replace = function(elements, options, ignoreHistory) {
options = merge(defaultOptions, options);
if (!options.engine) return api; // there's no browser support so we'll just stop here
if (!initialized) {
CSS.addClass(DOM.root(), 'cufon-active cufon-loading');
CSS.ready(function() {
// fires before any replace() calls, but it doesn't really matter
CSS.removeClass(DOM.root(), 'cufon-loading');
});
initialized = true;
}
if (options.hover) options.forceHitArea = true;
if (typeof options.textShadow == 'string')
options.textShadow = CSS.textShadow(options.textShadow);
if (typeof options.color == 'string' && /^-/.test(options.color))
options.textGradient = CSS.gradient(options.color);
if (!ignoreHistory) replaceHistory.add(elements, arguments);
if (elements.nodeType || typeof elements == 'string') elements = [ elements ];
CSS.ready(function() {
for (var i = 0, l = elements.length; i < l; ++i) {
var el = elements[i];
if (typeof el == 'string') api.replace(options.selector(el), options, true);
else replaceElement(el, options);
}
});
return api;
};
api.set = function(option, value) {
defaultOptions[option] = value;
return api;
};
Un des scripts Cufon de police :
Code : Tout sélectionner
/*!
* The following copyright notice may not be removed under any circumstances.
*
* Copyright:
*/
Cufon.registerFont({"w":226,"face":{"font-family":"Balloon Extra","font-weight":400,"font-stretch":"normal", ... }});
et l'appel JS, au moment ou je change de police :
Toute aide est la bienvenue : )