diff options
author | Alex Dowad <alexinbeijing@gmail.com> | 2021-01-04 22:03:21 +0200 |
---|---|---|
committer | Alex Dowad <alexinbeijing@gmail.com> | 2021-01-14 22:26:24 +0200 |
commit | d497c0e96f0347707df717aba047e059658f3f68 (patch) | |
tree | 4d31006fac04d3afb957bbf640afb5d17e4f77b8 /ext/mbstring | |
parent | 40384da36a1505527fe3c99b731ec62e6922f6ac (diff) | |
download | php-git-d497c0e96f0347707df717aba047e059658f3f68.tar.gz |
JIS7/JIS8 encoding: use JISX0201 for U+203E (overline)
In other legacy Japanese encodings like Shift-JIS, we are now using a specific
JISX 0208 character for the Unicode overline (U+203E). Previously, the single
byte 0x7E was used, but an ASCII 0x7E does not represent an overline, so this
was changed.
However, JIS7/JIS8 can represent characters in the JISX 0201 character set as
well. That character set also includes an overline character, which takes less
bytes to encode than the corresponding JISX 0208 character, so we'll use it.
This is what mbstring had been doing for a long time; but it changed as a
side effect of the recent changes to how U+203E is encoded in Shift-JIS, etc.
So change it back.
Diffstat (limited to 'ext/mbstring')
-rw-r--r-- | ext/mbstring/libmbfl/filters/mbfilter_jis.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_jis.c b/ext/mbstring/libmbfl/filters/mbfilter_jis.c index 2eeae28f82..2fd58872b6 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_jis.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_jis.c @@ -278,6 +278,8 @@ mbfl_filt_conv_wchar_jis(int c, mbfl_convert_filter *filter) if (c >= ucs_a1_jis_table_min && c < ucs_a1_jis_table_max) { s = ucs_a1_jis_table[c - ucs_a1_jis_table_min]; + } else if (c == 0x203E) { /* OVERLINE */ + s = 0x1007E; /* Convert to JISX 0201 OVERLINE */ } else if (c >= ucs_a2_jis_table_min && c < ucs_a2_jis_table_max) { s = ucs_a2_jis_table[c - ucs_a2_jis_table_min]; } else if (c >= ucs_i_jis_table_min && c < ucs_i_jis_table_max) { @@ -288,8 +290,6 @@ mbfl_filt_conv_wchar_jis(int c, mbfl_convert_filter *filter) if (s <= 0) { if (c == 0xa5) { /* YEN SIGN */ s = 0x1005c; - } else if (c == 0x203e) { /* OVER LINE */ - s = 0x1007e; } else if (c == 0xff3c) { /* FULLWIDTH REVERSE SOLIDUS */ s = 0x2140; } else if (c == 0x2225) { /* PARALLEL TO */ |