UNPKG

nehan

Version:

Html layout engine for paged-media written in Typescript

34 lines 1.34 kB
import { Config, LogicalTextNode, LogicalInlineNode, } from './public-api'; export class LogicalTextJustifier { constructor() { } getJustifyTargetChars(children) { return children.reduce((chars, child) => { if (child instanceof LogicalTextNode) { return chars.concat(child.children); } if (child instanceof LogicalInlineNode) { return chars.concat(this.getJustifyTargetChars(child.children)); } return chars; }, []).slice(0, -1); } justify(line) { const minJustifySpaceSize = line.env.font.size / 4; const maxJustifySpaceSize = line.env.font.size; const spaceSize = line.size.measure - line.autoSize.measure; if (spaceSize < minJustifySpaceSize || spaceSize > maxJustifySpaceSize) { return; } const targetChars = this.getJustifyTargetChars(line.children); if (targetChars.length <= 1) { return; } const charSpacingSize = spaceSize / targetChars.length; if (charSpacingSize >= Config.maxJustifyGap) { return; } targetChars.forEach(char => char.spacing = charSpacingSize); } } LogicalTextJustifier.instance = new LogicalTextJustifier(); //# sourceMappingURL=logical-text-justifier.js.map