縦書き文庫では比較的自由にHTMLタグを使用できるのですが、たまにエディターの文字サイズ変更ボタンをテキスト全体に反映させてしまう人がいます。
例えばこういう感じです。
<span class='larger'>
(作品全体のテキスト)
</span>
これの何が困るのかというと、ユーザーが「表示設定」で変更できるはずのフォントサイズが、内側のspanに邪魔されて変更できなくなくなってしまうことです。
縦書き文庫では、ユーザーの表示環境やパソコンの解像度はそれぞれ異なることを踏まえ、それぞれの環境にあわせてビューアーのサイズや文字サイズが変わるようになっています。
その上で、各種サイズは各自が自分好みに設定できるようにしているので、その特徴を破壊するようなマークアップは、あまり望ましくありません。
よって注意事項でも、そういうマークアップを禁止行為であると明記しているのですが、こういう規則って読む人が少ないので、あんまり周知されていないというのが実情です。
というわけで、少し強引なのですがnehan.js
のfunctional style
を使って、良くない装飾タグの使い方には、動的な警告を出すようにしてみました。
例えば、部分的なテキストの装飾に使われるspan
タグならcontent
を以下のように設定し、制限字数を超えていたらエラーメッセージに置き換えます。
Nehan.setStyle("span", {
content:function(ctx){
var limit = 100;
var cont = ctx.getMarkup().getContent();
return (cont.length > limit)? "error:too long!!" : cont;
}
});
色々なタグにまとめて長さ制限を付けたいときは、こんな感じでしょうか。
var content_with_limit = function(limit){
return function(ctx){
var cont = ctx.getMarkup().getContent();
return (cont.length > limit)? "error:too long!!" : cont;
};
};
var LIMIT_LENGTH = {
b:100,
em:30,
span:50,
strong:100
};
Object.keys(LIMIT_LENGTH).forEach(function(tag_name){
var limit = LIMIT_LENGTH[tag_name];
Nehan.setStyles(tag_name, {
content:content_with_limit(limit)
});
});
もちろん細切れにspan
タグを区切られたら効き目は無いわけですが…