ref: 453722db8e0e7319c35a40eb592d7ead7d6d0211
parent: f7e6d51a75fb07685f64d16985363a3b2d79b52f
author: Werner Lemberg <[email protected]>
date: Sat Dec 5 08:20:30 EST 2015
* src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces. Instead, reduce multiple spaces to a single one. We need this later for supporting character clusters in `afblue.dat'.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2015-12-05 Werner Lemberg <[email protected]>
+ * src/tools/afblue.pl (convert_ascii_chars): Don't ignore spaces.
+
+ Instead, reduce multiple spaces to a single one. We need this later
+ for supporting character clusters in `afblue.dat'.
+
+2015-12-05 Werner Lemberg <[email protected]>
+
* src/autofit/afblue.hin (GET_UTF8_CHAR): Use `do...while(0)'.
* src/autofit/afblue.h: Regenerated.
--- a/src/tools/afblue.pl
+++ b/src/tools/afblue.pl
@@ -38,7 +38,8 @@
my $curr_enum_element; # Name of the current enumeration element.
my $curr_offset; # The offset relative to current aux. variable.
-my $curr_elem_size; # The size of the current string or block.
+my $curr_elem_size; # The number of non-space characters in the current string or
+ # the number of elements in the current block.
my $have_sections = 0; # Boolean; set if start of a section has been seen.
my $have_strings; # Boolean; set if current section contains strings.
@@ -159,12 +160,14 @@
# A series of ASCII characters in the printable range.
my $s = shift;
- # We ignore spaces.
- $s =~ s/ //g;
+ # We reduce multiple space characters to a single one.
+ $s =~ s/ +/ /g;
- my $count = $s =~ s/\G(.)/'$1', /g;
- $curr_offset += $count;
- $curr_elem_size += $count;
+ # Count all non-space characters. Note that `()' applies a list context
+ # to the capture that is used to count the elements.
+ $curr_elem_size += () = $s =~ /[^ ]/g;
+
+ $curr_offset += $s =~ s/\G(.)/'$1', /g;
return $s;
}