Home | History | Annotate | Line # | Download | only in generate
      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 
      6 function scale(num)
      7 {
      8   return int(num * em + 0.5)
      9 }
     10 
     11 BEGIN {
     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