[環境設定 > 開く] ファイルを開く時のデフォルト設定
メニューバー[浮紙8 > 環境設定… > 開く]で、ファイルを開く時のさまざまな処理を設定します。
テキストエンコーディング
ファイルがどのテキストエンコーディングで保存されているのかを指定します。浮紙はファイルを読み込む時、テキストをすべて内部でUTF-8に変換します。その変換のためには、読み込む前にテキストがどのエンコーディングでファイル保存されているのかをあらかじめ明確にしておかなければなりません。
自動
通常は「自動」でよいでしょう。下記の流れでエンコーディングを自動的に判定します。
- BOMがあればそのエンコーディングとする。
- BOMがなく、拡張属性があればそのエンコーディングとする。
- BOMも拡張属性もなければ、PerlのEncode::Guessでエンコーディングを推測する。
それでも推測できない時、または推測できても浮紙が対応していない時にはアラートが表示されます。
Shift JISと推測された時にもアラートが表示されます。
ここではCP932(WindowsのShift JIS)とMacJapanese(旧Mac OSのShift JIS)のどちらかを選ぶことになります。なぜかというと、両者には文字コードが同じなのに異なる外字があるからです。例えば、ファイル内に 0x87 0x40
の文字コードがある場合、CP932では①を入力していたことになり、MacJapaneseでは㈰を入力していたことになります。そのためどちらで入力していたのかをはっきりと決めてからUTF-8に変換する必要があります。しかも、決めるには人間が判断するしかありません。「このファイルを保存した人はWindowsを使っているからCP932だな」といった具合に、そのテキストファイルが作られた経緯で判断するしかありません。それさえも不明な時は、当てずっぽうでどちらかを選んで開くギャンブルになります。とはいえ、今どきShift JIS系でファイル保存をするのはWindowsくらいなので、ほとんどはCP932で大丈夫でしょう。でもごくまれにMacユーザーが「日本語(Mac OS)=MacJapanese」で保存してきてしまうので気は抜けません。
自動以外
自動以外のエンコーディング設定では、上記の1と2は必ず処理します。異なるのは3で推測をせず、設定したエンコーディングからの変換を試みることです。
どのエンコーディング設定でも、変換後に正常なUTF-8かどうかを確認します。正常ではなかったらアラートで開けないことを通知します。無理矢理にウインドウに表示することはしません。不適切な文字を勝手に「?」に変えて表示することもしません。
ファイルを開き終わると、ウインドウの右上にファイルのテキストエンコーディングが表示されます。どのエンコーディングから変換されたのかを容易に確認できます。
改行コード:LFに全置換する
浮紙のデフォルトの改行コードはLFなので、ONにするのを推奨します。ただし、CRやCRLFをそのままにしておきたい場合はOFFにします。
結合文字:できるだけ合成する
ONにするのを強く推奨します。ここではUnicode正規化のNFCを適用しますが、互換漢字などには適用しない安全な処理をしています。「できるだけ」としたのは、IVSなどは合成不可能であり、結合文字が残ってしまう場合があるからです。
特定文字を確認
文字組版で混入を防ぎたい文字を確認します。検出されるとアラートが表示されます。
詳細:特定文字を確認
Wordやリッチテキストのファイルからテキストを抽出する
浮紙は「.doc」「.docx」「.rtf」「.rtfd」の拡張子を持つファイルからテキストを抽出します。抽出するのはプレーンテキストだけです。太字やイタリックなどの書式は反映されません。開いた後は、どこにもファイル保存されていない状態でウインドウが開かれます。
- 注意:Wordの箇条書き機能で表示される行頭記号や数字は消失します。
- 注意:元のファイルで描画オブジェクトが文字の上に重なっていると、その箇所の文字が消失してしまいます。
抽出する時にはかならずアラートを表示して注意喚起をするようにしています。
大きなファイルをなるべく速く開くには
浮紙はデフォルトの状態だと大きなファイルの扱いが遅くなります。ここでは遅くなる要因とその対策を説明します。
エンコーディングを指定する
[効果・小] 開く時のエンコーディング設定を自動にしている場合、BOMや拡張属性がないファイルはエンコーディングを推測しなければなりません。この推測で時間がかかる場合があります。ファイルのエンコーディングが判明しているのなら、そのエンコーディングを指定した方が速いでしょう。
保存時に拡張属性を付ける
[効果・小] ファイルに拡張属性を付けておくと、ファイルの中を調べずにエンコーディングを特定できます。エンコーディングを推測する必要がなくなるので、自動に設定していても速くなるでしょう。
行を折り返さない
[効果・中] 遅くなる最大の原因は、ファイルの読み込みよりも、その後の文字列表示にあります。先頭からグリフを順番に並べ、行の折り返しを含んだレイアウトの処理していくのは、文字数が多いほど時間がかかります。しかもウインドサイズや文字サイズなど変更をすると、レイアウト処理を最初からしなおすことになるので、そこでも時間がかかります。ここで行の折り返しをOFFにしておくと、レイアウト処理の負担が軽減するので、速くなる効果が期待できるでしょう。
速度を優先
[効果・大] 先頭からグリフを並べていくレイアウト処理は、ディスプレイに表示されていない領域でも省略することなく端から連続して丁寧にされています。そこが遅くなる要因なので、macOSには対策としてNoncontiguous Layout(非連続レイアウト)機能が用意されていています。これを利用すると、表示されている領域だけをとりあえずレイアウト処理するようになります。浮紙では[速度を優先]をONにするとこの機能を使うようになります。速度改善に最も効果があるのですが、副作用としてスクロールの挙動が不安定になります。スクロールはレイアウトがすべて確定した上で安定するので、レイアウトが確定していない段階で不安定になるのは避けられません。行の折り返しOFFが表示に反映されないこともあります。他にも思いがけない挙動が発生するかもしれません。それでも許容できるのでしたら常時ONにしてかまわないでしょう。