From 7f5d679a982cf8fc9308a01159a1ccb071c7b508 Mon Sep 17 00:00:00 2001 From: Peter Edberg Date: Thu, 11 May 2023 03:32:52 +0000 Subject: [PATCH] ICU-22357 Update gb18030 mappings for the -2022 version See #2430 --- icu4c/source/data/mappings/gb18030.ucm | 76 +++++++++++++----- icu4c/source/test/testdata/conversion.txt | 50 +++++++++++- icu4j/main/shared/data/icudata.jar | 4 +- icu4j/main/shared/data/icutzdata.jar | 2 +- icu4j/main/shared/data/testdata.jar | 4 +- .../ibm/icu/impl/data/icudt73b/gb18030.cnv | Bin 232608 -> 232816 bytes .../ibm/icu/dev/data/testdata/conversion.res | Bin 36144 -> 37280 bytes 7 files changed, 107 insertions(+), 29 deletions(-) diff --git a/icu4c/source/data/mappings/gb18030.ucm b/icu4c/source/data/mappings/gb18030.ucm index 62b57a93fc24..d317540fb821 100644 --- a/icu4c/source/data/mappings/gb18030.ucm +++ b/icu4c/source/data/mappings/gb18030.ucm @@ -3,7 +3,7 @@ # Copyright (C) 2000-2012, International Business Machines Corporation and others. # All Rights Reserved. -# ICU codepage data for GB 18030 +# ICU codepage data for GB 18030-2022 "gb18030" "AXXXX" @@ -51,7 +51,7 @@ # GB 18030 BMP mappings that are not handled algorithmically are # generated using gbmake4 and gbtoucm tools. Please see charset/source/gb18030/gb18030.html -# or http://source.icu-project.org/repos/icu/data/trunk/charset/source/gb18030/gb18030.html +# or https://htmlpreview.github.io/?https://github.com/unicode-org/icu-data/blob/main/charset/source/gb18030/gb18030.html # for more information. CHARMAP @@ -28077,6 +28077,22 @@ CHARMAP \xFD\x99 |0 \xFD\x9A |0 \xFD\x9B |0 + \xFE\x59 |0 + \x82\x35\x90\x37 |3 + \xFE\x61 |0 + \x82\x35\x90\x38 |3 + \xFE\x66 |0 + \x82\x35\x90\x39 |3 + \xFE\x67 |0 + \x82\x35\x91\x30 |3 + \xFE\x6D |0 + \x82\x35\x91\x31 |3 + \xFE\x7E |0 + \x82\x35\x91\x32 |3 + \xFE\x90 |0 + \x82\x35\x91\x33 |3 + \xFE\xA0 |0 + \x82\x35\x91\x34 |3 \xAA\xA1 |0 \xAA\xA2 |0 \xAA\xA3 |0 @@ -30010,16 +30026,16 @@ CHARMAP \xA6\xBE |0 \xA6\xBF |0 \xA6\xC0 |0 - \xA6\xD9 |0 - \xA6\xDA |0 - \xA6\xDB |0 - \xA6\xDC |0 - \xA6\xDD |0 - \xA6\xDE |0 - \xA6\xDF |0 - \xA6\xEC |0 - \xA6\xED |0 - \xA6\xF3 |0 + \xA6\xD9 |1 + \xA6\xDA |1 + \xA6\xDB |1 + \xA6\xDC |1 + \xA6\xDD |1 + \xA6\xDE |1 + \xA6\xDF |1 + \xA6\xEC |1 + \xA6\xED |1 + \xA6\xF3 |1 \xA6\xF6 |0 \xA6\xF7 |0 \xA6\xF8 |0 @@ -30155,7 +30171,7 @@ CHARMAP \x83\x36\xC9\x37 |0 \x83\x36\xC9\x38 |0 \x83\x36\xC9\x39 |0 - \xFE\x59 |0 + \xFE\x59 |1 \x83\x36\xCA\x30 |0 \x83\x36\xCA\x31 |0 \x83\x36\xCA\x32 |0 @@ -30163,19 +30179,19 @@ CHARMAP \x83\x36\xCA\x34 |0 \x83\x36\xCA\x35 |0 \x83\x36\xCA\x36 |0 - \xFE\x61 |0 + \xFE\x61 |1 \x83\x36\xCA\x37 |0 \x83\x36\xCA\x38 |0 \x83\x36\xCA\x39 |0 \x83\x36\xCB\x30 |0 - \xFE\x66 |0 - \xFE\x67 |0 + \xFE\x66 |1 + \xFE\x67 |1 \x83\x36\xCB\x31 |0 \x83\x36\xCB\x32 |0 \x83\x36\xCB\x33 |0 \x83\x36\xCB\x34 |0 \xFE\x6C |0 - \xFE\x6D |0 + \xFE\x6D |1 \x83\x36\xCB\x35 |0 \x83\x36\xCB\x36 |0 \x83\x36\xCB\x37 |0 @@ -30192,7 +30208,7 @@ CHARMAP \x83\x36\xCC\x37 |0 \x83\x36\xCC\x38 |0 \x83\x36\xCC\x39 |0 - \xFE\x7E |0 + \xFE\x7E |1 \x83\x36\xCD\x30 |0 \x83\x36\xCD\x31 |0 \x83\x36\xCD\x32 |0 @@ -30209,7 +30225,7 @@ CHARMAP \x83\x36\xCE\x33 |0 \x83\x36\xCE\x34 |0 \x83\x36\xCE\x35 |0 - \xFE\x90 |0 + \xFE\x90 |1 \xFE\x91 |0 \x83\x36\xCE\x36 |0 \x83\x36\xCE\x37 |0 @@ -30225,7 +30241,7 @@ CHARMAP \x83\x36\xCF\x37 |0 \x83\x36\xCF\x38 |0 \x83\x36\xCF\x39 |0 - \xFE\xA0 |0 + \xFE\xA0 |1 \xFD\x9C |0 \x84\x30\x85\x35 |0 \x84\x30\x85\x36 |0 @@ -30480,6 +30496,26 @@ CHARMAP \xFE\x4D |0 \xFE\x4E |0 \xFE\x4F |0 + \xA6\xD9 |0 + \x84\x31\x82\x36 |3 + \xA6\xDB |0 + \x84\x31\x82\x37 |3 + \xA6\xDA |0 + \x84\x31\x82\x38 |3 + \xA6\xDC |0 + \x84\x31\x82\x39 |3 + \xA6\xDD |0 + \x84\x31\x83\x30 |3 + \xA6\xDE |0 + \x84\x31\x83\x31 |3 + \xA6\xDF |0 + \x84\x31\x83\x32 |3 + \xA6\xEC |0 + \x84\x31\x83\x33 |3 + \xA6\xED |0 + \x84\x31\x83\x34 |3 + \xA6\xF3 |0 + \x84\x31\x83\x35 |3 \xA9\x55 |0 \xA6\xF2 |0 \x84\x31\x85\x38 |0 diff --git a/icu4c/source/test/testdata/conversion.txt b/icu4c/source/test/testdata/conversion.txt index bc8402fe4a26..290925ef31fa 100644 --- a/icu4c/source/test/testdata/conversion.txt +++ b/icu4c/source/test/testdata/conversion.txt @@ -108,10 +108,10 @@ conversion:table(nofallback) { :intvector{ 0,1,4,4,4,4,5,5,5,5,6,7,7,7,7,8,9,11 }, :int{1}, :int{0}, "", "&C", :bin{""} } - { + { // gb18030-2022 changes mapping for 0xFE90 "gb18030", :bin{ 618130fc318130fc8181303c3e813cfc817afe90a8bc }, - "a\u05ed\\x810\u9f07\\x810<>\\x81<\u9f07z\ue854\u1e3f", + "a\u05ed\\x810\u9f07\\x810<>\\x81<\u9f07z\u9fba\u1e3f", :intvector{ 0,1,5,5,5,5,6,7,9,9,9,9,10,11,12,13,13,13,13,14,15,17,18,20 }, :int{1}, :int{0}, "", "&C", :bin{""} } @@ -826,6 +826,27 @@ conversion:table(nofallback) { :intvector{ 0, 4, 8, 12 }, :int{1}, :int{0}, "", "?", :bin{""} } + { // gb18030->U 2005 vs 2022 part 1 (gb18030 2-byte) + "gb18030", + :bin{ A6D9 A6DA A6DB A6DC A6DF A6EC A6ED A6F3 FE59 FE61 FE66 FE67 FE6D FE7E FE90 FEA0 }, + "\uFE10\uFE12\uFE11\uFE13\uFE16\uFE17\uFE18\uFE19\u9FB4\u9FB5\u9FB6\u9FB7\u9FB8\u9FB9\u9FBA\u9FBB", // -2005: "\uE78D\uE78E\uE78F\uE790\uE793\uE794\uE795\uE796\uE81E\uE826\uE82B\uE82C\uE832\uE843\uE854\uE864" + :intvector{ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 }, + :int{1}, :int{0}, "", "?", :bin{""} + } + { // gb18030->U 2005 vs 2022 part 2 (gb18030 4-byte) + "gb18030", + :bin{ 82359037 82359038 82359039 82359130 82359131 82359132 82359133 82359134 84318236 84318239 84318332 84318335 }, + "\u9FB4\u9FB5\u9FB6\u9FB7\u9FB8\u9FB9\u9FBA\u9FBB\uFE10\uFE13\uFE16\uFE19", // unchanged from 2005 mapping + :intvector{ 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44 }, + :int{1}, :int{0}, "", "?", :bin{""} + } + { // gb18030->U 2005 vs 2022 part 3 (gb18030 4-byte), non-changing mappings next to or in linear ranges partially overridden by new explicit maps + "gb18030", + :bin{ 82358F33823590368235913584318235843183368431843684318537 }, + "\u9FA6\u9FB3\u9FBC\uFE0F\uFE1A\uFE24\uFE2F", + :intvector{ 0, 4, 8, 12, 16, 20, 24 }, + :int{1}, :int{0}, "", "?", :bin{""} + } { "x11-compound-text", :bin{ 1b242944b5ac1b2d41a5e31b2d43d5f51b2d4dd01b2d41411b2d43bc1b2d42ff1b2d54df1b2d44c0b31b2d46b41b2d47b01b2d48e01b2d4ca1 }, @@ -1817,13 +1838,34 @@ conversion:table(nofallback) { :intvector{}, :int{1}, :int{0}, "", "0", "" } - { + { // gb18030-2022 changes mappings for 0xA6DC,0xA6DB "gb18030", - "\U00020087\ue790\ue78f\u1e3f", + "\U00020087\ufe13\ufe11\u1e3f", :bin{ 95329031a6dca6dba8bc }, :intvector{ 0,0,0,0,2,2,3,3,4,4 }, :int{1}, :int{0}, "", "0", "" } + { // U->gb18030 2005 vs 2022 part 1 (gb18030 2-byte) + "gb18030", + "\uFE10\uFE12\uFE11\uFE13\uFE16\uFE17\uFE18\uFE19\u9FB4\u9FB5\u9FB6\u9FB7\u9FB8\u9FB9\u9FBA\u9FBB", // -2005: "\uE78D\uE78E\uE78F\uE790\uE793\uE794\uE795\uE796\uE81E\uE826\uE82B\uE82C\uE832\uE843\uE854\uE864" + :bin{ A6D9A6DAA6DBA6DCA6DFA6ECA6EDA6F3FE59FE61FE66FE67FE6DFE7EFE90FEA0 }, + :intvector{ 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15 }, + :int{1}, :int{0}, "", "0", "" + } + { // U->gb18030 2005 vs 2022 part 2 (gb18030 fallback mappings from Unicode PUA) + "gb18030", + "\uE78D\uE793\uE794\uE795\uE796\uE81E\uE826\uE82B\uE82C\uE832\uE843\uE854\uE864", + :bin{ A6D9A6DFA6ECA6EDA6F3FE59FE61FE66FE67FE6DFE7EFE90FEA0 }, + :intvector{ 0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12 }, + :int{1}, :int{0}, "", "0", "" + } + { // U->gb18030 2005 vs 2022 part 3 (gb18030 4-byte), non-changing mappings next to or in linear ranges partially overridden by new explicit maps + "gb18030", + "\u9FA6\u9FB3\u9FBC\uFE0F\uFE1A\uFE24\uFE2F", + :bin{ 82358F33823590368235913584318235843183368431843684318537 }, + :intvector{ 0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6 }, + :int{1}, :int{0}, "", "0", "" + } { "UTF-7", "\u00a3I\u00a3\u00a4", diff --git a/icu4j/main/shared/data/icudata.jar b/icu4j/main/shared/data/icudata.jar index d2989f6501e3..a2e0daf50910 100644 --- a/icu4j/main/shared/data/icudata.jar +++ b/icu4j/main/shared/data/icudata.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:149ffc15b2c8445d90afefbbdaffdd446a6d78181e1693d3da178a54811bce8f -size 14330624 +oid sha256:49f886698feb647c2dcfb10d6f872601280bf8783483456a706dd45549308875 +size 14330800 diff --git a/icu4j/main/shared/data/icutzdata.jar b/icu4j/main/shared/data/icutzdata.jar index 89153f23c85f..04f3b213463f 100644 --- a/icu4j/main/shared/data/icutzdata.jar +++ b/icu4j/main/shared/data/icutzdata.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d47b16bcbb1d55cde6c82234159dd11daeae9fbc7a639ffa837b7abf43afc17 +oid sha256:2903ecb7a300f5d52e7636addfe2756cbdb00262835a787379d7aa6456c0349a size 94829 diff --git a/icu4j/main/shared/data/testdata.jar b/icu4j/main/shared/data/testdata.jar index 148a56dc59a5..f85b1e6fd6ce 100644 --- a/icu4j/main/shared/data/testdata.jar +++ b/icu4j/main/shared/data/testdata.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6478e18e5392984bcb40946bf4ca076e0f9fd04fc18fabf47b8b01f4295b740d -size 831605 +oid sha256:1cda304595c1fa919460b28de344a541938d5ed91af9f3089ccff9ce2effd440 +size 831983 diff --git a/icu4j/maven-build/maven-icu4j-datafiles/src/main/resources/com/ibm/icu/impl/data/icudt73b/gb18030.cnv b/icu4j/maven-build/maven-icu4j-datafiles/src/main/resources/com/ibm/icu/impl/data/icudt73b/gb18030.cnv index d27d6fefb9b82a9d0949a29219b24921d23c719b..ecd0888e40ed901ebc02543181f46d8e93d23f27 100644 GIT binary patch delta 564 zcmWmBOK1~89LMpQB)Ek_o||OTLo5mfr3Q;Mx^1*-0?X*GHwCe3>p?wevGpLB^rfgE z3aNs^I6+N!GcPQf*yqb`g7pR=eMVU*>cIhcGq8A@Nhm- zi8lIt?-))!3NzOHgz?_{jE@Gr*Na}pzdf(2ym^qZZATcBlduy`!K1JSk3k0>htseN z&cJRs3s1l~#`W8i}{h)s#Ay5(h>f)u6@ zMM$M6#i*6iq*EJp&~DmEyJ!#Xr7YzrP8zjShPKlVYN5o_eXD1NH_OS^2kC~iKXoHz z>pi+Ar}Q`aV%vHBt*l9>{XnKCvy^(Y(juqrrE|P7CufX}#wMd++)TX|hPWvD#U*iB zToG4=6!(N9YI1hvpjkDgSvD)?1@oa5u~aK+#jLocSqW=G&N;bW{(gfeu;wIh^Pha( zdROUlhwRuLp48@DCI59^DY$=?e)o?u;I1lzET9b8!+m_&-fHt#bzWDw_5WAdzEOU< z&UKZ?tV5Y_UX1g4el1_(PQK*X|13#|@j!TeI*Cr9vuFSnQQ28O=XKk YKBEQn1udfQ=m+{WQfY907rf(ve>H2#asU7T delta 341 zcmV-b0jmD+nhv0u4v^iEp%)+o1lIrn000XB0000004yK?0dWif0hfRSiNFH@0qcOH z6ag%wq%FcW=Z)u%=a1)*=aJ`<=ac?5{x<$O{yP3Y{y_dc{yzRe{zCpk{zT`L=av3D z{yhFS{y6?I=a#eD?`(l8=pHqmHX1e#E{rahIc_-^=q5SOIo~>SInd}U=qx)U~NqtFzNrOp+Nrp+ENt;QxNw(-z=v7Rk zOrK1kOrcD7OrlK_O%zQPO%_cTO&CoXO|Ix9ngUC`mmqTiFsFuB117h|eFLfwnyQn! diff --git a/icu4j/maven-build/maven-icu4j-test-datafiles/src/main/resources/com/ibm/icu/dev/data/testdata/conversion.res b/icu4j/maven-build/maven-icu4j-test-datafiles/src/main/resources/com/ibm/icu/dev/data/testdata/conversion.res index fa88f8faa09abb415a5e270efee35d5645156a05..a61b4b8d676cfba5822470e352c0fc30e40332a6 100644 GIT binary patch delta 8267 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