CE
包含了一种简体中文输入法编辑器,如果不想编写自己的输入法编辑器,那么可
以直接调用默认的。在讲解中文输入法编辑器之前顺便提一下国际化
(
Internationalization
),中文输入法及输入法编辑器只是国际化组件的一小部分。国际化
是编写面向不同语言用户的软件过程中一个重要环节,
CE
的国际化组件包含很多小的组
件,下表描述了组件的名称、功能:
在定制内核的时候常会遇到这些组件,尤其是字体版本,选择不同的字体对于整个内
核的大小影响很大。在定制内核的时候,选择
PB
提供的字体版本应该参照标题为
“Font
Versions”
的帮助文档,在这个文档中详细的列举了东亚语言字体的文件名称、内容、正常
大小和压缩大小。除了选择合适的字体版本外,还应该采用
Agfa
字体压缩
技术
,
Agfa
字
体压缩
技术
的优点是能够减小字体占用的
ROM
和
RAM
空间,另外能够保证在压缩和解压
缩后数据不丢失。如果采用字体压缩,
Agfa
压缩
技术
将字体压缩成
TrueType
格式,并另
存为扩展名为
“.ac3”
的文件,那么
CE
在使用字体的时候首先寻找扩展名为
“.ac3”
的文件。
如果不采用字体压缩,
CE
将使用非压缩字体,如扩展名为
“.ttf”“.ttc”
的文件。下面讲述关于
简体中文输入法编辑器的相关知识。
CE
的输入法系统由下列几个部分组成:
IME
(输入法编辑器)内核。包括和用户输入的语言相关的内容,比如输入法、文字
库等
IME
界面。包括状态窗口、写作窗口、候选窗口、指南窗口
IMM
(输入法
管理
器)。负责在
CE
系统、应用程序、
IME
之间
通信
输入上下文。包括用户输入状态等
IME
控制窗口。负责发送未处理的
IME
消息到
IME
输入法系统的工作机制如下:
当输入法系统启动后,用户按键盘,键盘消息被
IMM
发送到
IME
。
IME
处理消息内
容,根据键盘消息的内容或者产生用于写作的字符,或者产生命令。当
IME
处理键盘消息
后,它发送通知消息到当前获得焦点的窗口,如果这个窗口不能处理
IME
通知消息,那么
通知消息被发送到
IME
控制窗口,控制窗口将消息返回到
IME
,
IME
做默认的处理工作
(
IME
提供了完整的用户接口)。对于能够处理
IME
通知消息的窗口,被称之为
IME-
aware
窗口,相反不能处理
IME
通知消息的窗口,被成为
IME-unaware
窗口。能够处理
IME
通知消息的窗口通过
IMM
函数能够实现自定义的输入法编辑器。
输入上下文:
输入上下文存储了
IME
的状态信息,它是
IME
的内部结构。对于每一个线程,系统创
建和分配了一个默认的输入上下文,在线程内的每个窗口都共享输入上下文的内容。具体
输入上下文的结构体定义包含在标题为
“INPUTCONTEXT”
的帮助文档中。从文档中看出,
输入上下文包含对应窗口句柄、写作窗口和候选窗口和状态窗口的位置、字体、消息缓冲