2010-04-09 10 views

Répondre

77

J'ai jeté ensemble une simple démo sur jsFiddle montrant ici comment faire avec font-face @: http://jsfiddle.net/zMKge/

Opera a aussi un tutoriel simple sur l'utilisation <canvas>, y compris l'API texte, mais je suis pas assez cool pour avoir deux hyper-liens. :)

CSS:

@font-face { 
    font-family: 'KulminoituvaRegular'; 
    src: url('http://www.miketaylr.com/f/kulminoituva.ttf'); 
} 

Javascript:

var ctx = document.getElementById('c').getContext('2d'); 
var kitty = new Image(); 
kitty.src = 'http://i954.photobucket.com/albums/ae30/rte148/891blog_keyboard_cat.gif'; 
kitty.onload = function(){ 
    ctx.drawImage(this, 0,0,this.width, this.height); 
    ctx.font   = '68px KulminoituvaRegular'; 
    ctx.fillStyle = 'orangered'; 
    ctx.textBaseline = 'top'; 
    ctx.fillText ('Keyboard Cat', 0, 270); 
}; 
+2

edit: pas de travail dans firefox .... très bien en chrome. il n'y a pas de croix – jdee

+6

Soyez conscient de ce problème, cependant: http://stackoverflow.com/questions/2756575/drawing-text-to-canvas-with-font-face-does-not-work-at-the-first -time – Alsciende

+0

Le problème de Firefox est parce que le navigateur est très strict sur sa politique de même origine. Les étoiles doivent aligner et * l'image, la police et la page Web doivent être toutes sur le même domaine * –

4

Je viens de répondre à cette question ici: Preload font HTML5, JS, Kinetic.js?

L'essentiel:

@font-face { 
    font-family: 'myfont'; 
    src: url('myfont.eot'); 
    src: url('myfont.eot?#iefix') format('embedded-opentype'), 
     url('myfont.woff') format('woff'), 
     url('myfont.ttf') format('truetype'), 
     url('myfont.svg#myfont') format('svg'); 
    font-weight: normal; 
    font-style: normal; 
} 

Peu importe que vous utilisiez KineticJS ou non, la seule différence sans KineticJS est que vous pourriez créer l'élément Canvas directement avec HTML au lieu d'utiliser un calque div comme conteneur. Après tout, KineticJS crée simplement un élément Canvas normal dans ce conteneur.

+0

Alors que ce lien peut répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. -seules les réponses peuvent devenir invalides si la page liée change –

+2

dans ce cas je dirais que c'est ok, parce que ça lie à stackoverflow;) - mais je vais inclure l'essentiel. – luschn