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