Re: [RFC PATCH 0/3] docs: pdfdocs: Improve alignment of CJK ascii-art

From: Mauro Carvalho Chehab
Date: Thu Jun 24 2021 - 08:59:51 EST

Em Thu, 24 Jun 2021 21:06:59 +0900
Akira Yokosawa <akiyks@xxxxxxxxx> escreveu:

> Subject: [RFC PATCH 0/3] docs: pdfdocs: Improve alignment of CJK ascii-art
> Hi all,
> This is another attempt to improve translations' pdf output.
> I see there is a mismatch in the font choice for CJK documents, which
> causes poor-looking ascii-art where CJK characters and Latin letters
> are mixed used.
> One of noticeable examples of such ascii-art can be found in
> Korean translation of memory-barriers.txt.
> Hence the author of Korean translation of memory-barriers.txt is
> in the CC list.
> At first, I thought the issue could be fixed by simply selecting
> "Noto Sans Mono CJK SC" as both of monofont and CJKmonofont.
> It fixed the mis-alignment in the Chinese translation, but failed
> in the Korean translation.
> It turns out that Hangul characters in "Noto Sans Mono CJK SC"
> are slightly narrower than Chinese and Japanese counterparts.
> I have no idea why the so-called "mono" font has non-uniform
> character widths.
> GNU Unifont is an alternative monospace font which covers
> almost all Unicode codepoints.
> However, due to its bitmap-font nature, the resulting document
> might not be acceptable to Korean readers, I guess.
> As a compromise, Patch 2/3 enables Unifont only when it is available.
> A comparison of some of ascii-art figures before and after this change
> can be found in the attached PDF.

Argh! Yeah, it sounds that those translations will always be

Your patch series makes sense to me (although I didn't try to
test). Perhaps one way would be to split the translations into
one separate book per language, although I suspect that such
change would offer their own problems, as cross-references
will be broken[1].

[1] There is a sphinx extension that solves it:

But not sure how easy/hard would be to setup this one.

> Patch 1/3 is a preparation of Patch 2/3.
> It converts font-availability check in python to LaTeX and make the
> resulting LaTeX code portable across systems with different sets of
> installed fonts.
> Patch 3/3 is an independent white space fix (or a workaround of Sphinx
> mis-handling of tabs behind CJK characters) in Korean translation
> of memory-barriers.txt.
> Any feedback is welcome!
> Side note:
> In Korean translation's PDF, I see there is another issue of missing
> white spaces between Hangul "phrase groups" in normal text.
> Looks like the pair of xelatex + xeCJK just ignores white spaces
> between CJK characters.
> There is a package named "xetexko", which might (or might not) be
> a reasonable choice for Korean translation.
> It should be possible to use a language-specific preamble once
> we figure out the way to load per-directory Sphinx configuration
> and move translation docs into per-language subdirectories.
> As I am not familiar with Korean LaTeX typesetting, I must defer to
> those who are well aware of such conventions.
> Thanks, Akira
> --
> Akira Yokosawa (3):
> docs: pdfdocs: Refactor config for CJK document
> docs: pdfdocs: Add font settings for CJK ascii-art
> docs: ko_KR: Use white spaces behind CJK characters in ascii-art
> Documentation/ | 26 +++++++++++--------
> .../translations/ko_KR/memory-barriers.txt | 14 +++++-----
> 2 files changed, 22 insertions(+), 18 deletions(-)