Ticket #40816

ルビ前後のスペースの不揃い

Open Date: 2020-09-30 09:33 Last Update: 2020-10-20 08:33

Reporter:
Owner:
(None)
Type:
Status:
Open
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
2

Details

%#! lualatex
\documentclass{ltjsarticle}
\usepackage{luatexja-ruby}
\begin{document}

ふぁいる\ruby{dvi}{ディーヴィーアイ}ファイル

ファイル\ruby{dvi}{ディーヴィーアイ}ふぁいる

\end{document}

とすると,1行目は左に寄り,2行目は右に寄ります。多分ひらがなとカタカナで扱いが違うのだと思いますが,違和感があるので報告させていただきました。とりあえず「バグ」としましたが,意図したものであれば無視してください。

Ticket History (3/14 Histories)

2020-09-30 09:33 Updated by: h_okumura
  • New Ticket "ルビ前後のスペースの不揃い" created
2020-09-30 13:22 Updated by: h7k
Comment

多分ひらがなとカタカナで扱いが違うのだと思いますが,

そのとおりです.jlreq によると

JIS X 4051では,片仮名は漢字と同じ文字クラスに含まれている.したがって,片仮名についてはルビ文字を掛けることは禁止されている.

となっているので,luatexja-ruby でもそれに応じてひらがなとカタカナの扱いを変えたようです.

手元の『文字の組方ルールブック ヨコ組編』(日本エディタースクール,2001)でも

対象の字や語からルビがはみ出した場合は,平仮名,中黒,後にくる句読点や受けの括弧類,リーダーなどにはルビが 1 字まではかかってもよい.……

などとあり,なぜかひらがなとカタカナで扱いが違いますが,この機会にデフォルト値を考え直しても良いですね.

2020-09-30 14:06 Updated by: h_okumura
Comment

ありがとうございます。そういうルールだったんですね。

\ruby{dvi}{ディーヴィーアイ}愛愛愛

\ruby{愛}{アイ}愛愛愛

を比較するとわかるように,「ルビがかからない」というよりは「ルビが長い場合は余分な1/2zwスペースが入る」という感じだったので違和感があったので報告させていただきました。

2020-09-30 14:14 Updated by: h_okumura
Comment

・・・と書いてから気付いたのですが,これってひょっとしてxkanjiskipでしょうか。親字が欧文の場合,ルビがかからない場合には,ルビも含めたボックスの端からxkanjiskipを空けるという現象があって,違和感を増幅しているのかもしれないと思いました。

2020-10-04 14:21 Updated by: h_okumura
Comment

説明の図をインラインに埋め込もうと四苦八苦していました(うまくいっていません)。

https://osdn.dl.osdn.net/ticket/g/l/lu/luatex-ja/40816/5687/test.png

単にカタカナにルビがかからないというだけでなく,さらに余分な空きができるということを言いたかったわけです。

あと,ルビの高さが揃わない問題もあって,\kanjistrut を入れたら今度は xkanjiskip が入らないので,何か工夫がないものかと考えているところです。

2020-10-04 15:19 Updated by: h7k
  • Priority Update from 2 to 5 - Medium
  • Severity Update from 2 to 5 - Medium
Comment

全然返信せずにいてすみません.

  • ルビ掛けについては,ひらがなとカタカナでわざわざ差をつける理由が思いつかないので,カタカナも許すようにしようと思います.
  • 前後に xkanjiskip を入れるかどうかですが,現行の実装では「行頭形の場合には後ろに入れて,行中形の場合には後ろに入れない」といった設定ができません.もともと #40827 の件で明日リリースするつもりだったのですが,そちらではこの話は見送る予定です.

\kanjistrut を入れたら今度は xkanjiskip が入らない

luatexja-ruby 側で高さ・深さを固定する設定を入れておきます.

2020-10-04 15:22 Updated by: h_okumura
Comment

ありがとうございます。OSDNは不慣れなためうまく説明できずにすみませんでした。

2020-10-05 15:55 Updated by: h7k
  • Resolution Update from None to Fixed
Comment

20201005.0 を出しました.

xkanjiskip が入る件は何も手を入れていません(そのためこのチケットはオープンのままにしておきます)が,ひらがな・カタカナで前後の空きが変わったり,親文字によってルビの高さが変わったりする問題は解決していると思います.

2020-10-05 15:58 Updated by: None
Comment

ありがとうございます! 美文書がんばります。

2020-10-19 22:22 Updated by: h_okumura
Comment

美文書を組んでいて,やはり伸び気味の行でルビがおかしい箇所が散見されましたので,同じ問題かもしれませんが,念のため追加報告させていただきます。

\documentclass{ltjsarticle}
\usepackage{luatexja-ruby}
\begin{document}

値とは\ruby{\texttt{;}}{セミコロン}で区切

\makebox[10\zw][s]{値とは\ruby{\texttt{;}}{セミコロン}で区切}

\end{document}

どうやらルビは後ろだけが伸びるようです(test2.png)。

2020-10-20 06:11 Updated by: h7k
Comment

どうやらルビは後ろだけが伸びるようです

「;」は標準では後側の和文文字との間にだけ xkanjiskip が入るようになっているので,test2.png でも同じようになっています.

  • \ltjsetparameter{alxspmode={`;,allow}} とすると,「;」と前後の和文文字の間に xkanjiskip が入るようになります.
  • 親文字の左右に空白を入れる際の xkanjiskip との兼ね合いについては,まだコードは書けていません.Online.tex には間に合わせたいですが…….
2020-10-20 08:33 Updated by: h_okumura
Comment

あぁこれもxkanjiskipの影響だったんですね。よく調べずすみません。

今週末入稿の美文書は luatexja r56639 で組みつつあり,(ルビ以外は)とてもうまくいっています。ありがとうございます。

Attachment File List

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login