From 6f68543692a7588daa581d00c475715395036b15 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 11 Mar 2021 12:46:04 +0100 Subject: [PATCH] make_unicode: Use codepage 949 to add default mappings to codepage 20949. Signed-off-by: Alexandre Julliard --- dlls/kernelbase/kernelbase.rgs | 86 ++++++++++++++++----------------- nls/c_20949.nls | Bin 177698 -> 177698 bytes tools/make_unicode | 28 +++++++++-- 3 files changed, 66 insertions(+), 48 deletions(-) diff --git a/dlls/kernelbase/kernelbase.rgs b/dlls/kernelbase/kernelbase.rgs index d35eb0a71a8..0d9dbd29c43 100644 --- a/dlls/kernelbase/kernelbase.rgs +++ b/dlls/kernelbase/kernelbase.rgs @@ -10,6 +10,49 @@ HKLM { Codepage { + val '10000' = s 'c_10000.nls' + val '10001' = s 'c_10001.nls' + val '10002' = s 'c_10002.nls' + val '10003' = s 'c_10003.nls' + val '10004' = s 'c_10004.nls' + val '10005' = s 'c_10005.nls' + val '10006' = s 'c_10006.nls' + val '10007' = s 'c_10007.nls' + val '10008' = s 'c_10008.nls' + val '10010' = s 'c_10010.nls' + val '10017' = s 'c_10017.nls' + val '10021' = s 'c_10021.nls' + val '10029' = s 'c_10029.nls' + val '10079' = s 'c_10079.nls' + val '10081' = s 'c_10081.nls' + val '10082' = s 'c_10082.nls' + val '1026' = s 'c_1026.nls' + val '1250' = s 'c_1250.nls' + val '1251' = s 'c_1251.nls' + val '1252' = s 'c_1252.nls' + val '1253' = s 'c_1253.nls' + val '1254' = s 'c_1254.nls' + val '1255' = s 'c_1255.nls' + val '1256' = s 'c_1256.nls' + val '1257' = s 'c_1257.nls' + val '1258' = s 'c_1258.nls' + val '1361' = s 'c_1361.nls' + val '20127' = s 'c_20127.nls' + val '20866' = s 'c_20866.nls' + val '20932' = s 'c_20932.nls' + val '20949' = s 'c_20949.nls' + val '21866' = s 'c_21866.nls' + val '28591' = s 'c_28591.nls' + val '28592' = s 'c_28592.nls' + val '28593' = s 'c_28593.nls' + val '28594' = s 'c_28594.nls' + val '28595' = s 'c_28595.nls' + val '28596' = s 'c_28596.nls' + val '28597' = s 'c_28597.nls' + val '28598' = s 'c_28598.nls' + val '28599' = s 'c_28599.nls' + val '28603' = s 'c_28603.nls' + val '28605' = s 'c_28605.nls' val '37' = s 'c_037.nls' val '437' = s 'c_437.nls' val '500' = s 'c_500.nls' @@ -34,49 +77,6 @@ HKLM val '936' = s 'c_936.nls' val '949' = s 'c_949.nls' val '950' = s 'c_950.nls' - val '1026' = s 'c_1026.nls' - val '1250' = s 'c_1250.nls' - val '1251' = s 'c_1251.nls' - val '1252' = s 'c_1252.nls' - val '1253' = s 'c_1253.nls' - val '1254' = s 'c_1254.nls' - val '1255' = s 'c_1255.nls' - val '1256' = s 'c_1256.nls' - val '1257' = s 'c_1257.nls' - val '1258' = s 'c_1258.nls' - val '1361' = s 'c_1361.nls' - val '10000' = s 'c_10000.nls' - val '10001' = s 'c_10001.nls' - val '10002' = s 'c_10002.nls' - val '10003' = s 'c_10003.nls' - val '10004' = s 'c_10004.nls' - val '10005' = s 'c_10005.nls' - val '10006' = s 'c_10006.nls' - val '10007' = s 'c_10007.nls' - val '10008' = s 'c_10008.nls' - val '10010' = s 'c_10010.nls' - val '10017' = s 'c_10017.nls' - val '10021' = s 'c_10021.nls' - val '10029' = s 'c_10029.nls' - val '10079' = s 'c_10079.nls' - val '10081' = s 'c_10081.nls' - val '10082' = s 'c_10082.nls' - val '20127' = s 'c_20127.nls' - val '20866' = s 'c_20866.nls' - val '21866' = s 'c_21866.nls' - val '28591' = s 'c_28591.nls' - val '28592' = s 'c_28592.nls' - val '28593' = s 'c_28593.nls' - val '28594' = s 'c_28594.nls' - val '28595' = s 'c_28595.nls' - val '28596' = s 'c_28596.nls' - val '28597' = s 'c_28597.nls' - val '28598' = s 'c_28598.nls' - val '28599' = s 'c_28599.nls' - val '28603' = s 'c_28603.nls' - val '28605' = s 'c_28605.nls' - val '20932' = s 'c_20932.nls' - val '20949' = s 'c_20949.nls' } Normalization { diff --git a/nls/c_20949.nls b/nls/c_20949.nls index 1ee157af00355df9e5539da91cda687394d43399..2ff92aec922ae54b03d377b3e7ea99229fdada0d 100644 GIT binary patch delta 655 zcmb8r&1(}u7zf~)G+5eyz-p{C!GqouJO;Po7hV(u4}u4yD0ry{@lX&%DCosg4tt*2 zshurJTHHtism&T~)nxM>tksy2Nuyhs)==R60^w!Cdh%SqJtJu zgH~yi&fv3PAEM{LgK;Furq_Y)25?e`XahDY=qx=*yaVp;x({@MI0hc< zk&bnYSE7kwv$0lDK7UKjwStX$un?1r<)*8ww0%V{|5S!1`$^+bKG*4L`~R-Z z@2$9$C~U;k6r0n8rqYgOR!aKYr?jMs*=BivD&<$M!GoSr6MPPzS%#s*iMdmH-S}G1yorPxo?8|8a=>%U zZ8!rBDZ)<-L911d_=!y3k^p%}-jnXl0$C&<$Vc*t1bcOeC?rfGBuZkvI!+QKN%-_@ G!^OXAw`ynr delta 300 zcmZ4VhHKFqt_^S4w?B|&EMwf9#L2R*-k!mpVap;Ad41vXh4u`KSAf_nfh>E5V+;2! z{J!$X%B4X0ON*8)T(jug$~8dwpDVtt__bm^SQkhg2rdNcgYh8rA{4Rx3s)iW*REKz z5~zv`svT&+u-Q*GVA--+<3}3%PP{~*iwg0WpmmT|k1ER#g< c^rjd_A&}q=&h08&nCuvV${VIX+REer0J86DZU6uP diff --git a/tools/make_unicode b/tools/make_unicode index 053adb92602..1e0dbe419e1 100755 --- a/tools/make_unicode +++ b/tools/make_unicode @@ -945,10 +945,9 @@ sub dump_eucjp_codepage() ################################################################ # build Korean Wansung table from the KSX1001 file -# FIXME: compare to Windows we should add extra mappings for -# characters added from Unicode 1.1 to enhance the completeness. -sub dump_krwansung_codepage() +sub dump_krwansung_codepage(@) { + my @cp949 = @_; @cp2uni = (); @glyph2uni = (); @lead_bytes = (); @@ -980,6 +979,24 @@ sub dump_krwansung_codepage() } close $INPUT; + # get some extra mappings from cp 949 + my @defined_lb; + map { $defined_lb[$_] = 1; } @lead_bytes; + foreach my $i (0x0000 .. 0xffff) + { + next if ($i >= 0x1100 && $i <= 0x11ff); # range not used in 20949 + next unless defined $cp949[$i]; + if ($cp949[$i] >= 0xff) + { + # only add chars for lead bytes that exist in 20949 + my $hi = $cp949[$i] >> 8; + my $lo = $cp949[$i] & 0xff; + next unless $defined_lb[$hi]; + next unless $lo >= 0xa1 && $lo <= 0xfe; + } + add_mapping( $cp949[$i], $i ); + } + output_codepage_file( 20949 ); } @@ -2341,6 +2358,8 @@ sub dump_msdata_codepage($) close $INPUT; output_codepage_file( $codepage ); + + if ($codepage == 949) { dump_krwansung_codepage( @uni2cp ); } } ################################################################ @@ -2758,7 +2777,7 @@ sub dump_registry_script($%) $i == $#subkeys && $def ? " = s '$def'" : "", 4 * $indent, ""; $indent++; } - foreach my $v (@vals) { printf OUTPUT "%*sval $v\n", 4 * $indent, ""; } + foreach my $v (sort @vals) { printf OUTPUT "%*sval $v\n", 4 * $indent, ""; } for (my $i = 0; $i < @subkeys; $i++) { printf OUTPUT "%*s}\n", 4 * --$indent, ""; } } while ($indent) { printf OUTPUT "%*s}\n", 4 * --$indent, ""; } @@ -2813,7 +2832,6 @@ dump_norm_table( "nls/normidna.nls" ); dump_sortkey_table( "nls/sortdefault.nls", "Windows 10 Sorting Weight Table.txt" ); foreach my $file (@allfiles) { dump_msdata_codepage( $file ); } dump_eucjp_codepage(); -dump_krwansung_codepage(); dump_registry_script( "dlls/kernelbase/kernelbase.rgs", %registry_keys ); exit 0;