Search notes:

HTML element canvas: text related

fillText to write text onto a <canvas>.
<!DOCTYPE html>
<html>
<head>
  <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
  <title>TextMetrics</title>

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

<script type="text/javascript">

  var x=90;
  var ctx;

  function drawVerticalLine(x, color) {
      ctx.beginPath();
      ctx.lineWidth = '1';
      ctx.strokeStyle = color;
      ctx.moveTo(x, 200);
      ctx.lineTo(x, 400);
      ctx.stroke();

  }

  function drawLetter(letter, color, drawLines) { try {


    let tm=ctx.measureText(letter);
 // alert(tm); // object TextMetrics

    ctx.fillStyle=color

    ctx.fillText(letter, x, 350);

    if (drawLines) {

      drawVerticalLine(x, '#ff0000');
      drawVerticalLine(x + tm.width, '#0000ff');
//    alert(tm.actualBoundingBoxLeft);
//    alert(tm.ideographicBaseline);
//    drawVerticalLine(x + tm.actualBoundingBoxLeft+50, '#7700ff');
//    drawVerticalLine(x + tm.actualBoundingBoxLeft+50, '#7700ff');


    }




    x += tm.width; // width is how much we have to advance the x coordinate

  } catch(e) {alert (e)} } 


  function init() { try {

    let canvas = document.getElementById('canvas');

    ctx = canvas.getContext('2d');

    ctx.font='120px Scriptina';

    drawLetter('H', '#d2444b', 0);
    drawLetter('e', '#7051f4', 0);
    drawLetter('l', '#5be345', 0);
    drawLetter('l', '#734338', 1);
    drawLetter('o', '#eb34df', 0);
    drawLetter(' ', '#eb34df', 0);
    drawLetter('W', '#d0a364', 0);
    drawLetter('o', '#116211', 0);
    drawLetter('r', '#8e17ad', 0);
    drawLetter('l', '#cae553', 0);
    drawLetter('d', '#2efde5', 0);

       

  } catch(e) {alert (e)} } 

</script>

</head>
<body onload='init()'>

      <canvas id    ='canvas' 
                      width='900' height='600'
              style ='width:900px;height:600px;border:solid 1px black;margin-left:-450px;margin-top:-300px;left:50%;position:fixed;top:50%' ></canvas>

</body>
</html>
Github repository about-html-canvas, path: /text/TextMetrics.html
<!DOCTYPE html>
<html>
<head>
<title>
Scriptina
 - Web font preview
</title>
<style type='text/css'>

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

