專利名稱:一種單調(diào)區(qū)域的文字排版方法
技術(shù)領(lǐng)域:
本發(fā)明屬于印刷前計算機(jī)排版領(lǐng)域,具體涉及一種單調(diào)區(qū)域的文字排版方法。
背景技術(shù):
在報刊書籍的排版中,文字排版的效果越來越豐富,文字的排版區(qū)域也越來越復(fù)雜,排版系統(tǒng)對于復(fù)雜的排版區(qū)域內(nèi)文字排版的處理過程是首先將復(fù)雜的排版區(qū)域分割為多個按序排列的單調(diào)區(qū)域,然后依次完成文字在各個單調(diào)區(qū)域內(nèi)的排版。所述的單調(diào)區(qū)域是一個閉合的區(qū)域,該區(qū)域的特征是任何一條水平直線穿過該區(qū)域時,與其邊界的有效交點(diǎn)不多于兩個,對于該區(qū)域邊界上有水平線段與水平直線重合的情況,只計算水平直線進(jìn)入該區(qū)域的入點(diǎn)和穿出該區(qū)域的出點(diǎn)為有效交點(diǎn);對于豎排文字的情況,如果對于閉合的排版區(qū)域在任何一條垂直直線穿過時,有效交點(diǎn)也符合上述特征,那么該區(qū)域也稱為單調(diào)區(qū)域。
在現(xiàn)有的技術(shù)中,文字排版的單調(diào)區(qū)域在開始文字排版之前即分割完成,在文字排版過程中不重新計算單調(diào)區(qū)域。當(dāng)文字W在單調(diào)區(qū)域內(nèi)進(jìn)行排版時,判斷該單調(diào)區(qū)域能否排版當(dāng)前文字W的方法是判斷文字W排版后所在行的外接矩形是否超出了單調(diào)區(qū)域的范圍,所述的行的外接矩形是兩條邊與排版方向平行,另外兩條邊與排版方向垂直,同時能夠?qū)⒃撔袃?nèi)的所有文字都包含在內(nèi)的面積最小的矩形。如果文字W排版后所在行的外接矩形超出了單調(diào)區(qū)域,則確定文字W不能在該單調(diào)區(qū)域內(nèi)進(jìn)行排版,如果文字W排版后所在行的外接矩形沒有超出單調(diào)區(qū)域,則能直接確定文字W在單調(diào)區(qū)域內(nèi)進(jìn)行排版。顯然該方法的應(yīng)用是有局限性的,如果單調(diào)區(qū)域是規(guī)則的矩形時,這種方法處理很準(zhǔn)確,能將文字W排入合適的位置,也能充分利用排版區(qū)域;但是當(dāng)單調(diào)區(qū)域不是規(guī)則的矩形的時候,這種處理方法往往不能準(zhǔn)確的計算出單調(diào)區(qū)域能否排版文字W,從而導(dǎo)致排版區(qū)域不能被充分利用,影響了排版效果,浪費(fèi)了排版的版面。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的是提供一種單調(diào)區(qū)域的文字排版方法,該方法在進(jìn)行文字排版的過程中能夠適時對原始的單調(diào)區(qū)域進(jìn)行分割,計算出新的單調(diào)區(qū)域,并在新的單調(diào)區(qū)域內(nèi)進(jìn)行文字排版,能夠充分利用排版區(qū)域,能夠提高文字排版的精確度和美觀性。
為達(dá)到以上目的,本發(fā)明采用的技術(shù)方案是一種單調(diào)區(qū)域的文字排版方法,包括以下步驟(1)在排版過程中,將排版區(qū)域分割為按序排列的單調(diào)區(qū)域,將擬排版的文字W所在的行設(shè)為當(dāng)前行,并設(shè)置當(dāng)前行所在的單調(diào)區(qū)域R為初始單調(diào)區(qū)域;(2)在步驟(1)中所述的初始單調(diào)區(qū)域內(nèi)試排當(dāng)前文字W,判斷文字W所在的行即當(dāng)前行的外接矩形B是否超出了初始單調(diào)區(qū)域,如果沒有超出,則排版文字W,取得下一個文字作為當(dāng)前文字繼續(xù)排版,如果超出則執(zhí)行步驟(3);(3)如果文字W的高度等于所在行的行高,則進(jìn)行折行處理并執(zhí)行步驟(2),如果文字W的高度小于所在行的行高,則執(zhí)行步驟(4);(4)取得文字W排版前的行外接矩形C,通過行外接矩形C的上下邊界并沿排版方向作平行線與初始單調(diào)區(qū)域R的邊界相交,由此形成的閉合區(qū)域作為動態(tài)單調(diào)區(qū)域r,在動態(tài)單調(diào)區(qū)域r內(nèi)排版文字W,如果排版成功,則執(zhí)行步驟(5),否則執(zhí)行步驟(6);(5)取得下一個文字作為當(dāng)前文字,以動態(tài)單調(diào)區(qū)域r作為初始單調(diào)區(qū)域,執(zhí)行步驟(2);(6)返回初始單調(diào)區(qū)域R,進(jìn)行折行處理,然后按照步驟(2)對當(dāng)前文字W進(jìn)行排版,排版完所有的文字后,處理結(jié)束。
進(jìn)一步,在步驟(4)中,在動態(tài)單調(diào)區(qū)域內(nèi)排版文字W的具體步驟是1)根據(jù)文字W所在的當(dāng)前行的基線對齊參數(shù),計算出當(dāng)前行的基線位置,作為文字W在動態(tài)單調(diào)區(qū)域r內(nèi)的基線位置;2)按照基線對齊位置對文字W進(jìn)行試排,判斷動態(tài)單調(diào)區(qū)域r內(nèi)的已排版文字的行外接矩形是否超出動態(tài)單調(diào)區(qū)域r的范圍,如果沒有超出則排版文字W,否則排版失敗。
更進(jìn)一步,基線對齊參數(shù)取值范圍從0到256,其中0表示文字頂齊,256表示文字底齊,128表示文字中齊。
本發(fā)明的效果在于采用本發(fā)明所述的方法,可以在文字排版過程中適時計算出新的單調(diào)區(qū)域,并能在新的單調(diào)區(qū)域內(nèi)按照原單調(diào)區(qū)域內(nèi)的文字對齊方式對文字進(jìn)行排版,從而可以充分利用排版區(qū)域,提高了文字排版的精確度,具有良好的排版效果。
圖1是本發(fā)明所述方法的流程圖;圖2是實施例中所述的文字在矩形排版區(qū)域內(nèi)的排版效果圖;圖3是本實例中擬進(jìn)行文字排版的單調(diào)區(qū)域示意圖;圖4是采用現(xiàn)有技術(shù)在圖3所示的單調(diào)區(qū)域內(nèi)進(jìn)行排版文字的效果圖;圖5是采用本發(fā)明所述的方法試排當(dāng)前文字時計算出來的行外接矩形的示意圖;圖6是本實施例中計算出來的動態(tài)單調(diào)區(qū)域的示意圖;圖7是采用本發(fā)明所述的方法在基線對齊為底齊時排版文字的示意圖;圖8是圖7的基礎(chǔ)上采用本發(fā)明所述的方法實現(xiàn)最終排版后的效果示意圖;圖9a,9b,9c是采用基線對齊為上齊情況下的排版結(jié)果對比示意圖;圖10a,10b,10c是采用基線對齊為中齊情況下的排版結(jié)果對比示意圖。
具體實施例方式
下面結(jié)合實施例和附圖,對本發(fā)明作進(jìn)一步的闡述在本實施例中,擬在一行內(nèi)排版文字“一步兩個臺階”,為了達(dá)到形象的效果,對排版內(nèi)容以兩個字為一組,依次設(shè)置由大到小不同的字號,基線對齊采用底齊的方式,那么在一個規(guī)則的矩形排版區(qū)域內(nèi)的排版效果如圖2所示,但是在實際排版過程中,為了充分利用排版空間并使排版元素之間不產(chǎn)生疊加關(guān)系,本實施例的文字排版的單調(diào)區(qū)域調(diào)整為如圖3所示,如采用現(xiàn)有技術(shù)所述的方法,將本實施例中的文字“一步兩個臺階”排入到如圖3所示的單調(diào)區(qū)域內(nèi)時,其排版結(jié)果如圖4所示,文字“兩個臺階”部分會被判斷為排不下,排版的區(qū)域還有很多空閑;如采用本發(fā)明所述的方法,其排版效果將會大有不同,排版區(qū)域會得到充分利用,具體如下如圖1所示,一種單調(diào)區(qū)域的文字排版方法,包括以下步驟
(1)在排版過程中,將排版區(qū)域分割為按序排列的單調(diào)區(qū)域,將擬排版的文字W所在的行設(shè)為當(dāng)前行,并設(shè)置當(dāng)前行所在的單調(diào)區(qū)域R為初始單調(diào)區(qū)域;本實施例中,如圖3所示,擬排版的文字“一步兩個臺階”所在的單調(diào)區(qū)域R是由交點(diǎn)1、2、3、4、5、6、7和交點(diǎn)8所組成的閉合區(qū)域,該單調(diào)區(qū)域即為初始的單調(diào)區(qū)域;(2)在步驟(1)中所述的初始單調(diào)區(qū)域內(nèi)試排當(dāng)前文字W,判斷文字W所在的行即當(dāng)前行的外接矩形B是否超出了初始單調(diào)區(qū)域,如果沒有超出,則排版文字W,取得下一個文字作為當(dāng)前文字繼續(xù)排版,如果超出則執(zhí)行步驟(3);本實施例中,在初始單調(diào)區(qū)域內(nèi),根據(jù)行外接矩形是否超出初始單調(diào)區(qū)域范圍的判斷方法確定能夠排版下 “一步”兩個字,其下一個字“兩”作為當(dāng)前文字進(jìn)行試排時,判斷為當(dāng)前行的外接矩形如圖5中的虛線框所示,超出了初始單調(diào)區(qū)域的范圍,因此繼續(xù)執(zhí)行步驟(3);(3)如果文字W的高度等于所在行的行高,則進(jìn)行折行處理并重復(fù)執(zhí)行步驟(2),如果文字W的高度小于所在行的行高,則執(zhí)行步驟(4);本實施例中,由于當(dāng)前文字“兩”的字高小于所在行的行高,因此執(zhí)行步驟(4);(4)取得文字W排版前的行外接矩形C,通過行外接矩形C的上下邊界并沿排版方向作平行線與初始單調(diào)區(qū)域R的邊界相交,由此形成的閉合區(qū)域作為動態(tài)單調(diào)區(qū)域r,在動態(tài)單調(diào)區(qū)域r內(nèi)排版文字W,如果排版成功,則執(zhí)行步驟(5),否則執(zhí)行步驟(6);在本實施例中,當(dāng)前文字“兩”之前的文字“一步”已經(jīng)排版到了初始單調(diào)區(qū)域中,由文字“一步”所形成的行外接矩形為交點(diǎn)9、10、11、12所形成的矩形C,通過外接矩形C的上下邊界即邊線9-10和邊線12-11沿排版方向所作的平行線即直線9-15和直線12-16與步驟(1)中所述的初始單調(diào)區(qū)域的邊界相交,由此形成的閉合區(qū)域為動態(tài)單調(diào)區(qū)域如圖6所示,即由交點(diǎn)10、13、3、4、5、6、14、11所圍成的閉合區(qū)域即為動態(tài)單調(diào)區(qū)域r;其中在動態(tài)單調(diào)區(qū)域內(nèi)排版文字W的具體步驟是1)根據(jù)文字W所在的當(dāng)前行的基線對齊參數(shù),計算出當(dāng)前行的基線位置,作為文字W在動態(tài)單調(diào)區(qū)域r內(nèi)的基線位置,基線對齊參數(shù)取值范圍從0到256,其中0表示文字頂齊,256表示文字底齊,128表示文字中齊;本實施例中,根據(jù)當(dāng)前文字“兩”所在的當(dāng)前行的基線對齊參數(shù),本實施例中采用底齊的方式,確定當(dāng)前行的基線位置,并作為當(dāng)前文字“兩”在動態(tài)單調(diào)區(qū)域r內(nèi)排版時的基線位置;2)按照基線對齊位置對文字W進(jìn)行試排,判斷動態(tài)單調(diào)區(qū)域r內(nèi)的已排版文字行的外接矩形是否超出動態(tài)單調(diào)區(qū)域r的范圍,如果沒有超出則排版文字W,否則排版失?。槐緦嵤├?,在由交點(diǎn)10、13、3、4、5、6、14、11所圍成的動態(tài)單調(diào)區(qū)域r中,通過采用本步驟中比較行外接矩形是否超出動態(tài)單調(diào)區(qū)域r的方法,判斷出當(dāng)前文字“兩”可以排下,因此對當(dāng)前文字“兩”進(jìn)行排版,排版結(jié)果如圖7所示;(5)取得下一個文字作為當(dāng)前文字,以動態(tài)單調(diào)區(qū)域r作為初始單調(diào)區(qū)域,執(zhí)行步驟(2);本實施例中,對于仍然未排版的文字“個臺階”依次按照本步驟(5)所述的方法進(jìn)行排版,最終得到的排版結(jié)果如圖8所示;(6)由于本實施例中,經(jīng)過步驟(5)已完成所有文字的排版,不必再進(jìn)行步驟(6)的操作,因此排版完所有的文字后,處理結(jié)束。
上述實施例是采用如圖3所示的單調(diào)區(qū)域并且在基線對齊為底齊的情況下得到的,如果步驟(1)中的單調(diào)區(qū)域采用圖9(b)或者圖10(b)所示的排版區(qū)域,并且在步驟(4)中采用基線上齊或者中齊的對齊方式時,其排版效果的對比如圖9、圖10所示,其中圖9(a)、圖10(a)為排版區(qū)域為規(guī)則的矩形的情況下的效果示意圖;圖9(b)、圖10(b)為排版區(qū)域的單調(diào)區(qū)域發(fā)生改變之后,采用現(xiàn)有方法后得到的排版效果示意圖,因為將文字“兩個臺階”判斷為排不下,所以,只排版出了“一步”兩個字;圖9(c)、圖10(c)是采用了本發(fā)明所述的方法之后,在與圖9(b)、圖10(b)同樣的單調(diào)區(qū)域內(nèi)排版同樣文字后得到的不同效果示意圖,結(jié)果是所有的文字都被排版了,充分利用了排版的版面空間。
本發(fā)明所述的方法并不限于具體實施方式
中所述的實施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的技術(shù)方案得出其他的實施方式,同樣屬于本發(fā)明的技術(shù)創(chuàng)新范圍。
權(quán)利要求
1.一種單調(diào)區(qū)域的文字排版方法,包括以下步驟(1)在排版過程中,將排版區(qū)域分割為按序排列的單調(diào)區(qū)域,將擬排版的文字W所在的行設(shè)為當(dāng)前行,并設(shè)置當(dāng)前行所在的單調(diào)區(qū)域R為初始單調(diào)區(qū)域;(2)在步驟(1)中所述的初始單調(diào)區(qū)域內(nèi)試排當(dāng)前文字W,判斷文字W所在的行即當(dāng)前行的外接矩形B是否超出了初始單調(diào)區(qū)域,如果沒有超出,則排版文字W,取得下一個文字作為當(dāng)前文字繼續(xù)排版,如果超出則執(zhí)行步驟(3);(3)如果文字W的高度等于所在行的行高,則進(jìn)行折行處理并執(zhí)行步驟(2),如果文字W的高度小于所在行的行高,則執(zhí)行步驟(4);(4)取得文字W排版前的行外接矩形C,通過行外接矩形C的上下邊界并沿排版方向作平行線與初始單調(diào)區(qū)域R的邊界相交,由此形成的閉合區(qū)域作為動態(tài)單調(diào)區(qū)域r,在動態(tài)單調(diào)區(qū)域r內(nèi)排版文字W,如果排版成功,則執(zhí)行步驟(5),否則執(zhí)行步驟(6);(5)取得下一個文字作為當(dāng)前文字,以動態(tài)單調(diào)區(qū)域r作為初始單調(diào)區(qū)域,執(zhí)行步驟(2);(6)返回初始單調(diào)區(qū)域R,進(jìn)行折行處理,然后按照步驟(2)對當(dāng)前文字W進(jìn)行排版,排版完所有的文字后,處理結(jié)束。
2.如權(quán)利要求1所述的一種單調(diào)區(qū)域的文字排版方法,其特征是步驟(4)中,在動態(tài)單調(diào)區(qū)域內(nèi)排版文字W的具體步驟是1)根據(jù)文字W所在的當(dāng)前行的基線對齊參數(shù),計算出當(dāng)前行的基線位置,作為文字W在動態(tài)單調(diào)區(qū)域r內(nèi)的基線位置;2)按照基線對齊位置對文字W進(jìn)行試排,判斷動態(tài)單調(diào)區(qū)域r內(nèi)的已排版文字的行外接矩形是否超出動態(tài)單調(diào)區(qū)域r的范圍,如果沒有超出則排版文字W,否則排版失敗。
3.如權(quán)利要求2所述的一種單調(diào)區(qū)域的文字排版方法,其特征是基線對齊參數(shù)取值范圍從0到256,其中0表示文字頂齊,256表示文字底齊,128表示文字中齊。
全文摘要
本發(fā)明涉及一種單調(diào)區(qū)域的文字排版方法,屬于印刷前計算機(jī)排版領(lǐng)域?,F(xiàn)有技術(shù)中,判斷單調(diào)區(qū)域內(nèi)能否排版當(dāng)前文字W的方法是判斷文字W排版后所在行的外接矩形是否超出了單調(diào)區(qū)域的范圍,當(dāng)單調(diào)區(qū)域不是規(guī)則的矩形的時候,這種處理方法往往不能準(zhǔn)確的計算出單調(diào)區(qū)域能否排版文字W,從而導(dǎo)致排版區(qū)域不能被充分利用,影響了排版效果。本發(fā)明所述的方法是當(dāng)以行外接矩形的方法判斷不能排版文字W后,對原始的單調(diào)區(qū)域進(jìn)行分割,計算新的單調(diào)區(qū)域,并在新的單調(diào)區(qū)域內(nèi)進(jìn)行文字排版。采用本發(fā)明所述的方法,可以明顯提高文字排版的精確度,充分利用排版區(qū)域,具有良好的排版效果。
文檔編號G06F17/25GK1952923SQ200610114740
公開日2007年4月25日 申請日期2006年11月22日 優(yōu)先權(quán)日2006年11月22日
發(fā)明者閆國龍 申請人:北京北大方正電子有限公司, 北京大學(xué), 北大方正集團(tuán)有限公司