1- // Require Internal Dependencies
2- import combining from "./src/combining.js" ;
3-
41// CONSTANTS
52const kDefaultOptions = {
63 nul : 0 ,
74 control : 0
85} ;
6+ const kCombining = [
7+ [ 0x0300 , 0x036F ] , [ 0x0483 , 0x0486 ] , [ 0x0488 , 0x0489 ] ,
8+ [ 0x0591 , 0x05BD ] , [ 0x05BF , 0x05BF ] , [ 0x05C1 , 0x05C2 ] ,
9+ [ 0x05C4 , 0x05C5 ] , [ 0x05C7 , 0x05C7 ] , [ 0x0600 , 0x0603 ] ,
10+ [ 0x0610 , 0x0615 ] , [ 0x064B , 0x065E ] , [ 0x0670 , 0x0670 ] ,
11+ [ 0x06D6 , 0x06E4 ] , [ 0x06E7 , 0x06E8 ] , [ 0x06EA , 0x06ED ] ,
12+ [ 0x070F , 0x070F ] , [ 0x0711 , 0x0711 ] , [ 0x0730 , 0x074A ] ,
13+ [ 0x07A6 , 0x07B0 ] , [ 0x07EB , 0x07F3 ] , [ 0x0901 , 0x0902 ] ,
14+ [ 0x093C , 0x093C ] , [ 0x0941 , 0x0948 ] , [ 0x094D , 0x094D ] ,
15+ [ 0x0951 , 0x0954 ] , [ 0x0962 , 0x0963 ] , [ 0x0981 , 0x0981 ] ,
16+ [ 0x09BC , 0x09BC ] , [ 0x09C1 , 0x09C4 ] , [ 0x09CD , 0x09CD ] ,
17+ [ 0x09E2 , 0x09E3 ] , [ 0x0A01 , 0x0A02 ] , [ 0x0A3C , 0x0A3C ] ,
18+ [ 0x0A41 , 0x0A42 ] , [ 0x0A47 , 0x0A48 ] , [ 0x0A4B , 0x0A4D ] ,
19+ [ 0x0A70 , 0x0A71 ] , [ 0x0A81 , 0x0A82 ] , [ 0x0ABC , 0x0ABC ] ,
20+ [ 0x0AC1 , 0x0AC5 ] , [ 0x0AC7 , 0x0AC8 ] , [ 0x0ACD , 0x0ACD ] ,
21+ [ 0x0AE2 , 0x0AE3 ] , [ 0x0B01 , 0x0B01 ] , [ 0x0B3C , 0x0B3C ] ,
22+ [ 0x0B3F , 0x0B3F ] , [ 0x0B41 , 0x0B43 ] , [ 0x0B4D , 0x0B4D ] ,
23+ [ 0x0B56 , 0x0B56 ] , [ 0x0B82 , 0x0B82 ] , [ 0x0BC0 , 0x0BC0 ] ,
24+ [ 0x0BCD , 0x0BCD ] , [ 0x0C3E , 0x0C40 ] , [ 0x0C46 , 0x0C48 ] ,
25+ [ 0x0C4A , 0x0C4D ] , [ 0x0C55 , 0x0C56 ] , [ 0x0CBC , 0x0CBC ] ,
26+ [ 0x0CBF , 0x0CBF ] , [ 0x0CC6 , 0x0CC6 ] , [ 0x0CCC , 0x0CCD ] ,
27+ [ 0x0CE2 , 0x0CE3 ] , [ 0x0D41 , 0x0D43 ] , [ 0x0D4D , 0x0D4D ] ,
28+ [ 0x0DCA , 0x0DCA ] , [ 0x0DD2 , 0x0DD4 ] , [ 0x0DD6 , 0x0DD6 ] ,
29+ [ 0x0E31 , 0x0E31 ] , [ 0x0E34 , 0x0E3A ] , [ 0x0E47 , 0x0E4E ] ,
30+ [ 0x0EB1 , 0x0EB1 ] , [ 0x0EB4 , 0x0EB9 ] , [ 0x0EBB , 0x0EBC ] ,
31+ [ 0x0EC8 , 0x0ECD ] , [ 0x0F18 , 0x0F19 ] , [ 0x0F35 , 0x0F35 ] ,
32+ [ 0x0F37 , 0x0F37 ] , [ 0x0F39 , 0x0F39 ] , [ 0x0F71 , 0x0F7E ] ,
33+ [ 0x0F80 , 0x0F84 ] , [ 0x0F86 , 0x0F87 ] , [ 0x0F90 , 0x0F97 ] ,
34+ [ 0x0F99 , 0x0FBC ] , [ 0x0FC6 , 0x0FC6 ] , [ 0x102D , 0x1030 ] ,
35+ [ 0x1032 , 0x1032 ] , [ 0x1036 , 0x1037 ] , [ 0x1039 , 0x1039 ] ,
36+ [ 0x1058 , 0x1059 ] , [ 0x1160 , 0x11FF ] , [ 0x135F , 0x135F ] ,
37+ [ 0x1712 , 0x1714 ] , [ 0x1732 , 0x1734 ] , [ 0x1752 , 0x1753 ] ,
38+ [ 0x1772 , 0x1773 ] , [ 0x17B4 , 0x17B5 ] , [ 0x17B7 , 0x17BD ] ,
39+ [ 0x17C6 , 0x17C6 ] , [ 0x17C9 , 0x17D3 ] , [ 0x17DD , 0x17DD ] ,
40+ [ 0x180B , 0x180D ] , [ 0x18A9 , 0x18A9 ] , [ 0x1920 , 0x1922 ] ,
41+ [ 0x1927 , 0x1928 ] , [ 0x1932 , 0x1932 ] , [ 0x1939 , 0x193B ] ,
42+ [ 0x1A17 , 0x1A18 ] , [ 0x1B00 , 0x1B03 ] , [ 0x1B34 , 0x1B34 ] ,
43+ [ 0x1B36 , 0x1B3A ] , [ 0x1B3C , 0x1B3C ] , [ 0x1B42 , 0x1B42 ] ,
44+ [ 0x1B6B , 0x1B73 ] , [ 0x1DC0 , 0x1DCA ] , [ 0x1DFE , 0x1DFF ] ,
45+ [ 0x200B , 0x200F ] , [ 0x202A , 0x202E ] , [ 0x2060 , 0x2063 ] ,
46+ [ 0x206A , 0x206F ] , [ 0x20D0 , 0x20EF ] , [ 0x302A , 0x302F ] ,
47+ [ 0x3099 , 0x309A ] , [ 0xA806 , 0xA806 ] , [ 0xA80B , 0xA80B ] ,
48+ [ 0xA825 , 0xA826 ] , [ 0xFB1E , 0xFB1E ] , [ 0xFE00 , 0xFE0F ] ,
49+ [ 0xFE20 , 0xFE23 ] , [ 0xFEFF , 0xFEFF ] , [ 0xFFF9 , 0xFFFB ] ,
50+ [ 0x10A01 , 0x10A03 ] , [ 0x10A05 , 0x10A06 ] , [ 0x10A0C , 0x10A0F ] ,
51+ [ 0x10A38 , 0x10A3A ] , [ 0x10A3F , 0x10A3F ] , [ 0x1D167 , 0x1D169 ] ,
52+ [ 0x1D173 , 0x1D182 ] , [ 0x1D185 , 0x1D18B ] , [ 0x1D1AA , 0x1D1AD ] ,
53+ [ 0x1D242 , 0x1D244 ] , [ 0xE0001 , 0xE0001 ] , [ 0xE0020 , 0xE007F ] ,
54+ [ 0xE0100 , 0xE01EF ]
55+ ] ;
956
1057/**
1158 * @function wcswidth
@@ -79,14 +126,14 @@ function wcwidth(ucs, opts) {
79126 ucs === 0x2329 || ucs === 0x232a ||
80127 ( ucs >= 0x2e80 && ucs <= 0xa4cf &&
81128 ucs !== 0x303f ) ||
82- ( ucs >= 0xac00 && ucs <= 0xd7a3 ) ||
83- ( ucs >= 0xf900 && ucs <= 0xfaff ) ||
84- ( ucs >= 0xfe10 && ucs <= 0xfe19 ) ||
85- ( ucs >= 0xfe30 && ucs <= 0xfe6f ) ||
86- ( ucs >= 0xff00 && ucs <= 0xff60 ) ||
87- ( ucs >= 0xffe0 && ucs <= 0xffe6 ) ||
88- ( ucs >= 0x20000 && ucs <= 0x2fffd ) ||
89- ( ucs >= 0x30000 && ucs <= 0x3fffd ) ) ) ;
129+ ( ucs >= 0xac00 && ucs <= 0xd7a3 ) ||
130+ ( ucs >= 0xf900 && ucs <= 0xfaff ) ||
131+ ( ucs >= 0xfe10 && ucs <= 0xfe19 ) ||
132+ ( ucs >= 0xfe30 && ucs <= 0xfe6f ) ||
133+ ( ucs >= 0xff00 && ucs <= 0xff60 ) ||
134+ ( ucs >= 0xffe0 && ucs <= 0xffe6 ) ||
135+ ( ucs >= 0x20000 && ucs <= 0x2fffd ) ||
136+ ( ucs >= 0x30000 && ucs <= 0x3fffd ) ) ) ;
90137}
91138
92139/**
@@ -96,18 +143,18 @@ function wcwidth(ucs, opts) {
96143 */
97144function bisearch ( ucs ) {
98145 let min = 0 ;
99- let max = combining . length - 1 ;
146+ let max = kCombining . length - 1 ;
100147
101- if ( ucs < combining [ 0 ] [ 0 ] || ucs > combining [ max ] [ 1 ] ) {
148+ if ( ucs < kCombining [ 0 ] [ 0 ] || ucs > kCombining [ max ] [ 1 ] ) {
102149 return false ;
103150 }
104151
105152 while ( max >= min ) {
106153 const mid = Math . floor ( ( min + max ) / 2 ) ;
107- if ( ucs > combining [ mid ] [ 1 ] ) {
154+ if ( ucs > kCombining [ mid ] [ 1 ] ) {
108155 min = mid + 1 ;
109156 }
110- else if ( ucs < combining [ mid ] [ 0 ] ) {
157+ else if ( ucs < kCombining [ mid ] [ 0 ] ) {
111158 max = mid - 1 ;
112159 }
113160 else {
0 commit comments