Немного слепой выстрел, но для меня это звучит так, будто вы не ожидаете загрузки шрифта:
const ctx = canvas.getContext('2d');
ctx.font = 'bold 15px "Open Sans", serif'
const before_load = ctx.measureText("Sivakumar Tadisetti").width;
console.log('before', before_load);
// load the font
document.fonts.ready
.then(() => {
ctx.font = 'bold 15px "Open Sans", serif'
const after_load = ctx.measureText("Sivakumar Tadisetti").width;
console.log('after', after_load);
});
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<canvas id="canvas"></canvas>
Чтобы избежать этого, вы можете выполнить свой код в document.fonts.ready
обратном вызове Promise:
document.fonts.ready.then(startYourCode);
document.fonts.ready.then(() => {
const ctx = canvas.getContext('2d');
ctx.font = 'bold 15px "Open Sans", serif'
const textWidth= ctx.measureText("Sivakumar Tadisetti").width;
console.log(textWidth);
});
#canvas { font-family: "Open Sans"; }
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<canvas id="canvas"></canvas>