body { font-family: 'Scriptina' !important; }
h1, h2, h3, h4 { font-weight: normal; }
.reg { color:black; background:white; }
.inverse { color:white; background:black; }
div { padding: 10px 15px; }
.right { background:white; width:30%; float: right; font-family: sans-serif; border: 1px solid black; border-width: 0 0 1px 1px;}
</style>
</head>
<body>
<div class='right'>
<h3>How to Install</h3>
<h4>Step 1</h4>
<div>
Upload contents of the zip file to your web server's public directory. For example:
<code>www.yourdomain.com/css/webfont/</code>
</div>
<h4>Step 2</h4>
<div>
Add contents of
<code>styles.css</code>
to your site's style sheet.
</div>
<h4>Step 3</h4>
<div>
Make sure you adjust the paths in code from
<code>styles.css</code>
to reflect the relative path on your server.
</div>
<div>
For this example you need to prepend
<code>/css/webfont/</code>
to all
<code>src url</code>
definitions. Like this:
</div>
<div>
<code style='font-size:11px;'>@font-face {
  font-family: 'Scriptina';
  src: url('/css/webfont/Scriptina.eot?#iefix') format('embedded-opentype'),  url('/css/webfont/Scriptina.woff') format('woff'), url('/css/webfont/Scriptina.ttf')  format('truetype'), url('/css/webfont/Scriptina.svg#Scriptina') format('svg');
  font-weight: normal;
  font-style: normal;
}</code>
</div>
</div>
<div class='reg'>
<h1>
H1
Scriptina
</h1>
<h2>
H2
Donec lacinia, felis nec sagittis feugiat
</h2>
<h3>
H3
Sed ullamcorper tincidunt libero, sed tempus sem rhoncus non.
</h3>
<h4>
H4
Etiam in nulla eros, quis laoreet orci. Morbi ullamcorper tempor nunc sed ullamcorper.
</h4>
<div>
DEFAULT
In hac habitasse platea dictumst. Sed hendrerit scelerisque pellentesque. Suspendisse id eros quis sem tristique varius sed eget velit. Phasellus pellentesque ipsum non quam vulputate euismod. Nullam eget viverra lorem. Ut eu tortor metus. Mauris eget quam nulla, eu suscipit magna. Nullam vitae lectus quam, a consequat tortor. Ut sed arcu arcu. Aliquam aliquet lacinia lorem, id tristique nunc pulvinar eget.
</div>
<div>
SMALL
<small>
Proin volutpat, magna at vehicula blandit, massa lectus aliquam dolor, ut porta magna odio eu nunc. Nam nisi diam, commodo vitae hendrerit non, consequat sed est. Proin fringilla, nunc non vulputate hendrerit, turpis purus vestibulum diam, a venenatis nunc lectus nec quam. Quisque euismod fermentum mauris, at accumsan mi pulvinar in. Fusce libero lectus, fringilla non congue vel, cursus nec metus. Nunc ac ante quam.
</small>
</div>
<div>
BIG
<big>
Curabitur auctor orci vel felis sodales porttitor. Aenean non neque auctor tellus suscipit vulputate ut quis nunc. Integer tellus purus, venenatis a cursus nec, vestibulum eget turpis. Nulla pulvinar dictum elit, vulputate sodales nunc laoreet eget. Aliquam vitae urna ac risus scelerisque iaculis.
</big>
</div>

</div>
<div class='inverse'>
<h1>
H1
Scriptina
</h1>
<h2>
H2
Donec lacinia, felis nec sagittis feugiat
</h2>
<h3>
H3
Sed ullamcorper tincidunt libero, sed tempus sem rhoncus non.
</h3>
<h4>
H4
Etiam in nulla eros, quis laoreet orci. Morbi ullamcorper tempor nunc sed ullamcorper.
</h4>
<div>
DEFAULT
In hac habitasse platea dictumst. Sed hendrerit scelerisque pellentesque. Suspendisse id eros quis sem tristique varius sed eget velit. Phasellus pellentesque ipsum non quam vulputate euismod. Nullam eget viverra lorem. Ut eu tortor metus. Mauris eget quam nulla, eu suscipit magna. Nullam vitae lectus quam, a consequat tortor. Ut sed arcu arcu. Aliquam aliquet lacinia lorem, id tristique nunc pulvinar eget.
</div>
<div>
SMALL
<small>
Proin volutpat, magna at vehicula blandit, massa lectus aliquam dolor, ut porta magna odio eu nunc. Nam nisi diam, commodo vitae hendrerit non, consequat sed est. Proin fringilla, nunc non vulputate hendrerit, turpis purus vestibulum diam, a venenatis nunc lectus nec quam. Quisque euismod fermentum mauris, at accumsan mi pulvinar in. Fusce libero lectus, fringilla non congue vel, cursus nec metus. Nunc ac ante quam.
</small>
</div>
<div>
BIG
<big>
Curabitur auctor orci vel felis sodales porttitor. Aenean non neque auctor tellus suscipit vulputate ut quis nunc. Integer tellus purus, venenatis a cursus nec, vestibulum eget turpis. Nulla pulvinar dictum elit, vulputate sodales nunc laoreet eget. Aliquam vitae urna ac risus scelerisque iaculis.
</big>
</div>

</div>
</body>
</html>
Github repository about-html-canvas, path: /text/fonts/Scriptina/preview.html

See also

The <canvas> element

Index