蒙古青年论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: ganjike

终于将vista蒙文输入法移植到xp上了

[复制链接]
发表于 2006-6-11 19:35:53 | 显示全部楼层
我觉得 usp10.dll   的覆盖有问题。
――――――――――
覆盖问题,winXP 版本的事或者 某个升级包的事

[ 本帖最后由 雪花飞舞 于 2006-6-11 08:20 PM 编辑 ]
发表于 2006-6-11 20:43:45 | 显示全部楼层
原帖由 ganjike 于 2006-6-11 11:33 AM 发表
你说的功能其他输入法是通过不同的编码实现的。而微软不是。技术上的不同才是核心。
在windows2006以前你见过当你写第二个字母的时候它前边的字母自己变化的吗?


微软的蒙文平台不仅仅是做了个opentype字体和自动变形。
而是这个自动变形放在操作系统核心里还是别的地方,怎样处理才能最好的问题。  


很多输入法都有unicode 输出。自动变化当然看过。你看过方正9.1 吗?
opentype字体是个开放的技术,它的支持软件比较少。自动变形的处理模块应该是usp10.dll 。
不过还有别的什么东西制约着字体显示。
 楼主| 发表于 2006-6-12 09:28:22 | 显示全部楼层
原帖由 雪花飞舞 于 2006-6-11 08:43 PM 发表


很多输入法都有unicode 输出。自动变化当然看过。你看过方正9.1 吗?
opentype字体是个开放的技术,它的支持软件比较少。自动变形的处理模块应该是usp10.dll 。
不过还有别的什么东西制约着字体显示。


听说过方正可惜没有机会见。我想他一定是通过扩展编码实现的。
你说的很对,字形自动变换的确在usp10.dll中,我是通过vista的symbols中找到的。
而且字体显示的时候的确有很多东西制约着字体的显示,我想这些制约的东西就是windows
中关于gdi一些技术。

在2k上将usp10替换后虽然在记事本中不能字形自动变换,但是写一个网页,在ie中却可以自动变形。
这说明usp10是起作用的。


还是说说自动变形的实现吧。
当我看到vista的蒙文输入法后,才知道原来文字变形也可以不用编码实现。
我所见过的字形自动变化都是在输入法中,一旦文字确定输出到编辑器就不再变化。
他们的实现方法是每个变化的字形都有一个编码,根据不同的输入组合,输出不同的编码。
这样的输入法我也写过而且在一年前我就公开了源代码,不过我写的需要通过组合按键确
定变形,不是自动变形。

我也想实现微软那样,由于微软的软件继承性做的太好了,导致我不用写程序就能移植蒙文平台。
我一直称微软的蒙文输入部分为蒙文平台,而不是输入法。因为它是在系统中支持蒙文自动变形
而不是只是在输入法中支持蒙文自动变形。而且当你不用输入法,在编辑微软输出的蒙文时字形也会变化。
比如abo(爸爸) 当你在ab之间加一个空格,他会自动变化成 独立的a字母和 bo 字母。如果你在bo之间
再加个空格就会变成独立的a,独立b(自首形), 独立o.
而在其他的输入法输出的蒙文中字形不会变化,会出现 断字的现象。
仔细分析一下各种蒙文输入法中的字体和微软的字体就知道了。非微软的字体中所有变形都有编码。
微软的字体中一个编码的所有变形中只会在第一个字形有编码。这样微软就可以实现只用unicode编码就
能表示了所有蒙文字形,而不用进行编码扩展(编码扩展了就没有标准了,所以就出现了各种蒙文不兼容现象)。

我说说我想实现微软这样的功能,我原打算只是找到vista中自动变形部分代码,然后
在xp/2000上将gdi  api  GetGlyphIndices hook上,替换成自己函数,判断如果输入
的是unicode的蒙文则输出变形后的字形在字体中位置。GetGlyphIndices这个函数
的功能就是将输入的内码(各种文字的编码)变换成每个编码在字体中的位置,然后其他
的gdi函数用字体中信息将文字画出来。这样不管输入法输入什么,操作系统都会自动
支持蒙文变形。现在不用我做了:)

很多软件(qq,msn)为了用户界面友好或文字显示的更有个性(如图形和文字可以同时显示),在
文字输出部分都是特别制作。所以微软的蒙文字体显示有断的现象。(回答网友tutu)

