Alexandre Julliard : make_unicode: Use codepage 949 to add default mappings to codepage 20949.

Alexandre Julliard julliard at winehq.org
Thu Mar 11 15:59:34 CST 2021


Module: wine
Branch: master
Commit: 6f68543692a7588daa581d00c475715395036b15
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=6f68543692a7588daa581d00c475715395036b15

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Mar 11 12:46:04 2021 +0100

make_unicode: Use codepage 949 to add default mappings to codepage 20949.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernelbase/kernelbase.rgs |  74 ++++++++++++++++++++---------------------
 nls/c_20949.nls                | Bin 177698 -> 177698 bytes
 tools/make_unicode             |  28 +++++++++++++---
 3 files changed, 60 insertions(+), 42 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,41 +10,6 @@ HKLM
                 {
                     Codepage
                     {
-                        val '37' = s 'c_037.nls'
-                        val '437' = s 'c_437.nls'
-                        val '500' = s 'c_500.nls'
-                        val '708' = s 'c_708.nls'
-                        val '737' = s 'c_737.nls'
-                        val '775' = s 'c_775.nls'
-                        val '850' = s 'c_850.nls'
-                        val '852' = s 'c_852.nls'
-                        val '855' = s 'c_855.nls'
-                        val '857' = s 'c_857.nls'
-                        val '860' = s 'c_860.nls'
-                        val '861' = s 'c_861.nls'
-                        val '862' = s 'c_862.nls'
-                        val '863' = s 'c_863.nls'
-                        val '864' = s 'c_864.nls'
-                        val '865' = s 'c_865.nls'
-                        val '866' = s 'c_866.nls'
-                        val '869' = s 'c_869.nls'
-                        val '874' = s 'c_874.nls'
-                        val '875' = s 'c_875.nls'
-                        val '932' = s 'c_932.nls'
-                        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'
@@ -61,8 +26,21 @@ HKLM
                         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'
@@ -75,8 +53,30 @@ HKLM
                         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'
+                        val '37' = s 'c_037.nls'
+                        val '437' = s 'c_437.nls'
+                        val '500' = s 'c_500.nls'
+                        val '708' = s 'c_708.nls'
+                        val '737' = s 'c_737.nls'
+                        val '775' = s 'c_775.nls'
+                        val '850' = s 'c_850.nls'
+                        val '852' = s 'c_852.nls'
+                        val '855' = s 'c_855.nls'
+                        val '857' = s 'c_857.nls'
+                        val '860' = s 'c_860.nls'
+                        val '861' = s 'c_861.nls'
+                        val '862' = s 'c_862.nls'
+                        val '863' = s 'c_863.nls'
+                        val '864' = s 'c_864.nls'
+                        val '865' = s 'c_865.nls'
+                        val '866' = s 'c_866.nls'
+                        val '869' = s 'c_869.nls'
+                        val '874' = s 'c_874.nls'
+                        val '875' = s 'c_875.nls'
+                        val '932' = s 'c_932.nls'
+                        val '936' = s 'c_936.nls'
+                        val '949' = s 'c_949.nls'
+                        val '950' = s 'c_950.nls'
                     }
                     Normalization
                     {
diff --git a/nls/c_20949.nls b/nls/c_20949.nls
index 1ee157af003..2ff92aec922 100644
Binary files a/nls/c_20949.nls and b/nls/c_20949.nls differ
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;




More information about the wine-cvs mailing list