« Small Basic API リファレンス | トップページ | "Object Oriented CSS" …名前なんて飾りです f(^^; »

2009年6月23日 (火)

[.NET] ルビを生成してくれる、 ASP.NET 用 YomiganaServerLabel コントロール ~ International Feature Pack 2.0 Beta

まず、 YomiganaServerLabel コントロールの出力が、 ブラウザでどう表示されるか、 見てもらったほうがいいかな。 OS は Win7 RC です。

【 IE8 】
20090623_yomiganaserverlabel_ie01a

【 Firefox 3.0.11 + HTML Ruby 4.43.7 】
20090623_yomiganaserverlabel_ff01a
※ Firefox は ruby 要素に対応していないので、 アドオンが必要です。

この一文、 ASP.NET 側ではどう書いてあるかというと…

<cc1:YomiganaServerLabel ID="YomiganaServerLabel1" runat="server" TextCssClassId="TextID" YomiganaCssClassId="YomiganaID"
  >\uFFF9今日\uFFFAきょう\uFFFBは\uFFF9良\uFFFAりょう\uFFFBい\uFFF9天気\uFFFAてんき\uFFFBです</cc1:YomiganaServerLabel>

Unicode のことを追っかけてる人なら分かると思いますが、 これは Unicode の Interlinear annotation というコードです。

http://unicode.org/charts/PDF/UFFF0.pdf

Interlinear annotation
Used internally for Japanese Ruby (furigana), etc.
FFF9 INTERLINEAR ANNOTATION ANCHOR
        * marks start of annotated text
FFFA INTERLINEAR ANNOTATION SEPARATOR
        * marks start of annotating character(s)
FFFB INTERLINEAR ANNOTATION TERMINATOR
        * marks end of annotation block

文字列中に [U+FFF9](親文字列)[U+FFFA](フリガナ)[U+FFFB] という順序で現れるようにして使います。 Unicode を正しく扱える処理系やデータベースなら、 このコードが入っていても問題無いはずです。

この  Interlinear annotation の入った文字列を、 YomiganaServerLabel コントロールは、 次のような ruby 要素に変換してくれるわけです。 ( 読みやすいように、 クラス属性を削除しました。 )
20090623_yomiganaserverlabel_html01
<ruby><rb> 今日</rb><rt>キョウ</rt></ruby>
<ruby><rb> は</rb><rt></rt></ruby>
<ruby><rb> 良</rb><rt>リョウ</rt></ruby>
<ruby><rb> い</rb><rt></rt></ruby>
<ruby><rb> 天気</rb><rt>テンキ</rt></ruby>
<ruby><rb> です</rb><rt></rt></ruby>

・ ruby 要素にしなくてもよいカナの部分まで、 ruby 要素に変換してしまってますね。
・ rp 要素も出してくれるといいですが… オプションで出せるのかな?

さて。 Interlinear annotation を手で書くのは面倒ですよね。
International Feature Pack 2.0 Beta には、 「注釈エディタ」 ( "Annotation Editor" の直訳なんでしょうね ) というツールが付属してきます。
YomiganaServerLabel コントロールの Text プロパティ右側の [...] をクリックすると、 注釈エディタが立ち上がります。
20090623_yomiganaserverlabel_src_ph
自動的に文節を区切ってくれます。 ( 文節分解は、 API として公開されている機能のようです。 )

しかし、 ここで特記すべきは。
右にある [オートフィル] ボタンをクリックすると、 自動的にふりがなを付けてくれることです !!
Excel の PHONETIC 関数のように、 渡した文字列に対して、 ( おそらくは ) 辞書の逆引きをやってくれているのです。 複数のフリガナ候補があったときの選択するロジックのせいでしょうか、 付属のヘルプには 「良」 に 「よ」 と振られている画像が載っているのですが、 Win7RC 上では 「りょう」 と振られてしまいました。
お客さんからは、 このような Excel の PHONETIC 関数のように振舞う自動フリガナ付け機能の要望が多いのですよね。 キー入力は 「とうかいはやし」 でも、 「しょうじ」 とフリガナを出して欲しい、 というような要望が。


( 2009/06/24 追記 )
※ ヘルプを見た限りでは、 やはり rp 要素は出力してくれないようです。 rp 要素を自動生成してくれれば、 ruby 要素に対応していないブラウザでは 「今日(キョウ)は良(リョウ)い天気(テンキ)です」 などと表示されるようになるのですが。
※ ruby 要素の規格は、 XHTML 用のものと HTML 5 ( ドラフト ) の 2通りあります。 このコントロールは XHTML 用のものを出力してくれますが、 HTML 5 対応のブラウザでも問題無く表示できるはずです。
・ XHTML 用 : Ruby Annotation (31 May 2001)
HTML 5 (Working Draft 23 April 2009) - 3.10.22 The ruby element

|

« Small Basic API リファレンス | トップページ | "Object Oriented CSS" …名前なんて飾りです f(^^; »

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/209349/45433043

この記事へのトラックバック一覧です: [.NET] ルビを生成してくれる、 ASP.NET 用 YomiganaServerLabel コントロール ~ International Feature Pack 2.0 Beta:

« Small Basic API リファレンス | トップページ | "Object Oriented CSS" …名前なんて飾りです f(^^; »