ネモウスドットコム

エンジニア兼プロデューサーがWebサービス制作について考えるブログ

このサイトはかみさまのWebサービス制作研究所に移転しました。
こちらのサイトもぜひご覧ください。

HTMLで縦書きを実現するJavaScriptライブラリまとめ

縦書きのWebサイトを作ることになりそうなので、HTMLで縦書きを実現するJavaScriptライブラリをまとめてみた。

JavaScriptライブラリ

現在フリーで配布されている有名な縦書き用JavaScriptライブラリとして、以下の2つがある。

  1. 竹取 JS
  2. nehan - dynamic layout engine written in JavaScript. - Google Project Hosting

どちらも非常に使いやすいライブラリなので、用途に合わせて使い分ければよいと思う。

1. 竹取JS

f:id:nemousucom:20121112082937p:plain

竹取JSは、株式会社CMONOSが提供している縦書き用JavaScriptライブラリ。

単純なテキストだけでなく、リストや装飾等HTML全般に対応しているという特長がある。

また、フォントやマルチカラム、キャッシュ、ダブルクリックによる縦書き/横書き切り替え等、様々な設定が可能となっている。

動作については、任意のWebサイトを縦書き表示に変換する竹取Webを試してみるといいと思う。

コード例

<script type="text/javascript" src="taketori.js" charset="UTF-8"></script>
<script type="text/javascript">
//<![CDATA[
(new Taketori()).set({設定項目:値,設定項目:値}).element('縦書き対象要素ID').toVertical(画面の読み込み待ちをするかどうか);
//]]>
</script>

関連記事

2. nehan

こちらは(おそらく)個人により開発されているライブラリ。

最新版は3.0.5(執筆時現在)で、現在も開発が行なわれているらしい。

nehanの特長として、開発者のブログにあるようにページングにも対応している点がある。

なお、nehan開発者が運営している、nehan利用サービスとして以下の縦書き文庫がある。 利用例について見てみたい方はぜひ。

コード例

// source text
var text = "hello, nehan3";

// layout definition
var layout = new Nehan3.Layout({
  direction:"horizontal", // or "vertical"
  width: 640,
  height: 480,
  fontSize: 18
});

// create page generator
var generator = new Nehan3.PageGenerator(text, layout);

// yield page 1
var html_page1 = generator.yieldPage();
$("#page1").html(html_page1);

// yield page 2
if(generator.hasNext()){
  var html_page2 = generator.yieldPage();
  $("#page2").html(html_page2);
}

関連記事

追記:tategumi.js

f:id:nemousucom:20121112105601p:plain

tategumi.jsは合同会社アライアンス・ポートKumihan Projectが開発しているライブラリ。

僕自身まだ利用したことはないが、会社のサイトによると

JavaScriptによってブラウザ上の表示を制御し、日本語における縦書き、段組、追い出し等を実現します。 シックス・アパート株式会社と共同開発したMovable Type 4のプラグイン製品「新聞ブログ」はこのKUMIHANの技術を応用することで実現されています。

とある。 デモコードもあるので、一度試してみてはどうだろうか。

(情報提供していただいた id:labduck さん、ありがとうございました!)

関連記事

備考

以下の記事にあるように、将来的にCSSで縦書き指定が可能になるかも知れない。

おわりに

日本語の縦書き表現は、Webサイト上においては独特の表現ができる。 ただ、それだけでなく守るべき文化でもあると思う。

Web上でもっと自由に縦書きが表現できるようになるといいな。