Closed clamm0363 closed 4 years ago
下側の問題は英語だとoを欠落させるだけで良さそうですが、日本語だと最後の文字を変化させなくてはいけなくて難度高そうです
1) 赤枠が母音だとmag
赤枠がそれ以外だとmac
1) cultureファイルのpatronym_prefix_male/patronym_prefix_male_vowelで決定され、patronym_prefix_male_vowelは現状は2つしか無い。
プログラムは文字列を探して、数値をgrepすると処理らしき近くに着地する
あやすぃ(,,゚Д゚)...
1) アルファベット判定のコードはどうやらこれっぽい
母音判定は以下にかかるようです。 65:41h A 69:45h E 73:49h I 79:4Fh O 85:55h U
89:59h Y
97:61h a 101:65h e 105:69h i 111:6Fh o 117:75h u
121:79h y
-64:C0h À -63:C1h Á -61:C3h à -60:C4h Ä -59:C5h Å -58:C6h Æ
-56:C8h È -55:C9h É
-52:CCh Ì -51:CDh Í
-46:D2h Ò -45:D3h Ó -42:D6h Ö -40:D8h Ø
-39:D9h Ù -38:DAh Ú -36:DCh Ü
-32:E0h à -31:E1h á -29:E3h ã -28:E4h ä -27:E5h å -26:E6h æ
-24:E8h è -23:E9h é
-20:ECh ì -19:EDh í
-14:F2h ò -13:F3h ó -10:F6h ö -8 :F8h ø
-7 :F9h ù -6 :FAh ú -4 :FAh ü
UTF-8の先頭「E3」が「ã」と誤認されている
なので、
みたいなのは母音と誤判定されるが、
みたいに先頭バイトが一致しないものは母音判定されない
この仕様を逆手に取り、見えない文字を作り、スイッチさせることは可能。例えば子音判定させたいものには先頭にNBSPをつける、母音判定させたいものには先頭にE3 80 84(〄:フォントは空文字にして幅0にする)をつけるなど
ただ、現状だとUTF-8の先頭コードを正しく言語別に判定できないことが本質であるので、どちらかに寄せるのが良いと思われる。
2)について、日本語の場合は誤判定されずに欠落しないことが証明されました。 https://discordapp.com/channels/439564919072096276/739722048691109888/770436525951287336
一方で、日本語の1文字をプログラム的に削ることも不可能なため、結合されるテキスト側で工夫するしかなさそうです。
父称とは一部の文化圏で苗字の代わりに用いられているものです。現在二つの問題点が判明しています。
・接頭辞としてつく父称の一部が、直後の文字が「母音であるかどうか」で判定されている - 日本語化MOD利用中に、直後の文字がカタカナなど日本語である場合に異なった判定をされてしまう - そのため、本来ならば子音用の接頭辞が用いられる人物に母音用の接頭辞が使われてしまっている 例: mac Donnchad (本来はマク・ドナハ) が「マグ・ドナハ」となってしまう
・接尾辞としてつく父称の一部が母音ではじまっている(ezなど)ため、父親や先祖の名前の最後の文字によって翻訳が変わってしまう 例: Fernando (フェルナンド)の子はFernandez (フェルナンデス)、Sancho (サンチョ) の子はSanchez (サンチェス) など - この父称部分のエントリは存在せず、父親の名前から自動生成されている - そのため、現在のところ「フェルナンドez」のように翻訳されている