欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

字串換行方法

文檔序號(hào):6615626閱讀:710來源:國知局
專利名稱:字串換行方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種字串換行的方法,用以在文字顯示裝置中,對(duì)不等寬的字符(character)所組成的字串(String)執(zhí)行換行的動(dòng)作。
在一般的視窗操作系統(tǒng)(如Windows95或Windows98)中,所提供的字體大致上可以分為兩類1·等寬的字體指字串中的每個(gè)字符的寬度都相同。如中文字符、Courier以及Courier new等幾種字體,等寬字體的種類有限,字型的變化上也比較簡(jiǎn)單。
2·不等寬的字體指字串中的每個(gè)字符的寬度都不相等,如羅馬字體、True Type字體等,不等寬字體的種類較豐富,字型的顯示效果也比較美觀。
在文書編輯的時(shí)候,如果遇到一般的等寬的字符,對(duì)電腦的處理而言,常常是以等間距的字體表現(xiàn),在換行的運(yùn)算上比較簡(jiǎn)單,只要將行寬除以字符的寬度,就可以計(jì)算每行可以容納的字?jǐn)?shù),之后只要累加每行的輸入字?jǐn)?shù),就可以判斷是否需要換行。
但是對(duì)于所謂的西文,即文字是以字母組合成以單字為單位的型態(tài)的文字,為求電腦上所表現(xiàn)出的態(tài)樣能符合平時(shí)書寫的習(xí)慣,以及電腦上的字型能有豐富的變化和效果,多半采用非等間距的字體。
而在一個(gè)固定的行寬中,每行可編輯的不等寬字符是一個(gè)不定數(shù),要確定每行的字符數(shù),就要分別取得各字符的寬度與行寬相比,因此要實(shí)現(xiàn)不等寬字符所組成的字串的換行,其演算法的效率就非常的重要。
一般的解決方法是,在已知此行首字符的情況下逐個(gè)向后累加各字符寬度,并與行寬比較,以確定此字符是在本行還是下一行,如果累加各字符寬度大于行寬,在根據(jù)WORD WRAP(字換行)規(guī)則把恰當(dāng)?shù)膯卧~折換到下一行。如果此行實(shí)際能編輯的字符數(shù)是N,則累加寬度與行寬的比較次數(shù)便為N,因此要花不短的時(shí)間比較字符累加寬度與行寬,使得換行的運(yùn)算顯得效率低下。
如上所述,本發(fā)明的主要目的在于提供一種可以提高字串的換行效率的方法,用以在文字顯示裝置中,對(duì)不等寬的字符所組成的字串執(zhí)行換行的動(dòng)作。該方法藉由能編輯的最寬字元的數(shù)目加快確定實(shí)際能編輯的字符數(shù)目,在已知一行所能編輯的實(shí)際字符數(shù)后,由行尾向行首搜索本行字符,將恰當(dāng)?shù)膯卧~折到下一行。
根據(jù)本發(fā)明所揭示的方法,主要包含下列步驟將該字串的首字符設(shè)定為讀取的初始字符;將該行的全部行寬設(shè)定為可用行寬值;取得該字串中的最寬字符的字寬值;根據(jù)該字寬值計(jì)算該行可容納的最多最寬字符數(shù)N;自該字串的首字符起開始逐一讀取N+1個(gè)字符,并計(jì)算N+1個(gè)字符的累加寬度;以及比較該累加寬度與該行行寬,如果該累加寬度小于該行寬,則將第N+2個(gè)字符設(shè)為讀取的初始字符,并將剩余行寬設(shè)為該行的可用行寬值,返回計(jì)算最多字符的步驟,如果該累加寬度大于行寬,則自該字串中決定下一行的首字符,并將該首字符換到下一行。
本方法減少了編輯框中字符換行時(shí)累加字符寬度與行寬的比較次數(shù),節(jié)省時(shí)間,達(dá)到提高字符換行效率的目的。
有關(guān)本發(fā)明的詳細(xì)內(nèi)容及技術(shù),結(jié)合