[ 本帖最后由 ganjike 于 2006-6-12 09:43 AM 编辑 ]
发表于 2006-6-13 12:01:29 | 显示全部楼层
微软作了自动转换当然很好了,原有 unicode 输出的输入法有用武之地了。比起微软的输入法(太简单了,也没有键盘布局的文档)现在的有unicode 输出的输入法更有适应性。在Vista中也能用。
微软作的unicode输入法中可以看出蒙古文处理的方向肯定是unicode。unicode扩展也不会一下子落伍。中国国家标准出来才会真相大白。我觉得国家标准内肯定把显现字符都包括进来进行编码,就像现在的软件公司开发的unicode扩展一样。不过大家都有显现字符标准(国内)了。
另一方面,windows的支持unicode的力度不是很强,现在unicode扩展混乱的局面,windows也有责任。
方正9.1(编辑环境内) 和 明安图(输入框控件内)都能自动变形。不过这种支持自动变形的软件太少了。现在可以把 写字板 也算上也太少了。希望以后的软件都能支持自动变形,而且不断字。
 楼主| 发表于 2006-6-14 08:43:42 | 显示全部楼层
原帖由 雪花飞舞 于 2006-6-13 12:01 发表
微软作了自动转换当然很好了,原有 unicode 输出的输入法有用武之地了。比起微软的输入法(太简单了,也没有键盘布局的文档)现在的有unicode 输出的输入法更有适应性。在Vista中也能用。
微软作的unicode输入法 ...


不用急,vista必定还是测试版,等正式版出来后就有文档了。
微软的蒙文平台不会支持国内的unicode扩展,但是国内的各个输入法却很容易
修改到微软的蒙文平台上。

在vista上软件都能支持蒙文,以后能在vista上运行的软件也能支持(我想这是没有问题的)。
至于vista以下的2k3,xp,2k 上,国际化的软件就是使用unicode api输出字符的软件,只要替换usp10.dll
也没有问题。其他的软件显示微软的蒙文就不那么好了。不过至少ie在这几个平台上都没有问题。

似乎老兄是学院派的,学校的老师?理论多于实践。
你说的一些问题我的确没有考虑那么深,只是想一些技术上的细节如怎样做,能不能做出来。
有些个东西比如字体的支持要操作系统做这部分工作才好,
应用软件做了费力不讨好(太孤立了,很难与别的软件或os兼容)。

微软作的unicode输入法中可以看出蒙古文处理的方向肯定是unicode。unicode扩展也不会一下子落伍。中国国家标准出来才会真相大白。我觉得国家标准内肯定把显现字符都包括进来进行编码,就像现在的软件公司开发的unicode扩展一样。不过大家都有显现字符标准(国内)了。

我觉得这个工作一定要慎重,标准不能随便定,一定要符合语言的特性,应该有一批资深的蒙古语言学家,
公开公正的制定。最好不要有国家或某个公司的经济利益的干预。
发表于 2006-6-23 02:59:19 | 显示全部楼层
最近很多字体都有自动化转换功能,特别是方正的字体,明安徒的字体,蒙科立的字体都很好,都比 mongolian baiti 好, MS mongolian baiti 有很多的问题。
微软的蒙古文输入法好像不符合 “蒙古文编码”(chojinjab老师的)的描述。很混乱。但我还没整理出所有的变化形式。但发现有四个控制符分别在 -  ‘   “  ` 四个键上。
- 的用法不太规范,很多格变化写不出来。
总体印象,微软的输入法不好用。
发表于 2006-6-23 03:01:16 | 显示全部楼层
word 2003,WPS 2002 2003 2005 都断字。痛苦gej bn.
 楼主| 发表于 2006-6-23 08:13:10 | 显示全部楼层
原帖由 雪花飞舞 于 2006-6-23 02:59 发表
最近很多字体都有自动化转换功能,特别是方正的字体,明安徒的字体,蒙科立的字体都很好,都比 mongolian baiti 好, MS mongolian baiti 有很多的问题。
微软的蒙古文输入法好像不符合 “蒙古文编码”(chojinjab老师的)的描述。很混乱。但我还没整理出所有的变化形式。但发现有四个控制符分别在 -  ‘   “  ` 四个键上。
- 的用法不太规范,很多格变化写不出来。
总体印象,微软的输入法不好用。



