From: Kristaps Dzonsons Date: Sun, 18 Oct 2009 11:52:18 +0000 (+0000) Subject: Fitted -man -Tascii with scaling units (.5i, etc.). X-Git-Tag: VERSION_1_9_9~18 X-Git-Url: https://git.cameronkatri.com/mandoc.git/commitdiff_plain/875d1ed3815d5169ba16d4c2b40ca30b885bdfdf Fitted -man -Tascii with scaling units (.5i, etc.). --- diff --git a/man_term.c b/man_term.c index d6582d59..b5196503 100644 --- a/man_term.c +++ b/man_term.c @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.37 2009/10/18 11:14:04 kristaps Exp $ */ +/* $Id: man_term.c,v 1.38 2009/10/18 11:52:18 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -140,6 +140,7 @@ static void print_foot(struct termp *, static void fmt_block_vspace(struct termp *, const struct man_node *); static int a2width(const char *); +static int a2height(const char *); void @@ -195,6 +196,46 @@ fmt_block_vspace(struct termp *p, const struct man_node *n) } +static int +a2height(const char *p) +{ + struct roffsu su; + double r; + + if ( ! a2roffsu(p, &su)) + return(1); + + switch (su.unit) { + case (SCALE_CM): + r = su.scale * 2; + break; + case (SCALE_IN): + r = su.scale * 6; + break; + case (SCALE_PC): + r = su.scale; + break; + case (SCALE_PT): + r = su.scale / 8; + break; + case (SCALE_MM): + r = su.scale / 1000; + break; + case (SCALE_VS): + r = su.scale; + break; + default: + r = su.scale - 1; + break; + } + + if (r < 0.0) + r = 0.0; + return(/* LINTED */(int) + r); +} + + static int a2width(const char *p) { @@ -435,7 +476,9 @@ pre_sp(DECL_ARGS) return(0); } - len = atoi(n->child->string); + assert(MAN_TEXT == n->child->type); + len = a2height(n->child->string); + if (0 == len) term_newln(p); for (i = 0; i < len; i++)