掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Unicodeの各文字の全角or半角の判断について (ID:112303)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> ハングル文字を含んだUnicode文字列の各文字の全角or半角の判断はどのようにしたらよいのでしょうか? Unicodeには合成可能グリフなどもありますので…付きつめていくと、結構厄介ですよ。(^_^;) http://www.uri.sakura.ne.jp/~cosmic/yuno/lab/unicode_glyph.html とりあえず、東アジア圏における各文字の(Unicodeにおける)全角/半角の定義に関しては、ユニコード コンソーシアムの『EastAsianWidth.txt』という変換表を参照してください。 http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt この表は、行ごとに 1. コード値。これは、Hex(AscW(文字))』で得られる値です。 2. 東アジアにおける「横幅」を表す値。Na(Narrow)、W(Wide)、H(Half Width)、F(Full Width)、N(Not Asian)、A(Ambiguous)の6種。 3. Unicodeの文字名 が記載されていますので、これを使えば、全角/半角をプログラムで一応の判断ができると思います。とりあえず、Na/Hが半角、W/Fが全角という扱いですかね。 ただし、N(Not Asian) と、A(Ambiguous)に分類される文字に関しては、全角/半角という区分けが困難なので、これらをどう扱うかは別途考えてください。 --------- [A]は、文脈によって全角とも半角ともとられる文字を示しています。例えば『α』は、JIS X 0208との互換性の関係で全角と扱われる事もありますが、本来は半角とされるべきなので、[A]に分類されます。そして[N]は、日中韓の文字集合に無い文字を示します。 --------- 例えば、EastAsianWidth.txt では、 30AB;W # KATAKANA LETTER KA ……片仮名の「カ」。Wide属性。 FF76;H # HALFWIDTH KATAKANA LETTER KA ……こちらは、Half Width属性。 などのように記述されています。前者は全角、後者は半角ですね。 また、“RIEL”という『己』に似た形のハングル字母を見てみると、初声部に使われる方の字母は、 1105;W # HANGUL CHOSEONG RIEUL のように、Wide属性になっています。全角ですね。 # でも、終声部で使われる 11AF は、Not Asian属性のようです。(何故だろう?) # 11AF;N # HANGUL JONGSEONG RIEUL > 用途としては、「Microsoft Forms 2.0」の「TextBox」に文字列を表示した時に > ある位置まで表示したら改行するといった処理をやりたのです。 そういう用途であれば、全角/半角で判定するよりも、TextWidthメソッド等で判断した方が良いかも知れません。文字の幅は、フォントによっても変化しますから。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.