你说的很对。
咱们俩研究的方向不一样,你是对蒙文词法(文字变形方法)描述。
我是对变形方法具体实现(编程)的研究。你说的有一个地方是不对的,就是自动变化功能是程序实现
的不是字体实现,字体只是提供编码对应文字图形的对应关系。

任何输入法都可以使用任何人的字体,只要知道字体中各种字形的位置。(我站在程序员的角度考虑的,
不一定正确。但是我想没有问题,因为我写过程序即使用saiyin的字体,又使用mingat 字体。)。
微软的输入法不好使并不是字体的问题。
还有就是我说过,字体只是提供所有文字的字形和编码对应关系。具体输入在输入法上
微软做的输入法并不是很好,这么做的原因就是要给第三方再开发的机会。
我觉得微软的蒙文平台(我不说他是输入法),最好的一点是提出了一种新思路,
就是对字母的变形不编码。也能实现变形文字的正确显示。(这一点很重要因为现在的蒙文实现方法都是
通过对变形进行编码实现的。)

我还有一个问题,就是蒙文所有变形中,是否有变形不能确定,就是必须人干预进行选择才能确定。
假设: ab 同样的输入可以有两种字形。如果有这样的情况就必须人为的参与文字输出。
如果没有这样情况就可以全部自动实现,就不用控制字符如-`'了。
“蒙古文编码”(chojinjab老师的) 我没有看过,有机会一定看看。

word 2003,WPS 2002 2003 2005 都断字。痛苦gej bn.

必定微软的蒙文平台是为windows2006做的,很多软件的兼容需要等待, hulej bai
普通的文字输出可以兼容,但是特殊的文字处理软件(或者文字输出经过特殊处理的软件)都会断字。:(

一会儿我在vista上看看word2003怎样。

[ 本帖最后由 ganjike 于 2006-6-23 10:52 编辑 ]
发表于 2006-6-23 09:40:03 | 显示全部楼层
还是希望能出现一个非常好的输入法,包括一个庞大的字体库。即使用Latin Mongol 也可以写出来就好了,比如“走”键盘上打出来的时候可以输入"Yavsan",也可以是"Yabugsan"或者"Yabogsan",甚至是"ybsn"就可以打出来就非常好了……比如Baina可以是"bna",Gesen可以是"gsn",和汉字智能ABC接近的那种……
这个输入法在word上断字严重,还有就是好象很多字根本写不出来,研究了半天没有弄明白,到底是没有那个字母还是咋回事?比如baina 的 后面的 a 。
微软现在这么弄一个输入法觉得挺好,至少以后大家都可以在电脑上打出蒙古文了,相信用windows的人还是多数。情况现在越来越好,高兴呀……
 楼主| 发表于 2006-6-23 10:46:39 | 显示全部楼层
vista 上的word也断字,看样子vista和以前版本的windows的兼容性不是很好,
就与2000和98那样,这也是微软迟迟没有发布正式版原因。

xp上的写字板断字,vista上的写字板不断字。因为写字板与word的文字输出是类似的。
所以等vista正式发布,等office新版(兼容vista的),才不用担心应用软件兼容微软蒙文平台的问题了(断字)。
现在能做到的是记事本和ie里好使,我就已经很满足了。因为可以在部分领域应用了。

我所做的只是把还没有正式出的微软蒙文,先让大家看看。
如果我把断字的现象也能解决的话,就相当于能够把不同版本windows的
gdi系统兼容到一起。windows操作系统的优点和部分核心就是图形界面,这也是
windows能垄断桌面操作系统的原因。如果我能做到,我就可以到微软做windows 系统架构师了.

不过能到微软做架构师也是我的幻想之一:)

[ 本帖最后由 ganjike 于 2006-6-23 10:49 编辑 ]
发表于 2006-6-23 10:48:02 | 显示全部楼层
只是这个VISTA的系统配置要求啊..太遗憾了...2G内存是什么概念...我还是停留在64+128M的人.
 楼主| 发表于 2006-6-23 10:54:36 | 显示全部楼层
原帖由 SayNo 于 2006-6-23 09:40 发表
还是希望能出现一个非常好的输入法,包括一个庞大的字体库。即使用Latin Mongol 也可以写出来就好了,比如“走”键盘上打出来的时候可以输入"Yavsan",也可以是"Yabugsan"或者"Yabogsan ...


这个建议或 idea非常好,谁能做出来,谁就能一统蒙文输入法的天下。
 楼主| 发表于 2006-6-23 10:57:08 | 显示全部楼层
原帖由 EjenErh 于 2006-6-23 10:48 发表
只是这个VISTA的系统配置要求啊..太遗憾了...2G内存是什么概念...我还是停留在64+128M的人.

你说的是推荐配置,
我的机器就是 p4/1.4/512M内存/80G硬盘,运行的还不错。
不过现在vista是测试版,所以一段时间就过期了,需要重新安装。
等正式版的盗版吧。
发表于 2006-6-24 09:56:32 | 显示全部楼层
感觉弄出蒙古文的字体库不是非常复杂的事情,觉得主要的就是工作量非常大……如果研究研究弄出来了那就非常爽了……
发表于 2006-6-25 12:44:57 | 显示全部楼层
原帖由 ganjike 于 2006-6-23 08:13 发表
微软的输入法不好使并不是字体的问题。


我不同意你的这个观点。
蒙古文的字形变化是在opentype 字体中定义的,当然他的变化要程序支持。很多opentype字体,如方正的字体,明安徒的字体,蒙科立的字体都有蒙古文国际编码的码位,当装上usp10.dll   后能自动转换字形,而且结果都比 mongolian baiti 好。

到底是没有那个字母还是咋回事?比如baina 的 后面的 a 。


bayin_a.  怎么写。
公认的控制符有  
1。 “_”  窄连接符 如刚才的 “bain_a”
2。 “-”  蒙古文空格 是连接 格范畴(tein ilgal)的 ,如 tegun-u(他的)

3。 “ ‘ ” 变换转化符1   一个位置上有多种变体时,使用该控制符转换
4。 “ “ ” 变换转化符2  同上,有三个变化是用到它
5。 “`” 变换转化符3  同上,有四个变化是用到它
发表于 2006-6-25 12:50:50 | 显示全部楼层
原帖由 EjenErh 于 2006-6-23 10:48 发表
只是这个VISTA的系统配置要求啊..太遗憾了...2G内存是什么概念...我还是停留在64+128M的人.


