This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
mktables: Give correct \X defn for earlier Unicode
authorKarl Williamson <public@khwilliamson.com>
Fri, 30 Mar 2012 03:59:15 +0000 (21:59 -0600)
committerKarl Williamson <public@khwilliamson.com>
Sat, 2 Jun 2012 14:29:17 +0000 (08:29 -0600)
The comment removed in this commit was wrong.  It is possible to get
grapheme cluster boundaries without the extended ones.  And that is what
this commit does, for Unicode releases that have the GCB property, but
not the extended version, back to Unicode 4.0.

lib/unicore/mktables

index 965dd3a..796c2bf 100644 (file)
@@ -13022,7 +13022,7 @@ sub compile_perl() {
 
     # The 'extended' grapheme cluster came in 5.1.  The non-extended
     # definition differs too much from the traditional Perl one to use.
-    if (defined $gcb->table('SpacingMark')) {
+    if (defined $gcb->table('Control')) {
 
         # Note that assumes hst is defined; it came in an earlier release than
         # GCB.  In the line below, two negatives means: yes hangul
@@ -13033,8 +13033,18 @@ sub compile_perl() {
                     + $gcb->table('LF'));
         $begin->add_comment('For use in \X; matches: Hangul_Syllable | ! Control');
 
-        $extend += $gcb->table('Extend') + $gcb->table('SpacingMark');
-        $extend->add_comment('For use in \X; matches: Extend | SpacingMark');
+        $extend += $gcb->table('Extend');
+        my $comment = 'For use in \X; matches: Extend';
+        if (defined $gcb->table('SpacingMark')) {
+            $extend += $gcb->table('SpacingMark');
+            $comment .= ' | SpacingMark';
+        }
+        $extend->add_comment($comment);
+
+        if (!defined $gcb->table('Prepend')) {
+            my $table = $gcb->add_match_table('Prepend');
+            push @tables_that_may_be_empty, $table->complete_name;
+        }
     }
     else {    # Old definition, used on early releases.
         $extend += $gc->table('Mark')