File: find-wide-chars.pl

package info (click to toggle)
golang-github-ddevault-go-libvterm 0.0~git20190526.b7d861d-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 752 kB
  • sloc: ansic: 5,945; perl: 194; makefile: 113
file content (34 lines) | stat: -rw-r--r-- 618 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl

use strict;
use warnings;

use Unicode::UCD qw( charprop );

STDOUT->autoflush(1);

sub iswide
{
   my ( $cp ) = @_;

   my $width = charprop( $cp, "East_Asian_Width" ) or return;
   return $width eq "Wide" || $width eq "Fullwidth";
}

my ( $start, $end );
foreach my $cp ( 0 .. 0x1FFFF ) {
   iswide($cp) or next;

   if( defined $end and $end == $cp-1 ) {
      # extend the range
      $end = $cp;
      next;
   }

   # start a new range
   printf "  { %#04x, %#04x },\n", $start, $end if defined $start;

   $start = $end = $cp;
}

printf "  { %#04x, %#04x },\n", $start, $end if defined $start;