字符高亮处理的方法技术

技术编号:2886164 阅读:207 留言:0更新日期:2012-04-11 18:40
一种字符高亮处理的方法,其中揭露了一种对游标指向的字符提供所需的高亮位置及范围的技术;根据本发明专利技术,先借由一查找的流程,如以二分法或累计法寻得游标所在背景字串的正确字符序号,再依序取得所要高亮字符的起始字符序号与终止字符序号,以决定出高亮字符的范围,并根据起始字符序号决定出高亮字符的定位位置,如此便能正确完成任意等间距或不等间距字体字符的高亮处理。(*该技术在2019年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一种字符高亮(highlight)处理的方法,特别涉及一种应用于任意西字符体的字串中,高亮处理其标记单字的方法。在视窗系统中,有许多的软件如文书处理软件,会应用到对其所采用的文件内容,进行例如单字的高亮处理,即当鼠标移动到某一字符位置上时,由预设的鼠标键功能,如双击(double click)鼠标左键,便可将一西文的单字或中文的字串以较亮的颜色显示出,此处理过程便称之为高亮处理。这一处理过程的要求包含有1、如何准确判定游标所指向的需高亮字符的位置(代表字符在背景字串中的序号);以及2、如何准确判定高亮字符的高亮范围。若能做到上述两点,才能让使用者在使用含有高亮处理过程的文书处理软件时,做到“指所需,用所指”,不会出现显示出的高亮位置与所要的结果产生偏差。然而,在一些使用有字符高亮处理的软件当中,特别是使用多种西字符体的软件中,高亮字符显现的范围常常与字符的实际范围对应不准,出现误差,给使用者带来不便。这是因为,就视窗系统而言,其所提供的字符字体可概括分成两类1、等间距的字体,是指字串中的每个字符的宽度皆相同,如中字符或Windows 95系统所提供的Courier和Courier New等几种字体,等间距的西字符体种类有限,字形也较简单。2、不等间距字体,是指字串中的每个字符的宽度皆不相同,如windows95系统所提供的罗马字体,TrueType字体等,不等间距字体种类丰富,字型效果也较好。较为传统的字符高亮处理方法是用于处理等间距的字体,因等间距字体的每个字符宽度相同,在判定游标所指向字符的位置及字符宽度时,只需利用简单的整除观念既可做到准确定位的目的。若在上述使用多种西字符体的软件中,掺杂使用了不等间距的字体,则传统的字符高亮处理方法便不能准确定位游标所指字符的位置,高亮字符的位置往往因定位不准而出现误差,给使用者带来不便。一般解决办法是,将一句话的每一个单字分别放入系统另提供的字符控件中,再根据所需高亮单字在某一控件中的位置来定位游标与单字的对应位置。这种方法虽然定位准确,但使用过多控件,过多消耗系统资源,因而不是一种理想的解决办法。另一种解决法是,将采用不等间距的字体处理的字符转换成图形格式,然后针对需高亮处理的字符区域预先记录下来,当游标移动到该区域时,根据事先预定的区域大小确定游标指定单字的高亮。这种办法的缺点是图形化处理后的字符不可变更,修改不便,灵活性差。因此,本专利技术的目的便欲提供一种,以能简洁处理包含有不等间距字体的文件的字符高亮问题,期能达到准确判定游标位置所对应的需高亮字符的位置,以及准确判定高亮字符的高亮范围的目的。根据上述本专利技术目的所揭露的一种,可用以对一游标指向的字符提供所要高亮字串的一高亮位置及一高亮范围,其步骤包含取得游标指标指向一背景字串的一字符的位置;以二分查找法或累计查找法决定出字符的序号;由字符序号向左搜寻高亮字串一起始字符的序号;根据起始字符序号决定高亮字串的高亮位置;以及由字符序号向右搜寻高亮字串一终止字符的序号,以决定高亮字串的高亮范围。为让本专利技术的上述和其他目的、特征、和优点能更明显易懂,下文特举一较佳实施例,并结合附图,作详细说明如下。附图说明图1绘示本专利技术字符高亮处理方法的前段流程,以二分查找法的一种实施例;图2绘示本专利技术不同图1流程的另一种实施例的方法;以及图3绘示本专利技术字符高亮处理方法的后段流程。图4是解释有关名词的实例图。一般的中文字或方块字符,对计算机的处理而言,常常是以等间距的字体表现,不会有任何问题;但是对于所谓的西文,即文字是以字母组合成以单字为单位形态的文字,为求计算机上所表现出的态样能符合平时书写的习惯,以及计算机上的字型能有丰富的变化和效果,多半便有采用非等间距的字体。在视窗系统中,西文单字间会以空格作分隔;每个西文的字符一般为半形(若为全形则为等间距字);标点(除引号外)后一般也有一空格。因此,本专利技术将以此特点为基础,说明一西文单字高亮处理的过程,先是以公知处理等间距单字高亮的方法,比较以其处理非等间距字体所产生的问题,进而再详述本专利技术的解决方法。为表述方便,预先指定几个专有名词一句话(句串)称为背景字串;需高亮的单字称为HiliWord;一个字符的宽度称为W.PerByte;游标所指向的单字在一句话(字串)中的序号称为ByteID;以及HiliWord字节起始序号称为BeginID,终止序号称为EndID。以图4所示的实例来解释上述的名词其中,背景字串即为“This is English demo.”,指向的字母‘n’的箭头即为游标指标所在,因此HiliWord即为‘English’这个单字。连同空格和标号(句点)在内,背景字串共有21个字符,因此游标所指向的字母n的ByteID为10,HiliWord的BeginID为9EndID为15。若以背景字串首位字母T左上角为坐标原点,设游标在背景字串上所指位置的横坐标为mX,HiliWord(English)定位后的横坐标为wX。因此,上述单字高亮的处理即是高亮字符的定位问题,其关键点是求得游标在哪个字母上做的移动(Mouse Move)动作,即如何得到ByteID。如果是等间距字体则处理方法很简单ByteID=mX\W_PerByte+1……(1)其中,“\”表示整除的意思。以下面所示的背景字串(字体大小20)为例16Thefontiscouriernew.↑mX可视为在框线中再以隔线划分出一个个栅格,而每个栅格内各容纳有一个字符,栅格的宽度是一样的,即对于Courier New字体而言每个字符的宽度W_PerByte是相同的。若所取得的W_PerByte为6·4mm,游标所指在坐标mX为97·5mm,很容易就得到ByteID=16了。知道是背景字串的第16个字母(‘r’)是鼠标的摄入点,再从‘r’的左右两侧搜寻空格或引号,即可令“Courier”这个单字高亮了。然而这种方法对不等间距字体就不适用了。因为W_PerByte不确定,即不等距字体每个字符(字母)的宽度不定。如果以W_PerByte的平均值带入前面那个公式(1),便会产生如下列所示的现象(其中背景字串的字体大小也是20)The font is Times New Roman.↑ByteID=16)以这种错位现象,当然是由于用传统的等距字体处理方法处理不等距字体造成的,因为由公式(1)所计算得的ByteID并不正确,所以如何确定ByteID,即确定游标指在哪个字符上,便成为准确判定游标所对应的需高亮单字位置的关键。接下来便是本专利技术处理任意字体西文单字高亮的方法。首先由图1的流程图说明本专利技术如何准确判读ByteID的步骤,以确定游标指向背景字串中某个字符的位置。同样以前述背景字串“This is Ehglish demo.”为例,‘This’中的字母‘T’左上角为坐标原点。本实施例中,游标所指字符在背景字串中的序号ByteID是以“二分查找法”获得的。步骤1首先将二分查找的左值Left置为1,右值Right置为背景字串的总字符数(此例中为21)。当然Left值也可不为1,只要给一个初始值即可,例如以12为例,则Right值便需跟着改变为(12+21)-1=32。步骤2开始进入二分查找循环本文档来自技高网...

【技术保护点】
一种字符高亮处理的方法,用于对一游标指向的字符提供所要高亮字串的一高亮位置及一高亮范围,包含: 取得该游标指向一背景字串的一字符的位置; 以二分查找法决定出该字符的序号; 由该字符序号依序向前一字符搜寻该高亮字串一起始字符的序号; 根据该起始字符序号决定该高亮字串的该高亮位置;以及 由该字符序号依序向后一字符搜寻该高亮字串一终止字符的序号,以决定该高亮字串的该高亮范围。

【技术特征摘要】

【专利技术属性】
技术研发人员:郝军宋建福林光信
申请(专利权)人:英业达股份有限公司
类型:发明
国别省市:71[中国|台湾]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1