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 problematic. 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: https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html 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/conf.py | 26 +++++++++++-------- > .../translations/ko_KR/memory-barriers.txt | 14 +++++----- > 2 files changed, 22 insertions(+), 18 deletions(-) > Thanks, Mauro