【質問】英文テキストで行頭に半角スペースが来るのを回避する方法について
-
最近、シンプルで便利な機能を備えているMeryの存在を知り、テキストエディタの乗り換えを検討しているものです。主に日本語と英語で文章を作成するためテキストエディタを使用していますが、Meryを使用した場合、一つ気になることがあり、質問を投稿させていただく次第です。なお、MeryはVersion 2.6.15 (x64)を試用しています。
問題は、「指定文字数で折り返し」あるいは「ウインドウの右端で折り返し」で英文テキストを入力していくと、Meryでは表示座標上の行頭に半角スペースが来てしまうことがあることです。例えば、次のように1行目の行末の文字位置次第で、2行目の行頭が半角スペースで始まってしまうことがあります。
(例)
1|------------------------------------------------ I am|
2| a Japanese. ------------------------------------|
3|↑(折り返し後の行頭に半角スペース) ↑(折り返し線)これは英語の禁則処理に関係することかもしれませんが、他のエディタでは折り返す文字数をどのように指定しても、この問題に遭遇したことはありません。段落始めのインデントではない箇所で行頭が揃わないのは、英文テキストを利用する上ではかなり気になること(特に印刷する場合)であり、折り返し時に行頭に半角スペースが来ないよう対処する方法があればご教示願います。
| M-W-Tokita | 返信 -
初めまして、Mery を開発している者です。
このたびは Mery をお試しいただきありがとうございます。
英語の禁則処理についてですが、残念ながら現在のところ設定を変更する機能はございません。
確認してみましたところ、行頭における英文の半角スペースの禁則処理につきましては、確かに他のテキストエディターですと半角スペースが来ないようになっているものが多いようですね。
ご意見は今後の開発の参考にさせていただきたいと思います。
また、印刷などで細かい禁則処理の設定が必要となる用途の場合、おそらく Mery の機能では不十分だと思いますので、ワープロソフトか、禁則処理のカスタマイズに対応している他のテキストエディターのご利用を検討されたほうが良いかと思います。
お役に立てず申し訳ありません。
| Kuro | 返信 -
本件について進展は望めそうにないと思っていましたが、「Mery」ベータ版 Ver 3.0.4 の公開にて部分的に改良されていることを知り確認してみました。(変更ログ・タイトル: 禁則処理で行頭に半角スペースが来るのをなるべく防ぐようにしてみた)
このバージョンでは、英語の文章で半角スペース文字を区切りとして改行する場合は、問題が解消されました。しかし、行末がコンマやピリオドでちょうど収まる場合は、改行後半角スペースで始まってしまい、残念ながら依然改良の余地は残されているようです。禁則処理なので守備範囲内の問題かどうかわかりませんが、この点は今後の対応に期待したいと思います。
いずれにしろ、今回は利用者のことを考えて少しでも良い方向に、そして迅速に対応していただいたことに感謝する次第です。ありがとうございます。
今回の改良で、見栄えの悪い状況の発生頻度はかなり低くなりました。したがって、現時点は英文テキストの印刷で禁則処理の不具合が生じる場合、他のエディタを使用することとし、通常は他のエディタにはない便利な機能(マーカーは便利、Zenモードは斬新)がある Mery を使用していこうと考えています。今後ともよろしくお願いします。| M-W-Tokita | 返信 -
Mery Ver 3.0.4 をお試しいただきありがとうございます。
そうですね、今回のバージョンアップではご指摘いただいた "I am a japanese" という例文をもとに行頭に半角スペースがなるべく来ないようにカスタマイズしてみました。
私は英文を扱ったことがないので、どういった状況で行頭に半角スペースが来てはいけないのか詳細な条件はわかっていない状況です。
確かに、今回の修正ではカンマ、ピリオドは考慮してないですね。
とりあえずカンマとピリオドを考慮するようにすれば使えそうでしょうか?
記号や数字とか、そんな条件もある場合はちょっと私の技術力では対応しきれないかもしれませんが…。
こちらこそ、貴重なご意見ありがとうございます。趣味で気ままに開発しているソフトなので更新のタイミングは気分次第ですしバグもたくさんありますが、少しでも何かのお役に立てたなら幸いです。
| Kuro | 返信 -
> とりあえずカンマとピリオドを考慮するようにすれば使えそうでしょうか?
英語の禁則処理についての詳細は私も把握していませんが、私が利用する範囲では、通常英文テキストで最も使用される記号、カンマ、ピリオドそしてクエスチョン・マークが考慮されるとほぼ問題なく使えるようになります。カンマ、ピリオドでも対応していただけると、かなり使い勝手がよくなるのは確かです。(気の向いた折にでも)
| M-W-Tokita | 返信 -
M-W-Tokita さん
Mery エディタで英文ワードラップをして、空白をいつも行頭禁止にする
ために、行末の空白「ぶら下げ」ではなく、次の行に前の単語と続く空白を
「追い出し」する方法でよければ、これが実現できるかも知れない参考
情報をお伝えしたく、会話への割り込み失礼します。Kuro さん
すみません、たびたびご迷惑をおかけして。手短にします。
すでに対応ずみでしたら、どうぞそのまま。以前の TNotePad は
UAX #14 Unicode 13.0
http://unicode.org/reports/tr14/
のうち、SP: Space (A) (Non-tailorable)
と
GL: Non-breaking (“Glue”) (XB/XA) (Non-tailorable)
を実装していませんでした。UnicodeWrap を例にして、半角空白を行頭禁止にする細工を考えて
みました。挙動を変えるのは
0020 SPACE (SP)
00A0 NO-BREAK SPACE (NBSP)
202F NARROW NO-BREAK SPACE (NNBSP)
の3文字です。【BreakMAP: array[$0000 .. $FFFF] of byte の部分】
変更(1): 0020 $08→$0C
↓
$0C,$04,$01,$01,$80,$40,$01,$01,$02,$04,$01,$80,$84,$00,$84,$40,//002F変更(2): 00A0 $08→$01
↓
$01,$00,$40,$80,$80,$80,$00,$00,$00,$00,$00,$02,$00,$00,$00,$00,//00AF変更(3): 202F $08→$01
↓
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,//202F【function CheckLineBreak(const C1, C2: WideChar): boolean; の部分】
変更(4):
(BreakMAP[Word(C1)] <> lbSpace) and
↓
((BreakMAP[Word(C1)] and lbSpace) = 0) andこれで、これ以外の禁則条件はそのままにして、
単語の「追い出し」が可能な限り、行頭空白 U+0020 は回避されるのでは
ないかと思うのですが、駄目でしたらすみません。| 虚inuuik | 返信 -
>> M-W-Tokita さん、虚inuuik さん
情報ありがとうございます。
その後、私のほうでも調査していたのですが、英文ワードラップについてこれといった情報が見つからず。
そこで、昨夜から本日未明にかけて Windows のメモ帳にあらゆる英数字記号と半角スペースの組み合わせを入力して、行頭に半角スペースが来ない条件を探すという悲しい実験をしていたのですが、たどり着いた結論は、行頭に半角スペースが来ない条件は "ない" でした。
つまり、カンマ、ピリオド、英数字記号などにかかわらず、いかなる条件下でも行頭に半角スペースが来ないだけ。という…。
難しく考えすぎていたようです。
私のほうでは "0020 SPACE (SP)" のみ既に対策を行っていたのですが、"00A0 NO-BREAK SPACE (NBSP)"、"202F NARROW NO-BREAK SPACE (NNBSP)" などの行頭に来ても良いスペースは考慮していなかったので、虚inuuik さんの情報はとても助かりました。
いただいた情報をもとに実装してみたいと思います。
| Kuro | 返信