專(zhuān)利名稱(chēng):在文字檔案中顯示不同的文字格式的控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種在文字件檔案中顯示不同的文字格式的控制方法,特別是一種在文字檔案中,適用于多種不同格式的字句的顯示控制技術(shù)。
當(dāng)同一文件檔案的文字內(nèi)容以不同格式顯示時(shí),例如中、英文對(duì)照的文件,由于字符的特性(如大小)不同,所以在同一個(gè)畫(huà)面中的顯示格式與條件就不完全相同,傳統(tǒng)的技術(shù)是根據(jù)不同的顯示格式建立不同的數(shù)據(jù)結(jié)構(gòu),或是利用數(shù)個(gè)記錄有不同的顯示數(shù)據(jù)的陣列,提供不同顯示格式在顯示操作上的要求。
一種已知的傳統(tǒng)技術(shù),是為顯示的文件中的每一行建立一個(gè)句子序號(hào)陣列(Sentence ID),和一個(gè)句子結(jié)構(gòu)記錄陣列(Byte Range)。其中Byte Range包括有兩個(gè)結(jié)構(gòu)項(xiàng)Begin Byte(記錄當(dāng)前句子的起始字符位置)和EndByte(記錄當(dāng)前句子的終止字符位置)。其中Sentence ID和Byte Range是彼此一一對(duì)應(yīng)的。
其中,Sentence ID要用到三個(gè)陣列元素,Byte Range則要用到六個(gè)陣列元素。對(duì)于目前的視窗操作系統(tǒng)而言,每個(gè)陣列元素需要占據(jù)四個(gè)字符的存儲(chǔ)空間。這樣總共要用去36個(gè)字符。
這樣既造成資源上的浪費(fèi),控制文字段落的操作邏輯也較為煩瑣。由于一般文字檔案在顯示屏上經(jīng)常會(huì)遇到如卷頁(yè)、單句輝亮(即選取字句)等等的顯示操作。若每種不同的文字格式都需要建立一套適用于顯示操作之用的數(shù)據(jù)結(jié)構(gòu)時(shí),則每種文字格式都還要對(duì)應(yīng)一套操作函數(shù)。不僅占用很大的存儲(chǔ)空間,而且在顯示方式切換時(shí),要調(diào)用不同的操作函數(shù)集,程序邏輯復(fù)雜、維護(hù)較難。
而本發(fā)明只采用一種數(shù)據(jù)結(jié)構(gòu)來(lái)處理幾種格式的文字的顯示操作。各種文字格式的顯示操作只需要利用一種數(shù)據(jù)結(jié)構(gòu),例如每一行文字的格式信息以同一種格式的數(shù)據(jù)結(jié)構(gòu)代替(本發(fā)明所揭露的數(shù)據(jù)結(jié)構(gòu)是一種字串),不僅節(jié)省資源,而且只需在顯示格式或是文字內(nèi)容改變時(shí)重新填充每一行文字的格式信息即可,操作時(shí)無(wú)須隨時(shí)對(duì)顯示方式做邏輯判斷,文字的顯示操作函數(shù)只需一套,程序邏輯簡(jiǎn)單、易于維護(hù)。
本發(fā)明的目的之一是提供了僅利用單一種數(shù)據(jù)結(jié)構(gòu),就可以在同一文字檔案中支援多種文字格式的顯示操作的技術(shù)。具體地說(shuō),對(duì)于包含有多種文字格式的文字檔案,在其進(jìn)行顯示操作時(shí)所需的相關(guān)信息,根據(jù)本發(fā)明所揭露的技術(shù),只需以一種相同格式的字串表示,不僅節(jié)省資源,而且只需在顯示方式或是文字格式(如中文格式或英文格式)改變時(shí),通過(guò)自動(dòng)建立的方式重新改變字串的內(nèi)容,即可提供一種支援不同的文字格式的數(shù)據(jù)結(jié)構(gòu)。
本發(fā)明的另一目的在于提供一種結(jié)構(gòu)精簡(jiǎn),用以記錄檔案文件中關(guān)于某一行字句的顯示操作信息的字串型行信息結(jié)構(gòu),藉此替代傳統(tǒng)技術(shù)中復(fù)雜的動(dòng)態(tài)陣列信息結(jié)構(gòu),以達(dá)到節(jié)省存儲(chǔ)空間,而且操作利用更方便的目的。
有關(guān)本發(fā)明的詳細(xì)技術(shù)內(nèi)容及實(shí)施例,現(xiàn)結(jié)合
如下。
圖1為實(shí)現(xiàn)本發(fā)明的方法的硬件結(jié)構(gòu)圖。
圖2為本發(fā)明的功能方塊圖,揭露建立不同顯示格式所需的相關(guān)信息的手段,以及利用這種相關(guān)信息,在相同主旨的文件檔案中顯示不同格式的內(nèi)容的運(yùn)作流程。
圖3為本發(fā)明生成字串型行信息結(jié)構(gòu)的步驟流程圖。
圖4為本發(fā)明根據(jù)字串型行信息結(jié)構(gòu)所記錄的顯示相關(guān)信息,控制檔案文件的顯示格式的步驟流程圖。
首先參照?qǐng)D1,根據(jù)本發(fā)明所揭露的技術(shù),可通過(guò)一包括有一邏輯處理單元10,一存儲(chǔ)模組20(如磁盤(pán),光盤(pán),硬盤(pán)等),一輸入單元30(例如鍵盤(pán),鼠標(biāo),觸控式熒光屏,光筆或是其他功能類(lèi)似者),以及一顯示屏40(可以是熒光屏,液晶熒光屏,觸控式熒光屏或是其他功能類(lèi)似者)的計(jì)算機(jī),根據(jù)圖2的運(yùn)作流程而加以實(shí)現(xiàn)。
參照?qǐng)D2,本發(fā)明的實(shí)施流程包括有1.自文字檔案中取得欲顯示的文字內(nèi)容,此時(shí)首先得到記錄此份文字檔案中的句子結(jié)構(gòu)的數(shù)據(jù)陣列;(此時(shí)的數(shù)據(jù)陣列還不能直接應(yīng)用于顯示操作);2.根據(jù)使用者的操作內(nèi)容,判斷是否需要進(jìn)行文字顯示方式的切換(例如使用者利用輸入單元選取了文字檔案當(dāng)中的一個(gè)句子,此時(shí)就必需切換顯示方式,將這個(gè)句子轉(zhuǎn)為輝亮的被選取狀態(tài)),若為是,則繼續(xù)下一步驟,若為否,需變換顯示方式,則跳至步驟5;3.此時(shí)將從步驟1中所生成的數(shù)據(jù)陣列中,取得文字檔案中有關(guān)顯示控制的信息;4.根據(jù)從數(shù)據(jù)陣列中取得的控制信息,建立一種字串型行信息結(jié)構(gòu);以及5.根據(jù)使用者的操作要求,以及字串型行信息結(jié)構(gòu)中關(guān)于顯示操作的信息,變換文件的顯示方式(例如卷頁(yè)、單句輝亮等等…)。
當(dāng)然,本發(fā)明的主要技術(shù)內(nèi)容就是提供一種應(yīng)用于文字檔案的內(nèi)容在顯示時(shí),建立不同顯示格式所需的相關(guān)信息的方法,以及利用這種相關(guān)信息,在相同主旨的文字檔案中顯示不同格式的內(nèi)容的控制手段,所以假定在必需切換文件的顯示格式的情形下,本發(fā)明的實(shí)現(xiàn)步驟就可以排除上述的步驟2,而成為如下的流程,其包括有1.從文字檔案中取得欲顯示的文字內(nèi)容,此時(shí)首先得到記錄此份文字檔案中的句子結(jié)構(gòu)的數(shù)據(jù)陣列;(此時(shí)的數(shù)據(jù)陣列還不能直接應(yīng)用于顯示格式的控制);2.自步驟1中所述的數(shù)據(jù)陣列中,取得文字檔案中有關(guān)顯示操作所需的信息;3.根據(jù)從數(shù)據(jù)陣列中取得的顯示操作的相關(guān)信息,建立一種字串型行信息結(jié)構(gòu);以及4.依據(jù)字串型行信息結(jié)構(gòu)中關(guān)于顯示操作的信息,相應(yīng)地變換文字檔案中文字的顯示方式(例如卷頁(yè)、單句輝亮等等…)。
再參照?qǐng)D3,為根據(jù)本發(fā)明揭露的方法,建立字串型行信息結(jié)構(gòu)的流程,其包括有1.取得使用者指定的文字所在的段落位置(通??梢酝ㄟ^(guò)熒光屏中游標(biāo)所在的坐標(biāo)而找到文字在此一文件中所屬的段落位置),并且將段落標(biāo)記(為記錄在前文所稱(chēng)的數(shù)據(jù)陣列中)相同的句子合并成一個(gè)大字串,生成一個(gè)記錄有此一段落中的句子、字符范圍的數(shù)據(jù)陣列,如表一所示;假設(shè)所取得的某一段落內(nèi)容為1(字位置) 30 64Sleep must be taken regularly.If you slept tenhours yesterday,it does not necessarily followthat you have only to sleep four hours today.
141(睡眠必需正常,不可以因?yàn)槟阕蛱焖?0個(gè)小時(shí),今天就只睡4小時(shí)。)在上述例子中所標(biāo)注的字符位置如1,30.等,指的是某一句子的起始字符或是結(jié)束字符,位于整段文件中的絕對(duì)字符位置,而這些相關(guān)的顯示操作信息都將記錄如表一。
表一2.將大字串進(jìn)行折行處理;以及(根據(jù)顯示區(qū)的寬度將大字串折成若干行,并且以一折點(diǎn)陣列記錄折點(diǎn)(Break Point)字符所在的位置如表二所示,而這個(gè)折點(diǎn)位置同樣指的是位于整段文件中的絕對(duì)字符位置。
假設(shè)前述的文件段落將會(huì)在一個(gè)顯示區(qū)寬度為48個(gè)字符的顯示屏中顯示,此時(shí)在經(jīng)過(guò)折行之后的顯示情形如下所示1 48Sleep must be taken regularly.If you slept tenhours yesterday,it does not necessarily followthat you have only to sleep four hours today.
表二3.然后根據(jù)表一,表二中所記錄的相關(guān)數(shù)據(jù),根據(jù)本發(fā)明所定義的字串型行信息結(jié)構(gòu)(說(shuō)明如后),將上述已因顯示區(qū)的寬度而折成三行的文件段落中每一行的相關(guān)行信息記錄為一種字串型行信息結(jié)構(gòu)。
在上述的步驟3中是通過(guò)定義一個(gè)句子索引信息字串“.Index=″″”(亦即是前文中所稱(chēng)的字串型行信息結(jié)構(gòu))=″″(″″符號(hào)代表這是一個(gè)字串)的方式,準(zhǔn)備建立一個(gè)所謂的字串型行信息結(jié)構(gòu)。
其中代表一行文件內(nèi)容的句子索引信息字串“.Index=″″”,其語(yǔ)法為.Index=“SIS~E”,其中SI代表這一行文件內(nèi)容中的某一句子,在整個(gè)段落的全部句子中的序號(hào)(Sentence ID);S代表這個(gè)句子在這一行文件之中起始字符(Start Byte)所在的字符位置;E代表這個(gè)句子在這一行文件之中結(jié)束字符(End Byte)所在的字符位置;例如,Index=“2”表示當(dāng)前的行是第二句的內(nèi)容。
再如,Index=“31-10;411-20;521-26”,表示1-10個(gè)字符為此行的第三句內(nèi)容,11-20個(gè)字符為此行第四句內(nèi)容,21-26個(gè)字符則為此行第五句內(nèi)容。
而本發(fā)明用這種字串代替了這傳統(tǒng)技術(shù)中兩個(gè)動(dòng)態(tài)的陣列。不僅節(jié)省資源,而且易于操作。
比如上例可經(jīng)過(guò)精確的計(jì)算,看字串型信息結(jié)構(gòu)到底比傳統(tǒng)的陣列型信息結(jié)構(gòu)節(jié)省多少字符的存儲(chǔ)空間。
假設(shè)字串Index=“31-10;411-20;521-26”表示本行有三句話,而傳統(tǒng)陣列型信息結(jié)構(gòu)中的Sentence ID要用到三個(gè)陣列元素,Byte Range則要用到六個(gè)陣列元素。對(duì)于目前的視窗操作系統(tǒng)而言,每個(gè)陣列元素需要占據(jù)四個(gè)字的存儲(chǔ)空間。這樣總共要用去36個(gè)字符。而本發(fā)明所揭露的這個(gè)字串是22個(gè)字符。資源節(jié)省為40%以上,而且每行的字串型信息結(jié)構(gòu)中所涵蓋的句子數(shù)越多資源節(jié)省的優(yōu)勢(shì)越明顯。
關(guān)于代表顯示在顯示屏中每一行文件的相關(guān)信息的句子索引信息字串“.Index=″″”,其計(jì)算與生成的詳細(xì)方式,現(xiàn)以上述的文件段落為例作一說(shuō)明如后假設(shè)在熒光屏上顯示有下列一段文件內(nèi)容1 48Sleep must be taken regularly.If you slept tenhours yesterday,it does not necessarily followthat you have only to sleep four hours today.
生成某行的句子索引信息字串的方法,基本上是根據(jù)表一所示句子、字符范圍的數(shù)據(jù)陣列中的數(shù)據(jù),找到某一句子在大字串中的起始字符和終止字符數(shù)(均為絕對(duì)字符位置)分別減去離起始字符最近的折點(diǎn)位置即可得到該行該句,在句子索引信息字串.Index=“SIS~E”之中S與E的值;然后再把該行所有的句子索引信息組合成一個(gè)代表該行的相關(guān)信息的字串即可。
根據(jù)此一方法,計(jì)算上例文件段落中第一行文件的句子索引信息字串,其中包括有第一個(gè)句子SI=1,S=1,E=30,第二個(gè)句子SI=2,S=31,E=48,所以第一行的句子索引信息字串為.Index=“11~30;231~48”;繼續(xù)計(jì)算第二行文件的句子索引信息字串,其中包括有第二個(gè)句子的后段部分,故SI=2,S=(49-48折點(diǎn)位置)=1,E=(64-48)=16;以及第三個(gè)句子的前端部分,故SI=3,S=(65-48)=17,E=(96-48)=48,所以第二行的句子索引信息字串為.Index=“21~16;317~48”;同理計(jì)算出第三行文件的句子索引信息字串為.Index=“31~45”為了配合文字檔中不同文字格式辨別的需要,本發(fā)明設(shè)計(jì)如下的數(shù)據(jù)結(jié)構(gòu)表示行信息·IsEnglish表示當(dāng)前行是英文還是中文·Txt表示當(dāng)前行所要顯示的文字內(nèi)容·Index表示當(dāng)前為某一行的句子索引信息一旦根據(jù)本發(fā)明的方法,在一文件段落中獲得句子索引信息字串之后,用此句子索引信息字串對(duì)段落文件進(jìn)行顯示操作就非常簡(jiǎn)單了。段落顯示方式的,“.Index=″″”結(jié)構(gòu)最復(fù)雜,其他非段落方式每行一定對(duì)應(yīng)唯一的句子,“.Index=″″”等于一個(gè)數(shù)字,其獲得和用于進(jìn)行文字的顯示操作都很簡(jiǎn)單。下面只詳細(xì)解釋段落方式。
段落方式利用句子索引信息字串“.Index=″″”實(shí)現(xiàn)單句輝亮?xí)r,首先求得輸入單元(如鼠標(biāo))的游標(biāo)指入字符的位置(Byte Position),在“.Index=″″”中判斷(Byte Position)在哪句的字符范圍之內(nèi),即可知道哪段范圍的字符需要輝亮了。如圖4所示,為段落方式單句輝亮處理過(guò)程。包括下列步驟1.首先求得輸入單元(如鼠標(biāo))的游標(biāo)指入字的位置Byte Position;2.定義指標(biāo)(Pointer)P=1;3.然后從P開(kāi)始搜尋“.index=″″”中的“;”(斷句標(biāo)志),得到這個(gè)字符位置所屬的句子的起始字符位置Begin Byte與結(jié)束字符位置EndByte;(若p=0則說(shuō)明當(dāng)前為非段落方式,此時(shí)即可得到某句的字符范圍信息。);4.判斷Byte Position是否在該句的范圍之內(nèi)?若為是,則跳至步驟6,若為否,則跳至步驟5;5.設(shè)指標(biāo)P=P+1,然后返回至步驟3,再?gòu)腜搜尋下一個(gè)“;”;以及6.令本行從BeginByte到EndByte的字符輝亮。
總之,本發(fā)明提供用一種數(shù)據(jù)結(jié)構(gòu)來(lái)控制同一文字檔案內(nèi)容的多種文字格式的顯示方法。由于段落文件的顯示只需藉由一種字串型行信息結(jié)構(gòu)所提供的相關(guān)信息,即可完成,所以本發(fā)明具有操作單純,節(jié)省資源的優(yōu)點(diǎn)。
權(quán)利要求
1.一種在文字檔案中顯示不同的文字格式的控制方法,用以控制應(yīng)用于計(jì)算機(jī)的文字型檔案文件在同一內(nèi)容中顯示不同格式,包括有從該文字檔案中取得欲顯示的文字內(nèi)容,以及取得記錄該文件中的句子結(jié)構(gòu)的數(shù)據(jù)陣列;從該數(shù)據(jù)陣列中,取得該文字檔案中有關(guān)顯示操作的相關(guān)信息;根據(jù)從該數(shù)據(jù)陣列中取得的該顯示操作的相關(guān)信息,建立一種字串型行信息結(jié)構(gòu);以及依據(jù)該字串型行信息結(jié)構(gòu)中關(guān)于顯示操作的該相關(guān)信息,相應(yīng)地變換該文字檔案中文字的顯示方式。
2.如權(quán)利要求1所述在文字檔案中顯示不同的文字格式的控制方法,其中該數(shù)據(jù)陣列中包括有該文字檔案的文字內(nèi)容的段落標(biāo)記,句子標(biāo)號(hào)以及句子的起始字符位置與結(jié)束字符位置等數(shù)據(jù)。
3.如權(quán)利要求1所述在文字檔案中顯示不同的文字格式的控制方法,其中生成該字串型行信息結(jié)構(gòu)的方法,包括有取得指定的文件段落位置,并且將屬于相同段落的句子合并成一個(gè)大字串,并且生成一記錄有該段落中的句子、字符范圍的數(shù)據(jù)陣列;根據(jù)該文字檔案顯示區(qū)的寬度將該大字串折成若干行,并且以一折點(diǎn)陣列記錄折點(diǎn)(Break Point)字符所在的位置;以及根據(jù)該數(shù)據(jù)陣列,與該折點(diǎn)陣列記錄之中所記錄的相關(guān)數(shù)據(jù),將前述因顯示區(qū)的寬度而折成數(shù)行的文件段落中每一行的相關(guān)信息,記錄為一字串型行信息結(jié)構(gòu)。
4.如權(quán)利要求3所述在文字檔案中顯示不同的文字格式的控制方法,其中該數(shù)據(jù)陣列中包括有該文件段落之中的句子標(biāo)號(hào)以及該句子的起始字符位置與結(jié)束字符位置等數(shù)據(jù)。
5.如權(quán)利要求4所述在文字檔案中顯示不同的文字格式的控制方法,其中該數(shù)據(jù)陣列中的該起始字位置與該結(jié)束字符位置為位于該段落中的絕對(duì)字符位置。
6.如權(quán)利要求3所述在文字檔案中顯示不同的文字格式的控制方法,其中該折點(diǎn)位置是指該折點(diǎn)位于該段落中的絕對(duì)字符位置。
7.如權(quán)利要求3所述在文字檔案中顯示不同的文字格式的控制方法,其中該字串型行信息結(jié)構(gòu)的表示語(yǔ)法為.Index=“SIS~E”,其中;該SI代表一行文字內(nèi)容中的某一句子在該段落的全部句子中的序號(hào)(Sentence ID);該S代表該句子在該行文字之中起始字符(Start Byte)所在的字符位置;以及該E代表該句子在該行文字之中結(jié)束字符(End Byte)所在的字符位置。
8.如權(quán)利要求7所述在文字檔案中顯示不同的文字格式的控制方法,其中該字串型行信息結(jié)構(gòu)中的該S值,是根據(jù)該數(shù)據(jù)陣列中的數(shù)據(jù),找到某一該句子在該大字串中的起始字符位置(為絕對(duì)字符位置),減去離該起始字符最近的該折點(diǎn)位置而求得。
9.如權(quán)利要求7所述在文字檔案中顯示不同的文字格式的控制方法,其中該字串型行信息結(jié)構(gòu)中的該E值,是根據(jù)該數(shù)據(jù)陣列中的數(shù)據(jù),找到某一該句子在該大字串中的終止字符位置(為絕對(duì)字符位置),減去離該起始字符最近的該折點(diǎn)位置而求得。
10.如權(quán)利要求1所述在文字檔案中顯示不同的文字格式的控制方法,其中所述的該顯示方式為卷頁(yè)、或單句輝亮。
11.如權(quán)利要求10所述在文字檔案中顯示不同的文字格式的控制方法,其中控制顯示單句輝亮的方法包括(1).取得輸入單元的游標(biāo)指入的該字符的位置;(2).定義一指標(biāo)P=1;(3).從該指標(biāo)P開(kāi)始搜尋該字串型行信息結(jié)構(gòu)中的斷句標(biāo)志,得到游標(biāo)指入的該字符位置所屬的句子起始字符位置與結(jié)束字符位置;(4).判斷游標(biāo)指入的該字符位置是否在該句子的范圍之內(nèi)?若為是,則跳至步驟6,若為否,則跳至步驟5;(5).設(shè)該指標(biāo)P=P+1,然后返回至步驟3,再?gòu)腜搜尋下一個(gè)該字串型行信息結(jié)構(gòu)中的斷句標(biāo)志;以及(6).使從該起始字符位置到該結(jié)束字符位置的該字符輝亮。
12.如權(quán)利要求11所述在文字檔案中顯示不同的文字格式的控制方法,其中該字串型行信息結(jié)構(gòu)中的該斷句標(biāo)志為符號(hào)“;”。
全文摘要
一種在文字檔案中顯示不同的文字格式的控制方法,可記錄不同的文字格式的數(shù)據(jù)結(jié)構(gòu),在對(duì)不同文字格式的文字內(nèi)容作不同顯示操作時(shí),可在此一數(shù)據(jù)結(jié)構(gòu)提取顯示操作所需的相關(guān)信息,這種記錄文字格式的數(shù)據(jù)結(jié)構(gòu),可用于含有多種不同文字的文字檔案,而且具有節(jié)省存儲(chǔ)資源的功效,即使文字檔案的文字內(nèi)容或顯示位置改變時(shí),也可快速地重新改變數(shù)據(jù)結(jié)構(gòu)的記錄內(nèi)容,以便作為控制文字檔案的顯示操作時(shí)的依據(jù)。
文檔編號(hào)G06F3/14GK1270345SQ99104830
公開(kāi)日2000年10月18日 申請(qǐng)日期1999年4月8日 優(yōu)先權(quán)日1999年4月8日
發(fā)明者郝軍, 宋建福, 林光信 申請(qǐng)人:英業(yè)達(dá)股份有限公司