On Thursday 27 October 2016 12:09 PM, Adam Borowski wrote: > On Thu, Oct 27, 2016 at 10:00:37AM +0530, Pirate Praveen wrote: >> On Thursday 27 October 2016 02:21 AM, Adam Borowski wrote: >>> On Thu, Oct 27, 2016 at 12:49:31AM +0530, suhail_p wrote: >>>> * Package name : node-is-fullwidth-code-point >>>> Upstream Author : Sindre Sorhus <sindresor...@gmail.com> >>>> (sindresorhus.com >>>> ) >>>> * URL : >>>> https://github.com/sindresorhus/is-fullwidth-code-point#readme >>>> Description : Check if a given Unicode point is fullwidth >>>> >>>> A Nodejs modeule to check if the character represented by a given Unicode >>>> code point is fullwidth >>> >>> Wouldn't it be better to replace this with full wcwidth()? That'd give you >>> not only double-width chars but also controls ("width" -1), combining and >>> non-spacing (width 0). >> >> It is a dependency for https://github.com/sindresorhus/string-width you >> can suggest upstream to use this. > > Well, but why would you use code that's so buggy? If it has literally one > job, it should at least do that job right. > > I see string-width ignores controls (0..0x1f, 0x7f..0x9f) on its own, so > that's handled. It reacts to them differently than POSIX wcswidth() > (silently ignores instead of returning an error for the whole string) but > as there's no good answer that's acceptable. > > But, without having a case for width 0, string-width fails to handle any > non-spacing or combining characters. The former happen quite often in text > produced by some software, sometimes even in surprising cases as plain > German words like "Auflage" -- without a ZWNJ between f and l they'd be > combined into a ligature. The latter are required for a number of > languages, such as Vietnamese which tends to decorate every letter with two > or more combining characters. > > Thus, I recommend scrapping this ITP, and instead packaging one of many > implementations without these problems. One for these that looks rightish > is https://github.com/mycoboco/wcwidth.js > > You would then patch string-width: > - if (isFullwidthCodePoint(code)) { > - width += 2; > - } else { > - width++; > - } > + width += wcwidth(code); >
Thanks for the patch, we'll do it as you suggest.
signature.asc
Description: OpenPGP digital signature