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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#!/usr/bin/env perl
#################################################################################
# Author: Serge Kozlov #
# Date: 09/21/2005 #
# Purpose: The script produces a text file ../data/charset_utf8.txt #
# in UTF8 format. Each line contains one UTF8 character #
# between 20 and 07FF #
#################################################################################
genfile("../data/charset_utf8.txt", 33, 2047, "utf8");
genfile(">../data/charset_utf8.txt", 19968, 20479,"utf8");
#genfile("../data/charset_utf8.txt", 33, 2047, "utf8");
sub genfile ($$$$)
{
my $fn = shift;
my $i_from = shift;
my $i_to = shift;
my $typ = shift;
open F, ">$fn";
for ($i = $i_from; $i <= $i_to; $i++)
{
if (($i > 32) && ($i < 65533) && ($i != 65279))
{
if ($typ eq "utf8")
{
if ($i < 128)
{
print F pack("C", $i), "\n";
}
elsif (($i > 127) && ($i < 2048))
{
$b1 = (($i & 1984) >> 6) + 192;
$b2 = ($i & 63) + 128;
print F pack("C", $b1);
print F pack("C", $b2), "\n";
}
else
{
$b1 = (($i & 61440) >> 12) + 224;
$b2 = (($i & 4032) >> 6) + 128;
$b3 = ($i & 63) + 128;
print F pack("C", $b1);
print F pack("C", $b2);
print F pack("C", $b3), "\n";
}
}
elsif ($typ eq "ucs2")
{
print F pack("C", 0);
print F pack("C", $i);
print F pack("C", 0), "\n";
}
}
}
close F;
}
|