Использование Cufon за пределами холста, связанного с Fabric.js

У меня возникла проблема, когда я пытаюсь использовать библиотеку Cufon за пределами холста, связанного с Fabric.js. Я пытаюсь создать селектор шрифтов Text в своем приложении, который будет отображать доступные для использования шрифты. Селектор отобразит имя шрифта как образец шрифта (например, Photoshop и т. д.). Итак, чтобы создать примеры имен, я пытаюсь использовать Cufon для замены стиля шрифта, но Fabric.js не позволяет использовать его за пределами холста. Fabric.js показывает текст, который Cufon заменяет внутри холста. Кто-то знает, как это решить? Спасибо.


person rodrigopandini    schedule 22.03.2012    source источник


Ответы (1)


Я нашел способ использовать Cufon за пределами Fabric.js, но это действительно грязный хак.

Сначала я добавил еще один cufon.js на страницу с github. Затем я открыл его в редакторе и автоматически переименовал «Cufon» в «CufonBase».

Я написал функцию-оболочку для registerFont, которая вызывает ее два раза для Cufon и CufonBase:

 var makeWrap = function(fn1, fn2){
  return function(){
    try{
      fn2.apply(this, arguments);
      return fn1.apply(this, arguments);
    }catch(ex){
      ErrorHandler.Exception(ex);
    }
  };
};

Cufon.registerFont = makeWrap(Cufon.registerFont, CufonBase.registerFont);

Это перезаписывает базовый метод Cufon, который загружает шрифт и также вызывает CufonBase.registerFont, поэтому вам не нужно изменять шрифт js.

И тогда вы можете позвонить:

CufonBase.replace('h1', {fontFamily: 'font_name'});

И это работает для меня.

person itima    schedule 23.05.2012