一種字符高亮處理的方法,其中揭露了一種對(duì)游標(biāo)指向的字符提供所需的高亮位置及范圍的技術(shù);根據(jù)本發(fā)明專利技術(shù),先借由一查找的流程,如以二分法或累計(jì)法尋得游標(biāo)所在背景字串的正確字符序號(hào),再依序取得所要高亮字符的起始字符序號(hào)與終止字符序號(hào),以決定出高亮字符的范圍,并根據(jù)起始字符序號(hào)決定出高亮字符的定位位置,如此便能正確完成任意等間距或不等間距字體字符的高亮處理。(*該技術(shù)在2019年保護(hù)過期,可自由使用*)
【技術(shù)實(shí)現(xiàn)步驟摘要】
本專利技術(shù)涉及一種字符高亮(highlight)處理的方法,特別涉及一種應(yīng)用于任意西字符體的字串中,高亮處理其標(biāo)記單字的方法。在視窗系統(tǒng)中,有許多的軟件如文書處理軟件,會(huì)應(yīng)用到對(duì)其所采用的文件內(nèi)容,進(jìn)行例如單字的高亮處理,即當(dāng)鼠標(biāo)移動(dòng)到某一字符位置上時(shí),由預(yù)設(shè)的鼠標(biāo)鍵功能,如雙擊(double click)鼠標(biāo)左鍵,便可將一西文的單字或中文的字串以較亮的顏色顯示出,此處理過程便稱之為高亮處理。這一處理過程的要求包含有1、如何準(zhǔn)確判定游標(biāo)所指向的需高亮字符的位置(代表字符在背景字串中的序號(hào));以及2、如何準(zhǔn)確判定高亮字符的高亮范圍。若能做到上述兩點(diǎn),才能讓使用者在使用含有高亮處理過程的文書處理軟件時(shí),做到“指所需,用所指”,不會(huì)出現(xiàn)顯示出的高亮位置與所要的結(jié)果產(chǎn)生偏差。然而,在一些使用有字符高亮處理的軟件當(dāng)中,特別是使用多種西字符體的軟件中,高亮字符顯現(xiàn)的范圍常常與字符的實(shí)際范圍對(duì)應(yīng)不準(zhǔn),出現(xiàn)誤差,給使用者帶來不便。這是因?yàn)?,就視窗系統(tǒng)而言,其所提供的字符字體可概括分成兩類1、等間距的字體,是指字串中的每個(gè)字符的寬度皆相同,如中字符或Windows 95系統(tǒng)所提供的Courier和Courier New等幾種字體,等間距的西字符體種類有限,字形也較簡單。2、不等間距字體,是指字串中的每個(gè)字符的寬度皆不相同,如windows95系統(tǒng)所提供的羅馬字體,TrueType字體等,不等間距字體種類豐富,字型效果也較好。較為傳統(tǒng)的字符高亮處理方法是用于處理等間距的字體,因等間距字體的每個(gè)字符寬度相同,在判定游標(biāo)所指向字符的位置及字符寬度時(shí),只需利用簡單的整除觀念既可做到準(zhǔn)確定位的目的。若在上述使用多種西字符體的軟件中,摻雜使用了不等間距的字體,則傳統(tǒng)的字符高亮處理方法便不能準(zhǔn)確定位游標(biāo)所指字符的位置,高亮字符的位置往往因定位不準(zhǔn)而出現(xiàn)誤差,給使用者帶來不便。一般解決辦法是,將一句話的每一個(gè)單字分別放入系統(tǒng)另提供的字符控件中,再根據(jù)所需高亮單字在某一控件中的位置來定位游標(biāo)與單字的對(duì)應(yīng)位置。這種方法雖然定位準(zhǔn)確,但使用過多控件,過多消耗系統(tǒng)資源,因而不是一種理想的解決辦法。另一種解決法是,將采用不等間距的字體處理的字符轉(zhuǎn)換成圖形格式,然后針對(duì)需高亮處理的字符區(qū)域預(yù)先記錄下來,當(dāng)游標(biāo)移動(dòng)到該區(qū)域時(shí),根據(jù)事先預(yù)定的區(qū)域大小確定游標(biāo)指定單字的高亮。這種辦法的缺點(diǎn)是圖形化處理后的字符不可變更,修改不便,靈活性差。因此,本專利技術(shù)的目的便欲提供一種,以能簡潔處理包含有不等間距字體的文件的字符高亮問題,期能達(dá)到準(zhǔn)確判定游標(biāo)位置所對(duì)應(yīng)的需高亮字符的位置,以及準(zhǔn)確判定高亮字符的高亮范圍的目的。根據(jù)上述本專利技術(shù)目的所揭露的一種,可用以對(duì)一游標(biāo)指向的字符提供所要高亮字串的一高亮位置及一高亮范圍,其步驟包含取得游標(biāo)指標(biāo)指向一背景字串的一字符的位置;以二分查找法或累計(jì)查找法決定出字符的序號(hào);由字符序號(hào)向左搜尋高亮字串一起始字符的序號(hào);根據(jù)起始字符序號(hào)決定高亮字串的高亮位置;以及由字符序號(hào)向右搜尋高亮字串一終止字符的序號(hào),以決定高亮字串的高亮范圍。為讓本專利技術(shù)的上述和其他目的、特征、和優(yōu)點(diǎn)能更明顯易懂,下文特舉一較佳實(shí)施例,并結(jié)合附圖,作詳細(xì)說明如下。附圖說明圖1繪示本專利技術(shù)字符高亮處理方法的前段流程,以二分查找法的一種實(shí)施例;圖2繪示本專利技術(shù)不同圖1流程的另一種實(shí)施例的方法;以及圖3繪示本專利技術(shù)字符高亮處理方法的后段流程。圖4是解釋有關(guān)名詞的實(shí)例圖。一般的中文字或方塊字符,對(duì)計(jì)算機(jī)的處理而言,常常是以等間距的字體表現(xiàn),不會(huì)有任何問題;但是對(duì)于所謂的西文,即文字是以字母組合成以單字為單位形態(tài)的文字,為求計(jì)算機(jī)上所表現(xiàn)出的態(tài)樣能符合平時(shí)書寫的習(xí)慣,以及計(jì)算機(jī)上的字型能有豐富的變化和效果,多半便有采用非等間距的字體。在視窗系統(tǒng)中,西文單字間會(huì)以空格作分隔;每個(gè)西文的字符一般為半形(若為全形則為等間距字);標(biāo)點(diǎn)(除引號(hào)外)后一般也有一空格。因此,本專利技術(shù)將以此特點(diǎn)為基礎(chǔ),說明一西文單字高亮處理的過程,先是以公知處理等間距單字高亮的方法,比較以其處理非等間距字體所產(chǎn)生的問題,進(jìn)而再詳述本專利技術(shù)的解決方法。為表述方便,預(yù)先指定幾個(gè)專有名詞一句話(句串)稱為背景字串;需高亮的單字稱為HiliWord;一個(gè)字符的寬度稱為W.PerByte;游標(biāo)所指向的單字在一句話(字串)中的序號(hào)稱為ByteID;以及HiliWord字節(jié)起始序號(hào)稱為BeginID,終止序號(hào)稱為EndID。以圖4所示的實(shí)例來解釋上述的名詞其中,背景字串即為“This is English demo.”,指向的字母‘n’的箭頭即為游標(biāo)指標(biāo)所在,因此HiliWord即為‘English’這個(gè)單字。連同空格和標(biāo)號(hào)(句點(diǎn))在內(nèi),背景字串共有21個(gè)字符,因此游標(biāo)所指向的字母n的ByteID為10,HiliWord的BeginID為9EndID為15。若以背景字串首位字母T左上角為坐標(biāo)原點(diǎn),設(shè)游標(biāo)在背景字串上所指位置的橫坐標(biāo)為mX,HiliWord(English)定位后的橫坐標(biāo)為wX。因此,上述單字高亮的處理即是高亮字符的定位問題,其關(guān)鍵點(diǎn)是求得游標(biāo)在哪個(gè)字母上做的移動(dòng)(Mouse Move)動(dòng)作,即如何得到ByteID。如果是等間距字體則處理方法很簡單ByteID=mX\W_PerByte+1……(1)其中,“\”表示整除的意思。以下面所示的背景字串(字體大小20)為例16Thefontiscouriernew.↑mX可視為在框線中再以隔線劃分出一個(gè)個(gè)柵格,而每個(gè)柵格內(nèi)各容納有一個(gè)字符,柵格的寬度是一樣的,即對(duì)于Courier New字體而言每個(gè)字符的寬度W_PerByte是相同的。若所取得的W_PerByte為6·4mm,游標(biāo)所指在坐標(biāo)mX為97·5mm,很容易就得到ByteID=16了。知道是背景字串的第16個(gè)字母(‘r’)是鼠標(biāo)的攝入點(diǎn),再從‘r’的左右兩側(cè)搜尋空格或引號(hào),即可令“Courier”這個(gè)單字高亮了。然而這種方法對(duì)不等間距字體就不適用了。因?yàn)閃_PerByte不確定,即不等距字體每個(gè)字符(字母)的寬度不定。如果以W_PerByte的平均值帶入前面那個(gè)公式(1),便會(huì)產(chǎn)生如下列所示的現(xiàn)象(其中背景字串的字體大小也是20)The font is Times New Roman.↑ByteID=16)以這種錯(cuò)位現(xiàn)象,當(dāng)然是由于用傳統(tǒng)的等距字體處理方法處理不等距字體造成的,因?yàn)橛晒?1)所計(jì)算得的ByteID并不正確,所以如何確定ByteID,即確定游標(biāo)指在哪個(gè)字符上,便成為準(zhǔn)確判定游標(biāo)所對(duì)應(yīng)的需高亮單字位置的關(guān)鍵。接下來便是本專利技術(shù)處理任意字體西文單字高亮的方法。首先由圖1的流程圖說明本專利技術(shù)如何準(zhǔn)確判讀ByteID的步驟,以確定游標(biāo)指向背景字串中某個(gè)字符的位置。同樣以前述背景字串“This is Ehglish demo.”為例,‘This’中的字母‘T’左上角為坐標(biāo)原點(diǎn)。本實(shí)施例中,游標(biāo)所指字符在背景字串中的序號(hào)ByteID是以“二分查找法”獲得的。步驟1首先將二分查找的左值Left置為1,右值Right置為背景字串的總字符數(shù)(此例中為21)。當(dāng)然Left值也可不為1,只要給一個(gè)初始值即可,例如以12為例,則Right值便需跟著改變?yōu)?12+21)-1=32。步驟2開始進(jìn)入二分查找循環(huán)本文檔來自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
一種字符高亮處理的方法,用于對(duì)一游標(biāo)指向的字符提供所要高亮字串的一高亮位置及一高亮范圍,包含: 取得該游標(biāo)指向一背景字串的一字符的位置; 以二分查找法決定出該字符的序號(hào); 由該字符序號(hào)依序向前一字符搜尋該高亮字串一起始字符的序號(hào); 根據(jù)該起始字符序號(hào)決定該高亮字串的該高亮位置;以及 由該字符序號(hào)依序向后一字符搜尋該高亮字串一終止字符的序號(hào),以決定該高亮字串的該高亮范圍。
【技術(shù)特征摘要】
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:郝軍,宋建福,林光信,
申請(專利權(quán))人:英業(yè)達(dá)股份有限公司,
類型:發(fā)明
國別省市:71[中國|臺(tái)灣]
還沒有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。