專(zhuān)利名稱(chēng):一種排版方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其是涉及一種對(duì)文字進(jìn)行自動(dòng)排版的方法。
背景技術(shù):
隨著計(jì)算機(jī)的普及和信息技術(shù)的發(fā)展,人們?nèi)遮叢捎糜?jì)算機(jī)排版方法來(lái)進(jìn)行自動(dòng)排版。其中,稿紙方式排版是中文特有的排版方式,而現(xiàn)有的文字處理技術(shù)采用的稿紙排版的方法都有所不同。
目前,實(shí)現(xiàn)了稿紙方式排版的現(xiàn)有技術(shù)主要有微軟Office中的Word以及SUN OpenOffice中的Text Document。
一種現(xiàn)有技術(shù)采用的方法是通過(guò)模板創(chuàng)建稿紙文件,從而實(shí)現(xiàn)稿紙方式排版,即通過(guò)模板中的“稿紙向?qū)А?,設(shè)置文章的頁(yè)面屬性、段屬性、字屬性等各種屬性,使得文字排列在預(yù)定的稿紙方格中,形成稿紙的式樣。
但是,所述方法并不是真正意義上的稿紙方式排版,其不足之處在于首先,該現(xiàn)有技術(shù)需要新建文檔再進(jìn)行選擇排版方式的操作,導(dǎo)致浪費(fèi)機(jī)器資源,同時(shí)也不利于已有文件直接使用稿紙模式進(jìn)行排版方式的轉(zhuǎn)換。
其次,該現(xiàn)有技術(shù)需要在主程序菜單的“文件”選項(xiàng)中“新建”文檔,再選擇“其他中文文檔”,然后在出現(xiàn)的各種模板類(lèi)型文檔中,選擇“稿紙向?qū)А?,設(shè)置稿紙的工作類(lèi)型、大小尺寸和排版式樣,其處理速度較慢,操作不夠便捷。同時(shí),如果要實(shí)現(xiàn)稿紙方式排版,則在新建文檔時(shí)不能選擇快捷欄上的新建按鈕,因?yàn)樾陆ò粹o不能選擇新建其他類(lèi)型文檔。
再次,該現(xiàn)有技術(shù)在處理禁則時(shí)容易出現(xiàn)字格錯(cuò)位現(xiàn)象。請(qǐng)參閱圖1,由于正常排版是第二行行首出現(xiàn)標(biāo)點(diǎn),現(xiàn)有技術(shù)為處理禁則的情況引起第一行排版的錯(cuò)位。
另一種現(xiàn)有技術(shù)采用頁(yè)面設(shè)置中設(shè)置稿紙模式的方法來(lái)實(shí)現(xiàn)稿紙排版,但其對(duì)文字的大小、間距與稿紙模式的大小、間距之間的關(guān)系的處理有時(shí)并不準(zhǔn)確,導(dǎo)致無(wú)法保證輸入的文字按格編排到稿紙中。請(qǐng)參閱圖2,是現(xiàn)有技術(shù)中調(diào)整行間距引起的排版錯(cuò)位。請(qǐng)參閱圖3,是現(xiàn)有技術(shù)中將文字設(shè)置為大字體后引起的排版錯(cuò)位。
此外,雖然現(xiàn)有技術(shù)的排版方法都可以在稿紙上插入圖片、圖形和表格,但是很難實(shí)現(xiàn)稿紙方式的圖文混排。
發(fā)明內(nèi)容
由于現(xiàn)有技術(shù)在實(shí)現(xiàn)稿紙排版時(shí)容易出現(xiàn)排版錯(cuò)位的情況,本發(fā)明解決的技術(shù)問(wèn)題在于提供一種排版方法,可以克服稿紙方式下的排版錯(cuò)位問(wèn)題。
在此基礎(chǔ)上,本發(fā)明解決的另一技術(shù)問(wèn)題是實(shí)現(xiàn)稿紙方式的圖文混排。
為此,本發(fā)明解決技術(shù)問(wèn)題的技術(shù)方案是一種排版方法,用于實(shí)現(xiàn)稿紙方式的排版,包括1)新建頁(yè)面的步驟,在排版結(jié)果數(shù)據(jù)結(jié)構(gòu)中建立新的頁(yè)對(duì)象,并添加到頁(yè)鏈表中;2)初始化稿紙的步驟,將文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)中的當(dāng)前排版位置設(shè)到文章開(kāi)始,根據(jù)排版方式確定排版參數(shù);3)取待排文字的步驟,讀取文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)中的當(dāng)前排版位置,依次取出段對(duì)象、句對(duì)象,再?gòu)木鋵?duì)象中取出待排文字的內(nèi)容;4)初始化字體和段屬性的步驟,讀取段對(duì)象和句對(duì)象的屬性,設(shè)置到排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)中;5)取排版位置的步驟,根據(jù)排版結(jié)果數(shù)據(jù)結(jié)構(gòu)的當(dāng)前排版位置計(jì)算在頁(yè)面的排版區(qū)域中可以開(kāi)始排版的行的坐標(biāo)位置;6)排列文字的步驟,在排版結(jié)果數(shù)據(jù)結(jié)構(gòu)生成行元,從待排的句對(duì)象中取出字符內(nèi)容,根據(jù)排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)中的屬性排列至對(duì)應(yīng)的行元中。
其中,在所述步驟5)和步驟6)之間還包括取實(shí)際排版位置的步驟比較可排版的行的位置和頁(yè)面對(duì)象的位置,如果兩者有重疊,根據(jù)重疊的位置將行分割成自由排版空間。
其中,所述取實(shí)際排版位置的步驟還包括判斷頁(yè)面對(duì)象的繞排類(lèi)型,并根據(jù)繞排類(lèi)型分割自由排版空間。
其中,所述取實(shí)際排版位置的步驟還包括將頁(yè)面對(duì)象的位置定位為尾隨文字或尾隨段。
其中,所述取實(shí)際排版位置的步驟還包括比較文字內(nèi)容與頁(yè)面對(duì)象的層次關(guān)系,并根據(jù)層次關(guān)系確定行的排版位置。
其中,在所述步驟6)中還包括禁則處理步驟判斷禁則符號(hào)的排版位置,如果禁則符號(hào)位于行首,則調(diào)整其排版位置,將其排列在上一行的末尾;如果行首連續(xù)出現(xiàn)至少兩個(gè)禁則符號(hào),則一并調(diào)整最后一個(gè)非禁則符號(hào)的排版位置,將其排列至所述行首。
其中,在所述步驟5)中還包括判斷頁(yè)面的排版區(qū)域是否充足,如果不足則回到步驟1),建立新的頁(yè)面;如果充足,則實(shí)施步驟6)。
其中,在所述步驟6)之后進(jìn)一步判斷當(dāng)前段是否排完,如果排完,則從文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)取出下一段待排文字繼續(xù)處理;如果未排完,則從排版結(jié)果數(shù)據(jù)結(jié)構(gòu)中取下一行排版位置繼續(xù)處理。
其中,還包括顯示步驟整理排版結(jié)果數(shù)據(jù)結(jié)構(gòu)并顯示排版結(jié)果。
其中,所述排版結(jié)果按如下順序顯示紙張、正文下對(duì)象、稿紙、正文、正文上對(duì)象。
相對(duì)于現(xiàn)有技術(shù),本發(fā)明的有益效果是首先,由于本發(fā)明在初始化字體和段屬性的步驟中,從文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)讀取段對(duì)象和句對(duì)象的屬性并設(shè)置到排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)中,在編排文字的步驟中,從待排的句對(duì)象中取出字符內(nèi)容,根據(jù)排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)中的屬性排列至對(duì)應(yīng)的行元中,因此可以克服現(xiàn)有技術(shù)在稿紙排版時(shí)由于調(diào)整文字的大小和行間距引起的錯(cuò)位現(xiàn)象;其次,在圖文混排方面,由于本發(fā)明在取實(shí)際排版位置的步驟中,用可排版的行的位置,和頁(yè)面上的頁(yè)面對(duì)象的位置進(jìn)行比較,并根據(jù)重疊的位置和對(duì)象的繞排類(lèi)型,將行切割成可自由排版的空間,然后排列文字,可以使文字自動(dòng)對(duì)頁(yè)面對(duì)象進(jìn)行繞排;再次,本發(fā)明排版方法中可以定義對(duì)象之間的層次關(guān)系如在文章正文下有正文下對(duì)象、在文章正文上有正文上對(duì)象,所述正文下對(duì)象可以在稿紙中實(shí)現(xiàn)水印的效果;再次,所述頁(yè)面對(duì)象的位置可以快速定位,如定位在當(dāng)前排版位置后面以尾隨文字或是定位在當(dāng)前排版位置下面以尾隨文字段;再次,可以通過(guò)調(diào)整排版位置實(shí)現(xiàn)禁則處理,較好地解決現(xiàn)有技術(shù)的字格錯(cuò)位問(wèn)題。另外,由于本發(fā)明排版方法通過(guò)將稿紙方式歸屬于“頁(yè)面設(shè)置”,對(duì)保存好的文檔,可以方便快捷地進(jìn)行普通版面和稿紙版面之間的轉(zhuǎn)換。
圖1是一種現(xiàn)有技術(shù)在稿紙排版時(shí)出現(xiàn)的錯(cuò)位示意圖;圖2和圖3是另一種現(xiàn)有技術(shù)在稿紙排版時(shí)出現(xiàn)的錯(cuò)位示意圖;圖4是本發(fā)明排版方法中的頁(yè)面結(jié)構(gòu)示意圖;圖5是本發(fā)明排版方法的數(shù)據(jù)處理過(guò)程示意圖;圖6至圖8是本發(fā)明排版方法使用的文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)圖;圖9至圖12是本發(fā)明排版方法使用的排版結(jié)果數(shù)據(jù)結(jié)構(gòu)圖;圖13是本發(fā)明排版方法使用的臨時(shí)數(shù)據(jù)結(jié)構(gòu)圖;圖14是本發(fā)明排版方法的流程圖;圖15是本發(fā)明排版方法中對(duì)象的層次關(guān)系圖;圖16是本發(fā)明排版方法中頁(yè)面對(duì)象繞排的示意圖;圖17是本發(fā)明排版方法中禁則處理的示意圖。
具體實(shí)施例方式
本發(fā)明排版方法可以實(shí)現(xiàn)稿紙方式的排版,從而滿(mǎn)足使用稿紙方式編排版面的辦公需求。
請(qǐng)參考圖4,是本發(fā)明排版的頁(yè)面結(jié)構(gòu)。其中,頁(yè)是指顯示的頁(yè)面。排版區(qū)域是可以排放文章正文內(nèi)容的區(qū)域,即正文內(nèi)容將排列在此矩形區(qū)域中。行的含義在版式為橫排或豎排時(shí)有所不同如果版式為橫排,行是指在排版區(qū)域中從左到右的一個(gè)矩形區(qū)域;如果版式為豎排,行為排版區(qū)域中從上到下的一個(gè)矩形區(qū)域,以下的敘述都以橫排為例。行元是指存在行中的最小的矩形區(qū)域,一行中可以包含多個(gè)行元,同一行元中的字符有相同的字體屬性,包括字體類(lèi)型,顏色、粗體、斜體、底紋等等。不同屬性的字符處于不同的行元中。
此外,頁(yè)面上還可以排列頁(yè)面對(duì)象,實(shí)現(xiàn)圖文混排。所述頁(yè)面對(duì)象是編輯文件,在文章中插入的圖形、圖像、表格或其它對(duì)象,如一段特殊格式的文字,即文字框?qū)ο蟆K鲰?yè)面對(duì)象不隨文章正文內(nèi)容變化而改變位置,還可以具有繞排屬性,以確定它對(duì)正文排版的影響方式,包括兩邊繞排、繞排一邊、左上繞排、右下繞排、不繞排等屬性。圖4中是兩邊繞排的例子即文章正文內(nèi)容可以排列在對(duì)象的兩邊、但對(duì)象的地方不排列文字。
請(qǐng)參閱圖5,本發(fā)明排版方法主要涉及到三部分?jǐn)?shù)據(jù)結(jié)構(gòu)文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)110,用以表示文章內(nèi)容,包括文本內(nèi)容以及圖片對(duì)象;臨時(shí)數(shù)據(jù)結(jié)構(gòu)120,是排版過(guò)程中用到的臨時(shí)數(shù)據(jù);排版結(jié)果數(shù)據(jù)結(jié)構(gòu)130,用以表示文章內(nèi)容在頁(yè)面上的顯示位置。本發(fā)明排版方法主要包括步驟從文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)110獲取待排版的文章內(nèi)容;對(duì)前述文章內(nèi)容進(jìn)行數(shù)據(jù)處理并生成臨時(shí)數(shù)據(jù)結(jié)構(gòu)120;同時(shí)生成排版結(jié)果數(shù)據(jù)結(jié)構(gòu)130;排版完成后根據(jù)排版結(jié)果數(shù)據(jù)結(jié)構(gòu)130進(jìn)行顯示。
請(qǐng)參閱圖6至圖8,所述文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)110中,文章正文數(shù)據(jù)表示應(yīng)顯示在文章正文中的文字,不包括各種文本框和各種對(duì)象內(nèi)的文字。所述文章正文數(shù)據(jù)的結(jié)構(gòu)按照文章、段、句的方式組織,其中,段包含于文章中、句又包含于段中。
請(qǐng)參閱圖6,所述文章正文數(shù)據(jù)包括段鏈表、排版方式和當(dāng)前排版位置;其中,段鏈表包含多個(gè)段對(duì)象;所述排版方式用以表示文章內(nèi)容采用橫排還是豎排等方式進(jìn)行排版;所述當(dāng)前位置即已經(jīng)排到的段、句的位置,包括當(dāng)前段位置、當(dāng)前句位置和當(dāng)前句內(nèi)偏移,用以指示排版的位置。
請(qǐng)參閱圖7,所述段對(duì)象包括句鏈表和段落的各種屬性設(shè)置;所述句鏈表包含多個(gè)句對(duì)象;所述屬性設(shè)置包括左、右縮進(jìn)和首行縮進(jìn)等等。
請(qǐng)參閱圖8,所述句對(duì)象包括句內(nèi)文字和句的各種屬性設(shè)置,包括字體、顏色、字體修飾等等。
請(qǐng)參閱圖9至圖12,排版結(jié)果數(shù)據(jù)結(jié)構(gòu)130中,排版后的數(shù)據(jù)按照頁(yè)、行、行元的層次進(jìn)行組織,每層數(shù)據(jù)中均包含自己的屬性數(shù)據(jù),頁(yè)面對(duì)象保存在所在的頁(yè)面中。
請(qǐng)參閱圖9,所述排版結(jié)果數(shù)據(jù)包括由多個(gè)頁(yè)對(duì)象構(gòu)成的頁(yè)鏈表、全文對(duì)象鏈表、當(dāng)前頁(yè)和當(dāng)前排版位置。
請(qǐng)參閱圖10,所述頁(yè)對(duì)象包括頁(yè)面對(duì)象鏈表、排版區(qū)域和頁(yè)的各種屬性數(shù)據(jù);所述頁(yè)面對(duì)象鏈表包括圖片對(duì)象、文本框?qū)ο蠛蛨D形對(duì)象;所述排版區(qū)域包括由多個(gè)行對(duì)象組成的行對(duì)象鏈表;所述屬性數(shù)據(jù)包括頁(yè)號(hào)、頁(yè)面顏色等等。
請(qǐng)參閱圖11,所述行對(duì)象包括由多個(gè)行元對(duì)象組成的行元對(duì)象鏈表和排版區(qū)域的當(dāng)前位置。
請(qǐng)參閱圖12,所述行元對(duì)象包括相對(duì)行對(duì)象的坐標(biāo)位置、本行元對(duì)應(yīng)正文位置和本行元在句內(nèi)的結(jié)束位置。
請(qǐng)參閱圖13,是本發(fā)明排版時(shí)使用的臨時(shí)數(shù)據(jù)結(jié)構(gòu)120,包括各種文字的屬性和當(dāng)前排版位置等。
請(qǐng)參閱圖14,是本發(fā)明排版方法的流程圖。本發(fā)明排版方法稿紙模式的設(shè)置歸屬于頁(yè)面設(shè)置中,保證了文檔在普通版面與稿紙版面之間的轉(zhuǎn)換既方便又快捷。當(dāng)用戶(hù)選擇稿紙方式排板或改動(dòng)文檔內(nèi)容后,排版引擎將啟動(dòng)排版方法的流程。
首先實(shí)施步驟S1,新建頁(yè)面;同時(shí)實(shí)施步驟S2,初始化稿紙;隨后實(shí)施步驟S3,以段為單位取一段文字準(zhǔn)備進(jìn)行排版。
對(duì)一段文字排版時(shí),首先實(shí)施步驟S4,初始化字體和段屬性;然后實(shí)施步驟S5,以行(豎向紙張)或列(橫向紙張)為單位取一行或一列的排版位置,此時(shí),判斷頁(yè)面空間是否充足,如果不足則回到步驟S1,重新建立新的頁(yè)面;如果頁(yè)面空間充足,則實(shí)施步驟S6,通過(guò)對(duì)繞排的判斷取實(shí)際排版位置;最后實(shí)施步驟S7,排列文字。
當(dāng)一行或一列位置排版完畢后,判斷是否排完整段,如果本段文字尚未排版完畢,則回到步驟S5,取下一行或下一列位置繼續(xù)進(jìn)行處理;如果一整段排版完畢,則回到步驟S3,繼續(xù)取下一段文字準(zhǔn)備進(jìn)行排版。直到文章正文內(nèi)容全部排版完畢,整理排版數(shù)據(jù)并進(jìn)行顯示。
其中,步驟S1具體包括在排版結(jié)果數(shù)據(jù)結(jié)構(gòu)130中創(chuàng)建新的頁(yè)對(duì)象,并添加到頁(yè)鏈表的尾部,同時(shí)設(shè)置排版結(jié)果數(shù)據(jù)結(jié)構(gòu)130的當(dāng)前排版位置。
步驟S2具體包括將文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)110中的當(dāng)前排版位置設(shè)到文章開(kāi)始,根據(jù)排版方式如稿紙的類(lèi)型(橫豎稿紙)、紙張的大小確定所能容納的文字的大小、文字的方向等排版過(guò)程需要用到的參數(shù)。
步驟S3具體包括讀取文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)110中的當(dāng)前排版位置,即當(dāng)前段、句編號(hào)以及句內(nèi)偏移,然后根據(jù)段、句的編號(hào)依次取出段對(duì)象、句對(duì)象,再?gòu)木鋵?duì)象中取出待排文字的內(nèi)容。
步驟S4具體包括取出段對(duì)象中的首行縮進(jìn)、段左縮進(jìn)、段右縮進(jìn)等屬性設(shè)置到排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)的段屬性中,取出句對(duì)象中的字體屬性,設(shè)置到排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)的字屬性中,并根據(jù)字體類(lèi)型和字體屬性得到英文和中文的字體寬度表,并將此表設(shè)置到排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)的當(dāng)前中文和英文字體寬度表中。
步驟S5具體包括根據(jù)排版結(jié)果數(shù)據(jù)結(jié)構(gòu)130的當(dāng)前排版位置,即排版到當(dāng)前頁(yè)的第幾行,判斷頁(yè)中的排版區(qū)域是否還有空間。如有,計(jì)算在排版區(qū)域中下一句可以開(kāi)始排版的行的坐標(biāo)位置,在已排版的行下面生成新的一行;如果沒(méi)有返回到新建頁(yè)面的步驟S1,新建一頁(yè)再進(jìn)行排版。
步驟S6具體包括用可排版的行或者列的位置,和頁(yè)面上的頁(yè)面對(duì)象的位置進(jìn)行比較。如果兩者有重疊,根據(jù)重疊的位置和對(duì)象的繞排類(lèi)型,將行切割成一組矩形區(qū)域,稱(chēng)為可以自由排版的空間。
所述頁(yè)面對(duì)象的位置可以快速定位,如定位在當(dāng)前排版位置后面,即尾隨在某文字后面;或是定位在當(dāng)前排版位置下面,即尾隨在文字段。
請(qǐng)參閱圖15,在切割自由排版空間時(shí),本發(fā)明排版方法中可以定義對(duì)象之間的層次關(guān)系如在文章正文下有正文下對(duì)象、在文章正文上有正文上對(duì)象,所述正文下對(duì)象可以在稿紙中實(shí)現(xiàn)水印的效果。
如行中間存在一個(gè)對(duì)象,且對(duì)象的繞排屬性為兩邊繞排,則行被對(duì)象分為左右兩個(gè)自由排版空間。請(qǐng)參閱圖16,所切分出來(lái)的一組矩形空間是“取一行”,“或一列排版”和“位置”三段文字所在的矩形空間。
如果對(duì)象繞排屬性為只繞排一邊,則只有對(duì)象一邊的空間可以作為自由排版空間。
步驟S7是排列文字,將取出的待排的句內(nèi)文字內(nèi)容中每個(gè)文字依次編排在矩形區(qū)域中,直到排完整句文字,或者用光所有矩形區(qū)域?yàn)橹?。具體包括步驟取出可自由排版的空間,生成新的行元,從當(dāng)前排版的句對(duì)象中取出句內(nèi)文字內(nèi)容即字符內(nèi)容,依次對(duì)每個(gè)字符進(jìn)行排版如果字符是中文字符,則將該字符排列在一個(gè)稿紙格中,如果是英文字符,因?yàn)橛⑽淖址拿總€(gè)寬度是不同的,而且粗體等屬性也會(huì)影響字符的寬度,所以需要從排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)120的當(dāng)前字符寬度表中取出此字符的寬度,依次進(jìn)行排列,直到句內(nèi)的文字被排完,讀取下一個(gè)句對(duì)象,繼續(xù)處理;或者一個(gè)自由排版空間被排完,則取出下一個(gè)可自由排版的空間繼續(xù)處理,直到排完整個(gè)行中的所有自由排版空間。
當(dāng)一行或一列位置排版完畢后,判斷是否排完整段,如果本段文字尚未排版完畢,則回到步驟S5,取下一行或下一列位置繼續(xù)進(jìn)行處理;如果一整段排版完畢,則回到步驟S3,繼續(xù)取下一段文字準(zhǔn)備進(jìn)行排版。直到文章正文內(nèi)容全部排版完畢,整理排版數(shù)據(jù)并進(jìn)行顯示。
顯示是指在排版結(jié)束以后,將排版結(jié)果以圖形的方式展示出來(lái)。顯示是按照一定的順序進(jìn)行的,當(dāng)不同的對(duì)象重疊時(shí),后顯示的對(duì)象會(huì)覆蓋掉前面顯示的對(duì)象,因此以特定的順序顯示不同的對(duì)象,可以達(dá)到層疊的效果。
本發(fā)明排版方法中,可以采用如下顯示順序紙張,包括紙張的顏色、邊框、陰影等;正文下對(duì)象,頁(yè)面中的所有疊放位置“在文字下”的對(duì)象;稿紙,稿紙本身的邊框線(xiàn);正文,在稿紙中顯示的正文;文字上對(duì)象,頁(yè)面中所有疊放位置為“在文字上”的對(duì)象。
此外,本發(fā)明排版方法還可以嚴(yán)格按照中文稿紙書(shū)寫(xiě)規(guī)范來(lái)處理禁則。排版時(shí),如果有一個(gè)禁則符號(hào)(如標(biāo)點(diǎn)符號(hào))出現(xiàn)在任意行的行首,則調(diào)整當(dāng)前排版位置,將此符號(hào)排版在上一行的末尾,設(shè)置在最后一個(gè)稿紙格的外面,保證此行文字排版不會(huì)發(fā)生位置混亂等問(wèn)題。
請(qǐng)參閱圖17,如果連續(xù)出現(xiàn)兩個(gè)或多禁則符號(hào)在行首,則在調(diào)整當(dāng)前排版位置時(shí),要連最后一個(gè)非禁則符號(hào)一起轉(zhuǎn)到下一行繼續(xù)排版。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種排版方法,用于實(shí)現(xiàn)稿紙方式的排版,包括1)新建頁(yè)面的步驟,在排版結(jié)果數(shù)據(jù)結(jié)構(gòu)中建立新的頁(yè)對(duì)象,并添加到頁(yè)鏈表中;2)初始化稿紙的步驟,將文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)中的當(dāng)前排版位置設(shè)到文章開(kāi)始,根據(jù)排版方式確定排版參數(shù);3)取待排文字的步驟,讀取文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)中的當(dāng)前排版位置,依次取出段對(duì)象、句對(duì)象,再?gòu)木鋵?duì)象中取出待排文字的內(nèi)容;4)初始化字體和段屬性的步驟,讀取段對(duì)象和句對(duì)象的屬性,設(shè)置到排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)中;5)取排版位置的步驟,根據(jù)排版結(jié)果數(shù)據(jù)結(jié)構(gòu)的當(dāng)前排版位置計(jì)算在頁(yè)面的排版區(qū)域中可以開(kāi)始排版的行的坐標(biāo)位置;6)排列文字的步驟,在排版結(jié)果數(shù)據(jù)結(jié)構(gòu)生成行元,從待排的句對(duì)象中取出字符內(nèi)容,根據(jù)排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)中的屬性排列至對(duì)應(yīng)的行元中。
2.如權(quán)利要求1所述的排版方法,其特征在于,在所述步驟5)和步驟6)之間還包括取實(shí)際排版位置的步驟比較可排版的行的位置和頁(yè)面對(duì)象的位置,如果兩者有重疊,根據(jù)重疊的位置將行分割成自由排版空間。
3.如權(quán)利要求2所述的排版方法,其特征在于,所述取實(shí)際排版位置的步驟還包括判斷頁(yè)面對(duì)象的繞排類(lèi)型,并根據(jù)繞排類(lèi)型分割自由排版空間。
4.如權(quán)利要求2所述的排版方法,其特征在于,所述取實(shí)際排版位置的步驟還包括將頁(yè)面對(duì)象的位置定位為尾隨文字或尾隨段。
5.如權(quán)利要求1或2所述的排版方法,其特征在于,所述取實(shí)際排版位置的步驟還包括比較文字內(nèi)容與頁(yè)面對(duì)象的層次關(guān)系,并根據(jù)層次關(guān)系確定行的排版位置。
6.如權(quán)利要求1所述的排版方法,其特征在于,在所述步驟6)中還包括禁則處理步驟判斷禁則符號(hào)的排版位置,如果禁則符號(hào)位于行首,則調(diào)整其排版位置,將其排列在上一行的末尾;如果行首連續(xù)出現(xiàn)至少兩個(gè)禁則符號(hào),則一并調(diào)整最后一個(gè)非禁則符號(hào)的排版位置,將其排列至所述行首。
7.如權(quán)利要求1所述的排版方法,其特征在于,在所述步驟5)中還包括判斷頁(yè)面的排版區(qū)域是否充足,如果不足則回到步驟1),建立新的頁(yè)面;如果充足,則實(shí)施步驟6)。
8.如權(quán)利要求1所述的排版方法,其特征在于,在所述步驟6)之后進(jìn)一步判斷當(dāng)前段是否排完,如果排完,則從文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)取出下一段待排文字繼續(xù)處理;如果未排完,則從排版結(jié)果數(shù)據(jù)結(jié)構(gòu)中取下一行排版位置繼續(xù)處理。
9.如權(quán)利要求1所述的排版方法,其特征在于,還包括顯示步驟整理排版結(jié)果數(shù)據(jù)結(jié)構(gòu)并顯示排版結(jié)果。
10.如權(quán)利要求9所述的排版方法,其特征在于,所述排版結(jié)果按如下順序顯示紙張、正文下對(duì)象、稿紙、正文、正文上對(duì)象。
全文摘要
本發(fā)明公開(kāi)了一種排版方法,用于實(shí)現(xiàn)稿紙方式的排版,包括新建頁(yè)面的步驟,在排版結(jié)果數(shù)據(jù)結(jié)構(gòu)中建立新的頁(yè)對(duì)象;初始化稿紙的步驟,設(shè)置文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)中的當(dāng)前排版位置;取待排文字的步驟,讀取文章內(nèi)容數(shù)據(jù)結(jié)構(gòu)中的當(dāng)前排版位置,取出待排文字的內(nèi)容;初始化字體和段屬性的步驟,讀取屬性并設(shè)置到排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)中;取排版位置的步驟,根據(jù)排版結(jié)果數(shù)據(jù)結(jié)構(gòu)的當(dāng)前排版位置計(jì)算在頁(yè)面的排版區(qū)域中可以開(kāi)始排版的行的坐標(biāo)位置;排列文字的步驟,在排版結(jié)果數(shù)據(jù)結(jié)構(gòu)生成行元,取出字符內(nèi)容,根據(jù)排版臨時(shí)數(shù)據(jù)結(jié)構(gòu)中的屬性排列至對(duì)應(yīng)的行元中。
文檔編號(hào)G06F17/21GK1558340SQ20041000313
公開(kāi)日2004年12月29日 申請(qǐng)日期2004年2月6日 優(yōu)先權(quán)日2004年2月6日
發(fā)明者董波, 林劍鋒, 陳寧一, 董 波 申請(qǐng)人:珠海金山軟件股份有限公司