変換モジュールのToUpper, ToLowerについNo.08458
colder さん 14/10/30 20:32
 
colderです。
変換モジュールのToUpper, ToLowerの仕様確認とバグ報告です。

以下のような大文字と小文字が1対1で対応していない文字は変換対象外でしょうか?
・大文字と小文字の合字
    Dz,Dž,Lj,Nj
・ドット無しのi/ドット付きのI
    ı,İ
・long Sなどの異体字
    ſ,ẛ

変換対象の大文字/小文字の一覧はどのような文字コードを根拠にしているのでしょ
うか?
ほぼ、Unicode ver5.0に準拠しているようですが、
以下の文字の対応が不足しており、
Ň/ň, Ŷ/ŷ, Ȍ/ȍ
以下の文字に対応してしまっています。
Ⱳ/ⱳ ← この文字はUnicode ver5.1で追加されたものです。

最後にバグ報告です。
ȎをToUpperで変換するとȌになってしまいます。

環境 win7 秀丸8.50β12 Hmfilter.hmf ver 1.11

[ ]
RE:08458 変換モジュールのToUpper, ToLowNo.08460
秀丸担当 さん 14/10/31 10:05
 

的確なご指摘ありがとうございます。

大文字/小文字変換の仕方は、colderさんのULTI.hmfの結果や、Word 2013の結果
や、文字コード表などを参考にしつつ、文字の対応が1対1になるようにしてみ
ました。
ULTI.hmfで変換されてもWord 2013で変換されないものは、今回は対象にしてい
ないです。

一応1対1などを考えて、
>・大文字と小文字の合字
>・ドット無しのi/ドット付きのI
>・long Sなどの異体字
の文字は除外しました。

あと欧文(コードページ1252)内での範囲は超えないようにしています。
コードページ1252の範囲から外れるものとして以下のものも除外しています。
U+0191/U+0192 CP1252では(なし)/0x83
U+00B5/U+039C CP1252では0xB5/(なし)
U+1E9E/U+00DF CP1252では(なし)/0xDF

それぞれ情報が失われるという観点からしてみましたが、やはり実用面では違う
こともあると思うので、検討の余地はあると思います。

他には、
U+2C63/U+1D7D の、U+1D7Dは音声記号拡張の領域ですがワードでやっているので
入れました。
U+A77D/U+1D79 の、U+1D79も音声記号拡張の領域ですがワードでやっていないの
で、やめました。


>以下の文字の対応が不足しており、
>Ň/ň, Ŷ/ŷ, Ȍ/ȍ
>最後にバグ報告です。
>ȎをToUpperで変換するとȌになってしまいます。

これらの文字は確かに意図したものではありませんでした。
ありがとうございます。
次のバージョンで修正させていただきます。

>以下の文字に対応してしまっています。
>Ⱳ/ⱳ ← この文字はUnicode ver5.1で追加されたものです。
>
ラテン拡張C(U+2C60〜)の一部と、ラテン拡張D(U+A720〜)の全ての文字は、
ワードは対象外にしているようで、とりあえずやめました。
必要であれば今後対応を検討します。
もしやるとしても、ラテン文字の分類というより、ギリシャ文字や他の文字の分
類になりそうな気がしていて、そのあたりの線引きが曖昧でどうしたものかと思
います。

[ ]
RE:08460 変換モジュールのToUpper, ToLowNo.08462
colder さん 14/11/01 17:45
 
colderです。
回答ありがとうございます。
変換対象は、ほぼワード準拠ですね。分かりました。

>あと欧文(コードページ1252)内での範囲は超えないようにしています。
>コードページ1252の範囲から外れるものとして以下のものも除外しています。
>U+0191/U+0192 CP1252では(なし)/0x83
これは文字コードが欧文になっているとき限定でしょうか?
文字コードがUnicodeになっているときは変換可能でした。
&文字コードが欧文のときもlower caseでU+0191→U+0192の変換は可能でした。

[ ]
RE:08462 変換モジュールのToUpper, ToLowNo.08464
秀丸担当 さん 14/11/04 09:44
 

>>U+0191/U+0192 CP1252では(なし)/0x83
>これは文字コードが欧文になっているとき限定でしょうか?
>文字コードがUnicodeになっているときは変換可能でした。
>&文字コードが欧文のときもlower caseでU+0191→U+0192の変換は可能でした。

これは文字コードが欧文のとき限定でした。
Unicodeとして存在している文字は対象でした。
一貫性が無いもよくないので、とりあえずUnicodeであっても対象外にしてみま
す。

[ ]