/contrib/groff/font/devlj4/generate/special.awk

https://bitbucket.org/freebsd/freebsd-head/ · AWK · 82 lines · 72 code · 5 blank · 5 comment · 4 complexity · 0d769c5141e47f64f52b4e32d7e5aa86 MD5 · raw file

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