=encoding UTF-8

=head1 名前

Lingua::JA::Moji - 総合日本文字変換「文字ュール」

=head1 概要

日本の文字の総合変換

    use Lingua::JA::Moji qw/kana2romaji romaji2kana/;
    use utf8;
    my $romaji = kana2romaji ('あいうえお');
    # $romaji is now 'aiueo'.
    my $kana = romaji2kana ($romaji);
    # $kana is now 'アイウエオ'.

=head1 説明

本モジュールはあらゆる日本の文字変換を目的とします。

全てのfunctionはユニコードを前提とします。全ての入出力はutf-8でやる。





=head1 ローマ字変換


かな ⇄ ローマ字







=head2 kana2romaji -- 仮名をローマ字に

    use Lingua::JA::Moji 'kana2romaji';

    $romaji = kana2romaji ("うれしいこども");
    # Now $romaji = 'uresîkodomo'




仮名をローマ字に変換。

オプションは関数の２番目の引数でハシュリファレンスとして入ります。

    use utf8;
    $romaji = kana2romaji ("しんぶん", {style => "hepburn"});
    # $romaji = "shimbun"

可能なオプションは

=over

=item style

ローマ字の種類。

=over

=item undef

ディフォルトは日本式（「つづり」が「tuduri」, 「少女」が「syôzyo」）。

=item passport

パスポート式(「伊藤」が「itoh」)

=item kunrei

訓令式（少学校４年で習うローマ字法）

=item hepburn

ヘボン式（「つづり」が「tsuzuri」, 「少女」が「shōjo」）。
これを選べば、下記のuse_mが真になり、ve_typeがmacronになります。

=back

=item use_m

真なら「しんぶん」が「shimbun」
偽なら「ぐんま」が「gunma」

=item ve_type

長い母音はどの様に表現する。

=over

=item undef

曲折アクセントを使う。

=item macron

マクロンを使う。

=item passport

「アー」、「イー」、「ウー」、「エー」が「a」, 「i」, 「u」, 「e」になり、「オー」が「oh」になる。

=item none

「アー」、「イー」、「ウー」、「エー」ガ「a」, 「i」, 「u」, 「e」, 「o」になる。

=item wapuro

「アー」、「イー」、「ウー」、「エー」ガ「a-」, 「i-」, 「u-」, 「e-」,
「o-」になる。「おう」が「ou」など、仮名の長音を仮名で代表するよう、ロー
マ字入力のようなことです。

=back

=item wapuro

ワープロローマ字。長音符は使わない。「少女」が「shoujo」など。

=back









=head2 romaji2kana -- ローマ字を仮名に

    use Lingua::JA::Moji 'romaji2kana';

    $kana = romaji2kana ('yamaguti');
    # Now $kana = 'ヤマグチ'




ローマ字をカタカナに変換する。ローマ字はできるだけ幅広く受け入れる。
ローマ字をひらがなに変換したいときはL</romaji2hiragana>をお使いください。

ローマ字変換のオプションは関数の２番目の引数でハシュリファレンスとして入る。

     $kana = romaji2kana ($romaji, {wapuro => 1});

長音「ou」を「オー」ではなく、「オウ」にしたいときはwapuroを真にする。









=head2 romaji2hiragana -- ローマ字をひらがなに

    use Lingua::JA::Moji 'romaji2hiragana';

    $hiragana = romaji2hiragana ('babubo');
    # Now $hiragana = 'ばぶぼ'




ローマ字をひらがなに変関する。オプションはL</romaji2kana>と同じ。wapuroオプション
もオンにしたら、「ou」が「おー」ではなく、「おう」になる。









=head2 romaji_styles 

    use Lingua::JA::Moji 'romaji_styles';

    my @styles = romaji_styles ();
    # Returns a true value
    romaji_styles ("hepburn");
    # Returns the undefined value
    romaji_styles ("frogs");




引数があれば、その引数をローマ字方法として認めるなら真、認めないなら偽。

引数がなければ、すべてのローマ字方法をハシュリファレンスの列として戻す。









=head2 is_voiced 

    use Lingua::JA::Moji 'is_voiced';

    if (is_voiced ('が')) {
         print "が is voiced.\n";
    }




仮名かローマ字は濁音（゛）、半濁音（゜）がついていれば、真、ついていなければ偽（undef)。









=head2 is_romaji 

    use Lingua::JA::Moji 'is_romaji';

    # The following line returns "undef"
    is_romaji ("abcdefg");
    # The following line returns a defined value
    is_romaji ("atarimae");




アルファベットの列はローマ字に見えるなら真、見えないなら偽。









=head2 normalize_romaji 

    use Lingua::JA::Moji 'normalize_romaji';

    $normalized = normalize_romaji ('tsumuji');




C<normalize_romaji>はかなやローマ字で書いた言葉を比べるため、かなやローマ字の言葉を決まったローマ字の書き方になおします。この「決まった」ローマ字は本モジュール限定のもので、あくまでも違ったかなや違ったローマ字法で書いた言葉を比べるためだけのものに過ぎませんので、正式なローマ字法と間違わないように。