如下圖1為本發(fā)明所揭示的方法流程圖;圖2為本發(fā)明所揭示的方法的實(shí)施例。
棍據(jù)本發(fā)明所揭示的方法,該方法是從字串中找一最寬字符,再以此行的行寬除此最寬字符的字寬計(jì)算出此行所能編輯的最寬字符的字符數(shù)N,從此行的首字符開始向后讀取N+1個(gè)字符(同時(shí)判斷有無分行字符以及結(jié)束字符),計(jì)算N+1個(gè)字符的字符寬度,并用行寬減去此N+1個(gè)字符的寬度值,以得到此行還可編輯的最寬字符數(shù),接著再自N+2個(gè)字符重復(fù)以上的操作流程,一直到實(shí)際的寬度已經(jīng)超過了行寬,便自此單詞向前讀取單詞分隔字符,如果搜尋到單詞分隔字符,將此單詞分隔字符后的字符作為下一行的首字符。
從下面的描述可以發(fā)現(xiàn),本發(fā)明的計(jì)算次數(shù)的確比已有技術(shù)來得少。假定最寬字符寬度為L(zhǎng)w,字符平均寬度為L(zhǎng)p,各字符分布盡量均勻,可得比較字符累加寬度與行寬次數(shù)近似為(LogdN)+1,其中,N為此行實(shí)際能編輯的字符數(shù),d-Lw/Lp;而逐個(gè)向后累加各字符寬度與行寬比較以確定此字符在本行還是在下一行的方法中,累加寬度與行寬的比較次數(shù)為N,因?yàn)镹>(logdN)+1,所以本發(fā)明所揭示的方法,比較的次數(shù)較已知方法為少,效率得到提高。
接著,配合圖1對(duì)上述的執(zhí)行過程進(jìn)行詳細(xì)的流程描述,其步驟包括有步驟10開始;步驟11設(shè)定操作的初始狀態(tài)(將本行的首字符作為本次操作的初始字符,并將全部行寬設(shè)為可用的行寬值,搜尋字符是從初始字符開始);步驟12取得當(dāng)前字串中最寬字符的寬度;步驟13計(jì)算本行還能編輯的最寬字符數(shù)N(用行寬除以字串中最寬字符的寬度值);步驟14從本次的操作初始字符開始讀取1個(gè)字符;步驟15判斷是否讀到分行字符,若讀到分行字符,則進(jìn)行步驟22,否則進(jìn)行步驟16;步驟16判斷是否讀到結(jié)束字符,若讀到結(jié)束字符,則進(jìn)行步驟26,若未讀到結(jié)束字符,則繼續(xù)下一步驟;步驟17判斷是否讀取N+1個(gè)字符,若是,則進(jìn)行步驟19,否則進(jìn)行步驟18;步驟18讀取下一個(gè)字符,接著進(jìn)行步驟15;步驟19計(jì)算所搜尋字符的累加寬度,進(jìn)行下一步驟;步驟20將累加寬度與行寬進(jìn)行比較,若小于等于,則進(jìn)行步驟13,重新計(jì)算本行還能編輯的最寬字符數(shù)N,若大于,則進(jìn)行步驟21;步驟21從此位置向前,直到本行首字符,搜尋一個(gè)單詞分隔字符;步驟22;將此字符的下個(gè)字符,作為下一行的首字符;步驟23判斷是否有單詞分隔字符,若有,則進(jìn)行步驟24,否則進(jìn)行步驟25;這里的單詞分隔字符一般可以包括逗號(hào)、句號(hào)、空格等;步驟24將此分隔字符的下一個(gè)字符,作為下一行的首字符,然后進(jìn)行步驟26;步驟25將讀取到的最后一個(gè)字符作為下一行的首字符;然后進(jìn)行步驟26;步驟26換行;步驟27結(jié)束。
實(shí)例下面,以一實(shí)例并配合圖2做說明。在編輯框中的緩沖區(qū)內(nèi)容為“This isa sample for word wrap,please study it.”,在本編輯字庫中的最寬字符為W,寬度為10,編輯框的寬度為193,換行的動(dòng)作是透過以下的步驟,步驟1至步驟6是由能編輯的最寬字符數(shù)加快確定實(shí)際能編輯的字符數(shù)目,步驟7則為在已知一行所能編輯的實(shí)際字符數(shù)目后,由后向前搜尋本行字符,將恰當(dāng)?shù)膯卧~換到下一行,詳細(xì)的過程為開始編輯框?qū)挾葹?93,可編輯19個(gè)寬度為10的字符W(W為本編輯中的最寬字符),如圖2A;步驟1從首字符開始向行尾搜索20個(gè)字符(到’r’),剩下的寬度為101,還可編輯10個(gè)最寬字符,如圖2B;步驟2從第21個(gè)字符開始向行尾搜索11個(gè)字符(到’,’),剩下的寬度為36,還可編輯3個(gè)最寬字符,如圖2C;步驟3從第32個(gè)字符開始向行尾搜索4個(gè)字符(到’e’),剩下的寬度為22,還可編輯2個(gè)最寬字符,如圖2D;步驟4從第36個(gè)字符開始向行尾搜索3個(gè)字符(到’e’),剩下的寬度為4,還可編輯0個(gè)最寬字符,如圖2E;步驟5從第39個(gè)字符開始向行尾搜索1個(gè)字符(到’’,空白字符),剩下的寬度為1,還可編輯0個(gè)最寬字符,如圖2F;步驟6從第40個(gè)字符開始向行尾搜索1個(gè)字符(到’s’),累加字符寬度已超出行寬,下一部找出下一行的首字符,如圖2G;步驟7從本行首字符向前搜索到空格字符,找出下行行首字符為’s’,將’s’作為下行首字符,如圖2H到圖2I。
本發(fā)明的效果本發(fā)明籍由計(jì)算一行所能編輯的最寬字符數(shù),來減少編輯框中字符換行時(shí)累加字符寬度與行寬的比較次數(shù),節(jié)約了時(shí)間,提高字符換行的效率。
雖然本發(fā)明已以一較佳實(shí)施例揭示如上,然其并非用以限定本發(fā)明,任何熟習(xí)本扶技術(shù)領(lǐng)域者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作些許的更動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍當(dāng)視后附的權(quán)利要求書為準(zhǔn)。
權(quán)利要求
1·一種字串換行方法,用以在文字顯示裝置中,對(duì)不等寬的字符所組成的字串執(zhí)行換行的動(dòng)作,包括下列步驟將該字串的首字符設(shè)定為讀取的初始字符;將該行的全部行寬設(shè)為可用行寬值;取得該字串中的最寬字符的字寬值;根據(jù)該字寬值計(jì)算該可用行寬值可容納的最多字符數(shù)N;自該初始字符開始逐一讀取N+1個(gè)字符,并計(jì)算N+1個(gè)字符的累加寬度;以及比較該累加寬度與該行行寬,如果該累加寬度小于該行寬,則將第N+2個(gè)字符設(shè)為讀取的初始字符,并將剩余行寬設(shè)為該行的可用行寬值,返回計(jì)算最多字符數(shù)的步驟,如果該累加寬度大于行寬,則自該字串中決定下一行的首字符,并將該首字符換到下一行。
2·如權(quán)利要求1所述的字串換行方法,其特征在于,該剩余行寬為該全部行寬與該累加行寬的差值。
3·如權(quán)利要求1所述的字串換行方法,其特征在于,該字串至少包括有一字詞。
4·如權(quán)利要求1所述的字串換行方法,其特征在于,該字串至少包括有空白字符。
5·如權(quán)利要求1所述的字串換行方法,其特征在于,該字串至少包括字詞及空白字符。
6·如權(quán)利要求1所述的字串換行方法,其特征在于,該讀取N+1個(gè)字符的步驟,還包括有判斷該行有無分行字符,如果讀到分行字符,則執(zhí)行換行,并將該分行字符的下一個(gè)字符作為下一行的首字符;以及判斷該行有無結(jié)束字符,若有結(jié)束字符,則結(jié)束操作。
7·如權(quán)利要求6所述的字串換行方法,其特征在于,該分行字符為一空白字符。
8·如權(quán)利要求6所述的字串換行方法,其特征在于,該分行字符為一逗號(hào)。
9·如權(quán)利要求6所述的字串換行方法,其特征在于,該結(jié)束字符為一句號(hào)。
10·如權(quán)利要求1所述的字串換行方法,其特征在于,該決定下一行首字符的方法包括有自該N個(gè)字符的位置向行首逐一讀取單詞分隔字符;若有單詞分隔字符,將該分隔字符的下一個(gè)字符作為下一行的首字符,若無單詞分隔字符,則將該行的最后一個(gè)字符作為下一行的首字符。
全文摘要
本發(fā)明提供了一種字串換行方法,用以在文字顯示裝裝置中,對(duì)不等寬的字符所組成的字串執(zhí)行換行的動(dòng)作。該方法藉由能編輯的最寬字符的數(shù)目加快確定實(shí)際能編輯的字符數(shù)目,在已知一行所能編輯的實(shí)際字符數(shù)后,由行尾向行首搜索本行字符,將恰當(dāng)?shù)膯卧~折到下一行,本方法減少了編輯框中字符換行時(shí)累加字符寬度與行寬的比較次數(shù),節(jié)省時(shí)間,達(dá)到提高字符換行效率的目的。
文檔編號(hào)G06F17/21GK1324042SQ00115659
公開日2001年11月28日 申請(qǐng)日期2000年5月11日 優(yōu)先權(quán)日2000年5月11日
發(fā)明者梅家圣, 潘邕, 賴振興 申請(qǐng)人:英業(yè)達(dá)集團(tuán)(南京)電子技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
稷山县| 荥阳市| 政和县| 沛县| 青神县| 团风县| 米泉市| 通道| 大悟县| 沁阳市| 博野县| 洛浦县| 海城市| 佛坪县| 天等县| 湖州市| 九龙坡区| 改则县| 外汇| 闸北区| 射洪县| 延寿县| 罗江县| 清涧县| 沙雅县| 高邑县| 阳谷县| 孙吴县| 攀枝花市| 林芝县| 区。| 会昌县| 河池市| 大足县| 墨竹工卡县| 镇原县| 丰台区| 淮阳县| 怀宁县| 清水县| 遂宁市|