Skip to content

Commit eff3a41

Browse files
committed
fix: copyright symbol rendering (#2496)
* fix: copyright symbol rendering * chore: add changeset * chore: examples minor bump
1 parent be06f63 commit eff3a41

File tree

5 files changed

+51
-6
lines changed

5 files changed

+51
-6
lines changed

.changeset/rare-dolphins-hunt.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@react-pdf/examples': minor
3+
'@react-pdf/layout': patch
4+
---
5+
6+
fix: copyright and registered symbol rendering

packages/examples/src/emoji/index.jsx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React from 'react';
2+
import { Document, Page, View, Text, Font, StyleSheet } from '@react-pdf/renderer';
3+
4+
const styles = StyleSheet.create({
5+
container: {
6+
height: 700,
7+
marginVertical: 70,
8+
marginHorizontal: '10%',
9+
},
10+
text: {
11+
fontSize: 100,
12+
textAlign: 'center',
13+
},
14+
});
15+
16+
Font.registerEmojiSource({
17+
format: 'png',
18+
url: 'https://cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/72x72/',
19+
// url: 'https://cdn.jsdelivr.net/npm/[email protected]/img/apple/64/',
20+
// withVariationSelectors: true,
21+
});
22+
23+
const Emoji = () => (
24+
<Document>
25+
<Page>
26+
<View style={styles.container}>
27+
<Text style={styles.text}>😀💩👻🙈</Text>
28+
</View>
29+
</Page>
30+
</Document>
31+
);
32+
33+
export default Emoji;

packages/layout/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"@react-pdf/textkit": "^4.2.1",
2828
"@react-pdf/types": "^2.3.5",
2929
"cross-fetch": "^3.1.5",
30-
"emoji-regex": "^10.2.1",
30+
"emoji-regex": "^10.3.0",
3131
"queue": "^6.0.1",
3232
"yoga-layout": "^2.0.1"
3333
},

packages/layout/src/text/emoji.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ export const fetchEmojis = (string, source) => {
6767
return promises;
6868
};
6969

70+
const specialCases = ['©️', '®']; // Do not treat these as emojis if emoji not present
71+
7072
export const embedEmojis = fragments => {
7173
const result = [];
7274

@@ -78,6 +80,8 @@ export const embedEmojis = fragments => {
7880
Array.from(fragment.string.matchAll(regex)).forEach(match => {
7981
const { index } = match;
8082
const emoji = match[0];
83+
const isSpecialCase = specialCases.includes(emoji);
84+
8185
const emojiSize = fragment.attributes.fontSize;
8286
const chunk = fragment.string.slice(lastIndex, index + match[0].length);
8387

@@ -96,6 +100,8 @@ export const embedEmojis = fragments => {
96100
},
97101
},
98102
});
103+
} else if (isSpecialCase) {
104+
result.push({ string: emoji, attributes: fragment.attributes });
99105
} else {
100106
// If no emoji data, we just replace the emoji with a nodef char
101107
result.push({

yarn.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4404,10 +4404,10 @@ emittery@^0.13.1:
44044404
resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad"
44054405
integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
44064406

4407-
emoji-regex@^10.2.1:
4408-
version "10.2.1"
4409-
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.2.1.tgz#a41c330d957191efd3d9dfe6e1e8e1e9ab048b3f"
4410-
integrity sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==
4407+
emoji-regex@^10.3.0:
4408+
version "10.3.0"
4409+
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23"
4410+
integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==
44114411

44124412
emoji-regex@^7.0.1:
44134413
version "7.0.3"
@@ -9278,7 +9278,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1:
92789278
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
92799279
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
92809280

9281-
semver@^7.3.4, semver@^7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3:
9281+
semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3:
92829282
version "7.5.4"
92839283
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
92849284
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==

0 commit comments

Comments
 (0)