=head1 仮名





=head2 hira2kata -- ひらがなをカタカナに

    use Lingua::JA::Moji 'hira2kata';

    $katakana = hira2kata ('ひらがな');
    # Now $katakana = 'ヒラガナ'




平仮名をかたかなに変換します。長音符は変わりません。（「オー」は「おう」になりません。）









=head2 kata2hira -- カタカナをひらがなに

    use Lingua::JA::Moji 'kata2hira';

    $hiragana = kata2hira ('カキクケコ');
    # Now $hiragana = 'かきくけこ'




かたかなを平仮名に変換します。長音符は変換しません。









=head2 InHankakuKatakana 

    use Lingua::JA::Moji 'InHankakuKatakana';

    use utf8;
    if ('ｱ' =~ /\p{InHankakuKatakana}/) {
        print "ｱ is half-width katakana\n";
    }




C<InHankakuKatakana> is a character class for use in regular
expressions with C<\p> which can validate halfwidth katakana.









=head2 kana2hw -- 仮名を半角カタカナに

    use Lingua::JA::Moji 'kana2hw';

    $half_width = kana2hw ('あいウカキぎょう。');
    # Now $half_width = 'ｱｲｳｶｷｷﾞｮｳ｡'




あらゆる仮名文字を半角カタカナに変換する。かたかなのみを変換する場合はL</katakana2hw>を使ってください。









=head2 hw2katakana -- 半角カタカナをカタカナに

    use Lingua::JA::Moji 'hw2katakana';

    $full_width = hw2katakana ('ｱｲｳｶｷｷﾞｮｳ｡');
    # Now $full_width = 'アイウカキギョウ。'




半角カタカナを全角カタカナに変換する。









=head2 is_kana 

    use Lingua::JA::Moji 'is_kana';

    




入力が仮名のみの場合、真、入力が仮名なでない文字を含む場合、偽(undef)。









=head2 is_hiragana 

    use Lingua::JA::Moji 'is_hiragana';

    




入力が平仮名のみの場合、真、入力が平仮名なでない文字を含む場合、偽(undef)。「ー」があれば偽になる。









=head2 kana2katakana -- 仮名をカタカナに

    use Lingua::JA::Moji 'kana2katakana';

    




全角かたかな、ひらがな、半角かたかな、丸かたかななどあらゆる「仮名」を全角かたかなに変換する。









=head2 kana_to_large 

    use Lingua::JA::Moji 'kana_to_large';

    $large = kana_to_large ('ぁあぃい');
    # Now $large = 'ああいい'




「ぁ」など小さい仮名を「あ」に変換する。









=head2 kana_order 

    use Lingua::JA::Moji 'kana_order';

    $kana_order = kana_order ();




仮名の（適当な）順番を返す。









=head2 katakana2hw -- カタカナを半角カタカナに

    use Lingua::JA::Moji 'katakana2hw';

    $hw = katakana2hw ("あいうえおアイウエオ");
    # Now $hw = 'あいうえおｱｲｳｴｵ'




全角かたかなを半角かたかなに変換し、ひらがなをそのままにする。L</kana2hw>も参照。









=head2 InKana 

    use Lingua::JA::Moji 'InKana';

    $is_kana = ('あいうえお' =~ /^\p{InKana}+$/);
    # Now $is_kana = '1'




正規表現に使うカタカナとひらがなにマッチする。











=head1 全角英数字


全角英数字の変換・認識。







=head2 InWideAscii 

    use Lingua::JA::Moji 'InWideAscii';

    use utf8;
    if ('Ａ' =~ /\p{InWideAscii}/) {
        print "Ａ is wide ascii\n";
    }




正規表現に使う全角英数字にマッチする。









=head2 wide2ascii -- 全角英数字を半角英数字に

    use Lingua::JA::Moji 'wide2ascii';

    $ascii = wide2ascii ('ａｂＣＥ０１９');
    # Now $ascii = 'abCE019'




全角英数字を半角英数字(ASCII)に変換する。









=head2 ascii2wide -- 半角英数字を全角英数字に

    use Lingua::JA::Moji 'ascii2wide';

    $wide = ascii2wide ('abCE019');
    # Now $wide = 'ａｂＣＥ０１９'




半角英数字(ASCII)を全角英数字に変換する。











=head1 その他の文字





=head2 kana2morse -- 仮名を和文モールス符号に

    use Lingua::JA::Moji 'kana2morse';

    $morse = kana2morse ('しょっちゅう');
    # Now $morse = '--.-. -- .--. ..-. -..-- ..-'




かなをモースコードに変換する。日本語のモースコードは「っ」など小さいかなを表現できないので、仮名をモースコードにして、モースコードからまた仮名にする場合は「しょっちゅう」が「シヨツチユウ」になる。









