From owner-man-jp@jp.freebsd.org  Mon Jun 16 02:04:35 1997
Received: by jaz.jp.freebsd.org (8.8.5+2.7Wbeta5/8.7.3) id CAA26335
	Mon, 16 Jun 1997 02:04:35 +0900 (JST)
Received: by jaz.jp.freebsd.org (8.8.5+2.7Wbeta5/8.7.3) with ESMTP id CAA26330
	for <man-jp@jp.freebsd.org>; Mon, 16 Jun 1997 02:04:33 +0900 (JST)
Received: from localhost (ppp161.yk.rim.or.jp [202.247.134.161]) by mail.yk.rim.or.jp (8.8.5/3.4Wbeta6-rim1.1) with ESMTP id CAA25463; Mon, 16 Jun 1997 02:04:29 +0900 (JST)
Message-Id: <199706151704.CAA25463@mail.yk.rim.or.jp>
From: k-horik@yk.rim.or.jp
To: man-jp@jp.freebsd.org
In-reply-to: Your message of "Sun, 15 Jun 1997 03:19:34 JST."
             <199706141820.DAA07191@mail.yk.rim.or.jp> 
Date: Mon, 16 Jun 1997 02:03:43 +0900
Reply-To: man-jp@jp.freebsd.org
Precedence: bulk
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: man-jp 139
Subject: [man-jp 139] Re: gtags.1 : space between =?ISO-2022-JP?B?GyRCJE4bKEI=?= and ' 
Errors-To: owner-man-jp@jp.freebsd.org
Sender: owner-man-jp@jp.freebsd.org

