diff options
author | wlemb <wlemb> | 2002-03-29 16:41:33 +0000 |
---|---|---|
committer | wlemb <wlemb> | 2002-03-29 16:41:33 +0000 |
commit | 4451752f38555e3846bb8ce1b2122272dd2eeee9 (patch) | |
tree | 72f5451d9b1c05d41b1a804112b5a53002df32c6 /src | |
parent | ea73dc4b396b8aea506153fb5e4780fd57a5abf5 (diff) | |
download | groff-4451752f38555e3846bb8ce1b2122272dd2eeee9.tar.gz |
* doc/gnu.xpm: New image contributed by Emily Mulley.
* doc/Makefile (gnu.eps, gnu.png): Use pnmdepth.
(homepage.html): Be dependent on gnu.eps.
* doc/homepage.ms: Updated to new image.
* src/devices/grohtml/post-html.cc (html_printer): New member
`sbuf_prev_hpos'.
(html_printer::flush_sbuf, html_printer::set_char): Set it.
(html_printer::sbuf_continuation): Use it.
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/grohtml/post-html.cc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/devices/grohtml/post-html.cc b/src/devices/grohtml/post-html.cc index 22c6820e..9843f513 100644 --- a/src/devices/grohtml/post-html.cc +++ b/src/devices/grohtml/post-html.cc @@ -1160,6 +1160,7 @@ class html_printer : public printer { int sbuf_start_hpos; int sbuf_vpos; int sbuf_end_hpos; + int sbuf_prev_hpos; int sbuf_kern; style sbuf_style; int last_sbuf_length; @@ -2344,6 +2345,7 @@ void html_printer::flush_sbuf() output_hpos = sbuf_end_hpos; output_vpos = sbuf_vpos; last_sbuf_length = 0; + sbuf_prev_hpos = sbuf_end_hpos; overstrike_detected = FALSE; sbuf.clear(); } @@ -2496,8 +2498,15 @@ void html_printer::add_to_sbuf (unsigned char code, const string &s) int html_printer::sbuf_continuation (unsigned char code, const char *name, const environment *env, int w) { - if (sbuf_end_hpos == env->hpos) { + /* + * lets see whether the glyph is closer to the end of sbuf + */ + if ((sbuf_end_hpos == env->hpos) + || ((sbuf_prev_hpos < sbuf_end_hpos) + && (env->hpos < sbuf_end_hpos) + && ((sbuf_end_hpos-env->hpos < env->hpos-sbuf_prev_hpos)))) { add_to_sbuf(code, name); + sbuf_prev_hpos = sbuf_end_hpos; sbuf_end_hpos += w + sbuf_kern; return TRUE; } else { @@ -2509,6 +2518,7 @@ int html_printer::sbuf_continuation (unsigned char code, const char *name, if (env->hpos-sbuf_end_hpos < space_width) { add_to_sbuf(code, name); + sbuf_prev_hpos = sbuf_end_hpos; sbuf_end_hpos = env->hpos + w; return TRUE; } @@ -2599,6 +2609,7 @@ void html_printer::set_char(int i, font *f, const environment *env, int w, const add_to_sbuf(code, name); sbuf_end_hpos = env->hpos + w; sbuf_start_hpos = env->hpos; + sbuf_prev_hpos = env->hpos; sbuf_vpos = env->vpos; sbuf_style = sty; sbuf_kern = 0; |