1 | /* eslint-disable yoda */
|
---|
2 | 'use strict';
|
---|
3 |
|
---|
4 | const isFullwidthCodePoint = codePoint => {
|
---|
5 | if (Number.isNaN(codePoint)) {
|
---|
6 | return false;
|
---|
7 | }
|
---|
8 |
|
---|
9 | // Code points are derived from:
|
---|
10 | // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
|
---|
11 | if (
|
---|
12 | codePoint >= 0x1100 && (
|
---|
13 | codePoint <= 0x115F || // Hangul Jamo
|
---|
14 | codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET
|
---|
15 | codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET
|
---|
16 | // CJK Radicals Supplement .. Enclosed CJK Letters and Months
|
---|
17 | (0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||
|
---|
18 | // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
|
---|
19 | (0x3250 <= codePoint && codePoint <= 0x4DBF) ||
|
---|
20 | // CJK Unified Ideographs .. Yi Radicals
|
---|
21 | (0x4E00 <= codePoint && codePoint <= 0xA4C6) ||
|
---|
22 | // Hangul Jamo Extended-A
|
---|
23 | (0xA960 <= codePoint && codePoint <= 0xA97C) ||
|
---|
24 | // Hangul Syllables
|
---|
25 | (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||
|
---|
26 | // CJK Compatibility Ideographs
|
---|
27 | (0xF900 <= codePoint && codePoint <= 0xFAFF) ||
|
---|
28 | // Vertical Forms
|
---|
29 | (0xFE10 <= codePoint && codePoint <= 0xFE19) ||
|
---|
30 | // CJK Compatibility Forms .. Small Form Variants
|
---|
31 | (0xFE30 <= codePoint && codePoint <= 0xFE6B) ||
|
---|
32 | // Halfwidth and Fullwidth Forms
|
---|
33 | (0xFF01 <= codePoint && codePoint <= 0xFF60) ||
|
---|
34 | (0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||
|
---|
35 | // Kana Supplement
|
---|
36 | (0x1B000 <= codePoint && codePoint <= 0x1B001) ||
|
---|
37 | // Enclosed Ideographic Supplement
|
---|
38 | (0x1F200 <= codePoint && codePoint <= 0x1F251) ||
|
---|
39 | // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
|
---|
40 | (0x20000 <= codePoint && codePoint <= 0x3FFFD)
|
---|
41 | )
|
---|
42 | ) {
|
---|
43 | return true;
|
---|
44 | }
|
---|
45 |
|
---|
46 | return false;
|
---|
47 | };
|
---|
48 |
|
---|
49 | module.exports = isFullwidthCodePoint;
|
---|
50 | module.exports.default = isFullwidthCodePoint;
|
---|