Debian Bug report logs - #552201
groff-base: Japanese manpages are shown with too wide spaces

version graph

Package: groff-base; Maintainer for groff-base is Colin Watson <cjwatson@debian.org>; Source for groff-base is src:groff (PTS, buildd, popcon).

Reported by: Kenshi Muto <kmuto@debian.org>

Date: Sat, 24 Oct 2009 08:09:01 UTC

Severity: normal

Tags: patch

Found in version groff/1.20.1-6

Fixed in versions groff/1.21-1, groff/1.21-4

Done: Colin Watson <cjwatson@debian.org>

Bug is archived. No further changes may be made.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, kmuto@debian.org, Colin Watson <cjwatson@debian.org>:
Bug#552201; Package groff-base. (Sat, 24 Oct 2009 08:09:06 GMT) (full text, mbox, link).


Acknowledgement sent to Kenshi Muto <kmuto@debian.org>:
New Bug report received and forwarded. Copy sent to kmuto@debian.org, Colin Watson <cjwatson@debian.org>. (Sat, 24 Oct 2009 08:09:07 GMT) (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Kenshi Muto <kmuto@debian.org>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: groff-base: Japanese manpages are shown with too wide spaces
Date: Sat, 24 Oct 2009 17:03:40 +0900
[Message part 1 (text/plain, inline)]
Package: groff-base
Version: 1.20.1-6
Severity: normal

Hi,
I noticed some whitespaces of Japanese manpages are shown too wide
after I upgraded my Debian from Lenny to Sid.

I think this problem is what you noted on 1.20.1-1,
  * Dropped multibyte patch. CJK is partially supported by way of Unicode
    input, but widths are wrong and proper line breaking is not implemented;
    this is planned to be added by way of "character classes". However, I
    can't justify holding new groff code out of Debian any longer when CJK
    manual pages can more or less be read with the new release.

I attached some files.
- su-sid.png: 'LANG=ja_JP.UTF-8 man su' on sid. (problem)
- su-lenny.png: 'LANG=ja_JP.UTF-8 man su' on lenny. (OK)
- su.roff: roff file to pass "nroff -mandoc -Tutf8". This file was created
  from "cat /usr/share/man/ja/man1/su.1.gz|/usr/bin/zsoelim|/usr/lib/man-db/manconv -f UTF-8:EUC-JP -t UTF-8//IGNORE|preconv -e UTF-8|tbl".
  Lenny's nroff works with this file.

Thanks,
-- 
Kenshi Muto
kmuto@debian.org


-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-2-openvz-amd64 (SMP w/2 CPU cores)
Locale: LANG=ja_JP.UTF-8, LC_CTYPE=ja_JP.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages groff-base depends on:
ii  libc6                         2.10.1-1   GNU C Library: Shared libraries
ii  libgcc1                       1:4.4.2-1  GCC support library
ii  libstdc++6                    4.4.2-1    The GNU Standard C++ Library v3

groff-base recommends no packages.

Versions of packages groff-base suggests:
pn  groff                         <none>     (no description available)

-- no debconf information
[su-lenny.png (image/png, inline)]
[su-sid.png (image/png, inline)]
[su.roff (application/octet-stream, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org:
Bug#552201; Package groff-base. (Sat, 24 Oct 2009 14:54:07 GMT) (full text, mbox, link).


Acknowledgement sent to Colin Watson <cjwatson@debian.org>:
Extra info received and forwarded to list. (Sat, 24 Oct 2009 14:54:07 GMT) (full text, mbox, link).


Message #10 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Colin Watson <cjwatson@debian.org>
To: Kenshi Muto <kmuto@debian.org>, 552201@bugs.debian.org
Subject: Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Sat, 24 Oct 2009 15:36:55 +0100
On Sat, Oct 24, 2009 at 05:03:40PM +0900, Kenshi Muto wrote:
> Package: groff-base
> Version: 1.20.1-6
> Severity: normal
> 
> Hi,
> I noticed some whitespaces of Japanese manpages are shown too wide
> after I upgraded my Debian from Lenny to Sid.
> 
> I think this problem is what you noted on 1.20.1-1,
>   * Dropped multibyte patch. CJK is partially supported by way of Unicode
>     input, but widths are wrong and proper line breaking is not implemented;
>     this is planned to be added by way of "character classes". However, I
>     can't justify holding new groff code out of Debian any longer when CJK
>     manual pages can more or less be read with the new release.

Indeed so. My initial work on this is in
https://code.launchpad.net/~cjwatson/groff/charclass, but I haven't had
any time to work on it recently.

-- 
Colin Watson                                       [cjwatson@debian.org]




Information forwarded to debian-bugs-dist@lists.debian.org, Colin Watson <cjwatson@debian.org>:
Bug#552201; Package groff-base. (Fri, 26 Nov 2010 14:03:03 GMT) (full text, mbox, link).


Acknowledgement sent to Kenshi Muto <kmuto@debian.org>:
Extra info received and forwarded to list. Copy sent to Colin Watson <cjwatson@debian.org>. (Fri, 26 Nov 2010 14:03:03 GMT) (full text, mbox, link).


Message #15 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Kenshi Muto <kmuto@debian.org>
To: 552201@bugs.debian.org
Subject: Re: groff-base: Japanese manpages are shown with too wide spaces
Date: Fri, 26 Nov 2010 22:51:25 +0900
[Message part 1 (text/plain, inline)]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

tags: 552201 + patch
thanks

Hi Colin,

You may already red at groff list and perhaps it is bit late for
Squeeze, but Daiki Ueno created a patch for handling CJK wide
characters nicely based on your Charclass.
http://lists.gnu.org/archive/html/groff/2010-11/msg00018.html

I received a patch from him and tested. It worked well, particularly
for Japanese and Korean. As far as my tests, it won't break any other
languages (tested with C, fr_FR.UTF-8, nl_NL.UTF-8, and ru_RU.UTF-8.)

Here is a debdiff against 1.20.1-10.

It is very helpful for CJK users that this patch is merged to
Squeeze groff.

Thanks,
- -- 
Kenshi Muto
kmuto@debian.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Processed by Mailcrypt 3.5.9 <http://mailcrypt.sourceforge.net/>

iQIcBAEBCgAGBQJM77saAAoJEB0hyD3EUuD8BdwP/3rWKit67MkrEN1FPg5N9aU1
H/+mjuRppHyHqP8Ob9eECrPJHzMOMTN+SX0Sz7ZPkGRvc8oomh0sdl+054XwhBG7
ogYEK9AlPvKylH07AZfqFsQio2HLwJKWFvon8CM79evYDZGRYoiICZY2NAss301J
zNFaVWiEffCLTCIuV5t6KoqFGvyGeNUjfZd82B2DtcGwIWMyRHPPkH2wIBULgqoz
+cbQqnxoQ3RxtJxcTRJ0y6sRnkdZ5g6HBDJKQnufVgXud6TWOnJ++i5N2FGY0CcG
gZsrVIRegRCBjvpOsSTPZMbaAFLS1Z1E+1cZ3Lv+3ztfv/SEmJTsUO0QMD3uKW1c
JL5FyKt9cXWw9wo6MqM6Hh4V9VmuXHIwGL2kZkhkN+qivm4XVCQMV3vthVaCzGY8
gekSS5XEirceQwuBId0EUiDUUl4LPBLVlrHqB9l3xNUXg45wCrEo5ReR8eQ6MiaQ
KQY1vLPg0wdApuvtwiBNUuGqOva4eG7evYza4yAFiZWY5thw6naCzTobVkh8zPa9
1wXgT7DbdQKYRqPF+ZuuvHIIeFyLX9se/or0/SCvwK0vYugU6Gu1ElStyrPOXovb
C3dD3YU7wJIGvX5oYkSvpoUt2SoWIalAZWBs9FI6y11Br8DnxKDlyzDcVz7Judxb
kntfpglKwUQEoCI3SBWv
=lyCA
-----END PGP SIGNATURE-----
[debdiff.charclass.patch (application/octet-stream, attachment)]

Added tag(s) patch. Request was from "Kenshi Muto" <kmuto@topstudio.co.jp> to control@bugs.debian.org. (Fri, 26 Nov 2010 14:06:07 GMT) (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org:
Bug#552201; Package groff-base. (Sat, 04 Dec 2010 14:33:03 GMT) (full text, mbox, link).


Acknowledgement sent to Colin Watson <cjwatson@debian.org>:
Extra info received and forwarded to list. (Sat, 04 Dec 2010 14:33:03 GMT) (full text, mbox, link).


Message #22 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Colin Watson <cjwatson@debian.org>
To: Kenshi Muto <kmuto@debian.org>, 552201@bugs.debian.org
Cc: Daiki Ueno <ueno@unixuser.org>, groff@gnu.org
Subject: Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Sat, 4 Dec 2010 14:29:09 +0000
(CCing Daiki Ueno and the groff list, since I have some comments on the
patch and this is a convenient hook for them.)

On Fri, Nov 26, 2010 at 10:51:25PM +0900, Kenshi Muto wrote:
> You may already red at groff list and perhaps it is bit late for
> Squeeze, but Daiki Ueno created a patch for handling CJK wide
> characters nicely based on your Charclass.
> http://lists.gnu.org/archive/html/groff/2010-11/msg00018.html
> 
> I received a patch from him and tested. It worked well, particularly
> for Japanese and Korean. As far as my tests, it won't break any other
> languages (tested with C, fr_FR.UTF-8, nl_NL.UTF-8, and ru_RU.UTF-8.)
> 
> Here is a debdiff against 1.20.1-10.
> 
> It is very helpful for CJK users that this patch is merged to
> Squeeze groff.

Thanks for letting me know!  This is definitely good to see.
http://lists.debian.org/debian-devel-announce/2010/11/msg00006.html
makes it painfully clear that it's too late for squeeze, but I don't
mind looking at this for unstable (and somebody can always build
backport packages or whatever, rather than trying to rush it in now and
then realising that it's broken in some way).


One thing I think is wrong about this patch is:

  - nroff: supply "-mja" to groff if running under Japanese locales.

We should be trying to reduce the cases where Japanese is handled
uniquely, particularly in code rather than in configuration such as
macro files, and this change introduces one.  Furthermore, relying on
the locale is a problematic approach we should be trying to escape, as
it makes it harder to test Japanese pages in English locales or
vice-versa.

The agreed approach for this kind of thing can be found in this thread
(the initial patch wasn't applied, but look further down the thread for
the conclusion):

  http://lists.gnu.org/archive/html/groff/2009-02/msg00044.html

Now that Fedora has at last switched to man-db (cause for celebration in
these quarters!), it can take advantage of this, and there should be no
need for this change to nroff; man is the only case where I think it's
particularly onerous to have to manually supply options to nroff.
However, because man has to have a version test to avoid spurious
warning messages, this will only work once groff 1.20.2 or newer is
released, which has taken much longer than I expected when I made that
change to man-db 2.5.4 to take advantage of the new 'file' warning
category.

Werner, is there any chance that you might be able to release 1.20.2 in
the near future?  It's been nearly two years since 1.20.1.  Are there
any specific blockers (perhaps I could help), or is it just a lack of
time?  I certainly understand the latter, but would really like to be
able to take advantage of the change above ...


Relying on wcwidth is a problem for the same reasons, I think.  It means
that you can only use devutf8 correctly in a UTF-8 locale.  That has not
historically been a requirement (and indeed IMO it was one of the major
problems with the old multibyte patch), and I think we should try to
avoid it becoming one because there are some practical problems with
this.

I have to say I agree with Werner in
http://lists.gnu.org/archive/html/groff/2010-08/msg00000.html when he
suggests that this would be better done some other way.  Fonts aren't
ideal, though, because then we'd have to have separate font files for
Japanese.  Perhaps you could add a new charinfo flag and set this in
ja.tmac using a character class?  I don't know if that design is perfect
either, but my feeling is that this kind of problem is why we came up
with the idea of character classes in the first place.

Thanks,

-- 
Colin Watson                                       [cjwatson@debian.org]




Information forwarded to debian-bugs-dist@lists.debian.org, Colin Watson <cjwatson@debian.org>:
Bug#552201; Package groff-base. (Mon, 06 Dec 2010 14:03:06 GMT) (full text, mbox, link).


Acknowledgement sent to Werner LEMBERG <wl@gnu.org>:
Extra info received and forwarded to list. Copy sent to Colin Watson <cjwatson@debian.org>. (Mon, 06 Dec 2010 14:03:06 GMT) (full text, mbox, link).


Message #27 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Werner LEMBERG <wl@gnu.org>
To: cjwatson@debian.org
Cc: kmuto@debian.org, 552201@bugs.debian.org, ueno@unixuser.org, groff@gnu.org
Subject: Re: [Groff] Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Mon, 06 Dec 2010 13:10:06 +0100 (CET)
> (CCing Daiki Ueno and the groff list, since I have some comments on
> the patch and this is a convenient hook for them.)
>
>> I received a patch from him and tested. It worked well,
>> particularly for Japanese and Korean. As far as my tests, it won't
>> break any other languages (tested with C, fr_FR.UTF-8, nl_NL.UTF-8,
>> and ru_RU.UTF-8.)
>>
>> Here is a debdiff against 1.20.1-10.

Right now I'm going to integrate and test the patches.  However, a
very important piece is still missing: documentation!  I won't commit
the changes otherwise.

Please provide a patch for groff.texinfo which fully documents
`.class' (probably by adding a new section `Classes' to `Fonts and
Symbols'), the `classes' keyword for font files, and a proper
extension of the description of the `.cflags' request.  Similarly, I
need updates to the `NEWS', `groff_diff.man', and `groff.man' files.
BTW, this can be rough and sketchy: There's no need to polish the
documentation since I'll do this.

Note that I don't need ChangeLog entries; I've written them already by
myself while reading the code.

>   - nroff: supply "-mja" to groff if running under Japanese locales.
>
> We should be trying to reduce the cases where Japanese is handled
> uniquely, particularly in code rather than in configuration such as
> macro files, and this change introduces one.  Furthermore, relying
> on the locale is a problematic approach we should be trying to
> escape, as it makes it harder to test Japanese pages in English
> locales or vice-versa.

I second that; it's not necessary to do that so I'll omit these
changes to nroff.

> Werner, is there any chance that you might be able to release 1.20.2
> in the near future?

I'll release 1.21 after integrating your and Daiki-san's patches.
Sorry for the large delay.

> Are there any specific blockers (perhaps I could help), or is it just
> a lack of time?  I certainly understand the latter, but would really
> like to be able to take advantage of the change above ...

The main blocker is missing enthusiasm for groff :( Last year I was
extremely busy, and recently I've moved from Germany to Austria, and
in my spare time I've mainly concentrated on FreeType.

> I have to say I agree with Werner in
> http://lists.gnu.org/archive/html/groff/2010-08/msg00000.html when
> he suggests that this would be better done some other way.  Fonts
> aren't ideal, though, because then we'd have to have separate font
> files for Japanese.

There is perhaps a misunderstanding.  I don't object to using wcwidth;
this is used for TTY output only, and grotty outputs characters, not
glyphs, thus it doesn't harm if the logic for character widths is in
the UTF8 part of grotty.  Given how groff + grotty works the
implementation is OK, and the actual changes to the groff code are
less than 10 lines.  What I object, as you've correctly noted, is to
provide special locale-dependent support files.

> Perhaps you could add a new charinfo flag and set this in ja.tmac
> using a character class?  I don't know if that design is perfect
> either, but my feeling is that this kind of problem is why we came
> up with the idea of character classes in the first place.

Yes!  It would allow to overwrite the global wcwidth values if
necessary.  For example, we could provide a new request `.charwidth'
which has the same syntax as `.cflags'.  Values for `.charwidth' are
then only taken into account if a new `charwidth' keyword is present
in the DESC file.  However, I don't consider that as essential, and I
will release 1.21 without this yet-to-be-written stuff.

Another minor thing which isn't urgent: I think that the (current)
contents of ja.tmac is essentially universal, not restricted to
Japanese.  For speed considerations it is OK that character classes
are not part of standard calls to groff, however, what about moving
them to a file `cjk.tmac' which then gets included by ja.tmac,
kr.tmac, etc.?


    Werner




Information forwarded to debian-bugs-dist@lists.debian.org, Colin Watson <cjwatson@debian.org>:
Bug#552201; Package groff-base. (Wed, 08 Dec 2010 03:45:03 GMT) (full text, mbox, link).


Acknowledgement sent to Daiki Ueno <ueno@unixuser.org>:
Extra info received and forwarded to list. Copy sent to Colin Watson <cjwatson@debian.org>. (Wed, 08 Dec 2010 03:45:03 GMT) (full text, mbox, link).


Message #32 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Daiki Ueno <ueno@unixuser.org>
To: Werner LEMBERG <wl@gnu.org>
Cc: cjwatson@debian.org, kmuto@debian.org, groff@gnu.org, 552201@bugs.debian.org
Subject: Re: [Groff] Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Wed, 08 Dec 2010 12:34:22 +0900
Thanks Werner and Colin for the insightful comments.

Werner LEMBERG <wl@gnu.org> writes:

> However, a very important piece is still missing: documentation!  I
> won't commit the changes otherwise.

I'm now preparing the documentation.  One question:

> the `classes' keyword for font files, ...

What is the keyword supposed to work?  I didn't notice that since it is
currently not used in any font file and seems not to affect the run-time
behavior.  Perhaps a wreck of the original patch?

> I second that; it's not necessary to do that so I'll omit these
> changes to nroff.

Good to know that man-db already has the hook to load locale macros :)

> I think that the (current) contents of ja.tmac is essentially
> universal, not restricted to Japanese.

Yes and probably CJK languages can share a single .tmac for kinsoku
processing, since the kinsoku rules for those languages are not likely
to overlap each other.

I'm now trying to extend current ja.tmac to support Chinese and Korean:
http://ueno.fedorapeople.org/groff/make-cjk-tmac/

Regards,
-- 
Daiki Ueno




Information forwarded to debian-bugs-dist@lists.debian.org, Colin Watson <cjwatson@debian.org>:
Bug#552201; Package groff-base. (Wed, 08 Dec 2010 06:45:03 GMT) (full text, mbox, link).


Acknowledgement sent to Werner LEMBERG <wl@gnu.org>:
Extra info received and forwarded to list. Copy sent to Colin Watson <cjwatson@debian.org>. (Wed, 08 Dec 2010 06:45:03 GMT) (full text, mbox, link).


Message #37 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Werner LEMBERG <wl@gnu.org>
To: ueno@unixuser.org
Cc: cjwatson@debian.org, kmuto@debian.org, groff@gnu.org, 552201@bugs.debian.org
Subject: Re: [Groff] Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Wed, 08 Dec 2010 07:43:35 +0100 (CET)
>> the `classes' keyword for font files, ...
> 
> What is the keyword supposed to work?  I didn't notice that since it
> is currently not used in any font file and seems not to affect the
> run-time behavior.  Perhaps a wreck of the original patch?

The `classes' keyword should help reduce the size of non-TTY font
description files of CJK fonts: Instead of thousands of lines in the
`charset' section for glyphs from the CJK range(s), you just have a
single one, something like

  classes
  [CJK]  u4E00-u9FFF

  charset
  ...
  [CJK]  1000,800,200  3  ?  ?

However, the two question marks indicate that I don't know how to
handle those fields.  Perhaps it should be something like

  [CJK]  1000,800,200  3  %d  uni%X

to programmatically derive the index value for \N'...' (field 4) and
the PS glyph name for grops (field 5), but this isn't implemented yet.

So please ignore the `classes' keyword documentation; I'll remove the
corresponding code, to be postponed for later.  Alternatively, you
might add the missing bits right now :-)

Besides that, it is an interesting question how to support Japanese
fonts for CJK characters.  In my CJK package for LaTeX, I've used
active characters to activate CJK fonts for CJK characters.  For
groff, the probably easiest method is to register, say, a Japanese
font as `special' using either `.fspecial' or `.special'.  Then any
glyph not found in the current (latin) font is taken from the fspecial
or special list.

Note that I can't remember how this has been solved in the old Debian
extension for Japanese...

> I'm now trying to extend current ja.tmac to support Chinese and Korean:
> http://ueno.fedorapeople.org/groff/make-cjk-tmac/

Very nice!


    Werner




Information forwarded to debian-bugs-dist@lists.debian.org, Colin Watson <cjwatson@debian.org>:
Bug#552201; Package groff-base. (Sun, 12 Dec 2010 21:27:02 GMT) (full text, mbox, link).


Acknowledgement sent to Werner LEMBERG <wl@gnu.org>:
Extra info received and forwarded to list. Copy sent to Colin Watson <cjwatson@debian.org>. (Sun, 12 Dec 2010 21:27:02 GMT) (full text, mbox, link).


Message #42 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Werner LEMBERG <wl@gnu.org>
To: ueno@unixuser.org
Cc: kmuto@debian.org, 552201@bugs.debian.org, cjwatson@debian.org, groff@gnu.org
Subject: Re: [Groff] Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Sun, 12 Dec 2010 22:23:53 +0100 (CET)
Any progress on the docs?


    Werner




Information forwarded to debian-bugs-dist@lists.debian.org, Colin Watson <cjwatson@debian.org>:
Bug#552201; Package groff-base. (Mon, 13 Dec 2010 02:57:02 GMT) (full text, mbox, link).


Acknowledgement sent to Daiki Ueno <ueno@unixuser.org>:
Extra info received and forwarded to list. Copy sent to Colin Watson <cjwatson@debian.org>. (Mon, 13 Dec 2010 02:57:03 GMT) (full text, mbox, link).


Message #47 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Daiki Ueno <ueno@unixuser.org>
To: Werner LEMBERG <wl@gnu.org>
Cc: kmuto@debian.org, groff@gnu.org, cjwatson@debian.org, 552201@bugs.debian.org
Subject: Re: [Groff] Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Mon, 13 Dec 2010 11:57:06 +0900
[Message part 1 (text/plain, inline)]
Werner LEMBERG <wl@gnu.org> writes:

> Any progress on the docs?

Please find below a patch to the docs.  Sorry for the delay.

[groff-charclass-docs.diff (text/x-patch, inline)]
diff --git a/NEWS b/NEWS
index c5028c4..8b5f17e 100644
--- a/NEWS
+++ b/NEWS
@@ -24,6 +24,10 @@ o There is a new warning category `file', enabled by default.  The `mso'
   request emits warnings in this category when the requested macro file does
   not exist.
 
+o The new `class' request assignes a short name to a set of
+  characters, which can be referred to in `cflags' request to control
+  line-breaking and hyphenation rules in CJK languages.
+
 Tbl
 ---
 
diff --git a/doc/groff.texinfo b/doc/groff.texinfo
index ae2ac6e..4a4f318 100644
--- a/doc/groff.texinfo
+++ b/doc/groff.texinfo
@@ -8726,6 +8726,7 @@ special symbols (Greek, mathematics).
 * Font Families::
 * Font Positions::
 * Using Symbols::
+* Character Classes::           
 * Special Fonts::
 * Artificial Fonts::
 * Ligatures and Kerning::
@@ -9122,7 +9123,7 @@ this is font 1 again
 
 @c ---------------------------------------------------------------------
 
-@node Using Symbols, Special Fonts, Font Positions, Fonts and Symbols
+@node Using Symbols, Character Classes, Font Positions, Fonts and Symbols
 @subsection Using Symbols
 @cindex using symbols
 @cindex symbols, using
@@ -9458,7 +9459,9 @@ width, depth, and height, nothing else.  All manipulations with the
 modified with the @code{cflags} request.  The first argument is the sum
 of the desired flags and the remaining arguments are the characters or
 symbols to have those properties.  It is possible to omit the spaces
-between the characters or symbols.
+between the characters or symbols.  Also you can use the character class
+references here with the escape @code{\C'[@var{class}]'} (see
+@ref{Character Classes} for more details).
 
 @table @code
 @item 1
@@ -9639,7 +9642,56 @@ The request @code{rfschar} removes glyph definitions defined with
 
 @c ---------------------------------------------------------------------
 
-@node Special Fonts, Artificial Fonts, Using Symbols, Fonts and Symbols
+@node Character Classes, Special Fonts, Using Symbols, Fonts and Symbols
+@subsection Character Classes
+@cindex character classes
+@cindex classes, character
+
+A @dfn{class} (aka ``character class'') is a set of characters,
+grouped by some user aspect.  The request @code{class} defines classes
+so that other requests can refer to characters belonging to a class,
+with a short class name.
+
+Classes are particularly useful for East Asian languages such as
+Chinese, Japanese, and Korean, where there is a much larger set of
+characters than in European languages.
+
+A @code{class} request takes a class name followed by a list of
+characters.  For example:
+
+@Example
+.class [prepunct] , : ; > @}
+@endExample
+
+To access the contents of a class, use the escape
+@code{\C'[@var{class}]'}.  With the escape, you can define nested
+classes.  Also, you can use the character range notation (a starting
+character code point, followed by a @samp{-} and an ending character
+code point), to avoid enumerating characters explicitly.  Here is more
+complex example:
+
+@Example
+.class [CJKprepunct] \C'[prepunct]' \[u2013]-\[u2016] ...
+@endExample
+
+The class @samp{CJKprepunct} contains the contents of the class
+@samp{prepunct}, i.e. @samp{, : ; > @}}, and characters in the range
+between @code{U+2013} and @code{U+2016}.
+
+Typical usage of the @code{class} request is to control line-breaking
+and hyphenation rules together with the @code{cflags}.  For example,
+to inhibit line-break before the characters belonging to the
+@samp{CJKprepunct}, you can write:
+
+@Example
+.cflags 2 \C'[CJKprepunct]'
+@endExample
+
+See the @code{cflags} request in @ref{Using Symbols}, for more details.
+
+@c ---------------------------------------------------------------------
+
+@node Special Fonts, Artificial Fonts, Character Classes, Fonts and Symbols
 @subsection Special Fonts
 @cindex special fonts
 @cindex fonts, special
diff --git a/man/groff_diff.man b/man/groff_diff.man
index 115c6d2..3bdfa47 100644
--- a/man/groff_diff.man
+++ b/man/groff_diff.man
@@ -1093,6 +1093,17 @@ This is useful for removing the newline from the end of diversions
 that are to be interpolated as strings.
 .
 .TP
+.BI .class\  name\ c1\ c2\|.\|.\|.\&
+Assign a short name
+.IR name
+to a set of characters
+.IR c1 ,
+.IR c2 ,\|.\|.\|.\&
+so that they can be referred to from the other requests easily.
+This is useful to assign properties to a large set of characters (using
+.BR .cflags ).
+.
+.TP
 .BI .close\  stream
 Close the stream named
 .IR stream ;
[Message part 3 (text/plain, inline)]
Regards,
-- 
Daiki Ueno

Information forwarded to debian-bugs-dist@lists.debian.org, Colin Watson <cjwatson@debian.org>:
Bug#552201; Package groff-base. (Mon, 13 Dec 2010 18:00:03 GMT) (full text, mbox, link).


Acknowledgement sent to Werner LEMBERG <wl@gnu.org>:
Extra info received and forwarded to list. Copy sent to Colin Watson <cjwatson@debian.org>. (Mon, 13 Dec 2010 18:00:03 GMT) (full text, mbox, link).


Message #52 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Werner LEMBERG <wl@gnu.org>
To: ueno@unixuser.org
Cc: kmuto@debian.org, groff@gnu.org, cjwatson@debian.org, 552201@bugs.debian.org
Subject: Re: [Groff] Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Mon, 13 Dec 2010 18:56:17 +0100 (CET)
[Message part 1 (text/plain, inline)]
>> Any progress on the docs?
> 
> Please find below a patch to the docs.  Sorry for the delay.

Thanks!  I've revised all patches, updated the documentation,
normalized the import of gnulib's wcwidth, fixed a buglet in the new
`.class' request (each call caused insertion of an empty line), and it
seems that everything works fine!

Attached is a Japanese man page, gprof.1 – this is in EUC-JP
encoding –, which I've taken from the Japanese man page project
(http://sourceforge.jp/projects/linuxjm/), together with its output,
generated with

  groff -K euc-japan -Tutf8 -ww -man -mja gprof.1 > gprof.jp.txt

(You should use `less' or something similar for display since the
output contains SGR escape sequences.)

The only thing which I consider bad is that there is `(' at the line
end.  Can this be improved by adjusting the calls to .cflags?


    Werner
[gprof.1 (text/plain, inline)]
.\" Copyright (c) 1983, 1990 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms are permitted provided
.\" that: (1) source distributions retain this entire copyright notice and
.\" comment, and (2) distributions including binaries display the following
.\" acknowledgement:  ``This product includes software developed by the
.\" University of California, Berkeley and its contributors'' in the
.\" documentation or other materials provided with the distribution and in
.\" all advertising materials mentioning features or use of this software.
.\" Neither the name of the University nor the names of its contributors may
.\" be used to endorse or promote products derived from this software without
.\" specific prior written permission.
.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
.\"
.\"     @(#)gprof.1	6.6 (Berkeley) 7/24/90
.\"
.\" Japanese Version Copyright (c) 1997-2000 NAKANO Takeo all rights reserved.
.\" Translated Fri Jan 9 1998 by NAKANO Takeo <nakano@@apm.seikei.ac.jp>
.\" Updated Fri 27 Oct 2000 by NAKANO Takeo
.\"
.TH GPROF 1 "January 29, 1993"
.SH 名前
gprof \- コール・グラフ (call graph) のプロファイルを表示する
.SH 書式
.B gprof [ \-abcsz ] [ \-e|\-E
.I name
.B ] [ \-f|\-F 
.I name
.B ] 
.B [ \-k
.I fromname toname
.B ] [ 
.I objfile
.B [ 
.I gmon.out
.B ] 
.B ] 
.SH 説明
.B gprof
は C, Pascal, Fortran77 プログラムの実行プロファイルを生成する。呼び出
されたルーチンの値は呼び出し元に取り込まれる。プロファイルのためのデー
タはコール・グラフ (call graph: 関数コールの親子関係のグラフ) のプロファ
イルデータファイル (デフォルトでは `gmon.out') から取り
込まれる。このファイルは
.BR cc ( 1 ) 、
.BR pc ( 1 ) 、
.BR f77 ( 1 )
で
.B \-pg
オプションを指定してコンパイルされたプログラムによって作成される。
.B \-pg
オプションでは、リンクされるライブラリもプロファイル用にコンパイルされ
たものになる。
.B gprof
は指定されたオブジェクトファイル (デフォルトは `a.out') からシンボ
ルテーブルを読み、これと `gmon.out' のコール・グラフ・プロファイルとを
関連付ける。
複数のプロファイルデータファイルが指定された場合には、
.B gprof
はそれらのプロファイル情報をすべて合計して表示する。
.PP
.B gprof
はそれぞれのルーチンによって消費された時間を計算する。次にこれらの時間
をコール・グラフの枝に沿って親ルーチンへと伝播させる。プログラムの 
サイクル (cycle: 再帰呼び出しの循環) をまとめ、サイクルへのコールを行っ
たルーチンは、サイクルで消費した時間を共有するとみなす。最初のリストは
関数で、消費時間の順にソートされている。
消費時間にはコール・グラフでの子孫の分も含まれる。それぞれの関数エントリ
の下には、その関数のコール・グラフでの (直接の) 子と、そこで消費された
時間がどのように関数に伝播したかが表示される。同様の表示は関数の上にも
表示されており、その関数とそれらの子孫で消費された時間がどのようにコー
ル・グラフの (直接の) 親へ伝播するかが示される。
.PP
サイクルも表示される。サイクル全体としてのエントリ、そのサイクルに属す
るメンバーのリストとそれぞれのメンバーによって消費された時間、その 
サイクルの呼び出し回数などが表示される。
.PP
次にフラットプロファイル
.RB ( prof (1)
の結果と似たもの) が与えられる。このリストでは合計実行時間、呼び出し回
数、そのルーチン自身で消費した時間 (ミリ秒単位)、子孫の分も含めて消費
した時間 (ミリ秒単位) が表示される。
.PP
最後に関数名の索引が与えられる。
.SH オプション
以下のオプションが指定できる:
.TP
.B \-a
スタティックに宣言された関数を表示しない。このオプションが指定され
ると、スタティックな関数に関する全ての情報 (実行時間、他の関数の呼び出
し、他の関数から呼び出される関係など) は、ファイル `objfile' 中でこの
スタティックな関数の直前にロードされた関数に属することになる。
.TP
.B \-b
プロファイルのそれぞれのフィールドに関する説明を表示しない。
.TP
.B \-c
プログラムのスタティックなコール・グラフを、オブジェクトファイルのテキ
ストセグメントを調べるという発見的 (heuristic) な手法で作成する。ス
タティック・コールだけの親や子の呼び出し回数は 0 として表示する。
.TP
.BI "\-e " name
ルーチン
.I name
と、その子孫すべてに関するグラフプロファイルのエントリを表示しない 
(子孫に関しては、別の祖先がいれば表示される)。
.B \-e
オプションは複数回指定できる。一つの
.B \-e
オプションについて指定できる
.I name
は一つだけである。
.TP
.BI "\-E " name
.B \-e
と同様にルーチン
.I name
とその子孫に関するグラフプロファイルのエントリを表示しない。また
.I name
(とその子孫) によって消費された時間も、プログラム実行の総時間 (および
パーセンテージの計算) から除かれる。例えば
.BI "\-E " mcount
.BI "\-E " mcleanup
はデフォルトになっている。
.TP
.BI "\-f " name
ルーチン
.I name
とその子孫に関してのみ、グラフプロファイルのエントリを表示する。
.B \-f
オプションは複数回指定できる。一つの
.B \-f
オプションについて指定できる
.I name
は一つだけである。
.TP
.BI "\-F " name
.B \-f
と同様に、ルーチン
.I name
とその子孫に関してのみ、グラフプロファイルのエントリを表示する。またこ
れらによって用いられた時間だけを合計の実行時間とパーセンテージの計算に
用いる。
.B \-F
オプションは複数指定できる。一つの
.B \-F
オプションについて指定できる
.I name
は一つだけである。
.B \-F
オプションは
.B \-E
オプションによる設定を上書きする。
.TP
.BI "\-k " "fromname toname"
ルーチン
.I fromname
からルーチン
.I toname
までの枝を削除する。これは不要なサイクルの循環を破壊するのに便利である。
.B \-k
は複数指定できる。一つの
.B \-k
オプションに対して指定できるのは一組のルーチン名だけである。
.TP
.B \-s
プロファイルファイル `gmon.sum' を作成し、指定したプロファイルファイル
の情報すべてからのプロファイル情報を総計したものを書き込む。この合計プ
ロファイルファイルは後に gprof を (おそらくは
.B \-s
と共に) 実行する際に与えて、 `objfile' ファイルを複数回実行して得られ
たプロファイルデータを累積するために用いることもできる。
.TP
.B \-v
gprof のバージョン番号を表示して終了する。
.TP
.B \-z
用いられなかった関数 (呼び出し回数と実行時間でわかる) も表示する。これ
を
.B \-c
オプションと共に用いると、呼び出されなかったルーチンを見つけるのに役
に立つ。
.PP
.SH ファイル
a.out       名前のリストとテキスト空間
.br
gmon.out    ダイナミックなコール・グラフとプロファイル
.br
gmon.sum    ダイナミックなコール・グラフとプロファイルのまとめ

.SH 関連項目
.BR monitor ( 3 ) ,
.BR profil ( 2 ) ,
.BR cc ( 1 ) ,
.BR prof ( 1 )
.sp
``An Execution Profiler for Modular Programs'',
by S. Graham, P. Kessler, M. McKusick;
.I
Software \- Practice and Experience,
Vol. 13, pp. 671-685, 1983.
.sp
``gprof: A Call Graph Execution Profiler'',
by S. Graham, P. Kessler, M. McKusick;
.I
Proceedings of the SIGPLAN '82 Symposium on Compiler Construction,
SIGPLAN Notices, Vol. 17, No  6, pp. 120-126, June 1982.

.SH 履歴
.B gprof
は 4.2 BSD から登場した。
.SH バグ
サンプリングの粒度 (granularity) も表示されるが、せいぜい統計的なもの
でしかない。ここでは関数の一回あたりの実行時間は、関数の消費した合計時
間を呼び出し回数で割ったものと仮定している。したがって、呼び出しグラフの
枝を伝播して関数の親に伝わる時間は、枝を通過した回数に直に比例すること
になる。
.PP
自分自身がプロファイルされていない親でも、子から伝播してくる時間を保有
することになる。しかしこれらのルーチンは、呼び出しグラフの中で (どこか
ら呼び出されたのでもなく) 勝手に起動するように見えるので、その時間はそ
れ以上どこへも伝播しない。同様に、シグナルをキャッチしたルーチンは、プ
ロファイルされていても勝手に起動するように見えてしまう (理由はもう少し
複雑だが)。シグナルをキャッチしたルーチンの子がプロファイルされてい
ればその時間を正しく伝播させることができるが、親ルーチンがプロファ
イルルーチンの途中でシグナルがキャッチされた場合には全ての情報は失われる。
.PP
プロファイルされるプログラムは
.BR exit ( 2 )
をコールして終了するか、 main ルーチンからの return で終了しなければな
らない。さもないと終了時にプロファイル情報が `gmon.out' ファイルにセー
ブされない。
[gprof.txt (text/plain, inline)]
GPROF(1)                                                              GPROF(1)



名前
       gprof - コール・グラフ (call graph) のプロファイルを表示する

書式
       gprof [ -abcsz ] [ -e|-E name ] [ -f|-F name ] [ -k fromname toname ] [
       objfile [ gmon.out ] ]

説明
       gprof は C, Pascal, Fortran77  プログラムの実行プロファイルを生成する。
       呼び出 されたルーチンの値は呼び出し元に取り込まれる。プロファイルのため
       のデー タはコール・グラフ (call graph: 関数コールの親子関係のグラフ) の
       プロファ イルデータファイル (デフォルトでは `gmon.out') から取り 込まれ
       る。このファイルは cc(1)、 pc(1)、 f77(1) で -pg オプションを指定してコ
       ンパイルされたプログラムによって作成される。 -pg オプションでは、リンク
       されるライブラリもプロファイル用にコンパイルされ  たものになる。  gprof
       は指定されたオブジェクトファイル (デフォルトは `a.out') からシンボ ルテ
       ーブルを読み、これと `gmon.out' のコール・グラフ・プロファイルとを 関連
       付ける。  複数のプロファイルデータファイルが指定された場合には、  gprof
       はそれらのプロファイル情報をすべて合計して表示する。

       gprof  はそれぞれのルーチンによって消費された時間を計算する。次にこれら
       の時間 をコール・グラフの枝に沿って親ルーチンへと伝播させる。プログラム
       の サイクル (cycle: 再帰呼び出しの循環)  をまとめ、サイクルへのコールを
       行っ たルーチンは、サイクルで消費した時間を共有するとみなす。最初のリス
       トは 関数で、消費時間の順にソートされている。  消費時間にはコール・グラ
       フでの子孫の分も含まれる。それぞれの関数エントリ の下には、その関数のコ
       ール・グラフでの (直接の) 子と、そこで消費された 時間がどのように関数に
       伝播したかが表示される。同様の表示は関数の上にも 表示されており、その関
       数とそれらの子孫で消費された時間がどのようにコー ル・グラフの  (直接の)
       親へ伝播するかが示される。

       サイクルも表示される。サイクル全体としてのエントリ、そのサイクルに属す
       るメンバーのリストとそれぞれのメンバーによって消費された時間、その サイ
       クルの呼び出し回数などが表示される。

       次にフラットプロファイル  (prof(1) の結果と似たもの) が与えられる。この
       リストでは合計実行時間、呼び出し回 数、そのルーチン自身で消費した時間 (
       ミリ秒単位)、子孫の分も含めて消費 した時間 (ミリ秒単位) が表示される。

       最後に関数名の索引が与えられる。

オプション
       以下のオプションが指定できる:

       -a     スタティックに宣言された関数を表示しない。このオプションが指定さ
              れ ると、スタティックな関数に関する全ての情報  (実行時間、他の関
              数の呼び出   し、他の関数から呼び出される関係など)  は、ファイル
              `objfile' 中でこの  スタティックな関数の直前にロードされた関数に
              属することになる。

       -b     プロファイルのそれぞれのフィールドに関する説明を表示しない。

       -c     プログラムのスタティックなコール・グラフを、オブジェクトファイル
              のテキ ストセグメントを調べるという発見的 (heuristic) な手法で作
              成する。ス タティック・コールだけの親や子の呼び出し回数は 0 とし
              て表示する。

       -e name
              ルーチン name と、その子孫すべてに関するグラフプロファイルのエン
              トリを表示しない  (子孫に関しては、別の祖先がいれば表示される)。
              -e オプションは複数回指定できる。一つの -e  オプションについて指
              定できる name は一つだけである。

       -E name
              -e  と同様にルーチン name とその子孫に関するグラフプロファイルの
              エントリを表示しない。また name (とその子孫)  によって消費された
              時間も、プログラム実行の総時間  (および パーセンテージの計算) か
              ら除かれる。例えば -E mcount -E mcleanup  はデフォルトになってい
              る。

       -f name
              ルーチン name とその子孫に関してのみ、グラフプロファイルのエント
              リを表示する。 -f オプションは複数回指定できる。一つの -f オプシ
              ョンについて指定できる name は一つだけである。

       -F name
              -f  と同様に、ルーチン name とその子孫に関してのみ、グラフプロフ
              ァイルのエントリを表示する。またこ  れらによって用いられた時間だ
              けを合計の実行時間とパーセンテージの計算に  用いる。 -F オプショ
              ンは複数指定できる。一つの -F オプションについて指定できる  name
              は一つだけである。 -F オプションは -E オプションによる設定を上書
              きする。

       -k fromname toname
              ルーチン fromname からルーチン toname までの枝を削除する。これは
              不要なサイクルの循環を破壊するのに便利である。 -k は複数指定でき
              る。一つの -k オプションに対して指定できるのは一組のルーチン名だ
              けである。

       -s     プロファイルファイル `gmon.sum' を作成し、指定したプロファイルフ
              ァイル  の情報すべてからのプロファイル情報を総計したものを書き込
              む。この合計プ  ロファイルファイルは後に gprof を (おそらくは -s
              と共に) 実行する際に与えて、 `objfile'  ファイルを複数回実行して
              得られ たプロファイルデータを累積するために用いることもできる。

       -v     gprof のバージョン番号を表示して終了する。

       -z     用いられなかった関数  (呼び出し回数と実行時間でわかる)  も表示す
              る。これ を -c  オプションと共に用いると、呼び出されなかったルー
              チンを見つけるのに役 に立つ。

ファイル
       a.out       名前のリストとテキスト空間
       gmon.out    ダイナミックなコール・グラフとプロファイル
       gmon.sum    ダイナミックなコール・グラフとプロファイルのまとめ


関連項目
       monitor(3), profil(2), cc(1), prof(1)

       ``An  Execution  Profiler  for  Modular  Programs'',  by  S. Graham, P.
       Kessler, M. McKusick; Software - Practice and Experience, Vol. 13,  pp.
       671-685, 1983.

       ``gprof:  A  Call Graph Execution Profiler'', by S. Graham, P. Kessler,
       M. McKusick; Proceedings of the SIGPLAN '82 Symposium on Compiler  Con‐
       struction, SIGPLAN Notices, Vol. 17, No  6, pp. 120-126, June 1982.


履歴
       gprof は 4.2 BSD から登場した。

バグ
       サンプリングの粒度  (granularity)  も表示されるが、せいぜい統計的なもの
       でしかない。ここでは関数の一回あたりの実行時間は、関数の消費した合計時
       間を呼び出し回数で割ったものと仮定している。したがって、呼び出しグラフ
       の 枝を伝播して関数の親に伝わる時間は、枝を通過した回数に直に比例するこ
       と になる。

       自分自身がプロファイルされていない親でも、子から伝播してくる時間を保有
       することになる。しかしこれらのルーチンは、呼び出しグラフの中で  (どこか
       ら呼び出されたのでもなく)  勝手に起動するように見えるので、その時間はそ
       れ以上どこへも伝播しない。同様に、シグナルをキャッチしたルーチンは、プ
       ロファイルされていても勝手に起動するように見えてしまう  (理由はもう少し
       複雑だが)。シグナルをキャッチしたルーチンの子がプロファイルされてい  れ
       ばその時間を正しく伝播させることができるが、親ルーチンがプロファ イルル
       ーチンの途中でシグナルがキャッチされた場合には全ての情報は失われる。

       プロファイルされるプログラムは exit(2) をコールして終了するか、 main ル
       ーチンからの return で終了しなければな らない。さもないと終了時にプロフ
       ァイル情報が `gmon.out' ファイルにセー ブされない。



                               January 29, 1993                       GPROF(1)

Information forwarded to debian-bugs-dist@lists.debian.org, Colin Watson <cjwatson@debian.org>:
Bug#552201; Package groff-base. (Tue, 14 Dec 2010 08:03:06 GMT) (full text, mbox, link).


Acknowledgement sent to Daiki Ueno <ueno@unixuser.org>:
Extra info received and forwarded to list. Copy sent to Colin Watson <cjwatson@debian.org>. (Tue, 14 Dec 2010 08:03:06 GMT) (full text, mbox, link).


Message #57 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Daiki Ueno <ueno@unixuser.org>
To: Werner LEMBERG <wl@gnu.org>
Cc: kmuto@debian.org, 552201@bugs.debian.org, cjwatson@debian.org, groff@gnu.org
Subject: Re: [Groff] Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Tue, 14 Dec 2010 17:03:02 +0900
Werner LEMBERG <wl@gnu.org> writes:

> I've revised all patches, updated the documentation, normalized the
> import of gnulib's wcwidth, fixed a buglet in the new `.class' request
> (each call caused insertion of an empty line), and it seems that
> everything works fine!

Thanks!  I confirmed the current CVS code working fine.

> The only thing which I consider bad is that there is `(' at the line
> end.  Can this be improved by adjusting the calls to .cflags?

Hmm, I tried to add `(' to CJKpostpunct class, but it did not help.

>        リストでは合計実行時間、呼び出し回 数、そのルーチン自身で消費した時間 (

Groff adds a space between (non-punct) Japanese characters instead of
breaking the line.  The expected result would be something like:

>        リストでは合計実行時間、呼び出し回数、そのルーチン自身で消費した時間
>        (...

or:

>        リストでは合計実行時間、呼び出し回数、そのルーチン自身で消費した時
>        間 (...

Perhaps assigning IGNORE_HCODE to whole CJK range is not perfectly
enough to control the line breaking rule.

Regards,
-- 
Daiki Ueno

Information forwarded to debian-bugs-dist@lists.debian.org, Colin Watson <cjwatson@debian.org>:
Bug#552201; Package groff-base. (Sat, 18 Dec 2010 09:15:09 GMT) (full text, mbox, link).


Acknowledgement sent to Werner LEMBERG <wl@gnu.org>:
Extra info received and forwarded to list. Copy sent to Colin Watson <cjwatson@debian.org>. (Sat, 18 Dec 2010 09:15:09 GMT) (full text, mbox, link).


Message #62 received at 552201@bugs.debian.org (full text, mbox, reply):

From: Werner LEMBERG <wl@gnu.org>
To: ueno@unixuser.org
Cc: kmuto@debian.org, 552201@bugs.debian.org, cjwatson@debian.org, groff@gnu.org
Subject: Re: [Groff] Re: Bug#552201: groff-base: Japanese manpages are shown with too wide spaces
Date: Sat, 18 Dec 2010 10:12:55 +0100 (CET)
[Message part 1 (text/plain, inline)]
>> The only thing which I consider bad is that there is `(' at the
>> line end.  Can this be improved by adjusting the calls to .cflags?
>
> Hmm, I tried to add `(' to CJKpostpunct class, but it did not help.
>
>>        リストでは合計実行時間、呼び出し回 数、そのルーチン自身で消費した時間 (
>
> Groff adds a space between (non-punct) Japanese characters instead
> of breaking the line.  The expected result would be something like:
>
>>        リストでは合計実行時間、呼び出し回数、そのルーチン自身で消費した時間
>>        (...
>
> or:
>
>>        リストでは合計実行時間、呼び出し回数、そのルーチン自身で消費した時
>>        間 (...
>
> Perhaps assigning IGNORE_HCODE to whole CJK range is not perfectly
> enough to control the line breaking rule.

I should have activated my brain before asking such questions :-)

Here are my observations.

  . Attached you can find an improved version of the Japanese
    `gprof.1' man page (I'm calling it `gprofx.1' for convenience).
    Note the many backslashes at the end of lines to suppress unwanted
    spaces caused by newline characters.  Alternatively, it might be
    useful to have long lines to avoid linebreaks at all.  Most
    editors provide automatic line breaking anyways.

    In groff, there is nothing similar to a `CJK*' environment (as
    provided by my CJK package for LaTeX) to handle suppression of
    unwanted spaces automatically.  It would need more cflags trickery
    (with new values) to emulate this behaviour since groff doesn't
    know the concept of active characters.

  . Formatting the improved man page, you get a lot of warning
    messages like

      gprofx.1:45: warning [p 1, 2.2i]: cannot adjust line

    This gets much better if you ensure that the indented part of the
    main page (which is the majority of text) has an even number of
    characters so that the double-width CJK characters fit exactly.
    Try, for example, this:

      groff -Keuc-japan -Tutf8 -rIN=8n \
            -ww -man -mja gprofx.1 > gprofx.txt

    and the number of warnings decreases from 15 to only 4 (output
    attached).  I strongly suggest to add something like this to the
    Japanese locale configuration for man.

  . To get really rid of the warnings, and to improve formatting CJK
    stuff in general, we need inter-character glue between CJK
    characters.  Without that, groff produces too short lines (it then
    emits the `cannot adjust line' warning).  This is a TODO.

    An alternative is to add `.ad l' for Japanese manpages.

  . To come back to the abovementioned problem of `(' in the original
    output of `gprof.1', this isn't solvable at all with the current
    set of cflags: The problem is conflicting cflags values: The
    character right after the open parenthesis, `ミ', has value 66,
    which means

      lines can be broken before the character (regardless of the
      hcode values of the surrounding characters)

    What ever cflags value I set for `(', the value `66' of `ミ'
    inserts a breakpoint, causing a line break right before the
    character.

    I've now implemented three new cflags values, completely
    independent of hcode values:

      don't break before character but allow break after: 128
      don't break after character but allow break before: 256
      allow break before and after character:             512

    which are handled internally similar to kern pairs so that the new
    `inter_char_space_node'[1] sees the cflags values of both the left
    and right character to decide whether there should be a zero-width
    break inbetween.  I've also updated ja.tmac accordingly.

    Please test.


        Werner


[1] Contrary to its name, inter-character spacing isn't yet
    implemented.  As soon as it is, value 512 becomes `allow
    inter-character breaks and insert stretchable space'; this should
    eventually fix all line adjust warnings.
[gprofx.1 (text/plain, inline)]
.\" Copyright (c) 1983, 1990 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms are permitted provided
.\" that: (1) source distributions retain this entire copyright notice and
.\" comment, and (2) distributions including binaries display the following
.\" acknowledgement:  ``This product includes software developed by the
.\" University of California, Berkeley and its contributors'' in the
.\" documentation or other materials provided with the distribution and in
.\" all advertising materials mentioning features or use of this software.
.\" Neither the name of the University nor the names of its contributors may
.\" be used to endorse or promote products derived from this software without
.\" specific prior written permission.
.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
.\"
.\"     @(#)gprof.1	6.6 (Berkeley) 7/24/90
.\"
.\" Japanese Version Copyright (c) 1997-2000 NAKANO Takeo all rights reserved.
.\" Translated Fri Jan 9 1998 by NAKANO Takeo <nakano@@apm.seikei.ac.jp>
.\" Updated Fri 27 Oct 2000 by NAKANO Takeo
.\"
.TH GPROF 1 "January 29, 1993"
.SH 名前
gprof \- コール・グラフ (call graph) のプロファイルを表示する
.SH 書式
.B gprof [ \-abcsz ] [ \-e|\-E
.I name
.B ] [ \-f|\-F
.I name
.B ]
.B [ \-k
.I fromname toname
.B ] [
.I objfile
.B [
.I gmon.out
.B ]
.B ]
.SH 説明
.B gprof
は C, Pascal, Fortran77 プログラムの実行プロファイルを生成する。呼び出\
されたルーチンの値は呼び出し元に取り込まれる。プロファイルのためのデー\
タはコール・グラフ (call graph: 関数コールの親子関係のグラフ) のプロファ\
イルデータファイル (デフォルトでは `gmon.out') から取り\
込まれる。このファイルは
.BR cc ( 1 ) 、
.BR pc ( 1 ) 、
.BR f77 ( 1 )
で
.B \-pg
オプションを指定してコンパイルされたプログラムによって作成される。
.B \-pg
オプションでは、リンクされるライブラリもプロファイル用にコンパイルされ\
たものになる。
.B gprof
は指定されたオブジェクトファイル (デフォルトは `a.out') からシンボ\
ルテーブルを読み、これと `gmon.out' のコール・グラフ・プロファイルとを\
関連付ける。\
複数のプロファイルデータファイルが指定された場合には、
.B gprof
はそれらのプロファイル情報をすべて合計して表示する。
.PP
.B gprof
はそれぞれのルーチンによって消費された時間を計算する。次にこれらの時間\
をコール・グラフの枝に沿って親ルーチンへと伝播させる。プログラムの\
サイクル (cycle: 再帰呼び出しの循環) をまとめ、サイクルへのコールを行っ\
たルーチンは、サイクルで消費した時間を共有するとみなす。最初のリストは\
関数で、消費時間の順にソートされている。\
消費時間にはコール・グラフでの子孫の分も含まれる。それぞれの関数エントリ\
の下には、その関数のコール・グラフでの (直接の) 子と、そこで消費された\
時間がどのように関数に伝播したかが表示される。同様の表示は関数の上にも\
表示されており、その関数とそれらの子孫で消費された時間がどのようにコー\
ル・グラフの (直接の) 親へ伝播するかが示される。
.PP
サイクルも表示される。サイクル全体としてのエントリ、そのサイクルに属す\
るメンバーのリストとそれぞれのメンバーによって消費された時間、その\
サイクルの呼び出し回数などが表示される。
.PP
次にフラットプロファイル
.RB ( prof (1)
の結果と似たもの) が与えられる。このリストでは合計実行時間、呼び出し回\
数、そのルーチン自身で消費した時間 (ミリ秒単位)、子孫の分も含めて消費\
した時間 (ミリ秒単位) が表示される。
.PP
最後に関数名の索引が与えられる。
.SH オプション
以下のオプションが指定できる:
.TP
.B \-a
スタティックに宣言された関数を表示しない。このオプションが指定され\
ると、スタティックな関数に関する全ての情報 (実行時間、他の関数の呼び出\
し、他の関数から呼び出される関係など) は、ファイル `objfile' 中でこの\
スタティックな関数の直前にロードされた関数に属することになる。
.TP
.B \-b
プロファイルのそれぞれのフィールドに関する説明を表示しない。
.TP
.B \-c
プログラムのスタティックなコール・グラフを、オブジェクトファイルのテキ\
ストセグメントを調べるという発見的 (heuristic) な手法で作成する。ス\
タティック・コールだけの親や子の呼び出し回数は 0 として表示する。
.TP
.BI "\-e " name
ルーチン
.I name
と、その子孫すべてに関するグラフプロファイルのエントリを表示しない
(子孫に関しては、別の祖先がいれば表示される)。
.B \-e
オプションは複数回指定できる。一つの
.B \-e
オプションについて指定できる
.I name
は一つだけである。
.TP
.BI "\-E " name
.B \-e
と同様にルーチン
.I name
とその子孫に関するグラフプロファイルのエントリを表示しない。また
.I name
(とその子孫) によって消費された時間も、プログラム実行の総時間 (および\
パーセンテージの計算) から除かれる。例えば
.BI "\-E " mcount
.BI "\-E " mcleanup
はデフォルトになっている。
.TP
.BI "\-f " name
ルーチン
.I name
とその子孫に関してのみ、グラフプロファイルのエントリを表示する。
.B \-f
オプションは複数回指定できる。一つの
.B \-f
オプションについて指定できる
.I name
は一つだけである。
.TP
.BI "\-F " name
.B \-f
と同様に、ルーチン
.I name
とその子孫に関してのみ、グラフプロファイルのエントリを表示する。またこ\
れらによって用いられた時間だけを合計の実行時間とパーセンテージの計算に\
用いる。
.B \-F
オプションは複数指定できる。一つの
.B \-F
オプションについて指定できる
.I name
は一つだけである。
.B \-F
オプションは
.B \-E
オプションによる設定を上書きする。
.TP
.BI "\-k " "fromname toname"
ルーチン
.I fromname
からルーチン
.I toname
までの枝を削除する。これは不要なサイクルの循環を破壊するのに便利である。
.B \-k
は複数指定できる。一つの
.B \-k
オプションに対して指定できるのは一組のルーチン名だけである。
.TP
.B \-s
プロファイルファイル `gmon.sum' を作成し、指定したプロファイルファイル\
の情報すべてからのプロファイル情報を総計したものを書き込む。この合計プ\
ロファイルファイルは後に gprof を (おそらくは
.B \-s
と共に) 実行する際に与えて、 `objfile' ファイルを複数回実行して得られ\
たプロファイルデータを累積するために用いることもできる。
.TP
.B \-v
gprof のバージョン番号を表示して終了する。
.TP
.B \-z
用いられなかった関数 (呼び出し回数と実行時間でわかる) も表示する。これ\
を
.B \-c
オプションと共に用いると、呼び出されなかったルーチンを見つけるのに役\
に立つ。
.PP
.SH ファイル
a.out       名前のリストとテキスト空間
.br
gmon.out    ダイナミックなコール・グラフとプロファイル
.br
gmon.sum    ダイナミックなコール・グラフとプロファイルのまとめ

.SH 関連項目
.BR monitor ( 3 ) ,
.BR profil ( 2 ) ,
.BR cc ( 1 ) ,
.BR prof ( 1 )
.sp
``An Execution Profiler for Modular Programs'',
by S. Graham, P. Kessler, M. McKusick;
.I
Software \- Practice and Experience,
Vol. 13, pp. 671-685, 1983.
.sp
``gprof: A Call Graph Execution Profiler'',
by S. Graham, P. Kessler, M. McKusick;
.I
Proceedings of the SIGPLAN '82 Symposium on Compiler Construction,
SIGPLAN Notices, Vol. 17, No  6, pp. 120-126, June 1982.

.SH 履歴
.B gprof
は 4.2 BSD から登場した。
.SH バグ
サンプリングの粒度 (granularity) も表示されるが、せいぜい統計的なもの\
でしかない。ここでは関数の一回あたりの実行時間は、関数の消費した合計時\
間を呼び出し回数で割ったものと仮定している。したがって、呼び出しグラフの\
枝を伝播して関数の親に伝わる時間は、枝を通過した回数に直に比例すること\
になる。
.PP
自分自身がプロファイルされていない親でも、子から伝播してくる時間を保有\
することになる。しかしこれらのルーチンは、呼び出しグラフの中で (どこか\
ら呼び出されたのでもなく) 勝手に起動するように見えるので、その時間はそ\
れ以上どこへも伝播しない。同様に、シグナルをキャッチしたルーチンは、プ\
ロファイルされていても勝手に起動するように見えてしまう (理由はもう少し\
複雑だが)。シグナルをキャッチしたルーチンの子がプロファイルされてい\
ればその時間を正しく伝播させることができるが、親ルーチンがプロファ\
イルルーチンの途中でシグナルがキャッチされた場合には全ての情報は失われる。
.PP
プロファイルされるプログラムは
.BR exit ( 2 )
をコールして終了するか、 main ルーチンからの return で終了しなければな\
らない。さもないと終了時にプロファイル情報が `gmon.out' ファイルにセー\
ブされない。
[gprofx.txt (text/plain, inline)]
GPROF(1)                                                              GPROF(1)



名前
        gprof - コール・グラフ (call graph) のプロファイルを表示する

書式
        gprof  [ -abcsz ] [ -e|-E name ] [ -f|-F name ] [ -k fromname toname ]
        [ objfile [ gmon.out ] ]

説明
        gprof は  C,  Pascal,  Fortran77  プログラムの実行プロファイルを生成す
        る。呼び出されたルーチンの値は呼び出し元に取り込まれる。プロファイルの
        ためのデータはコール・グラフ (call  graph:  関数コールの親子関係のグラ
        フ)  のプロファイルデータファイル (デフォルトでは `gmon.out') から取り
        込まれる。このファイルは cc(1)、 pc(1)、 f77(1) で -pg  オプションを指
        定してコンパイルされたプログラムによって作成される。  -pg オプションで
        は、リンクされるライブラリもプロファイル用にコンパイルされたものにな
        る。  gprof は指定されたオブジェクトファイル (デフォルトは `a.out') か
        らシンボルテーブルを読み、これと `gmon.out' のコール・グラフ・プロファ
        イルとを関連付ける。複数のプロファイルデータファイルが指定された場合に
        は、 gprof はそれらのプロファイル情報をすべて合計して表示する。

        gprof はそれぞれのルーチンによって消費された時間を計算する。次にこれら
        の時間をコール・グラフの枝に沿って親ルーチンへと伝播させる。プログラム
        のサイクル (cycle: 再帰呼び出しの循環)  をまとめ、サイクルへのコールを
        行ったルーチンは、サイクルで消費した時間を共有するとみなす。最初のリス
        トは関数で、消費時間の順にソートされている。消費時間にはコール・グラフ
        での子孫の分も含まれる。それぞれの関数エントリの下には、その関数のコー
        ル・グラフでの (直接の) 子と、そこで消費された時間がどのように関数に伝
        播したかが表示される。同様の表示は関数の上にも表示されており、その関数
        とそれらの子孫で消費された時間がどのようにコール・グラフの (直接の) 親
        へ伝播するかが示される。

        サイクルも表示される。サイクル全体としてのエントリ、そのサイクルに属す
        るメンバーのリストとそれぞれのメンバーによって消費された時間、そのサイ
        クルの呼び出し回数などが表示される。

        次にフラットプロファイル (prof(1) の結果と似たもの) が与えられる。この
        リストでは合計実行時間、呼び出し回数、そのルーチン自身で消費した時間
        (ミリ秒単位)、子孫の分も含めて消費した時間 (ミリ秒単位) が表示される。

        最後に関数名の索引が与えられる。

オプション
        以下のオプションが指定できる:

        -a      スタティックに宣言された関数を表示しない。このオプションが指定
                されると、スタティックな関数に関する全ての情報 (実行時間、他の
                関数の呼び出し、他の関数から呼び出される関係など) は、ファイル
                `objfile' 中でこのスタティックな関数の直前にロードされた関数に
                属することになる。

        -b      プロファイルのそれぞれのフィールドに関する説明を表示しない。

        -c      プログラムのスタティックなコール・グラフを、オブジェクトファイ
                ルのテキストセグメントを調べるという発見的 (heuristic)  な手法
                で作成する。スタティック・コールだけの親や子の呼び出し回数は 0
                として表示する。

        -e name ルーチン name と、その子孫すべてに関するグラフプロファイルのエ
                ントリを表示しない   (子孫に関しては、別の祖先がいれば表示され
                る)。 -e オプションは複数回指定できる。一つの -e  オプションに
                ついて指定できる name は一つだけである。

        -E name -e  と同様にルーチン name とその子孫に関するグラフプロファイル
                のエントリを表示しない。また name (とその子孫)  によって消費さ
                れた時間も、プログラム実行の総時間   (およびパーセンテージの計
                算) から除かれる。例えば -E mcount -E mcleanup  はデフォルトに
                なっている。

        -f name ルーチン name とその子孫に関してのみ、グラフプロファイルのエン
                トリを表示する。 -f オプションは複数回指定できる。一つの -f オ
                プションについて指定できる name は一つだけである。

        -F name -f  と同様に、ルーチン name とその子孫に関してのみ、グラフプロ
                ファイルのエントリを表示する。またこれらによって用いられた時間
                だけを合計の実行時間とパーセンテージの計算に用いる。  -F  オプ
                ションは複数指定できる。一つの -F オプションについて指定できる
                name  は一つだけである。 -F オプションは -E オプションによる設
                定を上書きする。

        -k fromname toname
                ルーチン fromname からルーチン toname までの枝を削除する。これ
                は不要なサイクルの循環を破壊するのに便利である。 -k は複数指定
                できる。一つの -k オプションに対して指定できるのは一組のルーチ
                ン名だけである。

        -s      プロファイルファイル `gmon.sum' を作成し、指定したプロファイル
                ファイルの情報すべてからのプロファイル情報を総計したものを書き
                込む。この合計プロファイルファイルは後に  gprof を (おそらくは
                -s と共に) 実行する際に与えて、 `objfile' ファイルを複数回実行
                して得られたプロファイルデータを累積するために用いることもでき
                る。

        -v      gprof のバージョン番号を表示して終了する。

        -z      用いられなかった関数 (呼び出し回数と実行時間でわかる) も表示す
                る。これを -c オプションと共に用いると、呼び出されなかったルー
                チンを見つけるのに役に立つ。

ファイル
        a.out       名前のリストとテキスト空間
        gmon.out    ダイナミックなコール・グラフとプロファイル
        gmon.sum    ダイナミックなコール・グラフとプロファイルのまとめ


関連項目
        monitor(3), profil(2), cc(1), prof(1)

        ``An Execution Profiler for  Modular  Programs'',  by  S.  Graham,  P.
        Kessler, M. McKusick; Software - Practice and Experience, Vol. 13, pp.
        671-685, 1983.

        ``gprof: A Call Graph Execution Profiler'', by S. Graham, P.  Kessler,
        M. McKusick; Proceedings of the SIGPLAN '82 Symposium on Compiler Con‐
        struction, SIGPLAN Notices, Vol. 17, No  6, pp. 120-126, June 1982.


履歴
        gprof は 4.2 BSD から登場した。

バグ
        サンプリングの粒度 (granularity)  も表示されるが、せいぜい統計的なもの
        でしかない。ここでは関数の一回あたりの実行時間は、関数の消費した合計時
        間を呼び出し回数で割ったものと仮定している。したがって、呼び出しグラフ
        の枝を伝播して関数の親に伝わる時間は、枝を通過した回数に直に比例するこ
        とになる。

        自分自身がプロファイルされていない親でも、子から伝播してくる時間を保有
        することになる。しかしこれらのルーチンは、呼び出しグラフの中で (どこか
        ら呼び出されたのでもなく) 勝手に起動するように見えるので、その時間はそ
        れ以上どこへも伝播しない。同様に、シグナルをキャッチしたルーチンは、プ
        ロファイルされていても勝手に起動するように見えてしまう (理由はもう少し
        複雑だが)。シグナルをキャッチしたルーチンの子がプロファイルされていれ
        ばその時間を正しく伝播させることができるが、親ルーチンがプロファイル
        ルーチンの途中でシグナルがキャッチされた場合には全ての情報は失われる。

        プロファイルされるプログラムは  exit(2)  をコールして終了するか、 main
        ルーチンからの return で終了しなければならない。さもないと終了時にプロ
        ファイル情報が `gmon.out' ファイルにセーブされない。



                               January 29, 1993                       GPROF(1)

Reply sent to Colin Watson <cjwatson@debian.org>:
You have taken responsibility. (Sun, 09 Jan 2011 14:51:13 GMT) (full text, mbox, link).


Notification sent to Kenshi Muto <kmuto@debian.org>:
Bug acknowledged by developer. (Sun, 09 Jan 2011 14:51:13 GMT) (full text, mbox, link).


Message #67 received at 552201-close@bugs.debian.org (full text, mbox, reply):

From: Colin Watson <cjwatson@debian.org>
To: 552201-close@bugs.debian.org
Subject: Bug#552201: fixed in groff 1.21-1
Date: Sun, 09 Jan 2011 14:48:13 +0000
Source: groff
Source-Version: 1.21-1

We believe that the bug you reported is fixed in the latest version of
groff, which is due to be installed in the Debian FTP archive:

groff-base_1.21-1_i386.deb
  to main/g/groff/groff-base_1.21-1_i386.deb
groff_1.21-1.debian.tar.gz
  to main/g/groff/groff_1.21-1.debian.tar.gz
groff_1.21-1.dsc
  to main/g/groff/groff_1.21-1.dsc
groff_1.21-1_i386.deb
  to main/g/groff/groff_1.21-1_i386.deb
groff_1.21.orig.tar.gz
  to main/g/groff/groff_1.21.orig.tar.gz



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 552201@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Colin Watson <cjwatson@debian.org> (supplier of updated groff package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Sun, 09 Jan 2011 13:15:30 +0000
Source: groff
Binary: groff-base groff
Architecture: source i386
Version: 1.21-1
Distribution: experimental
Urgency: low
Maintainer: Colin Watson <cjwatson@debian.org>
Changed-By: Colin Watson <cjwatson@debian.org>
Description: 
 groff      - GNU troff text-formatting system
 groff-base - GNU troff text-formatting system (base system components)
Closes: 369254 450434 540477 545807 552201 599648
Changes: 
 groff (1.21-1) experimental; urgency=low
 .
   * New upstream release:
     - New warning category 'file'.  (man-db uses this as part of
       automatically enabling language-specific hyphenation rules, which
       should now work.)
     - CJK line-breaking and hyphenation support (closes: #552201).
     - Fix typo in groff_man(7) (closes: #369254).
     - Fix typo in "Character Translations" info node (closes: #450434).
     - Fix white heart and diamond Unicode values in groff_char(7) (closes:
       #540477).
     - Point to troff(1) for -w and -W in groff(1) (closes: #545807).
   * Document reasons for groff's Recommends in its package description
     (closes: #599648).
   * Switch build-dependency from byacc to bison, as that's what was used to
     generate the parsers in the 1.21 release.
   * Force YACC='bison -y' when configuring, to avoid problems if byacc is
     also installed.
   * Use a separate build directory, eliminating the requirement to preserve
     some files by hand.
   * Policy version 3.9.1:
     - Rename debian/README.build to debian/README.source.
     - Add a Homepage field.
     - Refer to /usr/share/common-licenses/GFDL-1.3 in debian/copyright
       rather than quoting it (although the GPL v3 governs this package, as
       explained in detail in debian/copyright).
     - Use Breaks rather than Conflicts.
Checksums-Sha1: 
 f435d24a1186aabdfcb23af5c6fb1efea0b87d2f 1958 groff_1.21-1.dsc
 a513aca4a7530a6e63325addd6ba2d282c8f1608 3863837 groff_1.21.orig.tar.gz
 bcf7cce2abd75301911af7cde0c4513bae0c06cb 37682 groff_1.21-1.debian.tar.gz
 8cb49607c8a504a587819b201f3e5217d9f22b05 1129636 groff-base_1.21-1_i386.deb
 4d57a09789a1c64a6c64864964767afe92281e8a 3556538 groff_1.21-1_i386.deb
Checksums-Sha256: 
 d5ecf81b9624cba03da754708439057b0b076e04311117c3050c61e556b2f8f7 1958 groff_1.21-1.dsc
 344e6af5480e7ab4ec51e2a2ed10acd69ba3e062d285b6d5f6d49fb5ed2f9f7a 3863837 groff_1.21.orig.tar.gz
 03341660115919ad414ee12f2a0849d0959f7cf5809e7327b89af9933659378d 37682 groff_1.21-1.debian.tar.gz
 6673fa61c7cae16a1cd3515b0e4b8e63a87c26dcfb6d5652a643336bc1c3c88d 1129636 groff-base_1.21-1_i386.deb
 00e6231171bf835d10a77bdace744bef4af47984f98b3fb354479a58918fb5a1 3556538 groff_1.21-1_i386.deb
Files: 
 35c32af31abb323b431a53fe68ace882 1958 text important groff_1.21-1.dsc
 8b8cd29385b97616a0f0d96d0951c5bf 3863837 text important groff_1.21.orig.tar.gz
 d830e95d3d1770f61dbef3b475c24299 37682 text important groff_1.21-1.debian.tar.gz
 693afa7ac4e6fc7779b8c00dee1c472f 1129636 text important groff-base_1.21-1_i386.deb
 379233c47ab24e0db9a0fb40495090f5 3556538 text optional groff_1.21-1_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Colin Watson <cjwatson@debian.org> -- Debian developer

iQIVAwUBTSm6zDk1h9l9hlALAQilow/+LMhaoOe3KZazIIZUzueP5xVtPvN+jKGJ
3ZexmSIahqleaYjJIppmHuKibyaZ4FXiXM8/1yh2xARHHCZtug178LdIfwduz+gt
GrLEOrL5AmQ+j7HvT7wFamS2XxapQhbG9gOQpqHISMxkO5Sn+ZKCYw1bpf7pnnal
k2VvqcnkI773EqyHpVZdZ70bVMHbwMR7vROMEX6PmsQI1BoV2iugICy7jFVDLJy/
X9QYDTgXcJYcWqkoQvKzFl44hr1uAX1u+53KZZMBBLjlUYjcPXaMYXmii1GZv1L3
QPLL6q6lZalOoCrCm1u51C9DwSyUxVGARNU097eqbLF3OiRK3yfYZZcmg09dxXWz
zQ17KMCtg+oiPqURIDPMsucwbeSvawNY3f3hpaH7I1U5H3FQeuieFn4Mxakk5S0+
ntPuAZVjFEdH0I91Jm4Mzbk7WoDkfte/zwNFsexNOAv8IlZuLjZcILfdAIBIxOW9
qALm4FvutxYdJnLDaLB0EhxnXsQCEIJIkEawMS7NyUjoCes2O41ZY2lg6plPJPP8
x36eWyRz6jDihkXAC/Ajgo1YzvIbJwhgmEXhaPLoulebfqH2C1A6AQhSA8AABchT
NkcTuC4SSH80Psnp7rVpNqMgzvgLmqf/HgZ4x9VdHMOkAAFaklgkqtcGiRXIHamM
66ozujFn+wg=
=eQcv
-----END PGP SIGNATURE-----





Reply sent to Colin Watson <cjwatson@debian.org>:
You have taken responsibility. (Tue, 08 Feb 2011 10:51:16 GMT) (full text, mbox, link).


Notification sent to Kenshi Muto <kmuto@debian.org>:
Bug acknowledged by developer. (Tue, 08 Feb 2011 10:51:16 GMT) (full text, mbox, link).


Message #72 received at 552201-close@bugs.debian.org (full text, mbox, reply):

From: Colin Watson <cjwatson@debian.org>
To: 552201-close@bugs.debian.org
Subject: Bug#552201: fixed in groff 1.21-4
Date: Tue, 08 Feb 2011 10:47:44 +0000
Source: groff
Source-Version: 1.21-4

We believe that the bug you reported is fixed in the latest version of
groff, which is due to be installed in the Debian FTP archive:

groff-base_1.21-4_i386.deb
  to main/g/groff/groff-base_1.21-4_i386.deb
groff_1.21-4.debian.tar.gz
  to main/g/groff/groff_1.21-4.debian.tar.gz
groff_1.21-4.dsc
  to main/g/groff/groff_1.21-4.dsc
groff_1.21-4_i386.deb
  to main/g/groff/groff_1.21-4_i386.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 552201@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Colin Watson <cjwatson@debian.org> (supplier of updated groff package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Tue, 08 Feb 2011 10:29:38 +0000
Source: groff
Binary: groff-base groff
Architecture: source i386
Version: 1.21-4
Distribution: unstable
Urgency: low
Maintainer: Colin Watson <cjwatson@debian.org>
Changed-By: Colin Watson <cjwatson@debian.org>
Description: 
 groff      - GNU troff text-formatting system
 groff-base - GNU troff text-formatting system (base system components)
Closes: 369254 450434 540477 545807 552201 599648 609459
Changes: 
 groff (1.21-4) unstable; urgency=low
 .
   * Upload to unstable.
 .
 groff (1.21-3) experimental; urgency=low
 .
   * Go back to installing groff.info from the source directory, not the
     build directory; timestamps are such that make won't rebuild it (closes:
     #609459).
 .
 groff (1.21-2) experimental; urgency=low
 .
   * Build-depend on texinfo (closes: #609459).
   * Only emit a single backspace for bold/underline in no-SGR mode.
 .
 groff (1.21-1) experimental; urgency=low
 .
   * New upstream release:
     - New warning category 'file'.  (man-db uses this as part of
       automatically enabling language-specific hyphenation rules, which
       should now work.)
     - CJK line-breaking and hyphenation support (closes: #552201).
     - Fix typo in groff_man(7) (closes: #369254).
     - Fix typo in "Character Translations" info node (closes: #450434).
     - Fix white heart and diamond Unicode values in groff_char(7) (closes:
       #540477).
     - Point to troff(1) for -w and -W in groff(1) (closes: #545807).
   * Document reasons for groff's Recommends in its package description
     (closes: #599648).
   * Switch build-dependency from byacc to bison, as that's what was used to
     generate the parsers in the 1.21 release.
   * Force YACC='bison -y' when configuring, to avoid problems if byacc is
     also installed.
   * Use a separate build directory, eliminating the requirement to preserve
     some files by hand.
   * Policy version 3.9.1:
     - Rename debian/README.build to debian/README.source.
     - Add a Homepage field.
     - Refer to /usr/share/common-licenses/GFDL-1.3 in debian/copyright
       rather than quoting it (although the GPL v3 governs this package, as
       explained in detail in debian/copyright).
     - Use Breaks rather than Conflicts.
Checksums-Sha1: 
 f826f44076c07de6028e5d53089a7b7df184bcb0 1976 groff_1.21-4.dsc
 063960715346770b0884cdc05b48e21d8a872c36 37929 groff_1.21-4.debian.tar.gz
 b7de89afab8eb202efa34dc8260e6f776ac152fe 1129810 groff-base_1.21-4_i386.deb
 29f3e3c12ff3734cbf000182fcc106547bf235bd 3556340 groff_1.21-4_i386.deb
Checksums-Sha256: 
 552385f5e6a4a6020ccee7cacecfdd763c2d1e4467da81f034442160552ab588 1976 groff_1.21-4.dsc
 55434b38251a99a6c6a9b2397b6edb64fe5bc25c4b5870e14546f5dfa6f666b6 37929 groff_1.21-4.debian.tar.gz
 0212ed3b4d3709ee39f59482f80412da13783494102e0da899c61e5e10587013 1129810 groff-base_1.21-4_i386.deb
 49196fdd59844772e88e7c325e651b61087b31282e64b058861698d74ae23dd5 3556340 groff_1.21-4_i386.deb
Files: 
 ca6a0c9e6ed20f7d9d1453ffb9942509 1976 text important groff_1.21-4.dsc
 aa9f509bee37ae8e45c5b87f599f1628 37929 text important groff_1.21-4.debian.tar.gz
 945601485a5d3aa79fd5b44618256751 1129810 text important groff-base_1.21-4_i386.deb
 1294c8d59b567707e45dbfad8bb46f22 3556340 text optional groff_1.21-4_i386.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Colin Watson <cjwatson@debian.org> -- Debian developer

iQIVAwUBTVEcfDk1h9l9hlALAQih9RAAor1wcBH+D5ykU6F2hNkBOxavvR41DAy3
7zsXlm85h41pX+jRpihQhuCuV+Sb166NZo330uuXnjeR6sv2z2Tb7tWm+dryatUC
qtIHa4GQ72S8b2bvS68UZl07T8P5OQZdTWGk190d2W9+/pr0JOzcpQfphrV54M1s
zuk3GQ5FZKEFKTfSup9qK9OpEjkucqSX/QJfHw2HYxqrdh0fBXwrBnFE+Ku5u1ba
k77faz50BDwFUjKwvzTzlk72UgrZzZYaVOo/rKRzfgbW0IT4wyyEL542rbb1D4g6
4DPHNv0i5D3RN9t50acBgacIQDuBqfz/OZtrb11j14tHD8VdrS0fYitlsLxphiaf
b3QSA2bXSSHfu4A/J6/YZN9tRB+c6r8j+VZbAgo3CKLFcwAGiKWuY0mpFCoCtAYt
3QJ5CzH9Tav6by0aMpimAN3Mo7eAS8YoobEhwzGa709TfbFbpn1o43eC6Klu+CJm
5Hu6JlbEO2VuV7EX/JVwyLuFR6MfXL4ohuP9zo0hTifcUMfzIJMW8tmtn4+nRinB
9XyuPxHA/f8qob35+/ZoVJEeAFUUPwj7SnQMsIG9Uwp+gVudcemSu2AtkkEwfeqc
DFVFPzJoLyvrEfpseERLHohAkgKj/5PP+Vb6g2wj44gBNPLQj/xirFlhktcYpwWb
JkAzG+PepHs=
=zUiT
-----END PGP SIGNATURE-----





Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Sat, 19 Mar 2011 07:30:50 GMT) (full text, mbox, link).


Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Mon Jun 5 01:51:21 2023; Machine Name: buxtehude

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.