UNPKG

@stringsync/vexml

Version:

MusicXML to Vexflow

20 lines (19 loc) 634 B
import * as util from '../util'; export class TextMeasurer { font; constructor(font) { this.font = font; } measure(text) { const ctx = document.createElement('canvas').getContext('2d'); util.assertNotNull(ctx); const fontSize = this.font.size || '16px'; const fontFamily = this.font.family || 'Arial, sans-serif'; ctx.font = `${fontSize} ${fontFamily}`; const metrics = ctx.measureText(text); return { width: metrics.width, approximateHeight: metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent, }; } }