mirror of
https://github.com/niklasvh/html2canvas.git
synced 2023-08-10 21:13:10 +03:00
fix: word-break seperators (#2593)
This commit is contained in:
parent
4c360fc1f0
commit
e9f7f48d57
@ -70,6 +70,9 @@ const breakText = (value: string, styles: CSSParsedDeclaration): string[] => {
|
|||||||
return styles.letterSpacing !== 0 ? toCodePoints(value).map((i) => fromCodePoint(i)) : breakWords(value, styles);
|
return styles.letterSpacing !== 0 ? toCodePoints(value).map((i) => fromCodePoint(i)) : breakWords(value, styles);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// https://drafts.csswg.org/css-text/#word-separator
|
||||||
|
const wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];
|
||||||
|
|
||||||
const breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {
|
const breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {
|
||||||
const breaker = LineBreaker(str, {
|
const breaker = LineBreaker(str, {
|
||||||
lineBreak: styles.lineBreak,
|
lineBreak: styles.lineBreak,
|
||||||
@ -81,7 +84,24 @@ const breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {
|
|||||||
|
|
||||||
while (!(bk = breaker.next()).done) {
|
while (!(bk = breaker.next()).done) {
|
||||||
if (bk.value) {
|
if (bk.value) {
|
||||||
words.push(bk.value.slice());
|
const value = bk.value.slice();
|
||||||
|
const codePoints = toCodePoints(value);
|
||||||
|
let word = '';
|
||||||
|
codePoints.forEach((codePoint) => {
|
||||||
|
if (wordSeparators.indexOf(codePoint) === -1) {
|
||||||
|
word += fromCodePoint(codePoint);
|
||||||
|
} else {
|
||||||
|
if (word.length) {
|
||||||
|
words.push(word);
|
||||||
|
}
|
||||||
|
words.push(fromCodePoint(codePoint));
|
||||||
|
word = '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (word.length) {
|
||||||
|
words.push(word);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
body {
|
body {
|
||||||
font-family: Arial;
|
font-family: Arial;
|
||||||
}
|
}
|
||||||
|
|
||||||
.small {
|
.small {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 1vw;
|
line-height: 1vw;
|
||||||
@ -17,16 +18,20 @@
|
|||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
line-height: 2vw;
|
line-height: 2vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
.large {
|
.large {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
line-height: 3vw;
|
line-height: 3vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
div {
|
div {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 36px;
|
font-size: 36px;
|
||||||
line-height: 4vw;
|
line-height: 4vw;
|
||||||
@ -41,10 +46,17 @@
|
|||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 2vw;
|
line-height: 2vw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.raw {
|
||||||
|
font-size: 60px;
|
||||||
|
word-spacing: 30px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body> <h1><h1> text-decoration</h1>
|
<body>
|
||||||
|
|
||||||
|
<h1><h1> text-decoration</h1>
|
||||||
<div style="font-family:Arial;">
|
<div style="font-family:Arial;">
|
||||||
<h2>Arial</h2>
|
<h2>Arial</h2>
|
||||||
<ol class="small">
|
<ol class="small">
|
||||||
@ -77,18 +89,8 @@
|
|||||||
<li style="text-decoration:line-through;">text-decoration:line-through;</li>
|
<li style="text-decoration:line-through;">text-decoration:line-through;</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<ol class="medium">
|
<div class="raw">
|
||||||
<li style="text-decoration:none;">text-decoration:none;</li>
|
<span>[AB / CD]</span>
|
||||||
<li style="text-decoration:underline;">text-decoration:underline;</li>
|
|
||||||
<li style="text-decoration:overline;">text-decoration:overline;</li>
|
|
||||||
<li style="text-decoration:line-through;">text-decoration:line-through;</li>
|
|
||||||
</ol>
|
|
||||||
<ol class="large">
|
|
||||||
<li style="text-decoration:none;">text-decoration:none;</li>
|
|
||||||
<li style="text-decoration:underline;">text-decoration:underline;</li>
|
|
||||||
<li style="text-decoration:overline;">text-decoration:overline;</li>
|
|
||||||
<li style="text-decoration:line-through;">text-decoration:line-through;</li>
|
|
||||||
</ol>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="font-family:Tahoma;">
|
<div style="font-family:Tahoma;">
|
||||||
@ -117,13 +119,16 @@
|
|||||||
<h2><h2> text-transform</h2>
|
<h2><h2> text-transform</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li style="text-transform:none;">text-transform:none;</li>
|
<li style="text-transform:none;">text-transform:none;</li>
|
||||||
<li style="text-transform:capitalize;">text-transform: capitalize; (including foreign characters such as Öaäå)</li>
|
<li style="text-transform:capitalize;">text-transform: capitalize; (including foreign characters such as Öaäå)
|
||||||
|
</li>
|
||||||
<li style="text-transform:uppercase;">text-transform:uppercase;</li>
|
<li style="text-transform:uppercase;">text-transform:uppercase;</li>
|
||||||
<li style="text-transform:lowercase;">text-transform:lowercase;</li>
|
<li style="text-transform:lowercase;">text-transform:lowercase;</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3><h3> misc text alignments</h3>
|
<h3><h3> misc text alignments</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li style="word-spacing:5px;">word-spacing:5px; (as each letter is rendered individually, the bounds will always be correct)</li>
|
<li style="word-spacing:5px;">word-spacing:5px; (as each letter is rendered individually, the bounds will always
|
||||||
|
be correct)
|
||||||
|
</li>
|
||||||
<li style="line-height:35px;">line-height:35px; <br/>(same goes for line-height)</li>
|
<li style="line-height:35px;">line-height:35px; <br/>(same goes for line-height)</li>
|
||||||
<li style="letter-spacing:5px;">letter-spacing:5px;</li>
|
<li style="letter-spacing:5px;">letter-spacing:5px;</li>
|
||||||
<li style="letter-spacing:0.9px;">letter-spacing:0.9px;</li>
|
<li style="letter-spacing:0.9px;">letter-spacing:0.9px;</li>
|
||||||
@ -132,6 +137,9 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div style="font-family: 'Inconsolata', Monaco, Consolas, 'Andale Mono', monospace">npm install --save html2canvas</div>
|
<div style="font-family: 'Inconsolata', Monaco, Consolas, 'Andale Mono', monospace">npm install --save html2canvas</div>
|
||||||
|
<div class="raw" style="">
|
||||||
|
<span>[AB / CD]</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user