改名したが故のトラブル(thx.jp² 0.4.2 up)

当サイトのプラグイン thx.jp² 専用ページも作成し 厨二っぽく

thx.jp² = (Typesetting with Half-width-space eXtra in Japanese)(made by thx.jp/)

なんて命名 旧名 thx.jp/ から改名 までしていますが プラグインのアップ時点 v.0.4.0 ではこんな表示になっていました

パラパラな命名式
パラパラな命名式

組版や詰めをカッコよくするプラグインの紹介ページがコレではさすがにマズイので修正です

スポンサーリンク

ふたつの原因

この様に パラパラになってしまった原因は二つあります

二つの原因
  • 「²」が欧文扱いになっていない。
  • T などのマーカー部に <span> が使用されている

² が欧文扱いになっていない

まずは ² の件ですが これは欧文の判定に ² を追加すればイイだけです

例えばこんな感じ

 '#' . 
	 '[ !-;=-~\p{Ll}²\x{200b}]{2,}' . 
	 '|' . 
	 '[ !-;=-~\p{Ll}²]+' . 
 '#uis' 

、、、 ん〜、、、 何か見栄えが悪いというか 対処療法が過ぎるというか なんかもっとこぉ

 '[ !-;=-~\p{Ll}\p{**}\x{200b}]{2,}' 

みたく Unicode 文字プロパティで表記したいですね しかし {**} をどの様に記述すればよいかが分かりませんでした ;;

T などのマーカー部分

そこで Unicode 文字プロパティの件は宿題として 別の手段を考えました 考えようとしました 思い付きませんでしたので 先にマーカー部分の対策を考えます

マーカー部分の件ですが これは <span> タグが原因と分かっています

thx.jp² まず html タグ それ以外 に分割し それ以外 を順に処理&結合をしていきます

処理前の状態を html で表記すると

 <p> 
	 thx.jp² = ( 
	 <span class="marker-under-blue"> 
		 T 
	 </span> 
	 ypesetting with  
	 <span class="marker-under-blue"> 
		 H 
	 </span> 
以下略

となってます これを処理すると

 <p> 
	 <span class="thx_wao_spc"> </span> 
	 <span class="thx_pwid"> 
		 thx.jp 
	 </span> 
	 <span class="thx_wao_spc"> </span> 
	 <span class="thx_fwid"> 
		 ² 
	 </span> 
	 <span class="thx_wao_spc"> </span> 
	 <span class="thx_pwid"> 
		 = ( 
	 </span> 
	 <span class="thx_wao_spc"> </span> 
	 <span class="marker-under-blue"> 
		 <span class="thx_wao_spc"> </span> 
		 <span class="thx_pwid"> 
			 T 
		 </span> 
		 <span class="thx_wao_spc"> </span> 
	 </span> 
	 <span class="thx_wao_spc"> </span> 
	 <span class="thx_pwid"> 
		 ypesetting with  
	 </span> 
	 <span class="thx_wao_spc"> </span> 
以下略

こんなに冗長になります ;;

ここで頭を切り替えて 理想の完成形を考えてみました

 <p> 
	 <span class="thx_pwid"> 
		 thx.jp²= ( 
		 <span class="marker-under-blue"> 
			 T 
		 </span> 
		 ypesetting with  
		 <span class="marker-under-blue"> 
			 H 
		 </span> 
		 alf-width-space e 
		 <span class="marker-under-blue"> 
			 X 
		 </span> 
		 tra in  
		 <span class="marker-under-blue"> 
			 Japanese 
		 </span> 
		 )(made by  
		 <span class="marker-under-blue"> 
			 thx.jp 
		 </span> 
		 /) 
	 </span> 
 </p> 

うんうん こうありたいですね ここで思い付いたのが処理のスキップです 今回の例ですと class="thx_pwid" class="marker- を持つ <span> をスキップすれば良さそうです 現状でも <style> などはスキップしていますし

そこで 現状では </style> など閉じタグでのスキップ判定から 開始タグでの判定に変更します

差分はこちらになります

この処理に併せて 文字列前後のスペース除去を取り止めます

不要な改行コードを削除するために文字列を trim() していましたが ypesetting with など必要な半角スペースが除去されてしまうのを回避します

上手く処理できる様になったのですが class="marker- Cocoon の機能で付与するクラスです thx.jp² Cocoon 以外のテーマでも機能する汎用的なプラグインを目指していますので 他のテーマなどで class="marker- がどの様に使われるかは不明です

そこで class="marker- はスキップ対象から除外し マーカー部に発生している和欧間スペースを別の手段で取り除く必要があります

ここまで来てやっと ひらめ きました

欧文の途中で和欧間スペースが発生してしまうのは <span> </span> が欧文を分割しているからです

つまり <span> </span> の前後両方に和欧間スペースが発生しているのは欧文の途中を意味しているワケで つまり消去可能です

対策

はい まとめますと

T などのマーカー部分の対策

マーカー部分の対策

タグの前後両方に和欧間スペースが隣接している場合 それらは不要なので削除する

といった 安直確実な対策が取れました また 副産物として開始タグでのスキップ設定が可能になりましたので 。」 ではなく と全角送りで表記したい場合も ゼロ幅スペースなどを使わずとも 改行可能位置が発生するリスクなどを負わずとも

 <span class="thx_fwid">  </span> 

と直接クラス指定をする事が可能になりました

² の対策

同様の手法で thx.jp² の場合も

 thx.jp<span class="thx_pwid">²</span> 

と直接クラス指定は可能ですが thx.jp の前後には和欧間スペースが追加されるため もう一手間 ひとてま 必要になります

まとめ

thx.jp² などという厨二っぽい名前を付けたが為に発生した問題でした しかしまぁ いず れは行き逢うであろう問題でしたので 早期に対処できたと前向きに捉えます

という訳で ver.0.4.2 のアップです アップデートは WordPress のプラグイン画面から通知&更新が可能 なハズ です

宿題となっている Unicode 文字プロパティも今後のアップデートで対応予定です 具体的には ver.0.4.3 くらい?

コメント