UNPKG

1.35 kBJavaScriptView Raw
1import { isNumber } from './assert';
2import { isString } from './string';
3var genericFontFamilies = ['serif', 'sans-serif', 'monospace', 'cursive', 'fantasy', 'system-ui'];
4export function toFontString(attributes) {
5 var fontSize = attributes.fontSize,
6 fontFamily = attributes.fontFamily,
7 fontStyle = attributes.fontStyle,
8 fontVariant = attributes.fontVariant,
9 fontWeight = attributes.fontWeight; // build canvas api font setting from individual components. Convert a numeric this.fontSize to px
10
11 var fontSizeString = isNumber(fontSize) ? "".concat(fontSize, "px") : fontSize.toString(); // Clean-up fontFamily property by quoting each font name
12 // this will support font names with spaces
13 // @ts-ignore
14
15 var fontFamilies = isString(fontFamily) ? fontFamily.split(',') : [fontFamily.value];
16
17 for (var i = fontFamilies.length - 1; i >= 0; i--) {
18 // Trim any extra white-space
19 var fontFamily_1 = fontFamilies[i].trim(); // Check if font already contains strings
20
21 if (!/([\"\'])[^\'\"]+\1/.test(fontFamily_1) && genericFontFamilies.indexOf(fontFamily_1) < 0) {
22 fontFamily_1 = "\"".concat(fontFamily_1, "\"");
23 }
24
25 fontFamilies[i] = fontFamily_1;
26 }
27
28 return "".concat(fontStyle, " ").concat(fontVariant, " ").concat(fontWeight, " ").concat(fontSizeString, " ").concat(fontFamilies.join(','));
29}
\No newline at end of file