1#!/bin/sh
2
3
4add_fallback()
5{
6    echo "      - for $3..."
7    cat _tmp3 | grep "$1" | while read i ; do
8        code=`echo $i | cut -c1-6`
9        echo "$code	$2" >> _tmp5
10    done
11}
12
13
14echo "  * getting list of needed unicode characters..."
15
16cat mappings/*.TXT | sed -n '/^0x../p' | \
17    cut -f2,4 | sort | uniq | sed -n '/^0x/p' > _tmp1
18cat _tmp1 | cut -f1 | sort | uniq > _tmp2
19
20
21echo "  * making unique list of unicode characters meanings..."
22
23rm -f _tmp3
24cat _tmp2 | while read i ; do
25    sed -n "/^$i/p" _tmp1 | (read t ; echo "$t" >> _tmp3)
26done
27
28cp _tmp3 UnicodeChars
29
30echo "  * creating one-byte fallback tables..."
31
32rm -f Fallbacks _tmp5
33
34echo "      - for latin capital letters..."
35
36cat _tmp3 | grep 'LATIN CAPITAL LETTER [A-Z]$' > _tmp6
37cat _tmp3 | grep 'LATIN CAPITAL LETTER [A-Z] WITH' >> _tmp6
38cat _tmp6 | sort +2 > _tmp4
39
40cat _tmp4 | while read i ; do
41    code=`echo $i | cut -c1-6`
42    fallb=`echo $i | cut -c8-29`
43    cat _tmp4 | fgrep "$fallb" | cut -c1-6 | (read i ;
44        echo "$code	$i" >> _tmp5)
45done
46
47
48echo "      - for latin small letters..."
49
50cat _tmp3 | grep 'LATIN SMALL LETTER [A-Z]$' > _tmp6
51cat _tmp3 | grep 'LATIN SMALL LETTER [A-Z] WITH' >> _tmp6
52cat _tmp6 | sort +2 > _tmp4
53
54cat _tmp4 | while read i ; do
55    code=`echo $i | cut -c1-6`
56    fallb=`echo $i | cut -c8-27`
57    cat _tmp4 | fgrep "$fallb" | cut -c1-6 | (read i ;
58        echo "$code	$i" >> _tmp5)
59done
60
61
62add_fallback "DOUBLE .*QUOTATION MARK" "0x0022" "double quotations"
63add_fallback "SINGLE .*QUOTATION MARK" "0x0027" "single quotations"
64add_fallback "DASH" "0x002D" "dashes"
65
66
67
68echo "  * removing infinite loops from fallback tables..."
69
70cat _tmp5 | grep -v '\(0x....\)	\1' | sort > Fallbacks
71
72rm -f _tmp1 _tmp2 _tmp3 _tmp4 _tmp5 _tmp6
73
74