=head2 morse2kana -- 和文モールス符号を仮名に

    use Lingua::JA::Moji 'morse2kana';

    $kana = morse2kana ('--.-. -- .--. ..-. -..-- ..-');
    # Now $kana = 'シヨツチユウ'




モースコードをかなに変換する。モースコードは分かち書きが必要だ。






=head3 欠点

テストが不十分。







=head2 kana2braille -- 仮名を点字に

    use Lingua::JA::Moji 'kana2braille';

    




仮名を点字に変換する。






=head3 欠点

きちんとしたテストがない。日本語を点字に変換することはわたちがきが必要だがこの関数はそれをしないので、不十分な変換機能だ。







=head2 braille2kana -- 点字を仮名に

    use Lingua::JA::Moji 'braille2kana';

    




Converts Japanese braille (I<tenji>) into the equivalent katakana.









=head2 kana2circled -- 仮名を丸付けカタカナに

    use Lingua::JA::Moji 'kana2circled';

    $circled = kana2circled ('あいうえお');
    # Now $circled = '㋐㋑㋒㋓㋔'




仮名を丸付けかたかなに変換する。丸付け「ン」がないので、ンはそのままとなる。
丸付け片假名はユニコード32D0〜32FEにある。









=head2 circled2kana -- 丸付けカタカナを仮名に

    use Lingua::JA::Moji 'circled2kana';

    $kana = circled2kana ('㋐㋑㋒㋓㋔');
    # Now $kana = 'アイウエオ'




丸がついているかたかなを全角かたかなに変換する。











=head1 漢字





=head2 new2old_kanji -- 親字体を旧字体に

    use Lingua::JA::Moji 'new2old_kanji';

    $old = new2old_kanji ('三国 連太郎');
    # Now $old = '三國 連太郎'




親字体を旧字体に変換する






=head3 欠点

新旧字体の情報は適当なものだ。「弁」は旧字体が三つなので、変換不可能。







=head2 old2new_kanji -- 旧字体を親字体に

    use Lingua::JA::Moji 'old2new_kanji';

    $new = old2new_kanji ('櫻井');
    # Now $new = '桜井'




旧字体を親字体に変換する









=head2 circled2kanji 

    use Lingua::JA::Moji 'circled2kanji';

    $kanji = circled2kanji ('㊯');
    # Now $kanji = '協'




丸付け漢字を普通の漢字に変換する。









=head2 kanji2circled 

    use Lingua::JA::Moji 'kanji2circled';

    $kanji = kanji2circled ('協嬉');
    # Now $kanji = '㊯嬉'




漢字を丸付け漢字に変換する。









=head2 bracketed2kanji 

    use Lingua::JA::Moji 'bracketed2kanji';

    $kanji = bracketed2kanji ('㈱');
    # Now $kanji = '株'




括弧漢字を普通の漢字に変換する。









=head2 kanji2bracketed 

    use Lingua::JA::Moji 'kanji2bracketed';

    $kanji = kanji2bracketed ('株');
    # Now $kanji = '㈱'




普通の漢字を括弧漢字をに変換する。











=head1 日本語のキリル文字表記


実験的に仮名とキリル文字の変換をする。キリル文字に詳しい方の確認がない。







=head2 kana2cyrillic -- 仮名をキリル文字に

    use Lingua::JA::Moji 'kana2cyrillic';

    $cyril = kana2cyrillic ('シンブン');
    # Now $cyril = 'симбун'







=head2 cyrillic2katakana -- キリル文字をカタカナに

    use Lingua::JA::Moji 'cyrillic2katakana';

    $kana = cyrillic2katakana ('симбун');
    # Now $kana = 'シンブン'









=head1 ハングル





=head2 kana2hangul 

    use Lingua::JA::Moji 'kana2hangul';

    $hangul = kana2hangul ('すごわざ');
    # Now $hangul = '스고와자'




=head3 欠点

=over

=item 「ん」を変換しない

=item 確認がない

=back






=head1 SUPPORT

=head2 Mailing list

There is a mailing list for this module and L<Convert::Moji> at
L<http://groups.google.com/group/perl-moji>. 

=head2 Other modules

=over

=item L<Lingua::KO::Munja>

This is similar to the present module for Korean.

=back

=head2 Books

幣モジュールは冨田尚樹氏の「Perl CPANモジュールガイド」に説明しています。
(ISBN 978-4862671080 WEB+DB PRESS plus, 2011年4月出版)

=head1 EXPORT

This module exports its functions only on request. To export all the
functions in the module,

    use Lingua::JA::Moji ':all';

=head1 著者

Ben Bullock, C<< <bkb@cpan.org> >>

=head1 COPYRIGHT & LICENSE

Copyright 2008-2012 Ben Bullock, all rights reserved.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

=cut

=head1 ACKNOWLEDGEMENTS

Thanks to Naoki Tomita for various assitances (see
L<http://groups.google.com/group/perl-moji/browse_thread/thread/10a42c35f7c22ebc>).

