obuk / HTML-Spacing-JA

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NAME

HTML::Spacing::JA - arrange spacing in ja text

SYNOPSIS

use HTML::Spacing::JA;
$ja = HTML::Spacing::JA->new();
$output = $ja->parse($input);

DESCRIPTION

HTMLのテキスト(preやcodeを除く)のスペースを補正します。日本語文章 中、英単語の両端にスペースをつける人 のような補正で す。括弧と句読点に含まれるスペースも補正します。font-feature-settings を使うので、cssにotfを指定する必要があります。

body {
  font-family: "Noto Sans CJK JP", sans-serif;
}

括弧と句読点の配置は、日本語組版処理の要件 の 3.1.2 句読点や括弧類などの基本的な 配置方法、3.1.4 始め括弧類〜が連続する場合の配置方法に合わせました。例 として同文書の図69を示します。

  1. …である。」この… 句読点の後ろに終わり括弧類が連続
  2. …である)。この… 終わり括弧類の後ろに句読点が連続
  3. …である、「この… 読点類の後ろに始め括弧類が連続
  4. …である」「この… 終わり括弧類の後ろに始め括弧類が連続
  5. …である「『この… 始め括弧類の後ろに始め括弧類が連続
  6. …である)」この… 終わり括弧類の後ろに終わり括弧類が連続
  7. …「編集」・「校正」… 括弧類と中点類が連続

Methods

  • parse($html)

    入力_$html_のスペースを補正して出力します。

  • output_tag($tag)

    出力を_$tag_で囲みます。デフォルトは "p" です。 style のような属性を加えるにはリファレンスを使います。

      $ja->output_tag([ "p", style => "text-align: justify" ]);
    
  • lang_spacing($yesno)

    欧文の語と和文がスペースで区切られていないとき、 区切りに"wordspace"を置きます。 デフォルトは1です。

  • number_spacing($yesno)

    数と和文がスペースで区切られていないとき、 区切りに"thinspace"を置きます。 デフォルトは1です。

  • punct_spacing($yesno)

    日本語の句読点や括弧等の字体のアキ ("palt1"で詰められる) を "enspace"で補います。デフォルトは1です。

  • uri_ascii($yesno)

    URIに使える文字をASCIIに制限します。デフォルトは1です。

  • re_token($hash)

    語とそのクラスを定義します。 クラスには W (欧文)、N (数)、J (日本語) の3つがあります。 次の例は欧文を含む複雑な語を日本語のトークンにします。

      $ja->re_token({ J => qr/ Official髭男dism /x });
    
  • re_pre($regex)

    デフォルトはqr/^pre$/です。

  • re_code($regex)

    デフォルトはqr/^code$/です。

  • enspace($html)

    二分アキです。デフォルトは20H (空白)とletter-spacingで作ります。

  • wordspace($html)

    四分アキです。デフォルトは20Hです。

  • thinspace($html)

    小さなスペースです。デフォルトは '' (空の文字列)です。

  • palt0($html)

    デフォルトは{ style => { 'font-feature-settings' => '"palt" 0' } }です。

  • palt1($html)

    デフォルトは{ style => { 'font-feature-settings' => '"palt" 1' } }です。

  • keep_global($yesno)

    _$yesno_を非0にすると、グローバル変数を開放しません。語とトークンの対 応を固定します。デフォルトは0です。(デバグ用です。)

  • verbose($level)

    ヒントを出力します。デフォルトは0です。(デバグ用です。)

User-Defined Character Properties

以下は、日本語組版処理の要件の文字クラス一覧 をPerlのユーザ定 義文字特性の形で定義 したものです。縦書を扱わないので、いくつか直しました。

  • InClosingBrackets

    cl-02です。 使いません。代りに\p{Pe}\p{Pf}を使います。

  • InColon

    "InMiddleDots" (cl-05)を分けました。

  • InCommas

    cl-07です。

  • InDividingPunctuationMarks

    cl-04です。

  • InEnding

    おわりの記号類です。\p{Pe}, \p{Pf}, "InColon", "InFullStops", "InCommas"、および"InDividingPunctuationMarks"で す。

  • InEndingJ

    InEndingのうち日本語のフォントに含まれるもの。

  • InEndingW

    InEndingのうち欧文のフォントに含まれるもの。

  • InFullStops

    cl-06です。

  • InGroupedNumerals

    cl-24です。

  • InHyphens

    cl-03です。

  • InInseparableCharacters

    cl-08です。

  • InIterationMarks

    cl-09です。 使いません。

  • InJapanese

    日本語の文字"InJapaneseCharacters"から記号類"InPunctuations"を除い たものです。

  • InJapaneseCharacters

    すべての日本語の文字です。異字体のセレクタも含みます。

  • InMiddleDots

    cl-05の一部、横書きの中点類のみ です。

  • InMiddleDotsJ

    "InMiddleDots"のうち日本語のフォントに含まれるもの。

  • InMiddleDotsW

    "InMiddleDots"のうち欧文のフォントに含まれるもの。

  • InNeutral

    欧文の文字で日本語との境界にスペースを追加しないもの。 (入力されたスペースは除きます。)

  • InNumbers

    数の類です。"InGroupedNumerals"からスペースを除きました。

  • InOpeningBrackets

    cl-01です。 使いません。代わりに\p{Ps}\p{Pi}を使います。

  • InPUA

    PUA (私用面)です。

  • InPostfixedAbbreviations

    cl-13です。

  • InPrefixedAbbreviations

    cl-12です。

  • InPunctuations

    すべての記号類です。

  • InSpaces

    スペース類です。\s (utf8::IsSpace) と "InSpace2" です。

  • InSpace2

    内部スペース類です。

  • InStarting

    始まりの記号類です。\p{Ps}\p{Pi}です。

  • InStartingJ

    "InStarting"のうち日本語のフォントに含まれるもの。

  • InStartingW

    "InStarting"のうち欧文のフォントに含まれるもの。

  • InWestern

    欧文の語を構成する文字です。"InJapaneseCharacters"と重複せず、 "InNumbers"を含みます。

  • InWesternCharacters

    cl-27です。たとえば、ここに AC00\tD7AF (Hangul Syllables) を追加し、和文の中に안녕하세요と書くと 前後にスペースが付きます。

  • IsEmSpace

  • IsEnSpace

  • IsThinSpace

  • IsWordSpace

    内部スペースの各文字に一致します。

Global Variables

  • $PUA_free

    このモジュールで使用するPUA領域の始まりのアドレスです。 デフォルトは1000000です。

  • %PUA

    語 (HTMLコード) のハッシュです。キーは語のトークンです。

  • %TOKEN

    トークン (PUA から割り当てた文字コード) のハッシュです。キーは語です。

  • %CLASS

    'W' (語) や 'N' (数) で分類したトークンのハッシュです。キーは分類です。

LICENSE

Copyright (C) KUBO, Koichi.

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

AUTHOR

KUBO, Koichi k@obuk.org

About

License:Other


Languages

Language:Perl 100.0%