1#! /bin/awk -f
2
3# Correct Intellifont-based height metrics for several glyphs in
4# special font for TrueType CG Times (LaserJet 4000 and later).
5
6function scale(num)
7{
8  return int(num * em + 0.5)
9}
10
11BEGIN {
12  FS = "\t"
13  OFS = "\t"
14  em = 26346	# Intellifont (8782 DU/em) and hpftodit(1) multiplier of 3
15
16  ascent["integralcrvmid"] = scale(0.84358)
17  descent["integralcrvmid"] = scale(0.25006)
18  ascent["integralbt"] = scale(0.84358)
19  descent["integralbt"] = scale(0.15164)
20  ascent["lt"] = scale(0.84358)
21  descent["lt"] = scale(0.15164)
22  ascent["parenlefttp"] = scale(0.84358)
23  descent["parenlefttp"] = scale(0.15164)
24  ascent["bracelefttp"] = scale(0.84358)
25  descent["bracelefttp"] = scale(0.15164)
26  ascent["lk"] = scale(0.84358)
27  descent["lk"] = scale(0.15164)
28  ascent["braceleftmid"] = scale(0.84358)
29  descent["braceleftmid"] = scale(0.15164)
30  ascent["lb"] = scale(0.84358)
31  descent["lb"] = scale(0.15164)
32  ascent["parenleftbt"] = scale(0.84358)
33  descent["parenleftbt"] = scale(0.15164)
34  ascent["braceleftbt"] = scale(0.84358)
35  descent["braceleftbt"] = scale(0.15164)
36  ascent["rt"] = scale(0.84358)
37  descent["rt"] = scale(0.15164)
38  ascent["parenrighttp"] = scale(0.84358)
39  descent["parenrighttp"] = scale(0.15164)
40  ascent["bracerighttp"] = scale(0.84358)
41  descent["bracerighttp"] = scale(0.15164)
42  ascent["rk"] = scale(0.84358)
43  descent["rk"] = scale(0.15164)
44  ascent["bracerightmid"] = scale(0.84358)
45  descent["bracerightmid"] = scale(0.15164)
46  ascent["rb"] = scale(0.84358)
47  descent["rb"] = scale(0.15164)
48  ascent["parenrightbt"] = scale(0.84358)
49  descent["parenrightbt"] = scale(0.15164)
50  ascent["bracerightbt"] = scale(0.84358)
51  descent["bracerightbt"] = scale(0.15164)
52  ascent["parenrightex"] = scale(0.84358)
53  descent["parenrightex"] = scale(0.15164)
54  ascent["parenleftex"] = scale(0.84358)
55  descent["parenleftex"] = scale(0.15164)
56  ascent["bv"] = scale(0.84358)
57  descent["bv"] = scale(0.15164)
58  ascent["bracerightex"] = scale(0.84358)
59  descent["bracerightex"] = scale(0.15164)
60  ascent["braceleftex"] = scale(0.84358)
61  descent["braceleftex"] = scale(0.15164)
62  ascent["integralex"] = scale(0.84358)
63  descent["integralex"] = scale(0.15164)
64  ascent["bracketrightex"] = scale(0.84358)
65  descent["bracketrightex"] = scale(0.15164)
66  ascent["bracketleftex"] = scale(0.84358)
67  descent["bracketleftex"] = scale(0.15164)
68  ascent["barex"] = scale(0.84358)
69  descent["barex"] = scale(0.15164)
70}
71{
72  if ($2 != "\"" && ascent[$1]) {
73    n = split($2, temp, ",")
74    $2 = sprintf("%d,%d,%d", temp[1], ascent[$1], descent[$1])
75    # just in case there are additional metrics
76    for (i = 4; i <= n; i++)
77      $2 = $2 "," temp[i]
78  }
79  print $0
80}
81
82# EOF
83