The font I am using on my HTML page supports tabular figures, which is great for presenting rows of currency numbers nicely. They can be activated in CSS by using either:
.table {
font-variant-numeric: tabular-nums;
}
or the more low-level way with:
.table {
font-feature-settings: "tnum" on;
}
But how do I activate tabular figures when drawing on a JavaScript Canvas object using the CanvasRenderingContext2D.fillText()
method? I tried putting the font-feature-settings
line within the @font-face
CSS block that defines the font to be loaded, but that did only affect the rendering within HTML, not the Canvas drawing.
I think it's just not supported, but would gladly be proven wrong.
As a workaround, you could use measureText()
to find the width of the widest digit, and render the digits individually one by one, using the widest digit's width as a step size.
Or, if your design allows, you could choose a different font whose figures all have the same width to begin with. This is a fairly common default.