Я не очень знаком с Рафаэлем, но не могли бы вы использовать функцию ограничивающего прямоугольника getBBox()
, чтобы получить размеры, и использовать их для вычисления правильного масштаба?
$('.cog-menu-options-icon').each(function (i) {
paper = Raphael($(this)[0], 20, 20);
var icon = paper.path(window.icons.wrench);
var max = icon.getBBox().width;
var h = icon.getBBox().width;
if(h>max) {
max = h;
}
var scale = 20/max;
icon.attr({ "fill": "#333", "transform": "s"+scale+","+scale+",0,0" });
});
Вот пример: http://jsfiddle.net/xUyRS/
Я добавил код для перевода значка, если путь не имеет 0,0-начала, и для центрирования значка.
Я также обнаружил, что у Рафаэля есть ошибка сgetBBox
, который возвращает плохие результаты при нескольких вызовах по одному и тому же пути, поэтому я использую раздвоенную версию с исправлением.