1# @Language: Markdown
2# @Software: VS Code
3# @Author  : Di Wang
4# @Email   : [email protected]

日语罗马字化与计算机输入

上文My Rime configuration中提到了日语输入的两个小问题, 第一个是拨音的输入, 第二个是如何处理动词变形. 在尝试解决的过程中发现了现行日语输入的混乱之处…

ヘポン式ローマ字 and 訓令式ローマ字

对于日语假名的罗马字化, 简言之, 前者是美国传教士Hepburn基于英语发音创建的假名与罗马字的对应表, 对于英语使用者来说拼读更符合英语的习惯, 比如记为tsu. 而后者是日本政府公布的标准, 记为tu.

但是常用的商业输入法, 如macOS与iOS日语输入法, Microsoft IME, Google 日语输入法, 为了用户的输入方便都使用了二者相结合的方式. 也就是说, 主要基于訓令式, 但一些不冲突的码会支持ヘポン式, 比如(ja ju je jo).

特殊的ん

传统Hepburn记法中, ん可以写成mn, 比如群馬(ぐんま): Gumma. 但新式Hepburn记法中则和訓令式相同:

对于记法, 二者统一, 在元音和y之前写为n', 其他情况记为n, 例:

  • 簡易(かんい): kan’i
  • カニ(かに): kani

但对于计算机输入, 输入单引号显得繁琐. 一是日语键盘配列中需要键入Shift+7来输出'. 二是手机端输入单引号需要切换面板.

因此虽然罗马字记法中使用n来输入, 但为了减少歧义, 更多情况下使用nn来输入. 这样一来, 记法就与编码不同. 对于Rime字典来说, 就需要手动更新. 例如将kan'i修改为kanni

Solution

  1. 使用假名作为字典编码, 也就是和mozc同样的方案. 经过测试, Rime支持假名编码方案, 这样的话可以直接使用mozc的字典. 可参见项目 m13253/rime-nihongo-romajisgalal/rime-kunyomi

  2. 使用罗马字母进行编码, 通过Rime提供的speller/algebra转写, 此种方案需要自行编写脚本转换mozc的字典, 此项目已包含脚本lazyfoxchan/rime-jaroomaji

当前我正在使用方案2. 能满足基本输入要求, 能处理拨音, 也能处理动词变形, 其处理方案与mozc一致, 将变形写入字典, 如下所示:

1まがった	ma ga xtu ta	60129
2まがって	ma ga xtu te	60129
3まがっと	ma ga xtu to	60129
4曲がった	ma ga xtu ta	61962
5曲がって	ma ga xtu te	61962
6曲がっと	ma ga xtu to	61962

但此方案自动提示功能不可用, 待时间充足与精力恢复会逐渐准备方案1.

zh zj zk zl

对于Google日语输入法(或开源版本的mozc, 字典源文件参见GitHub mozc), 有以下一组mapping, 用于输入方向箭头, 显然hjkl代表的方向指向是源于Vim传统. 何人加入此项配置的不详.

1zh	←
2zj	↓
3zk	↑
4zl	→

但蹊跷的是, 在Apple日语输入法中, 同样有此feature. 而Windows日语IME却不支持. 由此猜测, 莫非Apple是复用/借鉴了Google日语输入法的词库? 而微软日语输入法则是"独立自主研发"? (www

简单搜索后并无答案, 但鉴于Apple进入日本市场的时间之早, 很难相信Apple会复用Google的词库, 许是Google复用/借鉴Apple日语输入法也说不准, 这其中想必有一段趣事. 只可惜实验室的那台NeXTstation已无法启动, 不然倒可以验证下90年代的macOS前身OS是否支持此feature.