On Mon, Aug 09, 2021 at 10:58:19AM +0200, Ingo Schwarze wrote:
> Nab wrote on Sun, Aug 08, 2021 at 03:24:53PM +0200:
> > tbl's -Thtml ignores font requests;
> Not in CVS HEAD; see https://cvsweb.bsd.lv/mandoc/tbl_html.c revision 1.34,
> committed on May 16 earlier this year.
Oh, indeed. I tested and based my patch on 1.14.5 from Debian,
didn't realise that's almost two years old by now.
Will use the CVS next time.
> I started from your patch and changed a few aspects:
> * You couldn't possibly know that i'm trying to work towards a
> unified system for identifying fonts using the mandoc.h
> enum mandoc_esc ESCAPE_FONT* identifiers. Having different
> font identifiers for each output module is not good.
> So i added ESCAPE_FONTCB and ESCAPE_FONTCI and used those.
> A nice side effect is that CB and CI now work in HTML
> for all of \f, .ft, and tbl(7) f and that tbl(7) fBI
> now also works for terminal output.
> >
text |
> > text |
> > text |
> These become:
> text |
> text |
This is great news! A bunch of my pages use C[BI] and the HTML renders
look much better, thanks!
> * GNU tbl(1) appears to ignore space characters between the f
> modifier and the font name, so "lf B" is the same as "lfB".
Huh, so it does! That's not explicitly mentioned by the manual and so
I didn't think to test it. Now, tbl(1) says
Key characters can be separated by spaces or tabs.
so consider the following document:
-- >8 --
.TS
lfBI lf BI lf BI .
a b c
.TE
-- >8 --
(In order, none, space, tab follow 'f';
base64: LlRTCmxmQkkJbGYgQkkJbGYJQkkJLgphCWIJYwouVEUK)
groff renders it with a, b, and c as BI,
but mandoc with your patch with a+b as BI and c as R, with -Tlint:
mandoc: ./q.1:2:14: WARNING: unknown font, skipping request: TS f BI .
If you change tbl_layout.c L171 to match L75:
-- >8 --
- while (p[*pos] == ' ')
+ while (p[*pos] == ' ' || p[*pos] == '\t')
-- >8 --
and L187:
-- >8 --
- if (strchr(" .", p[*pos + isz]) == NULL)
+ if (strchr(" \t.", p[*pos + isz]) == NULL)
-- >8 --
The document renders correctly.
> > Renders to a teletype with the expected fonts:
> > b, ul, bul; b, ul, bul; normal, b, ul
> Not quite. The expected output for lbi is ul, not bul.
> The i overrides the b rather than add to it.
> So lbi is the same as lfI, not as lfBI.
Indeed, it looks like I got confused by the groff parsing
and thought it'd accumulate instead.
> Could you please check out from CVS (instead of the last release),
> apply the following patch, and tell me whether it looks reasonable
> and works for you?
Yeah, save for the tab thing above, I haven't managed to fault it,
in tests or real pages.
> When this gets committed, i will credit you for reporting the
> missing feature. Do i understand correctly that "Nabija" is your
> first name and "Czleweli" your last name?
They aren't, but either "наб" or "nabijaczleweli" is fine.
Best,
наб