2021-01-18 9:00 JST 〜 メンテナンスによるサービス全停止予定

チケット #40816

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

登録: 2020-09-30 09:33 最終更新: 2020-10-20 08:33

報告者:
担当者:
(未割り当て)
チケットの種類:
状況:
オープン
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
2

詳細

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

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

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

\end{document}

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

チケットの履歴 (14 件中 3 件表示)

2020-09-30 09:33 更新者: h_okumura
  • 新しいチケット "ルビ前後のスペースの不揃い" が作成されました
2020-09-30 13:22 更新者: h7k
コメント

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

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

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

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

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

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

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

2020-09-30 14:06 更新者: h_okumura
コメント

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

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

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

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

2020-09-30 14:14 更新者: h_okumura
コメント

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

2020-10-04 14:21 更新者: h_okumura
コメント

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

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

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

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

2020-10-04 15:19 更新者: h7k
  • 重要度2 から 5 - 中 に更新されました
  • 優先度2 から 5 - 中 に更新されました
コメント

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

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

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

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

2020-10-04 15:22 更新者: h_okumura
コメント

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

2020-10-05 15:55 更新者: h7k
  • 解決法なし から 修正済み に更新されました
コメント

20201005.0 を出しました.

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

2020-10-05 15:58 更新者: None
コメント

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

2020-10-19 22:22 更新者: h_okumura
コメント

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

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

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

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

\end{document}

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

2020-10-20 06:11 更新者: h7k
コメント

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

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

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

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

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

添付ファイルリスト

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする