diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2014-08-13 20:34:29 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2014-08-13 20:34:29 +0000 |
commit | c723dfca801f93364fefe102f1daa270ad740d4f (patch) | |
tree | 1dcdbec09fc85e3b795b25697473b85609220b81 /term_ps.c | |
parent | ad2b1e6bad9b1abd3a86026b76e5fb100aaca2e4 (diff) | |
download | mandoc-c723dfca801f93364fefe102f1daa270ad740d4f.tar.gz |
Begin cleaning up scaling units.
Start with the horizontal terminal specifiers, making sure that they match
up with troff.
Then move on to PS, PDF, and HTML, noting that we stick to the terminal
default width for "u".
Lastly, fix some completely-wrong documentation and note that we diverge
from troff w/r/t "u".
Diffstat (limited to 'term_ps.c')
-rw-r--r-- | term_ps.c | 38 |
1 files changed, 24 insertions, 14 deletions
@@ -1115,31 +1115,41 @@ ps_hspan(const struct termp *p, const struct roffsu *su) * All of these measurements are derived by converting from the * native measurement to AFM units. */ - switch (su->unit) { - case SCALE_CM: - r = PNT2AFM(p, su->scale * 28.34); - break; - case SCALE_IN: - r = PNT2AFM(p, su->scale * 72.0); - break; - case SCALE_PC: - r = PNT2AFM(p, su->scale * 12.0); + case SCALE_BU: + /* + * Traditionally, the default unit is fixed to the + * output media. So this would refer to the point. In + * mandoc(1), however, we stick to the default terminal + * scaling unit so that output is the same regardless + * the media. + */ + r = PNT2AFM(p, su->scale * 72.0 / 240.0); break; - case SCALE_PT: - r = PNT2AFM(p, su->scale * 100.0); + case SCALE_CM: + r = PNT2AFM(p, su->scale * 72.0 / 2.54); break; case SCALE_EM: r = su->scale * fonts[(int)TERMFONT_NONE].gly[109 - 32].wx; break; - case SCALE_MM: - r = PNT2AFM(p, su->scale * 2.834); - break; case SCALE_EN: r = su->scale * fonts[(int)TERMFONT_NONE].gly[110 - 32].wx; break; + case SCALE_IN: + r = PNT2AFM(p, su->scale * 72.0); + break; + case SCALE_MM: + r = su->scale * + fonts[(int)TERMFONT_NONE].gly[109 - 32].wx / 100.0; + break; + case SCALE_PC: + r = PNT2AFM(p, su->scale * 12.0); + break; + case SCALE_PT: + r = PNT2AFM(p, su->scale * 1.0); + break; case SCALE_VS: r = su->scale * p->ps->lineheight; break; |