>  /usr/ports/japanese/groff/patches/patch-ab $B$,Ev$?$i$J$$$h$&$K$7$F(B 
> jp-groff $B$r:n$k$H!"F0:n$,85(B($B%*%j%8%J%k$N(B jgroff)$B$KLa$k(B($B$H;W$$$^$9(B)$B!#(B
>  $B$3$N%Q%C%A$O(B
> 	$B$[$2(B`$B$U$,(B'$B$[$K(B
> $B$_$?$$$JF~NO$r(B
> 	$B$[$2(B `$B$U$,(B' $B$[$K(B
> $B$HI=<($9$k$?$a$KF~$l$?$G$9$,!"$"$^$j8-$/$J$$$N$G!"(B
> 	$B$[$2(B'$B$U$,(B'$B$[$K(B
> $B$r(B
> 	$B$[$2(B' $B$U$,(B' $B$[$K(B
> $B$H$7$F$7$^$$$^$9(B :-)
> 
> > $B!!$"$s$^$j:Y$+$$$3$H5$$K$7$F$A$c$$$+$s$N$+$J$"!#(B
>  $B$$$(!"5$$,IU$$$F$$$F$=$N$&$AD>$=$&$H;W$C$F$?$N$G$9$,$=$N$^$^$K$J$C$F(B
> $B$^$7$?!#;~4V$,M-$C$?$i<j$rF~$l$F$_$^$9!#(B

 $B:n$C$F$_$^$7$?!#(B

 1. cd /usr/ports/japanese/groff
 2. make patch
 3. $B$3$N%Q%C%A$rEv$F$k(B
 4. make install
$B$7$F$_$F$/$@$5$$!#(B


 $B$3$N%Q%C%A$K$h$j!"(B " $B$H(B ' $B$NA08e$K6uGr$rF~$l$?$j>C$7$?$j$7$J$/$J$j$^$7$?!#(B
 $B$?$@$7!"(B
          $B$"(B`$B$$(B'$B$&(B   $B$"(B `$B$$(B'$B$&(B   $B$"(B` $B$$(B'$B$&(B   $B$"(B ` $B$$(B'$B$&(B
                     $B$"(B`$B$$(B '$B$&(B   $B$"(B`$B$$(B' $B$&(B   $B$"(B`$B$$(B ' $B$&(B $BEy(B
 $B$@$1$O(B
          $B$"(B `$B$$(B' $B$&(B
 $B$H$7$^$9!#(B
 $B:#8e$O!"(B
          $B$[$2$[$2(B'$B$U$K(B'$B$[$2$[$2(B
$B$O(B
          $B$[$2$[$2(B '$B$U$K(B' $B$[$2$[$2(B
$B$HF~NO$9$l$P!"(B
          $B$[$2$[$2(B '$B$U$K(B' $B$[$2$[$2(B
$B$HI=<($5$l$^$9!#(B


 [$B0JA0$H$NHf3S(B]
 $B%=!<%9(B   $B$"(B'$B$$(B   $B$"(B '$B$$(B   $B$"(B' $B$$(B   $B$"(B ' $B$$(B
 $B0JA0(B     $B$"(B' $B$$(B  $B$"(B' $B$$(B   $B$"(B' $B$$(B   $B$"(B' $B$$(B
 $B:#(B       $B$"(B'$B$$(B   $B$"(B '$B$$(B   $B$"(B' $B$$(B   $B$"(B ' $B$$(B

 $B%=!<%9(B   $B$"(B"$B$$(B   $B$"(B "$B$$(B   $B$"(B" $B$$(B   $B$"(B " $B$$(B
 $B0JA0(B     $B$"(B" $B$$(B  $B$"(B" $B$$(B   $B$"(B" $B$$(B   $B$"(B" $B$$(B
 $B:#(B       $B$"(B"$B$$(B   $B$"(B "$B$$(B   $B$"(B" $B$$(B   $B$"(B " $B$$(B

 $B%=!<%9(B   $B$"(B`$B$$(B'$B$&(B   $B$"(B `$B$$(B'$B$&(B   $B$"(B` $B$$(B'$B$&(B   $B$"(B ` $B$$(B'$B$&(B
 $B0JA0(B     $B$"(B`$B$$(B'$B$&(B   $B$"(B `$B$$(B'$B$&(B   $B$"(B` $B$$(B'$B$&(B   $B$"(B ` $B$$(B'$B$&(B
 $B:#(B       $B$"(B`$B$$(B'$B$&(B   $B$"(B `$B$$(B'$B$&(B   $B$"(B` $B$$(B'$B$&(B   $B$"(B ` $B$$(B'$B$&(B

$B!t(B $B$^$?>uBV$rA}$d$7$F$7$^$$$^$7$?!D(B
 $B$3$A$i$NJ}$,NI$1$l$P!"(Bpatch-ab $B$KBe$o$k$b$N$r:n$j$^$9!#(B
--
diff -urNP work/groff-1.10/troff/env.cc work.new/groff-1.10/troff/env.cc
--- work/groff-1.10/troff/env.cc	Mon Jun 16 01:28:34 1997
+++ work.new/groff-1.10/troff/env.cc	Mon Jun 16 01:10:34 1997
@@ -288,147 +288,170 @@
       start_line();
 #ifdef	NIPPON
     if (!ci->get_euc_code()) {
-      /*
-       * This node is a ASCII character node.
-       */
-      // $B!V!"(B word$B!W$r!V!"(Bword$B!W$H$7$?$$$N$G!"(Bspace_node $B$r:o$k=hM}(B
-      if (!pre_char_is_ascii &&
-	  (line->get_node_type() == NODE_NEWLINE_SPACE ||
-	   line->get_node_type() == NODE_SPACE ||
-	   line->get_node_type() == NODE_KWORD_SPACE)) {
+      if (ci->get_ascii_code() == '\'' && pre_quote_is_open == 0){
+	pre_quote_is_open = 0;
+	pre_char_is_ascii = 1;
+	pre_char_is_unknown_quote = 1;
+	pre_wchar_kinsoku_mode = -1;
+      } else if (ci->get_ascii_code() == '"') {
+	pre_char_is_ascii = 1;
+	pre_char_is_unknown_quote = 1;
+	pre_wchar_kinsoku_mode = -1;
+      } else {
+	pre_char_is_unknown_quote = 0;
+	/* quote registration */
+	if (ci->get_ascii_code() == '\'')
+	  pre_quote_is_open = 0;
+	if (ci->get_ascii_code() == '`')
+	  pre_quote_is_open = 1;
 	/*
-	 * remove a newline_node/space_node/kword_space_node.
+	 * This node is a ASCII character node.
 	 */
-	node *ns_node = line;
-	line = line->next;
-	width_total -= ns_node->width();
-	space_total -= ns_node->nspaces();
-	delete ns_node;
-      }
-      if (!pre_char_is_ascii && enable_wcharkern
-	  // $B0J2<$N>r7o$O!"(B
-	  // $B!V8l(B word$B!W$,!V8l(B  word$B!W$H$J$i$J$$$h$&$K$9$k%,!<%I!#(B
-	  // $BD>A0$N(B if $B%V%m%C%/$G(B space_node $B$r:o$C$?$N$G!"(B
-	  // $B$3$l$OMW$i$J$$$O$:$J$N$G%3%a%s%H%"%&%H$9$k!#(B
-	  // &&
-	  // line->get_node_type() != NODE_SPACE &&
-	  // line->get_node_type() != NODE_NEWLINE_SPACE &&
-	  // line->get_node_type() != NODE_KWORD_SPACE)
-	  ){
-	/*
-	 * Insert a little space node between EUC and ASCII.
-	 */
-	// $B!V8l(Bword$B!W$r!V8l(B word$B!W$H$9$k=hM}$O$8$a(B
-	if (ci->ends_sentence() || ci->transparent() || ci->pre_kinsoku())
-	  // $B!V8l(B.$B!W!V8l(B;$B!W$O6uGrF~$l$J$$(B
-	  // transparent $B$O$5$o$i$J$$(B
-	  // $B!V8l(B)$B!W$b6uGrF~$l$J$$(B
-	  ;
-	else
-	  if(pre_wchar_kinsoku_mode == charinfo::PRE_KINSOKU_HALF){
-	    // $B!V!K(Bword$B!W$K$OI}(B0$B6uGr$rF~$l$k(B
-	    // $B!V!"(Bword$B!W$K$OI}(B0$B6uGr$rF~$l$k(B
-	    add_node(new kword_space_node());
-	    met_with_kword_space = 1;
-	  } else if(pre_wchar_kinsoku_mode == charinfo::POST_KINSOKU_HALF){
-	    // $B!V!J(Bword$B!W$K$O6uGrF~$l$J$$(B
+	// $B!V!"(B word$B!W$r!V!"(Bword$B!W$H$7$?$$$N$G!"(Bspace_node $B$r:o$k=hM}(B
+	if (!pre_char_is_ascii &&
+	    (line->get_node_type() == NODE_NEWLINE_SPACE ||
+	     line->get_node_type() == NODE_SPACE ||
+	     line->get_node_type() == NODE_KWORD_SPACE)) {
+	  /*
+	   * remove a newline_node/space_node/kword_space_node.
+	   */
+	  node *ns_node = line;
+	  line = line->next;
+	  width_total -= ns_node->width();
+	  space_total -= ns_node->nspaces();
+	  delete ns_node;
+	}
+	if (!pre_char_is_ascii && enable_wcharkern
+	    // $B0J2<$N>r7o$O!"(B
+	    // $B!V8l(B word$B!W$,!V8l(B  word$B!W$H$J$i$J$$$h$&$K$9$k%,!<%I!#(B
+	    // $BD>A0$N(B if $B%V%m%C%/$G(B space_node $B$r:o$C$?$N$G!"(B
+	    // $B$3$l$OMW$i$J$$$O$:$J$N$G%3%a%s%H%"%&%H$9$k!#(B
+	    // &&
+	    // line->get_node_type() != NODE_SPACE &&
+	    // line->get_node_type() != NODE_NEWLINE_SPACE &&
+	    // line->get_node_type() != NODE_KWORD_SPACE)
+	    ){
+	  /*
+	   * Insert a little space node between EUC and ASCII.
+	   */
+	  // $B!V8l(Bword$B!W$r!V8l(B word$B!W$H$9$k=hM}$O$8$a(B
+	  if (ci->ends_sentence() || ci->transparent() || ci->pre_kinsoku())
+	    // $B!V8l(B.$B!W!V8l(B;$B!W$O6uGrF~$l$J$$(B
+	    // transparent $B$O$5$o$i$J$$(B
+	    // $B!V8l(B)$B!W$b6uGrF~$l$J$$(B
 	    ;
-	  } else {
-	    // $B!V8l(Bword$B!W$K$O6uGr$rF~$l$k(B
-	    if(line->get_node_type() == NODE_GLYPH){
-	      word_space_node *ws;
-	      ws = new word_space_node(hwkern.to_units());
-	      curenv->add_node(ws);
+	  else
+	    if(pre_wchar_kinsoku_mode == charinfo::PRE_KINSOKU_HALF){
+	      // $B!V!K(Bword$B!W$K$OI}(B0$B6uGr$rF~$l$k(B
+	      // $B!V!"(Bword$B!W$K$OI}(B0$B6uGr$rF~$l$k(B
+	      add_node(new kword_space_node());
+	      met_with_kword_space = 1;
+	    } else if(pre_wchar_kinsoku_mode == charinfo::POST_KINSOKU_HALF){
+	      // $B!V!J(Bword$B!W$K$O6uGrF~$l$J$$(B
+	      ;
+	    } else {
+	      // $B!V8l(Bword$B!W$K$O6uGr$rF~$l$k(B
+	      if(line->get_node_type() == NODE_GLYPH){
+		word_space_node *ws;
+		ws = new word_space_node(hwkern.to_units());
+		curenv->add_node(ws);
+	      }
 	    }
-	  }
+	}
+	pre_char_is_ascii = 1;
+	// ()[]{}$B$N6XB'J8;z$b(B -1 $B$8$c$J$$$h$&$K$7$F$_$^$9(B
+	//pre_wchar_kinsoku_mode = -1;
+	pre_wchar_kinsoku_mode = ci->get_kinsoku();
       }
-      pre_char_is_ascii = 1;
-      // ()[]{}$B$N6XB'J8;z$b(B -1 $B$8$c$J$$$h$&$K$7$F$_$^$9(B
-      //pre_wchar_kinsoku_mode = -1;
-      pre_wchar_kinsoku_mode = ci->get_kinsoku();
     } else {
       /*
        * This node is a EUC charcater node.
        */
-      // $B!V8l(B $B8l!W!V(B( $B8l!W!V(B) $B8l!W!V(Bword $B!K!W!V(Bword $B!K!W$O0lEY6uGr$r:o=|(B
-      if (((!pre_char_is_ascii) ||
-	   //$B!V8l(B $B8l!W(B
-	   (pre_wchar_kinsoku_mode == charinfo::POST_KINSOKU) ||
-	   // $B!V(B( $B8l!W(B
-	   (pre_wchar_kinsoku_mode == charinfo::PRE_KINSOKU) ||
-	   // $B!V(B) $B8l!W(B
-	   (ci->pre_kinsoku() && ci->zenkaku_half()) ||
-	   // $B!V(Bword $B!K!W(B
-	   (ci->post_kinsoku() && ci->zenkaku_half())
-	   // $B!V(Bword $B!J!W(B
-	   ) &&
- 	  (line->get_node_type() == NODE_NEWLINE_SPACE ||
- 	   line->get_node_type() == NODE_SPACE ||
- 	   line->get_node_type() == NODE_KWORD_SPACE)) {
- 	/*
- 	 * remove a newline-node.
- 	 */
- 	node *ns_node = line;
- 	line = line->next;
- 	width_total -= ns_node->width();
- 	space_total -= ns_node->nspaces();
- 	delete ns_node;
-      }
-
-      int pre_wchar_kinsoku_mode_back = ci->get_kinsoku();
-      if (enable_wcharkern &&
-	  // $B0J2<$O(B
-	  // $B!V(Bword $B8l!W$,!V(Bword  $B8l!W$H$J$i$J$$$h$&$K$9$k%,!<%I!#(B
-	  // $B!V(Bword $B8l!W$O!"D>A0$N(B if $B%V%m%C%/$G(B space_node $B$r:o$i$l$F$$$J$$!#(B
-	  line->get_node_type() != NODE_SPACE &&
-	  line->get_node_type() != NODE_NEWLINE_SPACE &&
-	  line->get_node_type() != NODE_KWORD_SPACE){
-	if(pre_char_is_ascii){
+      if(pre_char_is_unknown_quote == 0){
+	// $B!V8l(B $B8l!W!V(B( $B8l!W!V(B) $B8l!W!V(Bword $B!K!W!V(Bword $B!K!W$O0lEY6uGr$r:o=|(B
+	if (((!pre_char_is_ascii) ||
+	     //$B!V8l(B $B8l!W(B
+	     (pre_wchar_kinsoku_mode == charinfo::POST_KINSOKU) ||
+	     // $B!V(B( $B8l!W(B
+	     (pre_wchar_kinsoku_mode == charinfo::PRE_KINSOKU) ||
+	     // $B!V(B) $B8l!W(B
+	     (ci->pre_kinsoku() && ci->zenkaku_half()) ||
+	     // $B!V(Bword $B!K!W(B
+	     (ci->post_kinsoku() && ci->zenkaku_half())
+	     // $B!V(Bword $B!J!W(B
+	     ) &&
+	    (line->get_node_type() == NODE_NEWLINE_SPACE ||
+	     line->get_node_type() == NODE_SPACE ||
+	     line->get_node_type() == NODE_KWORD_SPACE)) {
 	  /*
-	   * Insert a little space node between ASCII and EUC.
+	   * remove a newline-node.
 	   */
-	  if(ci->post_kinsoku() && ci->zenkaku_half()){
-	    // $B!V(Bword$B!J!W$N4V$K$OI}(B0$B6uGr$rF~$l$k(B
-	    add_node(new kword_space_node());
-	    met_with_kword_space = 1;
-	  } else if(ci->pre_kinsoku() && ci->zenkaku_half()){
-	    // $B!V(Bword$B!"!W$N4V$K$O6uGr$rF~$l$J$$(B
-	    // $B!V(Bword$B!K!W$N4V$K$O6uGr$rF~$l$J$$(B
-	    ;
-	  } else if(pre_wchar_kinsoku_mode == charinfo::POST_KINSOKU){
-	    // $B!V(B($B8l!W!V(B[$B8l!W!V(B{$B8l!W!V(B`$B8l!W$N4V$K$O6uGr$rF~$l$J$$(B
-	    ;
-	  } else if(pre_wchar_kinsoku_mode == charinfo::PRE_KINSOKU){
-	    // $B!V(B)$B8l!W!V(B]$B8l!W!V(B}$B8l!W!V(B'$B8l!W$N4V$K$O6uGr$rF~$l$k(B
-//	    if(line->get_node_type() == NODE_GLYPH){
-	    {
-	      word_space_node *ws;
-	      ws = new word_space_node(hwkern.to_units());
-	      curenv->add_node(ws);
+	  node *ns_node = line;
+	  line = line->next;
+	  width_total -= ns_node->width();
+	  space_total -= ns_node->nspaces();
+	  delete ns_node;
+	}
+
+	int pre_wchar_kinsoku_mode_back = ci->get_kinsoku();
+	if (enable_wcharkern &&
+	    // $B0J2<$O(B
+	    // $B!V(Bword $B8l!W$,!V(Bword  $B8l!W$H$J$i$J$$$h$&$K$9$k%,!<%I!#(B
+	    // $B!V(Bword $B8l!W$O!"D>A0$N(B if $B%V%m%C%/$G(B space_node $B$r:o$i$l$F$$$J$$!#(B
+	    line->get_node_type() != NODE_SPACE &&
+	    line->get_node_type() != NODE_NEWLINE_SPACE &&
+	    line->get_node_type() != NODE_KWORD_SPACE){
+	  if(pre_char_is_ascii){
+	    /*
+	     * Insert a little space node between ASCII and EUC.
+	     */
+	    if(ci->post_kinsoku() && ci->zenkaku_half()){
+	      // $B!V(Bword$B!J!W$N4V$K$OI}(B0$B6uGr$rF~$l$k(B
+	      add_node(new kword_space_node());
+	      met_with_kword_space = 1;
+	    } else if(ci->pre_kinsoku() && ci->zenkaku_half()){
+	      // $B!V(Bword$B!"!W$N4V$K$O6uGr$rF~$l$J$$(B
+	      // $B!V(Bword$B!K!W$N4V$K$O6uGr$rF~$l$J$$(B
+	      ;
+	    } else if(pre_wchar_kinsoku_mode == charinfo::POST_KINSOKU){
+	      // $B!V(B($B8l!W!V(B[$B8l!W!V(B{$B8l!W!V(B`$B8l!W$N4V$K$O6uGr$rF~$l$J$$(B
+	      ;
+	    } else if(pre_wchar_kinsoku_mode == charinfo::PRE_KINSOKU){
+	      // $B!V(B)$B8l!W!V(B]$B8l!W!V(B}$B8l!W!V(B'$B8l!W$N4V$K$O6uGr$rF~$l$k(B
+	      //	    if(line->get_node_type() == NODE_GLYPH){
+	      {
+		word_space_node *ws;
+		ws = new word_space_node(hwkern.to_units());
+		curenv->add_node(ws);
+	      }
+	    } else {
+	      // $B0J2<$O!V(Bword$B8l!W$r!V(Bword $B8l!W$K$9$k=hM}(B
+	      if(line->get_node_type() == NODE_GLYPH){
+		word_space_node *ws;
+		ws = new word_space_node(hwkern.to_units());
+		curenv->add_node(ws);
+	      }
 	    }
 	  } else {
-	    // $B0J2<$O!V(Bword$B8l!W$r!V(Bword $B8l!W$K$9$k=hM}(B
-	    if(line->get_node_type() == NODE_GLYPH){
-	      word_space_node *ws;
-	      ws = new word_space_node(hwkern.to_units());
-	      curenv->add_node(ws);
+	    /*
+	     * Insert a zero width space node between EUC and EUC
+	     */
+	    if(ci->pre_kinsoku()){
+	      // $B!V8l!"!W!V8l$)!W$N4V$K$O6uGrF~$l$J$$(B
+	      ;
+	    } else {
+	      add_node(new kword_space_node());
+	      met_with_kword_space = 1;
 	    }
 	  }
-	} else {
-	  /*
-	   * Insert a zero width space node between EUC and EUC
-	   */
-	  if(ci->pre_kinsoku()){
-	    // $B!V8l!"!W!V8l$)!W$N4V$K$O6uGrF~$l$J$$(B
-	    ;
-	  } else {
-	    add_node(new kword_space_node());
-	    met_with_kword_space = 1;
-	  }
 	}
+	pre_wchar_kinsoku_mode = pre_wchar_kinsoku_mode_back;
+      } else { /* previous character is unknown quote */
+	pre_wchar_kinsoku_mode = ci->get_kinsoku();
       }
-      pre_wchar_kinsoku_mode = pre_wchar_kinsoku_mode_back;
+
       pre_char_is_ascii = 0;
+      pre_char_is_unknown_quote = 0;
 
       if (!vlower.is_zero()) {
 	/*
@@ -863,6 +886,8 @@
   stretch_threshold(e->stretch_threshold),
   pre_wchar_kinsoku_mode(-1),
   pre_char_is_ascii(-1),
+  pre_quote_is_open(0),
+  pre_char_is_unknown_quote(0),
   enable_wcharkern(0),
   hwkern(font::wcharkern),
   vlower(font::lowerwchar)
diff -urNP work/groff-1.10/troff/env.h work.new/groff-1.10/troff/env.h
--- work/groff-1.10/troff/env.h	Mon Jun 16 01:28:29 1997
+++ work.new/groff-1.10/troff/env.h	Sun Jun 15 23:42:33 1997
@@ -183,6 +183,8 @@
   int pre_wchar_kinsoku_mode;
   int pre_char_is_ascii;
   int enable_wcharkern;
+  int pre_quote_is_open;
+  int pre_char_is_unknown_quote;
   int met_with_kword_space;
   hunits hwkern;
   vunits vlower;
