亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種文字排版的方法

文檔序號:6560801閱讀:134來源:國知局
專利名稱:一種文字排版的方法
技術領域
本發(fā)明屬于印刷前計算機排版領域,具體涉及一種文字排版的方法。
背景技術
目前,各種書籍、報刊等出版物在正式印刷出版前,都需要將待出版的文字內(nèi)容通過排版軟件進行排版,將文字內(nèi)容排版成用戶指定的格式,然后將排版后的文字內(nèi)容通過印刷形成正式出版物。文字的排版過程就是利用排版軟件將文字內(nèi)容按順序排列到一個或者多個指定的排版區(qū)域之中,并對文字設置對應的樣式屬性的過程。
現(xiàn)有技術中,文字的排版方法是取得待排版的文字(標記為W),依據(jù)上一個字的排版位置,確定文字W是否能夠在當前行排下,如果能夠排下,則在當前行排版文字W,如果排不下,則換行,從下一行的起始位置排版文字W。因此一篇文章的排版是順次執(zhí)行的,即在確定了上一個字的排版位置之后,再開始下一個字的排版,這種排版方法沒有充分發(fā)揮計算機的多核處理器以及多線程機制的并發(fā)處理能力,限制了排版效率的提高。

發(fā)明內(nèi)容
針對現(xiàn)有技術中存在的缺陷,本發(fā)明的目的是提供一種文字排版的方法,該方法能夠充分利用計算機的并行處理能力,能夠同時對拆分后的各部分文字分別在寬度、高度不受限的區(qū)域進行排版,取得多個單行排版結果,然后依據(jù)指定的排版區(qū)域,依次對各個單行進行折行處理,最后完成排版,能夠充分利用計算機資源,大大提高排版效率。
為達到以上目的,本發(fā)明采用的技術方案是一種文字排版的方法,包括以下步驟(1)在排版軟件中確定排版區(qū)域,所述的排版區(qū)域為矩形區(qū)域;(2)取得待排版的文字內(nèi)容,以換段符、換行符為分界符,對待排版的文字內(nèi)容進行拆分,所述的換段符、換行符作為文字內(nèi)容進行拆分的分界符,稱為硬回車符,即在排版軟件的任一排版區(qū)域中,所述的換段符、換行符均作為換段和換行的標志;
(3)對步驟(2)中拆分后的各部分文字內(nèi)容同時分別在寬度、高度不受限制的排版區(qū)域內(nèi)進行排版,并以行首作為排版的起始位置,從而得到多個單行排版結果,這些單行排版結果稱為邏輯行,得到邏輯行的同時得到各邏輯行的行信息;(4)根據(jù)步驟(1)中確定的排版區(qū)域,按照排版的順序依次計算各個邏輯行內(nèi)的折行位置,對邏輯行進行折行,邏輯行折行后所得到的新行是文字排版的最終行結果,稱為物理行;(5)設置各個物理行在排版區(qū)域內(nèi)的位置,完成排版。
進一步,為使本發(fā)明獲得更好的發(fā)明效果,步驟(1)中,排版區(qū)域為矩形區(qū)域,對于不規(guī)則的排版區(qū)域,排版前將其分割為矩形區(qū)域;進一步,為使本發(fā)明獲得更好的發(fā)明效果,步驟(3)中,所述的邏輯行的行信息包括邏輯行內(nèi)各個文字排版后的位置,邏輯行的行距、行高;如果邏輯行首是以換段符分隔的,還需要記錄段格式信息,包括段間距、段首縮進等參數(shù);其中,所述的邏輯行內(nèi)各個文字排版后的位置是相對位置,即文字排版后的位置表示為該文字相對于行首的位置。
進一步,為使本發(fā)明獲得更好的發(fā)明效果,步驟(3)中,生成邏輯行時,如果一個邏輯行與前一個邏輯行之間是以換段符分隔或者該邏輯行是第一個邏輯行,那么該邏輯行首需要按照段首縮進的參數(shù)值進行偏移。
進一步,步驟(4)中,如果文字排版的排版方向為橫向時,確定邏輯行的折行位置,對邏輯行進行折行時,采用的具體方法如下(a)取得要排版的第一個矩形區(qū)域作為當前排版區(qū)域;(b)取得第一個邏輯行,作為當前邏輯行;(c)比較當前邏輯行的行高與當前排版區(qū)域的可排版高度,如果當前邏輯行的行高小于或等于當前排版區(qū)域的可排版高度,則按照步驟(d)所述的方法對邏輯行進行折行;如果當前邏輯行的行高大于當前排版區(qū)域的可排版高度,則按照步驟(e)所述的方法對邏輯行進行折行;(d)按照當前排版區(qū)域的寬度計算并確定當前邏輯行的第一個折行位置,然后據(jù)此對邏輯行進行折行,折行位置前面的行即為物理行,把該物理行作為當前物理行,重新計算當前邏輯行剩余部分的行高,執(zhí)行步驟(g);(e)從當前邏輯行的第一個字起向后遍歷,計算遍歷內(nèi)容的行高,直到遍歷到當前邏輯行的行高大于當前排版區(qū)域的可排版高度為止,如果截止位置在當前邏輯行首,則直接進入步驟(f);如果截止位置不在當前邏輯行首,則首先按照當前排版區(qū)域的寬度計算出當前邏輯行的擬折行位置,如果擬折行位置處與邏輯行首的距離為a,截止位置與邏輯行首的距離為b,將a與b進行比較,取二者之中的最小值作為折行位置對邏輯行進行折行,將折行位置前面的行作為當前物理行,并重新計算當前邏輯行剩余部分的行高,然后進入步驟(g);(f)如果當前排版區(qū)域已經(jīng)是最后一個矩形區(qū)域,則處理結束;否則取得下一個未排版的矩形區(qū)域作為當前排版區(qū)域,重復執(zhí)行步驟(c);(g)設置當前物理行在當前排版區(qū)域的位置,重新計算當前排版區(qū)域的可排版高度;(h)如果當前邏輯行折行沒有結束,則重復執(zhí)行步驟(c);如果當前邏輯行折行結束,則取下一個邏輯行作為當前邏輯行,重復執(zhí)行步驟(c),直到處理完最后一個邏輯行。
再進一步,步驟(g)中設置當前物理行相對于當前排版區(qū)域的位置,重新計算當前排版區(qū)域的可排版高度時,采用的方法是1)如果當前物理行是當前邏輯行的最后一部分折行結果,并且當前邏輯行與前一邏輯行是以換段符拆分的,那么,新的可排版高度=原來的可排版高度-當前邏輯行的段間距-當前物理行的行高2)如果當前物理行是當前邏輯行的最后一部分折行結果,并且當前邏輯行與前一邏輯行是以換行符拆分的,那么,新的可排版高度等=原來的可排版高度-當前物理行的行間距-當前物理行的行高3)如果當前邏輯行是第一個邏輯行,它前面沒有硬回車符作為分隔符,那么,新的可排版高度=原來的可排版高度-當前物理行的行高。
同理,步驟(4)中,如果文字排版的排版方向為豎排時,取可排版區(qū)域的橫向為高度,取可排版區(qū)域的縱向為寬度,確定邏輯行的折行位置,對邏輯行進行折行時,采用的具體方法與上述方法類似。
本發(fā)明的效果在于采用本發(fā)明所述的方法,能夠充分利用計算機的并發(fā)處理能力,能夠同時對拆分后的各部分文字分別在寬度、高度不受限的區(qū)域進行排版,取得多個單行排版結果,然后再依據(jù)指定的排版區(qū)域,依次對各個單行進行折行處理,最后完成排版,排版速度快,大大提高了文字的排版效率,從而提高了整個版面的制作效率。
本發(fā)明之所以具有良好的發(fā)明效果,其原因在于以硬回車符為界對文字內(nèi)容進行折分,拆分后的各部分文字內(nèi)容的排版采用多線程處理機制,即利用計算機并行處理多條數(shù)據(jù)的能力,假設文字內(nèi)容依據(jù)硬回車符拆分成了n部分,依據(jù)計算機的性能,預定義并發(fā)處理的能力是p即能夠同時處理p部分文字內(nèi)容的同時排版,如果n能夠被p整除,那么并發(fā)執(zhí)行的次數(shù)是n/p次,否則,并發(fā)執(zhí)行的次數(shù)是n/p+1次,而現(xiàn)有的技術沒用利用此種計算機的性能,只能是順序排版文字內(nèi)容,效率較低。


