nehan
Version:
Html layout engine for paged-media written in Typescript
96 lines • 2.42 kB
JavaScript
import { Utils, } from "./public-api";
let create_size_space_info = (advance_rate) => {
return {
advanceRate: advance_rate,
isNoBreak: false,
isControl: false
};
};
let zeroSpace = {
advanceRate: 0,
isNoBreak: false,
isControl: false
};
let zeroSpaceNoBreak = {
advanceRate: 0,
isNoBreak: true,
isControl: false
};
let noBreakSpace = {
advanceRate: 0.38,
isNoBreak: true,
isControl: false
};
let narrowNoBreakSpace = {
advanceRate: 0.33,
isNoBreak: true,
isControl: false
};
let controller = {
advanceRate: 0,
isNoBreak: false,
isControl: true
};
let fullSpace = create_size_space_info(1);
let halfSpace = create_size_space_info(0.5);
let threePerEm = create_size_space_info(1 / 3);
let fourPerEm = create_size_space_info(1 / 4);
let sixPerEm = create_size_space_info(1 / 6);
let thinSpace = create_size_space_info(0.2);
let hairSpace = create_size_space_info(0.1);
let space_char_table = {
"U+0009": halfSpace,
"U+000A": controller,
"U+000B": controller,
"U+000C": controller,
"U+000D": controller,
"U+001C": halfSpace,
"U+001D": halfSpace,
"U+001E": halfSpace,
"U+001F": halfSpace,
"U+0020": halfSpace,
"U+00A0": noBreakSpace,
"U+034F": zeroSpace,
"U+1680": halfSpace,
"U+180E": halfSpace,
"U+2000": halfSpace,
"U+2001": fullSpace,
"U+2002": halfSpace,
"U+2003": fullSpace,
"U+2004": threePerEm,
"U+2005": fourPerEm,
"U+2006": sixPerEm,
"U+2007": halfSpace,
"U+2008": halfSpace,
"U+2009": thinSpace,
"U+200A": hairSpace,
"U+200B": zeroSpace,
"U+200C": zeroSpace,
"U+200D": zeroSpace,
"U+200E": zeroSpace,
"U+200F": zeroSpace,
"U+2028": controller,
"U+2029": controller,
"U+202A": controller,
"U+202B": controller,
"U+202C": controller,
"U+202D": controller,
"U+202E": controller,
"U+202F": narrowNoBreakSpace,
"U+2061": controller,
"U+2062": controller,
"U+2063": controller,
"U+3000": fullSpace,
"U+FEFE": zeroSpaceNoBreak,
};
export class SpaceCharTable {
static load(str) {
let prop = Utils.String.getUnicodeProp(str);
let info = space_char_table[prop];
if (!info) {
throw new Error("SpaceChar(" + prop + ") not exists.");
}
return info;
}
}
//# sourceMappingURL=space-char-table.js.map