toLpUnder method
Implementation
double toLpUnder(MathOptions options) {
if (unit == Unit.lp) return value;
if (unit.toPt != null) {
return value * unit.toPt! / Unit.inches.toPt! * options.logicalPpi;
}
switch (unit) {
case Unit.cssEm:
return value * options.fontSize * options.sizeMultiplier;
// `mu` units scale with scriptstyle/scriptscriptstyle.
case Unit.mu:
return value *
options.fontSize *
options.fontMetrics.cssEmPerMu *
options.sizeMultiplier;
// `ex` and `em` always refer to the *textstyle* font
// in the current size.
case Unit.ex:
return value *
options.fontSize *
options.fontMetrics.xHeight *
options.havingStyle(options.style.atLeastText()).sizeMultiplier;
case Unit.em:
return value *
options.fontSize *
options.fontMetrics.quad *
options.havingStyle(options.style.atLeastText()).sizeMultiplier;
default:
throw ArgumentError("Invalid unit: '${unit.toString()}'");
}
}