圖1是本發(fā)明所述方法的流程圖;圖2是待排版的文字內(nèi)容的示意圖;圖3是待排版的文字內(nèi)容以硬回車符為界拆分成多個部分的示意圖;圖4是拆分后各部分文字內(nèi)容在不受限的區(qū)域內(nèi)排版后的示意圖;圖5是對邏輯行進行折行的示意圖;圖6是文字排版的最終效果示意圖。
具體實施例方式
下面結合實施例和附圖,對本發(fā)明作進一步的闡述如圖1所示,一種文字排版的方法,包括以下步驟(1)在排版軟件中確定排版區(qū)域,排版區(qū)域由矩形區(qū)域組成,對于不規(guī)則的排版區(qū)域,排版前將其分割為矩形區(qū)域;本實施例中,確定的排版區(qū)域有兩個排版區(qū)域如圖6所示的M0和M1;(2)取得待排版的文字內(nèi)容,以換段符、換行符為分界符,對待排版的文字內(nèi)容進行拆分,所述的換段符、換行符作為文字內(nèi)容進行拆分的分界符,稱為硬回車符,即在排版軟件的任一排版區(qū)域中,所述的換段符、換行符均作為換段和換行的標志;本實施例中,待排版的文字內(nèi)容如圖2所示,文字排版的排版方向為橫向,其中,文字內(nèi)容后面的斜箭頭表示換段符,豎箭頭表示換行符,以換段符、換行符為分界符,對圖2中所示的文字內(nèi)容進行拆分后得到6個部分,如圖3所示;(3)對步驟(2)中拆分后的各部分文字內(nèi)容同時分別在寬度、高度不受限制的排版區(qū)域內(nèi)進行排版,并以行首作為排版的起始位置,從而分別得到多個單行排版結果,這些單行排版結果稱為邏輯行,得到邏輯行的同時得到各邏輯行的行信息;因為拆分后的各部分文字內(nèi)容在寬度和高度不受限的區(qū)域內(nèi)排版,也就是排版區(qū)域的寬度和高度都認為是無限大的,因此,不存在一行排不下的情況,而拆分后的每部分文字內(nèi)容都不包含有硬回車符,所以每部分文字內(nèi)容排版的結果都為一個邏輯行,排版過程中不需要考慮如何折行;本實施例中,記錄的邏輯行的行信息包括邏輯行內(nèi)各個文字排版后的位置,此位置是相對位置,即文字排版后的位置表示為該文字相對于行首的位置,邏輯行的行距、行高,如果邏輯行首是以換段符分隔的,還需要記錄段格式信息,包括段間距、段首縮進等參數(shù);本實施例中,在生成邏輯行時,如果一個邏輯行與前一個邏輯行之間是以換段符分隔或者該邏輯行是第一個邏輯行,那么邏輯行首需要按著段首縮進的參數(shù)值進行偏移;如圖3所示的6部分內(nèi)容在不受限的區(qū)域內(nèi)排版后的結果如圖4所示,即排版后得到了6個邏輯行L1,L2,L3,L4,L5,L6;(4)根據(jù)步驟(1)中確定的排版區(qū)域,按照排版的順序依次計算各個邏輯行內(nèi)的折行位置,對邏輯行進行折行,邏輯行折行后所得到的新行是文字排版的最終行結果,稱為物理行;本實施例中,文字排版的排版方向為橫向,確定邏輯行的折行位置,對邏輯行進行折行時,采用的具體方法如下(a)取得要排版的第一個矩形區(qū)域作為當前排版區(qū)域;(b)取得第一個邏輯行,作為當前邏輯行;(c)比較當前邏輯行的行高與當前排版區(qū)域的可排版高度,如果當前邏輯行的行高小于或等于當前排版區(qū)域的可排版高度,則按照步驟(d)所述的方法對邏輯行進行折行;如果當前邏輯行的行高大于當前排版區(qū)域的可排版高度,則按照步驟(e)所述的方法對邏輯行進行折行;(d)按照當前排版區(qū)域的寬度計算并確定當前邏輯行的第一個折行位置,然后據(jù)此對邏輯行進行折行,折行位置前面的行即為物理行,把該物理行作為當前物理行,重新計算當前邏輯行剩余部分的行高,執(zhí)行步驟(g);(e)從當前邏輯行的第一個字起向后遍歷,計算遍歷內(nèi)容的行高,直到遍歷到當前邏輯行的行高大于當前排版區(qū)域的可排版高度為止,如果截止位置在當前邏輯行首,則直接進入步驟(f);如果截止位置不在當前邏輯行首,則首先按照當前排版區(qū)域的寬度計算出當前邏輯行的擬折行位置,如果擬折行位置處與邏輯行首的距離為a,截止位置與邏輯行首的距離為b,將a與b進行比較,取二者之中的最小值作為折行位置對邏輯行進行折行,將折行位置前面的行作為當前物理行,并重新計算當前邏輯行剩余部分的行高,然后進入步驟(g);(f)如果當前排版區(qū)域已經(jīng)是最后一個矩形區(qū)域,則處理結束;否則取得下一個未排版的矩形區(qū)域作為當前排版區(qū)域,執(zhí)行步驟(c);(g)設置當前物理行在當前排版區(qū)域的位置,重新計算當前排版區(qū)域的可排版高度;(h)如果當前邏輯行折行沒有結束,則重復執(zhí)行步驟(c);如果當前邏輯行折行結束,則取下一個邏輯行作為當前邏輯行,重復執(zhí)行步驟(c),直到處理完最后一個邏輯行。
本實施例中,步驟(g)中重新計算當前排版區(qū)域的可排版高度時,采用的方法是1)如果當前物理行是當前邏輯行的最后一部分折行結果,并且當前邏輯行與前一邏輯行是以換段符拆分的,那么新的可排版高度=原來的可排版高度-當前邏輯行的段間距-當前物理行的行高2)如果當前物理行是當前邏輯行的最后一部分折行結果,并且當前邏輯行與前一邏輯行是以換行符拆分的,那么新的可排版高度等=原來的可排版高度-當前物理行的行間距-當前物理行的行高3)如果當前邏輯行是第一個邏輯行,它前面沒有硬回車符作為分隔符,那么,新的可排版高度=原來的可排版高度-當前物理行的行高。
對本實施例中的6個邏輯行L1,L2,L3,L4,L5,L6依據(jù)排版區(qū)域采用上述方法進行的折行結果如圖5所示,具體而言本實施例中,邏輯行L1,L2,L3,L4,L5的行高均小于當前排版區(qū)域M0的可排版高度,因此,直接按步驟(d)所述的方法對邏輯行進行折行;確定的折行位置如圖5中所示的附圖標記1,2,3,4,5;本實施例中,在排版區(qū)域M0內(nèi)排版完成邏輯行L1,L2,L3,L4,L5后,計算邏輯行L6的行高與當前排版區(qū)域M0的可排版高度時,確定邏輯行L6的行高大于了當前排版區(qū)域M0的可排版高度,因此,按照步驟(e)所述的方法對邏輯行進行折行,即從當前邏輯行的第一個字起向后遍歷,直到遍歷到當前邏輯行的行高大于當前排版區(qū)域M0的可排版高度為止,確定截止位置在圖5所示的附圖標記6處,其與邏輯行首的距離為b,但是,按照當前排版區(qū)域M0的寬度計算出當前邏輯行的擬折行位置在圖5所示的附圖標記7處,其與邏輯行首的距離為a,經(jīng)過比較,取二者中的最小值b作為折行位置進行折行,然后重新計算當前邏輯行L6剩余部分的行高,由于其行高仍然大于當前排版區(qū)域M0的可排版高度,因此,從L6剩余部分的第一個字起向后遍歷,確定截止位置在行首,因此直接通過步驟(f)取得下一個排版區(qū)域M1作為當前排版區(qū)域,然后比較行高與排版區(qū)域的可排版高度,比較后確定該邏輯行的行高小于當前排版區(qū)域M1的可排版高度,則按照步驟(d)所述的方法對邏輯行L6剩余部分進行折行,折行位置如圖5所示的附圖標記8和9處;(5)設置各個物理行在排版區(qū)域內(nèi)的位置,完成排版;排版區(qū)域與物理行之間是一對多的關系,即一個排版區(qū)域里面有一個或者多個物理行,對于任何一個物理行屬于哪一個具體的排版區(qū)域,在步驟(4)對邏輯行的折行過程中已經(jīng)確定下來了,最后得排版結果如圖6所示。
本發(fā)明所述的方法并不限于具體實施方式
中所述的實施例,本領域技術人員根據(jù)本發(fā)明的技術方案得出其他的實施方式,同樣屬于本發(fā)明的技術創(chuàng)新范圍。
權利要求
1.一種文字排版的方法,包括以下步驟(1)在排版軟件中確定排版區(qū)域,所述的排版區(qū)域為矩形區(qū)域;(2)取得待排版的文字內(nèi)容,以換段符、換行符為分界符,對待排版的文字內(nèi)容進行拆分,所述的換段符、換行符作為文字內(nèi)容進行拆分的分界符,稱為硬回車符,即在排版軟件的任一排版區(qū)域中,所述的換段符、換行符均作為換段和換行的標志;(3)對步驟(2)中拆分后的各部分文字內(nèi)容同時分別在寬度、高度不受限制的排版區(qū)域內(nèi)進行排版,并以行首作為排版的起始位置,從而得到多個單行排版結果,這些單行排版結果稱為邏輯行,得到邏輯行的同時得到各邏輯行的行信息;(4)根據(jù)步驟(1)中確定的排版區(qū)域,按照排版的順序依次計算各個邏輯行內(nèi)的折行位置,對邏輯行進行折行,邏輯行折行后所得到的新行是文字排版的最終行結果,稱為物理行;(5)設置各個物理行在排版區(qū)域內(nèi)的位置,完成排版。
2.如權利要求1所述的一種文字排版的方法,其特征是步驟(1)中,排版區(qū)域為矩形區(qū)域,對于不規(guī)則的排版區(qū)域,排版前將其分割為矩形區(qū)域。
3.如權利要求1或2所述的一種文字排版的方法,其特征是步驟(3)中,所述的邏輯行的行信息包括邏輯行內(nèi)各個文字排版后的位置,邏輯行的行距、行高;如果邏輯行首是以換段符分隔的,還需要記錄段格式信息,包括段間距、段首縮進等參數(shù);其中,所述的邏輯行內(nèi)各個文字排版后的位置是相對位置。
4.如權利要求1或2所述的一種文字排版的方法,其特征是步驟(3)中,生成邏輯行時,如果一個邏輯行與前一個邏輯行之間是以換段符分隔或者該邏輯行是第一個邏輯行,那么該邏輯行首需要按照段首縮進的參數(shù)值進行偏移。
5.如權利要求1或2所述的一種文字排版的方法,其特征是步驟(4)中,如果文字排版的排版方向為橫向時,確定邏輯行的折行位置,對邏輯行進行折行時,采用的具體方法如下(a)取得要排版的第一個矩形區(qū)域作為當前排版區(qū)域;(b)取得第一個邏輯行,作為當前邏輯行;(c)比較當前邏輯行的行高與當前排版區(qū)域的可排版高度,如果當前邏輯行的行高小于或等于當前排版區(qū)域的可排版高度,則按照步驟(d)所述的方法對邏輯行進行折行;如果當前邏輯行的行高大于當前排版區(qū)域的可排版高度,則按照步驟(e)所述的方法對邏輯行進行折行;(d)按照當前排版區(qū)域的寬度計算并確定當前邏輯行的第一個折行位置,然后據(jù)此對邏輯行進行折行,折行位置前面的行即為物理行,把該物理行作為當前物理行,重新計算當前邏輯行剩余部分的行高,執(zhí)行步驟(g);(e)從當前邏輯行的第一個字起向后遍歷,計算遍歷內(nèi)容的行高,直到遍歷到當前邏輯行的行高大于當前排版區(qū)域的可排版高度為止,如果截止位置在當前邏輯行首,則直接進入步驟(f);如果截止位置不在當前邏輯行首,則首先按照當前排版區(qū)域的寬度計算出當前邏輯行的擬折行位置,如果擬折行位置處與邏輯行首的距離為a,截止位置與邏輯行首的距離為b,將a與b進行比較,取二者之中的最小值作為折行位置對邏輯行進行折行,將折行位置前面的行作為當前物理行,并重新計算當前邏輯行剩余部分的行高,然后進入步驟(g);(f)如果當前排版區(qū)域已經(jīng)是最后一個矩形區(qū)域,則處理結束;否則取得下一個未排版的矩形區(qū)域作為當前排版區(qū)域,重復執(zhí)行步驟(c);(g)設置當前物理行在當前排版區(qū)域的位置,重新計算當前排版區(qū)域的可排版高度;(h)如果當前邏輯行折行沒有結束,則重復執(zhí)行步驟(c);如果當前邏輯行折行結束,則取下一個邏輯行作為當前邏輯行,重復執(zhí)行步驟(c),直到處理完最后一個邏輯行。
6.如權利要求5所述的一種文字排版的方法,其特征是步驟(g)中設置當前物理行相對于當前排版區(qū)域的位置,重新計算當前排版區(qū)域的可排版高度時,采用的方法是1)如果當前物理行是當前邏輯行的最后一部分折行結果,并且當前邏輯行與前一邏輯行是以換段符拆分的,那么新的可排版高度=原來的可排版高度-當前邏輯行的段間距-當前物理行的行高2)如果當前物理行是當前邏輯行的最后一部分折行結果,并且當前邏輯行與前一邏輯行是以換行符拆分的,那么新的可排版高度等=原來的可排版高度-當前物理行的行間距-當前物理行的行高3)如果當前邏輯行是第一個邏輯行,它前面沒有硬回車符作為分隔符,那么,新的可排版高度=原來的可排版高度-當前物理行的行高。
7.如權利要求5所述的一種文字排版的方法,其特征是步驟(4)中,如果文字排版的排版方向為豎排時,取可排版區(qū)域的橫向為高度,取可排版區(qū)域的縱向為寬度,確定邏輯行的折行位置,對邏輯行進行折行。
全文摘要
本發(fā)明涉及一種文字排版的方法,屬于印刷前計算機排版領域?,F(xiàn)有技術中,文字的排版方法是對待排版的文字內(nèi)容進行順序排版,即在確定了上一個字的排版位置之后,再開始下一個字的排版,沒有充分利用計算機的并發(fā)處理能力,限制了排版效率的提高。本發(fā)明所述的方法是以待排版的文字內(nèi)容內(nèi)的換段符、換行符作為分隔符,將其拆分成多個部分,同時對拆分后的各部分文字分別在寬度、高度不受限的區(qū)域內(nèi)進行排版,取得多個單行排版結果,然后再依據(jù)指定的排版區(qū)域,依次對各個單行排版結果進行折行處理,最后完成排版。采用本發(fā)明所述的方法,可以充分利用計算機的并發(fā)處理能力,提高文字的排版效率,從而提高整個版面的制作效率。
文檔編號G06F17/25GK1920811SQ200610112738
公開日2007年2月28日 申請日期2006年8月31日 優(yōu)先權日2006年8月31日
發(fā)明者閆國龍 申請人:北京北大方正電子有限公司, 北京大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1