最近 私は、7~8年ぶりに Web制作活動を活発化させている。
しかし、BlueGriffon を使っていて困った事が起きた。その原因と対処方法が分かったので、ここにメモを残す。
はじめに: おことわり
BlueGriffon は2024年に開発が終了し、すでに 公式サイトからのダウンロードはできない状態である。(つまり、このページは、自分用の覚え書きとなる)
- 手元の BlueGriffon のバージョンは 3.0.1
- 最終の BlueGriffon のバージョンは 3.1
- BlueGriffon
- github.com/therealglazou/bluegriffon
何に困ったか
- 表題通り、BlueGriffonで文書を作成していると、「連続した半角スペース」が「 」や「 」に変換されない。エンティティ化されないのだ。
- つまり、ブラウザで「文書のインデント表示」させようと思っても、「連続した半角スペース」がその機能を果たしてくれないという状況だ。
- なおこの件(BlueGriffonのエンティティ処理)について、私は過去に以下の様な記録を残している。
- 半角スペースと「 」、「 」、「 」、「 」 - ぼくんちのバックステージ
- 当時、半角スペースは「 」にエンティティ化された。
また半角スペースが「 」のファイルは、読み込みエラーが発生していた。
(※ 現在の私の環境では再現できなかった) - ブログ公開日(2017/09/07)と手元に残ったダウンロードファイルを突き合わせると、当時は バージョン 2.3.1 を利用していたと思われる。(現在は3.0.1 を使用)
まえおき ここまで。以下、本文。
「連続した半角スペース」が「 」にエンティティ化されない原因は、以下のようなモノであった。
結論: 正しい DOCTYPE 宣言 をすればOK
まず、結論から書く。
DOCTYPE 宣言を、
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja">
という間違った組み合わせにすると、なぜか半角スペースが「 」や「 」に変換されず、半角スペースが連続して表示される。
DOCTYPE 宣言を、
<!DOCTYPE html>
<html lang="ja">
にすればOK。私はココを間違えていた (というか、あえて変更していた)。
コレを修正するだけで、半角スペースのエンティティ化問題は解決した。
※注: <meta>や<link>の閉じタグは手動で修正、もしくは別文書へのコピペが必要だった。
また、エンティティ化が発生しない条件で文書を作成した場合、
- BlueGriffon では 連続した半角スペースでもインデント表示される
- Chrome 等のブラウザでは、半角スペースは無視または1つのみとなり、インデント表示されない。
という結果となになり、今回表題にした問題は、これで再現&解決ができた。
原因と対処法の話はここまで。
以下、様々な条件で 半角スペースを連続させてみた。
まず、BlueGriffonの設定
「ツール」>「オプション」>「ソース」画面の設定は以下。

▲クリックで拡大
エンティティの設定は「& < > と no-break space のみ」と、最小限にしてある。これを基本として、以下のテストを行った
DOCTYPE 宣言を変更してみる
まずは HTML5 の基本。
<!DOCTYPE html>
<html lang="ja">
▲クリックで拡大
半角スペース・・・・・・「 」になる。
改行コード ・・・・・・「<br>」になる。
meta や img ・・・・・「>」で閉じられる
これが正常な動作である。
言語を ja から en にしてみる
<!DOCTYPE html>
<html lang="en">

▲クリックで拡大
変化なし。言語は無関係な模様。
半角スペース・・・・・・「 」になる。
改行コード ・・・・・・「<br>」になる。
meta や img ・・・・・「>」で閉じられる
html 宣言のみ、昔のxHTML 宣言にしてみる (現在の環境)
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja">

▲クリックで拡大
半角スペース・・・・・・ そのまま半角スペースが連続する。
改行コード ・・・・・・「<br />」になる。
meta や img ・・・・・「/>」で閉じられる
これが、私が頭を悩ませていた頃の宣言、
・・・・とまあ、これだけで直った。
やはり、ココが 正しくないせいで、半角スペースが連続していたようだ。
その他、今回チェックした事
以前は、半角スペースが「 」に変換されたハズだが・・・
2017年9月の私の記録(ぼくんちのバックステージ側の記事)では、
半角スペースが「 」に変換された
「 」はエラーが出て BlueGriffon では読み込みエラーが出る
という状態だったハズ。しかし、今回はコレが再現できない。
※ 当時と BlueGriffon のバージョンが違うから、だろうか?
ちなみに、半角スペースを「 」で表記するには、
ソースオプションで「ASCII 以外のすべての文字に &#..; 表記を使う」を選択する。

▲クリックで拡大
これで、半角スペースが「 」に変換される動作を再現できる。
しかし、、、

▲クリックで拡大
日本語の文章が、すべてエンティティ化されてしまった。
※ いろいろな条件を試してみたが、当時の挙動は再現できなかった。 これも、当時と BlueGriffon のバージョンが違うから、だろうか?
そして、
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja">
を使った場合は・・・・

▲クリックで拡大
「ASCII 以外・・・・」でも エンティティ化はおきず、半角スペースも連続したままである。何も変わっていない。
なるほど、だいぶ分かって来たぞ・・・。
という事で、このページの結論
結論は以下である。
- DOCTYPE 宣言と HTML 宣言の「組み合わせが正しくない」場合、その条件によっては「エンティティ化」や「タグの変換機能」が正しく動作しない、と考えるのが良いのではないか?
- つまり私は、手元のファイルを上手く読み込むため、当時の BlueGriffon のバグを(バグだと気が付かずに)上手く利用していたのだ。。。
過去の「利用状況」を思い出してみる
私は、BlueGriffon で文書作成する際、ずいぶん長い間
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja">
という組み合わせの宣言を行っていた。
今となっては、なぜこの組み合わせで利用していたのか、全く思い出せない・・・、という状態が続いていた。
上にも書いたが、おそらく私は、当時の BlueGriffon で、「XHTML 準拠のファイル」と「HTML5 準拠のファイル」、この両方をなるべくエラーが出ないように読み込んだり、ファイル間でコピペするために、アレコレと試行錯誤し、たどり着いた結果がこのスタイルだったのだろう。
「私の管理するWebページは、99% 以上が HTML5 化している」のに、なんで私は <br /> や <img />タグが出力される形式で編集しているのだろう(過去の私はなぜコレをベストな設定と決めたのだろう・・・)と不思議だったが、ようやく謎が解けた感じである。スッキリした。
メインとなる情報はここまで。
おまけ: 私の BlueGriffon の 設定
以下は、完全に私的なメモ。
「BlueGriffon がもうバージョンアップされない」のであれば、自分専用のかなりムチャな設定にしても、もう問題は起きないよな?と思いついたので、(あとで元に戻せるよう)現時点の設定をメモしておくことにした。
ファイル設定

▲クリックで拡大
何かバグがあるのか「最近使ったファイル」はたまにしか機能してくれない。
ソース設定

▲クリックで拡大
言語が日本語の場合、「オートインデント」や「長い行を折り返す」の挙動が怪しくなるケースが多いので、チェックを外している。
更新設定

▲クリックで拡大
もう、ここを使う事はないだろう。
詳細設定

▲クリックで拡大
ここは、別途設定ファイルをバックアップし、大幅に弄ってみたい。
ショートカット設定

▲クリックで拡大
また毎日使うようになったら、なにか弄りたい。
あれこれ変更してみて、挙動が変になったら上記を参考に元に戻す予定である。
このページの情報は以上。



