diff options
author | Thorsten Glaser <tg@mirbsd.de> | 2017-07-14 14:02:37 +0200 |
---|---|---|
committer | Mike FABIAN <mfabian@redhat.com> | 2017-08-17 11:06:08 +0200 |
commit | 580be3035d2e0f479c4ac955bf719b0bf936f5cf (patch) | |
tree | 9cd75f6c3c3dd06ba0df188550202a38f42a64cd /localedata | |
parent | 038d1cafafb3094a9fbebd35f4aa8d0ebae0e55b (diff) | |
download | glibc-580be3035d2e0f479c4ac955bf719b0bf936f5cf.tar.gz glibc-580be3035d2e0f479c4ac955bf719b0bf936f5cf.tar.xz glibc-580be3035d2e0f479c4ac955bf719b0bf936f5cf.zip |
UnicodeData has precedence over EastAsianWidth
[BZ #19852] [BZ #21750] * unicode-gen/utf8_gen.py: Process EastAsianWidth lines before UnicodeData lines so the latter have precedence; remove hack to group output by EastAsianWidth ranges.
Diffstat (limited to 'localedata')
-rwxr-xr-x | localedata/unicode-gen/utf8_gen.py | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/localedata/unicode-gen/utf8_gen.py b/localedata/unicode-gen/utf8_gen.py index ab03e750a6..12f01d8963 100755 --- a/localedata/unicode-gen/utf8_gen.py +++ b/localedata/unicode-gen/utf8_gen.py @@ -221,28 +221,20 @@ def process_width(outfile, ulines, elines): ''' width_dict = {} - for line in ulines: - fields = line.split(";") - if fields[4] == "NSM" or fields[2] == "Cf": - width_dict[int(fields[0], 16)] = unicode_utils.ucs_symbol( - int(fields[0], 16)) + '\t0' - for line in elines: - # If an entry in EastAsianWidth.txt is found, it overrides entries in - # UnicodeData.txt: fields = line.split(";") if not '..' in fields[0]: - width_dict[int(fields[0], 16)] = unicode_utils.ucs_symbol( - int(fields[0], 16)) + '\t2' + code_points = (fields[0], fields[0]) else: code_points = fields[0].split("..") - for key in range(int(code_points[0], 16), - int(code_points[1], 16)+1): - if key in width_dict: - del width_dict[key] - width_dict[int(code_points[0], 16)] = '{:s}...{:s}\t2'.format( - unicode_utils.ucs_symbol(int(code_points[0], 16)), - unicode_utils.ucs_symbol(int(code_points[1], 16))) + for key in range(int(code_points[0], 16), + int(code_points[1], 16)+1): + width_dict[key] = unicode_utils.ucs_symbol(key) + '\t2' + for line in ulines: + fields = line.split(";") + if fields[4] == "NSM" or fields[2] == "Cf": + width_dict[int(fields[0], 16)] = unicode_utils.ucs_symbol( + int(fields[0], 16)) + '\t0' for key in sorted(width_dict): outfile.write(width_dict[key]+'\n') |