Re: simple-ruby ドキュメント



> 2023/05/21 23:25、MURATA Makoto <eb2m-mrt@asahi-net.or.jp>のメール:
> 
>> ところで,
>> 
>> >Richard から two level の記述がわかりにくい
>> 
>> が問題かと思いますが,この記述は,村田さんの提案で,私の説明は,よくわからないが“two level”といえば,よくわかるということで,追加したものです.ただし,熟語ルビがやや複雑な処理をするので,“two level”の説明は,逆にわかりにくさを生んでいるのかもしれない.
>> 
>> 私の言いたいことは,以下のような処理がでないようにした(このことは,本文で繰り返し述べていることです).
>> 
>>  1 親文字列の前後にくる文字種によって,上記のように親文字とルビの配置位置関係が変わってくる.
>>  2 行中か,行頭か,それとも行末で親文字とルビの配置位置関係が変わってくる.
>> 
>> つまり,モノルビとグループルビは,一度親文字とルビの配置位置を決めたら,それを変えない,また,熟語ルビでも,分割する場合,親文字とルビの組合せが変わるが,いったん決まった親文字とルビの組合せについては,その親文字とルビの配置位置は,一度決めたら,変えないということです.
> 
> 私は、XeroxのInterscriptにあるmulti-level pouringの概念を
> 採用して二レベルを提案しました。

ここは大きなアーキテクチャというより(その構造に似てはいても)ローカルな処理ですよね。level というと一般英語的により大きな単位、かつ任意のレベルで止めて良いようなニュアンスもあるので、step の方が素直かと思います。とはいえ、特にどちらでなければと強い意見を持っているわけではありません。

> 切り分けるのは、実装
> のためにも役にたつことだと思います。(WordやInDesign
> の実装がどうなっているかは知りません。)

同意します。この切り分けによってかなり見通しが良くなりました。

> しかし、だいたい高度な組版というのは、全体を見て
> バランスを取るので、切り分けしにくい部分が必ず
> 出ます。前後の役物の空白部分にルビを掛けるだけでも、
> 切り分けの例外となります。つまり、二レベル目の
> 処理に、前後のグリフについての情報を渡さないと
> いけなくなります。熟語ルビについては、もっと
> そうなるでしょう。

ルビ付き文字列の寸法を確定後の掛ける処理は、もしそれを simple-ruby にあるような空白部分に掛ける処理に限定するなら、開き括弧が連続した時のような文字クラス間のインタラクションとして処理できるかと思います。つまり文字の箱を並べるときに既に行なっている処理とほとんど同じです。そのように捉えると level 2 の処理から level 1 に戻る必要性は無くなります。

これを、その他の文字種にも掛ける場合、位置の調整自体は文字クラス的に処理できそうに思います。しかし、ルビがぶつかってしまうという現象の可能性が出てきて、ぶつかるとルビ付き文字列内のレイアウト、つまり level 1 をやり直すか、もしくは掛ける処理を止めるといったことが必要になります。

行頭行末の処理は、ルビ付き文字列内のレイアウトが変わりますが、ルビと親文字の位置関係がずれるだけで、寸法は保たれます。掛ける処理を行わない、または空白に限定するならぶつかりは生じません。ここでは説明しませんが、私は行頭の処理は重要だと思っています。

ここまでは処理が直線的です。

熟語ルビ、および私のルビを折り返す提案、の問題点は、行の折り返しが発生した場合に、折り返し地点を見つけるために重いループが必要で、そのループの中でルビ付き文字列のレイアウトを繰り返し試す必要があるということです。つまり処理量が一気に数倍になります。数倍程度なら、カスタマーからの要求がそれ以上に高ければ実装可能かと思いますが、そこまでの要求はなかったのではと想像しています。この部分 Nat/石井さんに確認が必要です。ルビの折り返しの問題もありますし、可能ならこの処理を許容範囲に抑える簡略化の方法を見つけたいところ。

> 私は、simple rubyを名乗るのなら、切り分けを
> 出来るだけ簡単にすべきだと思います。いまの
> simple rubyは、現在の実装より難しいのかも
> と思っています。

そうですね、熟語ルビと両側ルビが課題かと思います。

木田

> 村田 真
> 
>> そこで,“two level”の説明は,削除することは,私としてはかまわない.ただし,説明を削除する代わりに,上記のように配置位置関係が変わる例を示した図(親文字とルビの配置位置関係が変わる処理例)を追加してもよい.
> 
> 
> -- 
> Regards,
> Makoto

Received on Monday, 22 May 2023 01:00:25 UTC