也许不用 vista,vista 的硬件配置太离谱,新的文件系统倒是很期待,至于那个过于花哨的界面是硬件的杀手。我的观点是win98的界面就挺好了。好看的界面是对付局外人的。

估计 xp 打 sp3 是能借解决点问题,如果没有解决 那就等 sp4(现在sp4)开始规划了。

不过谁能下 word 2007 beta 版本看看,看看能不能断字。我这儿网速太慢。

[ 本帖最后由 雪花飞舞 于 2006-6-25 12:53 编辑 ]
发表于 2006-6-25 12:55:10 | 显示全部楼层
原帖由 SayNo 于 2006-6-23 09:40 发表
还是希望能出现一个非常好的输入法,包括一个庞大的字体库。即使用Latin Mongol 也可以写出来就好了,比如“走”键盘上打出来的时候可以输入"Yavsan",也可以是"Yabugsan"或者"Yabogsan ...


庞大的词库,不是字体库。这方面蒙科立做得挺好,整字输入法现在蒙古文输入法的巅峰。
发表于 2006-6-25 13:02:48 | 显示全部楼层
原帖由 SayNo 于 2006-6-24 09:56 发表
感觉弄出蒙古文的字体库不是非常复杂的事情,觉得主要的就是工作量非常大……如果研究研究弄出来了那就非常爽了……

蒙古文字体说白了都是相互抄袭。最先有方正的字体。方正的字体是方正和内大蒙古学学院蒙古语文研究所合作研究出来的。最主要的四个字体(白体,黑体,标题体等)是那时开发的。蒙古语文研究所的教授 cho老师曾经说过想把这四个字体的版权公开。那真是好事
btw  :  cho老师跟微软合作开发蒙古文平台的技术顾问之一,还是国家蒙古文编码标准的制定者。(最近身体不太好,由于心脏病刚入院,还好恢复的很快,快出院了)
发表于 2006-6-25 14:13:28 | 显示全部楼层
汗..都是高手..
就我一个菜鸟斑猪...
发表于 2006-6-25 17:07:44 | 显示全部楼层
原帖由 雪花飞舞 于 2006-6-25 12:55 发表


庞大的词库,不是字体库。这方面蒙科立做得挺好,整字输入法现在蒙古文输入法的巅峰。

恩恩,真抱歉,我写错了。低级失误……:$
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|蒙古青年论坛

GMT+8, 2026-7-16 05:41 , Processed in 0.016363 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表