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 <sindresorhus@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.
Attachment:
signature.asc
Description: OpenPGP digital signature