Open avelican opened 2 years ago
Attempted to work around this manually with pdf.getStringUnitWidth(); and discovered that this function always returns the same value regardless of the charSpace given:
pdf.getStringUnitWidth("hello there", { charSpace: 0 }); // gives 4.63
pdf.getStringUnitWidth("hello there", { charSpace: 1 }); // gives 4.63
Added a workaround to my print function:
if(options.align == 'center'){
let x_coord = page_center_x;
// workaround for charspace alignment bug
if(options.charSpace && options.charSpace != 0){
let adjustment = options.charSpace * pdf.getStringUnitWidth(text);
pdf.text(text, x_coord - adjustment, y_coord, options);
}else{
pdf.text(text, x_coord, y_coord, options);
}
}
Arrived at this through trial and error and with a little help from WolframAlpha's formula simplification feature :)
Thanks for the report. Could you prepare a pull request?
Expectation: All lines are centered around x_center.
Result: Only the { charSpace: 0 } line is centered. Other lines are left-aligned to that line's left edge.
Hypothesis: jsPDF calculates the starting coordinate before the charSpace transformation is applied?