用拼音输入 Emoji

从技术上来说,没有什么难的,就是挂一个额外的词库。唯一难的就是词库从哪来的问题。因为开源软件总是绕不开一个 License 的问题。

从哪来这件事,Unicode 的 CLDR 提供了一个数据来源,根据语言给不同的颜文字标注了各个语言的文字。所以 Emoji 到汉字的映射就是可以从这里来了。到这里,我们其实可以选择直接像实现笔画输入或者英文输入那样直接匹配插入,但是这样当然会带来一个问题,就是很难把输入的词汇频率和这种外部挂接的候选词组合起来。另一方面,也就无法让句子中混合输入 Emoji 和汉字。所以这里就必须把 Emoji 做成一个从拼音映射过去的词库。然而,如果简单的使用 CLDR 的标记的话,就势必会出现类似现在某个挂载了 Emoji 的 Rime 一样,一个词无数个 Emoji 候选。所以还需要小心的对这些数据进行过滤。所以这部分主要就是我手工来进行修改的,总之有以下几个原则。

1、单个 Emoji 不要对应太多不同的意思,避免“联想”含义的意思。
2、避免动词,例如有个🪓的Emoji,在数据里面还有“砍”这样的数据。
3、避免单字对应。出于拼音输入的特殊性,如果单字对应 Emoji 过多,可能会影响正常输入。
4、避免某个读音有大量的 Emoji 对应。
5、避免同一个Emoji的对应汉字互相包含。例如摩托和摩托车都对应了🏍,但是如果它们同时出现在数据中,对于用户来说是无法区分🏍是对应了摩托两个字还是摩托车这三个字的拼音,所以要避免这样的情况发生。

虽然这样有不小的手工工作量,但是为了输入效果应该来说是值得做的。

示例:

This entry was posted in fcitx development and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.