2008年9月 2日

[openoffice:11305] Re: Issue 92577 - Writer ぶら下がり文字

Adachi Junichi wrote:
> 途中から言い出すのもなんですが、

安達さんのおっしゃる通りだと思います。

まず、現在の状況を振り返ってみたいと思います。

A. 現行の OpenOffice.org Writer

 以下の二つの規定値をソースコード中に埋め込み済み
 「ツール」「オプション」「言語設定」「日本語レイアウト」で変更・設定可能
 ・「行頭禁則文字」
 ・「行末禁則文字」

(問題点)
  行頭禁則文字として設定されている文字がすべてぶら下がりの対象となっている。

B. 今回行おうとしている改善
 A. に加えて、「ぶら下がりを許容する文字」をソースコード中に埋め込む

(動作)
  行頭禁則文字が行末に位置しようとした場合、一つ前の文字を引き連れて、
  次の行の行頭へ送る。
  ただし、その行末に位置しようとした文字が「ぶら下がりを許容する文字」
  であった場合には、次の行へは送らずに、余白の外にその文字をぶら下げる。

(改善点)
  。、,.以外の文字はぶら下がらなくなる。

C. OpenOffice.org 3.x で行おうとしている改善
B. の「ぶら下がりを許容する文字」を A. に加えて、「ツール」「オプション」
 「言語設定」「日本語レイアウト」で変更・設定可能できるように機能追加

それらとは別に、平行して、

D. 「追込み」を新規に開発しようよ。というアイデアの段階
 B, C のぶら下がった文字を同一行の余白内へ押し込む

というような感じでしょうか。


Adachi Junichi wrote:
>> 当面、以下の四文字について、ソースコード内に埋め込んでおいてくださいと、
>> 開発側へ上記 Issue を通して依頼してみました。
>>
>>  、。,.
>>
>> OpenOffice.org 3.1 版もしくはそれ以降の版への反映となるでしょうから、
>> 問題点やさらなるご意見などがありましたら、よろしくお願いいたします。
> 途中から言い出すのもなんですが、
> ソースコード内に埋め込むというのはどういう意味があるのかわからないのです。

・規定値を設定する。

ということです。

その規定値によって設定されている値をどのように変更するか、
というのは、また、別の話として捉えていただいてよいのではないかと。

ソースコード内というのは、少々正確な表現ではないです。すみません。
わかっていながら、わざとそのように表現しています。
こちらをご覧になっていただければ、概要がつかめるかと思います。

 全ての言語
http://l10n.openoffice.org/source/browse/l10n/i18npool/source/localedata/data/

 その中の日本語
http://l10n.openoffice.org/source/browse/l10n/i18npool/source/localedata/data/ja_JP.xml

Calc などで主に使われる書式コード「YYYY年M月D日」、Writer のフィールドや Calc
などで主に使われる「午前」「午後」という文字列、「日曜日」などの文字列、「平成」
などの文字列、「前述」などの文字列、などが、記述されていることがわかると思います。

そして、このスレッドで話題になっている「行頭禁則文字」および「行末禁則文字」の
規定値についても、このファイルにて、以下のように記述されているわけです。

