TSF(Text Service Framework)简介

原创 2011年01月14日 10:32:00

------------------------------------------------------------------
大家好,我是Mike,微软拼音的开发工程师。这里简单介绍下Windows里一种不同于传统IMM的强大可扩展的输入框架。
------------------------------------------------------------------

几个关于TSF的术语

TIP (Text Input Processor), a Text service in TSF

Cicero,TSF的开发代号,所以微软内部通常称呼TSF框架为Cicero

CUAS (Cicero Unaware Application Support),为所有应用程序和控件提供基本的TIP支持

AIMM(Active Input Method Manager),和CUAS一起工作

输入法框架

先讲一点点历史,Windows提供了两套输入法框架: Windows XP及之前,是IMM (Input Method Manager),基于纯函数API的。目前市面上非微软中文输入法基本上都是只实现IMM框架。

Windows XP开始及以后,Windows提供新的输入框架TSF,是基于COM的。实际上,到了Windows Vista,Windows 7,所有的应用程序和各种输入控件都是优先使用TSF的实现。但之所以Windows Vista,Windows 7用户还能使用各种基于IMM的输入法,是因为Windows提供了一个组件来将所有TSF的请求转为IMM的API。

按照微软的说法,TSF会最终取代IMM框架。而微软拼音基于兼容,功能和性能方面的原因,将这两个框架都实现了。

下面主要介绍TSF框架的输入法及与应用程序的交互。

TSF框架

Cicero它的目标是提供一套简单通用并易扩展的框架,用于高级文本输入和自然语言处理。一个TSF text service能够提供多语言支持和处理:键盘输入(我们通常讲的输入法),手写识别,语言识别等。

TSF的构架图

从上面构架图可以看到,TSF提供一个位于应用和输入法实现的间接层(一个Text service/TIP可以是一个输入法,或语音识别)。所以,TSF的优点在于,它是一个设备无关,语言中立,可扩展的系统;同时给用户提供一致的输入体验。任何TSF-enabled应用程序都能从任何text service接受文字输入,而不用考虑Text source的具体细节。同时,Text service也不用考虑各种不同应用的差别。譬如下面的应用场景:

 

上图可以看出, 应用程序收到”The boy ate the red apple”这段文字, 但是它不知道这些字是哪个TIP输入的,有可能是”Keyboard TIP”, 或是”Speech TIP”等。

与应用程序的交互

那么,这个框架是如何工作的?看看下面的组件交互图

在windows XP下,默认是CUAS关闭的,其交互如下

 

从上图可见,所有“edit control”(包括Notepad)都是直接调用IMM的API,最后调用IMM输入法,而4.1版本后的“RichEdit control”(包括WordPad等)是直接用TSF实现的输入法)

在Windows XP下如果打开CUAS,或者在Windows Vista和Windows 7下,则如下交互:

可以看到,IMM32和CUAS中多了一条交互,这意味着如果一个输入法实现了TIP,在Windows Vista和Windows 7,或CUAS打开的Windows XP下,应用程序的所有输入由TIP实现完成。

总结

本文简单介绍了输入法框架,TSF框架的构架和优点,以及它如何与应用程序和TIP实现交互。由于这方面的官方资料极为稀少,希望此文对大家有所帮助。

[附注]

在Windows XP如何打开CUAS:勾上下图红框中的复选框。

微软新一代输入法框架 TSF - Text Service Framework 小小的研究

虽说是转载的,但是其中,有很多我自己的评论,我会用红色的字标出来,参考的博文有: TSF架构:http://blog.csdn.net/mspinyin/article/details/61377...
  • puncha
  • puncha
  • 2013年10月28日 15:28
  • 11023

TSF输入法框架的工作原理

PS:本篇文章是基于网络上的一些文章、微软官方文档以及自己的理解整理而成,若理解有误,还请大家及时提出。 在了解了TSF的强大之后,很容易产生一个疑问,TSF是如何将应用程序和 Text Ser...
  • sogouauto
  • sogouauto
  • 2015年01月21日 11:51
  • 1617

TSF输入法

虽说是转载的,但是其中,有很多我自己的评论,我会用红色的字标出来,参考的博文有: TSF架构:http://blog.csdn.net/mspinyin/article/details/61...
  • new_smile
  • new_smile
  • 2016年04月08日 16:01
  • 838

微软新一代输入法框架 TSF - Text Service Framework 小小的研究

虽说是转载的,但是其中,有很多我自己的评论,我会用红色的字标出来,参考的博文有: TSF架构:http://blog.csdn.net/mspinyin/article/details/61377...
  • puncha
  • puncha
  • 2013年10月28日 15:28
  • 11023

使用VS2013链接微软的TSF

使用 Visual Studio 2013 链接 TFS.Connect Visual Studio.com 微软为我们提供了一个免费的代码托管服务,地址是http://tfs.visualst...
  • linshichen
  • linshichen
  • 2016年08月16日 11:32
  • 381

输入法的TSF框架(Text Service Framework)简介

几个关于TSF的术语 TIP (Text Input Processor), a Text service in TSF Cicero,TSF的开发代号,所以微软内部通常称呼TSF框架为Cicer...
  • zhoujiaxq
  • zhoujiaxq
  • 2014年03月12日 10:08
  • 1467

TSF ( 改善Color Shading的问题 )功能的调试和开启

[DESCRIPTION] 针对MT657X和MT6589平台上 Color shading 严重的问题,在MT6582之后的chip上导入了TSF 功能。主要用来改善Color shading问题...
  • u011677209
  • u011677209
  • 2017年02月09日 12:11
  • 433

RIME-使用小心得

从4月份我才接触到RIME输入法,当时的感觉上相见恨晚的,现在感觉也不错,时至今日,想写点东西,也算是小感触吧。RIME称为中州韵输入法引擎,是开放源代码的输入法软件,其主页是http://rime....
  • liming0931
  • liming0931
  • 2016年09月05日 21:35
  • 5241

TSF输入法框架的工作原理

PS:本篇文章是基于网络上的一些文章、微软官方文档以及自己的理解整理而成,若理解有误,还请大家及时提出。 在了解了TSF的强大之后,很容易产生一个疑问,TSF是如何将应用程序和 Text Ser...
  • sogouauto
  • sogouauto
  • 2015年01月21日 11:51
  • 1617

如何让全屏游戏的文本编辑框支持IME和TSF输入法

如何让全屏游戏的文本编辑框支持IME和TSF输入法本文主要解决游戏在全屏状态下文本编辑框无法显示组词窗口和候选词窗口的问题 文章首发:blog.csdn.net/goodboychina/导致这个问...
  • goodboychina
  • goodboychina
  • 2016年07月29日 18:07
  • 1331
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TSF(Text Service Framework)简介
举报原因:
原因补充:

(最多只允许输入30个字)