專利名稱:一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于印刷排版領(lǐng)域,具體涉及一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法。
背景技術(shù):
在印刷排版領(lǐng)域中,對文字進(jìn)行排版是很重要的工作流程,目前,用排版軟件進(jìn)行排版過程中,當(dāng)進(jìn)行文字排版處理時,文字塊的位置確定之后,常常需要把文字塊按照版心背景格欄線的位置進(jìn)行分欄。
目前常見的分欄方法是按照文字塊的寬度進(jìn)行平均分欄,該方法并沒有考慮文字塊位置、版心背景格等信息,因此通常情況下,分欄后文字塊欄線的位置與版心背景格欄線的位置不能完全重合,二者之間存在一些差別,如果需要文字塊在版心背景格的特定位置進(jìn)行分欄的效果,則需要排版人員在分欄之后手動調(diào)整欄線位置,使文字塊欄線的位置與版心背景格欄線的位置重合。
由上述的描述可見,現(xiàn)有分欄方法的缺點(diǎn)是需要經(jīng)過分欄和手動調(diào)整欄線兩步操作才能達(dá)到在版心背景格的特定位置分欄的目的;手動調(diào)整欄線位置費(fèi)時費(fèi)力,降低了排版效率;手動操作受鼠標(biāo)移動最小距離的影響,而存在一定誤差,這些誤差通過手動操作幾乎不可消除。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的是提供一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法,該方法能夠讓排版人員通過簡單的一步操作,準(zhǔn)確快速地在版心背景格的特定位置對文字塊進(jìn)行分欄。
為達(dá)到以上目的,本發(fā)明采用的技術(shù)方案是一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法,包括以下步驟(1)確定需要分欄的文字塊,獲取版心背景格的信息,得到版心各欄的欄寬數(shù)組,確定文字塊和版心背景格的相對位置;(2)根據(jù)文字塊和版心背景格的相對位置,確定文字塊第一欄的起始邊和終止邊的位置,并確定文字塊每一欄的欄寬,所述的文字塊起始邊是指橫向排版時文字塊外包框的左邊或者豎向排版時文字塊外包框的頂邊,所述的文字塊終止邊是指橫向排版時文字塊外包框的右邊或者豎向排版時指文字塊外包框的底邊;(3)根據(jù)步驟(2)中確定的文字塊的欄寬進(jìn)行分欄。
進(jìn)一步,步驟(2)中,確定文字塊第一欄的起始邊和終止邊的位置時,具體方法如下初始化N=-1,N表示文字塊當(dāng)前欄起始邊在版心欄的序號,N=-1表示文字塊當(dāng)前欄起始邊在版心區(qū)域以外,取出版心背景格的信息,從中得到版心的欄寬數(shù)組,用dStart和dEnd分別表示文字塊當(dāng)前欄的起始邊的坐標(biāo)值和終止邊的坐標(biāo)值,對應(yīng)的欄寬是dEnd-dStart,用hStart和hEnd分別表示版心起始邊的坐標(biāo)值和版心終止邊的坐標(biāo)值,所述版心區(qū)域的坐標(biāo)原點(diǎn)是標(biāo)尺原點(diǎn),X軸的正方向向右,Y軸的正方向向下,然后進(jìn)行以下操作,1)如果文字塊起始邊的坐標(biāo)值<(hStart-欄間距),N=-1,dStart=文字塊起始邊的坐標(biāo)值,dEnd=hStart-欄間距;2)如果文字塊起始邊的坐標(biāo)值>=hEnd,N=-1,dStart=文字塊起始邊的坐標(biāo)值,dEnd=文字塊終止邊的坐標(biāo)值;3)如果不滿足前面兩個條件,則文字塊的起始邊在版心區(qū)域內(nèi),則根據(jù)文字塊起始邊坐標(biāo)值與版心各欄起始邊、終止邊的坐標(biāo)值確定N的數(shù)值,其中,版心背景格的分欄數(shù)>N>=0,dStart=文字塊起始邊的坐標(biāo)值,dEnd=版心第N欄終止邊的坐標(biāo)值。
進(jìn)一步,步驟(2)中,確定文字塊每一欄的欄寬時,具體方法如下a.當(dāng)dStart<文字塊終止邊的坐標(biāo)值,并且文字塊當(dāng)前的分欄數(shù)<版心分欄數(shù)+2時(因?yàn)樽詣臃謾诘奈淖謮K最多可以分成的欄數(shù)=版心分欄數(shù)+2),進(jìn)入循環(huán);b.如果dStart>=hEnd、或者dEnd<=版心第N+1欄起始邊的坐標(biāo)值,則當(dāng)前欄是文字塊的最后一欄,dEnd=文字塊終止邊的坐標(biāo)值,退出循環(huán);c.否則就不是最后一欄,dEnd=版心第N欄終止邊的坐標(biāo)值,文字塊當(dāng)前欄的欄寬=dEnd-dStart;d.然后,版心欄序號N=N+1,dStart=dEnd+欄間距,更新版心第N欄的起始邊和終止邊的坐標(biāo)值,重復(fù)步驟a到d。
更進(jìn)一步,確定文字塊的欄寬時1)如果文字塊的起始邊落在版心第N欄終止欄線和第N+1欄起始欄線之間的區(qū)域內(nèi),則將從文字塊起始邊到第N+1欄的起始欄線處的部分并入文字塊的第一欄,欄間距區(qū)域內(nèi)的部分不單獨(dú)分為一欄;2)如果文字塊的終止邊落在版心第N欄終止欄線和第N+1起始欄線之間的區(qū)域內(nèi),則將從第N欄終止欄線到文字塊終止邊的部分并入文字塊的最后一欄。
進(jìn)一步,步驟(3)中,文字塊內(nèi)所有欄的欄寬確定之后,分欄之前,如果排版方向是反向橫排,則把欄寬數(shù)組進(jìn)行反轉(zhuǎn)。
本發(fā)明的效果在于采用本發(fā)明所述的方法,排版人員在對文字塊進(jìn)行分欄操作時可以實(shí)現(xiàn)自動分欄,不必手工調(diào)整欄寬,可以實(shí)現(xiàn)既準(zhǔn)確又快速地在版心背景格的特定位置對文字塊進(jìn)行自動分欄,精確性和效率均大大提高。
圖1是本發(fā)明所述方法的具體實(shí)施方式
的流程圖;圖2橫排的版心示意圖;圖3正向橫排的文字塊不分欄的效果示意圖;圖4正向橫排的文字塊自動分欄的效果示意圖;圖5正向豎排文字塊不分欄的效果示意圖;圖6正向豎排文字塊自動分欄的效果示意圖;圖7正向橫排文字塊的起始邊、終止邊在版心欄間距區(qū)域內(nèi)的不分欄效果示意圖;圖8正向橫排文字塊的起始邊、終止邊在版心欄間距區(qū)域內(nèi)的自動分欄效果示意圖;圖9正向橫排文字塊的起始邊、終止邊在版心欄間距區(qū)域內(nèi)未經(jīng)特殊處理的模擬效果示意圖。
具體實(shí)施例方式
下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步的描述如圖2所示,版心21分為四個欄,分別為第0欄24、第1欄25第2欄26第3欄27,版心起始邊和終止邊分別如圖2中的22、23所示,第1欄起始邊和終止邊分別如圖2中的28、29所示。其中的網(wǎng)格為版心背景格,版心背景格填充整個版心21區(qū)域。
本實(shí)施例中,首先定義下面技術(shù)術(shù)語的含義文字塊起始邊橫向排版時指文字塊外包框的左邊(X值,如圖4中的41),豎向排版時指文字塊外包框的頂邊(Y值,如圖6中的61)。
文字塊終止邊橫向排版時指文字塊外包框的右邊(X值,如圖4中的42),豎向排版時指文字塊外包框的底邊(Y值,如圖6中的62)。
版心當(dāng)前欄的起始邊橫向排版時指版心當(dāng)前欄排版區(qū)域的最左位置(X值,如圖2中的28表示第1欄的起始邊),豎向排版時指版心當(dāng)前欄排版區(qū)域的最頂位置(Y值)。
版心當(dāng)前欄的終止邊橫向排版時指版心當(dāng)前欄排版區(qū)域的最右位置(X值,如圖2中的29表示第1欄的終止邊),豎向排版時指版心當(dāng)前欄排版區(qū)域的最底位置(Y值)。
版心起始邊橫向排版時指版心區(qū)域的最左位置(X值,如圖2中的22),豎向排版時指版心區(qū)域的最頂位置(Y值)。
版心終止邊橫向排版時指版心區(qū)域的最右位置(X值,如圖2中的23),豎向排版時指版心區(qū)域的最底位置(Y值)。
本實(shí)施例中,所述版心區(qū)域的坐標(biāo)原點(diǎn)是標(biāo)尺原點(diǎn),X軸的正方向向右,Y軸的正方向向下。
如圖1所示,一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法,包括以下步驟(1)首選確定需要分欄的文字塊,獲取版心背景格的信息,得到版心各欄的欄寬數(shù)組,確定文字塊和版心背景格的相對位置;(2)根據(jù)文字塊和版心背景格的相對位置,確定文字塊第一欄的起始邊和終止邊的位置,并確定文字塊每一欄的欄寬;確定文字塊第一欄的起始邊和終止邊的位置時,本實(shí)例中采用的具體方法如下初始化N=-1,N表示文字塊當(dāng)前欄起始邊在版心欄的序號,N=-1表示文字塊當(dāng)前欄起始邊在版心區(qū)域以外,取出版心背景格的信息,從中得到版心各欄的欄寬數(shù)組,用dStart和dEnd分別表示文字塊當(dāng)前欄的起始邊的坐標(biāo)值和終止邊的坐標(biāo)值,對應(yīng)的欄寬是dEnd-dStart,用hStart和hEnd分別表示版心起始邊的坐標(biāo)值和版心終止邊的坐標(biāo)值,然后進(jìn)行以下操作,1)如果文字塊起始邊的坐標(biāo)值<(hStart-欄間距),N=-1,dStart=文字塊起始邊的坐標(biāo)值,dEnd=hStart-欄間距;2)如果文字塊起始邊的坐標(biāo)值>=hEnd,N=-1,dStart=文字塊起始邊的坐標(biāo)值,dEnd=文字塊終止邊的坐標(biāo)值;3)如果不滿足前面兩個條件,則文字塊的起始邊在版心區(qū)域內(nèi),則根據(jù)文字塊起始邊坐標(biāo)值與版心各欄起始邊、終止邊的坐標(biāo)值確定N的數(shù)值,其中,版心背景格的分欄數(shù)>N>=0,dStart=文字塊起始邊的坐標(biāo)值,dEnd=版心第N欄終止邊的坐標(biāo)值。
確定文字塊每一欄的欄寬時,本實(shí)施例中采用的具體方法如下a.當(dāng)dStart<文字塊終止邊的坐標(biāo)值,并且文字塊當(dāng)前的分欄數(shù)<版心分欄數(shù)+2時,進(jìn)入循環(huán);b.如果dStart>=hEnd、或者dEnd<=版心第N+1欄起始邊的坐標(biāo)值,則當(dāng)前欄是文字塊的最后一欄,dEnd=文字塊終止邊的坐標(biāo)值,退出循環(huán);c.否則就不是最后一欄,dEnd=版心第N欄終止邊的坐標(biāo)值,文字塊當(dāng)前欄的欄寬=dEnd-dStart;d.然后,版心欄序號N=N+1,dStart=dEnd+欄間距,更新版心第N欄的起始邊和終止邊的坐標(biāo)值,重復(fù)步驟a到d。
如圖7和圖8所示,如果在上述確定欄寬的過程中,遇到下述問題則特殊處理1)如果文字塊的起始邊落在版心第N欄終止欄線和第N+1欄起始欄線之間的區(qū)域內(nèi),如圖8中的81所示,則從文字塊起始邊到第N+1欄的起始欄線處,并入文字塊的第一欄,欄間距區(qū)域內(nèi)的部分不單獨(dú)分為一欄。圖8中,文字塊起始邊81落在版心第1欄終止欄線83和第2欄起始欄線84之間的區(qū)域內(nèi),如果嚴(yán)格地把文字塊分成所有欄的欄寬和版心欄寬都相等的情況,就會出現(xiàn)圖9的結(jié)果,圖中區(qū)域91的寬度不夠1個欄間距的寬度,排版中也不允許出現(xiàn)半個欄間距的情況,因此把圖9中的91區(qū)域合并到文字塊的第一欄,就是圖8的效果。這樣,當(dāng)文字塊在版心區(qū)域中進(jìn)行自動分欄時,文字塊一欄的最大寬度=版心欄寬+1個版心欄間距;文字塊在版心區(qū)域外時,就不受這個最大寬度的限制了。
2)如果文字塊的終止邊落在版心第N欄終止欄線和第N+1起始欄線之間的區(qū)域內(nèi),如圖8中的82所示,則從第N欄終止欄線到文字塊終止邊,并入文字塊的最后一欄。圖8中,文字塊終止邊82落在版心第3欄終止欄線85和第4欄起始欄線86之間的區(qū)域內(nèi),合并前后的對比參見圖8和圖9。
(3)根據(jù)步驟(2)中確定的文字塊的欄寬進(jìn)行分欄,文字塊內(nèi)所有欄的欄寬確定之后,如果排版方向是反向橫排,就把欄寬數(shù)組進(jìn)行反轉(zhuǎn),在其它排版方向時保持不變。然后進(jìn)行分欄,分欄的方法與現(xiàn)有的普通分欄方法相同。
如圖3、圖5、圖7是沒有根據(jù)版心背景格進(jìn)行文字塊分欄的示意圖,圖4、圖6、圖8分別是圖3、圖5、圖7采用本發(fā)明所述方法根據(jù)版心背景格自動分欄后的效果示意圖。如圖3和圖4所示,當(dāng)版心背景格是橫排時,網(wǎng)格行附近的數(shù)字表示版心背景格行序號,網(wǎng)格列附近的數(shù)字表示版心背景格欄的序號。圖4中,41表示文字塊起始邊,42表示文字塊終止邊。圖8是圖7采用本發(fā)明所述方法特殊處理后的效果,圖9是圖7中沒有用本發(fā)明所述方法特殊處理的效果,實(shí)際排版中不會出現(xiàn)圖9的效果。
另外,對本發(fā)明所述的分欄方法其應(yīng)用范圍說明如下(1)只有當(dāng)文字塊的排版方向和版心背景格的排版方向都是橫排或者都是豎排的時候,本發(fā)明所述的自動分欄才會有效果;如果版心背景格是橫排,文字塊是豎排,或者版心背景格是豎排,文字塊是橫排,則該文字塊只有一欄。當(dāng)文字塊的排版跟版心背景格的排版方向調(diào)整為一致后,仍然可以得到根據(jù)本發(fā)明所述的方法進(jìn)行自動分欄后的效果。
(2)只有文字塊與版心有重疊區(qū)域的時候,本發(fā)明所述的自動分欄才有效果;如果文字塊與版心沒有重疊區(qū)域,則該文字塊為一欄。當(dāng)調(diào)整文字塊或者版心使兩者有重疊區(qū)域后,仍然可以得到根據(jù)本發(fā)明所述的方法進(jìn)行自動分欄后的效果。
本發(fā)明所述的方法并不限于具體實(shí)施方式
中所述的實(shí)施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的技術(shù)方案得出其他的實(shí)施方式,同樣屬于本發(fā)明的技術(shù)創(chuàng)新范圍。
權(quán)利要求
1.一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法,包括以下步驟(1)確定需要分欄的文字塊,獲取版心背景格的信息,得到版心各欄的欄寬數(shù)組,確定文字塊和版心背景格的相對位置;(2)根據(jù)文字塊和版心背景格的相對位置,確定文字塊第一欄的起始邊和終止邊的位置,并確定文字塊每一欄的欄寬,所述的文字塊起始邊是指橫向排版時文字塊外包框的左邊或者豎向排版時文字塊外包框的頂邊,所述的文字塊終止邊是指橫向排版時文字塊外包框的右邊或者豎向排版時指文字塊外包框的底邊;(3)根據(jù)步驟(2)中確定的文字塊的欄寬進(jìn)行分欄。
2.如權(quán)利要求1所述的一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法,其特征是步驟(2)中,確定文字塊第一欄的起始邊和終止邊的位置時,具體方法如下初始化N=-1,N表示文字塊當(dāng)前欄起始邊在版心欄的序號,N=-1表示文字塊當(dāng)前欄起始邊在版心區(qū)域以外,取出版心背景格的信息,從中得到版心的欄寬數(shù)組,用dStart和dEnd分別表示文字塊當(dāng)前欄的起始邊的坐標(biāo)值和終止邊的坐標(biāo)值,對應(yīng)的欄寬是dEnd-dStart,用hStart和hEnd分別表示版心起始邊的坐標(biāo)值和版心終止邊的坐標(biāo)值,所述版心區(qū)域的坐標(biāo)原點(diǎn)是標(biāo)尺原點(diǎn),X軸的正方向向右,Y軸的正方向向下,然后進(jìn)行以下操作,1)如果文字塊起始邊的坐標(biāo)值<(hStart-欄間距),則N=-1,dStart=文字塊起始邊的坐標(biāo)值,dEnd=hStart-欄間距;2)如果文字塊起始邊的坐標(biāo)值>=hEnd,則N=-1,dStart=文字塊起始邊的坐標(biāo)值,dEnd=文字塊終止邊的坐標(biāo)值;3)如果不滿足前面兩個條件,則文字塊的起始邊在版心區(qū)域內(nèi),則根據(jù)文字塊起始邊坐標(biāo)值與版心各欄起始邊、終止邊的坐標(biāo)值確定N的數(shù)值,其中,版心背景格的分欄數(shù)>N>=0,dStart=文字塊起始邊的坐標(biāo)值,dEnd=版心第N欄終止邊的坐標(biāo)值。
3.如權(quán)利要求1或2所述的一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法,其特征是步驟(2)中,確定文字塊每一欄的欄寬時,具體方法如下a.當(dāng)dStart<文字塊終止邊的坐標(biāo)值,并且文字塊當(dāng)前的分欄數(shù)<版心分欄數(shù)+2時,進(jìn)入循環(huán);b.如果dStart>=hEnd、或者dEnd<=版心第N+1欄起始邊的坐標(biāo)值,則當(dāng)前欄是文字塊的最后一欄,dEnd=文字塊終止邊的坐標(biāo)值,退出循環(huán);c.否則就不是最后一欄,dEnd=版心第N欄終止邊的坐標(biāo)值,文字塊當(dāng)前欄的欄寬=dEnd-dStart;d.然后,版心欄序號N=N+1,dStart=dEnd+欄間距,更新版心第N欄的起始邊和終止邊的坐標(biāo)值,重復(fù)步驟a到d。
4.如權(quán)利要求3所述的一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法,其特征是確定文字塊的欄寬時1)如果文字塊的起始邊落在版心第N欄終止欄線和第N+1欄起始欄線之間的區(qū)域內(nèi),則將從文字塊起始邊到第N+1欄的起始欄線處的部分并入文字塊的第一欄,欄間距區(qū)域內(nèi)的部分不單獨(dú)分為一欄;2)如果文字塊的終止邊落在版心第N欄終止欄線和第N+1起始欄線之間的區(qū)域內(nèi),則將從第N欄終止欄線到文字塊終止邊的部分并入文字塊的最后一欄。
5.如權(quán)利要求1、2或3所述的一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法,其特征是步驟(3)中,文字塊內(nèi)所有欄的欄寬確定之后,分欄之前,如果排版方向是反向橫排,則把欄寬數(shù)組進(jìn)行反轉(zhuǎn)。
6.如權(quán)利要求4所述的一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法,其特征是步驟(3)中,文字塊內(nèi)所有欄的欄寬確定之后,分欄之前,如果排版方向是反向橫排,則把欄寬數(shù)組進(jìn)行反轉(zhuǎn)。
全文摘要
本發(fā)明屬于印刷排版領(lǐng)域,具體涉及一種根據(jù)版心背景格對文字塊進(jìn)行自動分欄的方法?,F(xiàn)有的方法中,排版人員對文字塊進(jìn)行分欄時,按照文字塊的寬度進(jìn)行平均分欄,然后再手工進(jìn)行調(diào)整欄線位置,以使文字塊欄線的位置與版心背景格欄線的位置重合,費(fèi)時費(fèi)力,準(zhǔn)確性不高。本發(fā)明所述的方法,首先確定文字塊和版心背景格的相對位置;然后據(jù)此確定文字塊第一欄的起始邊和終止邊的位置,并確定文字塊每一欄的欄寬;最后根據(jù)確定的文字塊的欄寬進(jìn)行自動分欄。采用本發(fā)明所述的方法,使排版人員在對文字塊進(jìn)行分欄操作時可以實(shí)現(xiàn)自動分欄,不必手工調(diào)整欄寬,可以實(shí)現(xiàn)既準(zhǔn)確又快速地在版心背景格的特定位置對文字塊進(jìn)行自動分欄,精確性和效率均大大提高。
文檔編號G06F17/25GK1821994SQ200610066428
公開日2006年8月23日 申請日期2006年3月31日 優(yōu)先權(quán)日2006年3月31日
發(fā)明者唐英敏, 姜來, 鄭海棠 申請人:北京北大方正電子有限公司, 北京大學(xué)