diff options
author | Tatsuya Kinoshita <tats@debian.org> | 2021-01-02 00:20:37 +0000 |
---|---|---|
committer | Tatsuya Kinoshita <tats@debian.org> | 2021-01-02 00:20:37 +0000 |
commit | 1d0ba25a660483da1272a31dd077ed94441e3d9f (patch) | |
tree | 1d8dee52cd1e3d340fe178a8193dc96c4496db84 /libwc/ambwidth_map.awk | |
parent | Merge branch 'cvstrunk' into upstream (diff) | |
download | w3m-1d0ba25a660483da1272a31dd077ed94441e3d9f.tar.gz w3m-1d0ba25a660483da1272a31dd077ed94441e3d9f.zip |
New upstream version 0.5.3+git20210102upstream/0.5.3+git20210102upstream
Diffstat (limited to 'libwc/ambwidth_map.awk')
-rw-r--r-- | libwc/ambwidth_map.awk | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/libwc/ambwidth_map.awk b/libwc/ambwidth_map.awk index 8544f58..1d9d25f 100644 --- a/libwc/ambwidth_map.awk +++ b/libwc/ambwidth_map.awk @@ -3,9 +3,15 @@ BEGIN { i = 0; } $2 == "A" { - code = sprintf("0x%s", $1); - if (strtonum(code) < 0x10000) { - map[i] = code + code = code2 = strtonum(sprintf("0x%s", $1)) + if (match($1, /[.]+[0-9A-Fa-f]+/)) { + s = substr($1, RSTART, RLENGTH) + sub(/[.]+/, "0x", s) + code2 = strtonum(s) + } + for (; code <= code2; code++) { + if (code >= 0x10000) { break } + map[i] = sprintf("0x%04X", code) i++; } } @@ -15,28 +21,14 @@ END { prev = strtonum(map[0]); for (j = 1; j < i; j++) { cur = strtonum(map[j]); - if (match(map[j], "[.]+")) { + if (cur - prev > 1) { map2[n] = sprintf("%s, %s", start, map[j - 1]); n++; - gsub("[.]+", ", 0x", map[j]) - map2[n] = map[j]; - n++; - start = map[j + 1]; - cur = strtonum(start); - } else { - if (cur - prev > 2) { - map2[n] = sprintf("%s, %s", start, map[j - 1]); - start = map[j]; - n++; - } - - if (j == i - 1) { - map2[n] = sprintf("%s, %s", start, map[j]); - n++; - } + start = map[j]; } prev = cur; } + if (i > 0) { map2[n] = sprintf("%s, %s", start, map[i - 1]); n++ } printf("static wc_map ucs_ambwidth_map[] = {\n"); for (j = 0; j < n; j++) { |