<ForbiddenLineBeginCharacters>!%),.:;?]}¢°’”‰′″℃、。々〉》」』】〕ぁぃぅぇぉっゃゅょゎ゛゜ゝゞァィゥェォッャュョヮヵヶ・ーヽヾ!%),.:;?]}。」、・ァィゥェォャュョッー゛゜¢</ForbiddenLineBeginCharacters>
<ForbiddenLineEndCharacters>$([\{£\‘“〈《「『【〔$([{「£¥</ForbiddenLineEndCharacters>

そして、そこに、もう一つ、「ぶら下がってもよい文字」の記述を追加しましょう。
という方向で話が進んでいるというわけです。

<LineBreakHangingCharacters>、。,.</LineBreakHangingCharacters>


言語毎にこのようなファイルが用意されているのは、個々の役割について、それぞれの
言語で表現する文字列などが言語毎のファイルに記述されているから。というわけです。

そして、これらの .xml ファイルの記述内容は、OpenOffice.org のビルド作業時に解析され、
Windows 版では localedata_others.dll ファイル内に getForbiddenCharacters_ja_JP
などとして、書き込まれるというわけです。


> いままでのたくさんの文字「!%),.:;?]}¢....」はやめて、
> 、。,.
> だけを登録というのではだめなのですか。

はい。残念ながら、その方法ではダメだと思います。

そうしてしまうと、行頭禁則文字のほぼすべてが無くなってしまうからです。
どうなるかというと、それでは拗音(ャュョ)などが、こんな感じになって
しまうからです。

 埋め込んでしまうと他言語への対
 応や人により流儀や意見の違いを
 吸収できなくなるのではないでし
 ょうか。

 ↑ここ

行頭禁則文字として、二文字合わせて次の行へ送るから、ご指摘の通り、

> 印刷屋さんでは「です。」という文末で丸1文字がはみ出す時には、
> 「す。」2文字を次の行に持っていき、
> 空いてしまう「で」の後の1文字分は行内で「で」までの文字間隔を
> 少しずつ広げます。

 埋め込んでしまうと他言語への対
 応や人により流儀や意見の違いを
 吸収できなくなるのではないで
 しょうか。

となるわけです。

> 埋め込んでしまうと他言語への対応や人により流儀や意見の違いを吸収
> できなくなるのではないでしょうか。

はい。おっしゃる通りです。

その危惧が、C. のユーザーインターフェースへの機能追加が行われるまで
続いてしまうわけですから、、、


> こう考えると「ぶら下げ禁則不要」といいたいところですが

はい。一般の文章では、ぶら下げて配置する必要はない。それよりも、追込むべき。
ということで、意見が一致するのではないでしょうか。


> 。、.,程度のはみ出しならともかく、全角一文字分のはみ出しを許す
> というのは私は考えられません。

おっしゃられていることがよくわかりませんです。すみません。

>> 「行頭禁則文字」については、「ツール」「オプション」「言語設定」
>> 「日本語レイアウト」にて確認・設定できます。
> OOoを使い始めて困ったのはまず長音符(ー)のぶら下げ。
> 1.1.3の時代でしたがcatchさんのお勧め設定をしてぶら下げ
> 禁則をしない方法を使っていました。
> プリンタのハード的な限界まで余白を少なくすると当然ぶら下げは
> できませんから、印字可能範囲をあらかじめその分を少なく設定しておく
> などということになりかねない。それは本末転倒のような気がします。
>
> すでにスレッドの中に話があったと思いますし、今更いうのもなんですが
> 言い出したついでに…

> 原稿用紙の発想であった昔のワープロならともかく、いまの性能なら
> このやり方でその都度文字間隔を調整して編集することはさほど
> 難しくないはずです。

はい。それが、上述の D. です。

難しくない。というのは、性能上の話ですよね。。。(笑)

印刷業界などの製作部門の人達が瞬時に判断してレイアウトしているその作業、
つまり、プログラムでいうところの「アルゴリズム」を、ほぼどんな状況
(どのような文字列がくるか 行末に。」が来たら二文字とも追込むか)など
を自動的に、ほぼ文句が来ないレベルでやり遂げる、つまりは、プログラムと
して記述するという作業は、「難しくない」わけはないと思います。

そのアルゴリズムの一例が JIS 規格に掲載されています。
1. http://www.jisc.go.jp/app/pager?id=0&RKKNP_vJISJISNO=X4051&%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp
2. 「X4051_02(PDFファイル:13279KB 別ウィンドウでリンク)」をクリック
3. 表示された PDF の中の、「付属書2(参考) 行の構成アルゴリズム」
 Adobe Reader 上で 139ページ、原稿では 135 ページ

ご覧になっていただけました?
私は、ぱっと見、プチ切れました。

同様なアルゴリズムの欧米の言語版については、OpenOffice.org Writer の前身
であった StarOffice に実装されていて、OpenOffice.org へ進化させるときに、
日本語などのアジアの言語にも対応できるようにと、最低限の機能追加がなされた
というのが、現在の状況ではないかと思います。

さて、欧米の言語では、TeX, LaTeX の行をレイアウトするアルゴリズムが大変
勉強になります。が、欧米の言語では、単語間のスペースを伸び縮みさせるわけ
ですが、日本語では、文字間のスペースを伸び縮みさせるなど、そのままでは、
TeX のアルゴリズムを日本語へ適用するわけにはいかないでしょう。

日本語用の LaTeX は、そこんとこを、結構取り組んであるようで、とっても、
とっても、きれいにレイアウトしてくれます。職人技って感じがします。

JIS規格で紹介されているアルゴリズムや日本語用の LaTeX などのアルゴリズムを
勉強し、そして、OpenOffice.org Writer へ実装する。っちゅう作業が期待され
るわけですよね。

そのような開発を請け負ってみたいソフトウェアハウスさんは、いらっしゃいませんか?

まあ、このように、ML 上などで、話し合いながら、それぞれの場面、時期など
における仕様、実装方法、使い勝手などを話し合って、そして開発を一つずつ、
着実に進めていけばいいのではないかと。

いっそのこと、その道のプロがささっと開発してくだされば、最速で確実な実現
ができるのかとも思います。

Tora

【MLコミュホームページ http://www.freeml.com/openoffice

--[PR]------------------------------------------------------------------
★☆★【最 短 で 即 日 の う ち に キ ャ ッ シ ン グ O K ! 】★☆★
   - 三菱東京UFJ銀行グループだから安心! キャッシュワン -
■借り換えニーズに応えます。ご融資額は初回から最高300万円!
■実質年率12.0-18.0% ■入会金・年会費・ATM手数料は全て0円!
http://ad.freeml.com/cgi-bin/sa.cgi?id=c18uJ
------------------------------------------------------------------[PR]--
■GMO INTERNET GROUP■ GMO INTERNET www.gmo.jp


投稿者 xml-rpc : 2008年9月 2日 23:39
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/76928
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。