diff options
author | Yuri Pankov <yuripv@FreeBSD.org> | 2020-12-23 12:49:25 +0000 |
---|---|---|
committer | Yuri Pankov <yuripv@FreeBSD.org> | 2020-12-23 12:53:43 +0000 |
commit | f952bdf1425d6a877f99b5c5ca59f25fc8bedabe (patch) | |
tree | 6e6184b6601bcd57754e16b1cd0e61a578adffaf | |
parent | 1c00efe98ed7d103b9684ff692ffd5e3b64d0237 (diff) | |
download | src-f952bdf1425d6a877f99b5c5ca59f25fc8bedabe.tar.gz src-f952bdf1425d6a877f99b5c5ca59f25fc8bedabe.zip |
tools/tools/locale: skip control character widths
Do not explicitly encode control characters widths as 0
allowing wcwidth() to return the proper implicit value for
non-printable characters (-1).
Reported by: naddy
-rw-r--r-- | tools/tools/locale/etc/final-maps/widths.txt | 65 | ||||
-rw-r--r-- | tools/tools/locale/tools/getwidths.c | 4 |
2 files changed, 4 insertions, 65 deletions
diff --git a/tools/tools/locale/etc/final-maps/widths.txt b/tools/tools/locale/etc/final-maps/widths.txt index f01a4d5a0dd5..74c28ac58463 100644 --- a/tools/tools/locale/etc/final-maps/widths.txt +++ b/tools/tools/locale/etc/final-maps/widths.txt @@ -3,71 +3,6 @@ # utf8proc 2.5.0. # ----------------------------------------------------------------------------- WIDTH -<NULL> 0 -<START_OF_HEADING> 0 -<START_OF_TEXT> 0 -<END_OF_TEXT> 0 -<END_OF_TRANSMISSION> 0 -<ENQUIRY> 0 -<ACKNOWLEDGE> 0 -<ALERT> 0 -<BACKSPACE> 0 -<tab> 0 -<newline> 0 -<vertical-tab> 0 -<form-feed> 0 -<carriage-return> 0 -<SHIFT_OUT> 0 -<SHIFT_IN> 0 -<DATA_LINK_ESCAPE> 0 -<DEVICE_CONTROL_ONE> 0 -<DEVICE_CONTROL_TWO> 0 -<DEVICE_CONTROL_THREE> 0 -<DEVICE_CONTROL_FOUR> 0 -<NEGATIVE_ACKNOWLEDGE> 0 -<SYNCHRONOUS_IDLE> 0 -<END_OF_TRANSMISSION_BLOCK> 0 -<CANCEL> 0 -<END_OF_MEDIUM> 0 -<SUBSTITUTE> 0 -<ESCAPE> 0 -<INFORMATION_SEPARATOR_FOUR> 0 -<INFORMATION_SEPARATOR_THREE> 0 -<INFORMATION_SEPARATOR_TWO> 0 -<INFORMATION_SEPARATOR_ONE> 0 -<DELETE> 0 -<CONTROL-0080> 0 -<CONTROL-0081> 0 -<BREAK_PERMITTED_HERE> 0 -<NO_BREAK_HERE> 0 -<CONTROL-0084> 0 -<NEXT_LINE> 0 -<START_OF_SELECTED_AREA> 0 -<END_OF_SELECTED_AREA> 0 -<CHARACTER_TABULATION_SET> 0 -<CHARACTER_TABULATION_WITH_JUSTIFICATION> 0 -<LINE_TABULATION_SET> 0 -<PARTIAL_LINE_FORWARD> 0 -<PARTIAL_LINE_BACKWARD> 0 -<REVERSE_LINE_FEED> 0 -<SINGLE_SHIFT_TWO> 0 -<SINGLE_SHIFT_THREE> 0 -<DEVICE_CONTROL_STRING> 0 -<PRIVATE_USE_ONE> 0 -<PRIVATE_USE_TWO> 0 -<SET_TRANSMIT_STATE> 0 -<CANCEL_CHARACTER> 0 -<MESSAGE_WAITING> 0 -<START_OF_GUARDED_AREA> 0 -<END_OF_GUARDED_AREA> 0 -<START_OF_STRING> 0 -<CONTROL-0099> 0 -<SINGLE_CHARACTER_INTRODUCER> 0 -<CONTROL_SEQUENCE_INTRODUCER> 0 -<STRING_TERMINATOR> 0 -<OPERATING_SYSTEM_COMMAND> 0 -<PRIVACY_MESSAGE> 0 -<APPLICATION_PROGRAM_COMMAND> 0 <COMBINING_GRAVE_ACCENT> 0 <COMBINING_ACUTE_ACCENT> 0 <COMBINING_CIRCUMFLEX_ACCENT> 0 diff --git a/tools/tools/locale/tools/getwidths.c b/tools/tools/locale/tools/getwidths.c index 670ebd957878..f1c7c6cc463d 100644 --- a/tools/tools/locale/tools/getwidths.c +++ b/tools/tools/locale/tools/getwidths.c @@ -35,12 +35,16 @@ main(void) { int32_t wc; int i, wcw; + utf8proc_category_t wcc; setlocale(LC_CTYPE, "C.UTF-8"); printf("%s\n", utf8proc_version()); for (wc = 0; wc < 0x110000; wc++) { + wcc = utf8proc_category(wc); + if (wcc == UTF8PROC_CATEGORY_CC) + continue; wcw = utf8proc_charwidth(wc); if (wcw == 1) continue; |