本發(fā)明涉及文本輸入技術領域,特別是涉及一種豎排文本的輸入控制方法及系統(tǒng)。
背景技術:
當前信息的主要存在形式有紙質(zhì)和電子兩大媒介,而隨著信息技術和計算機技術的發(fā)展和普及,電子媒介在存儲成本、記錄密度、共享手段、查閱方便性等諸多方面均優(yōu)于紙質(zhì)媒介,因而得到越來越多的應用。電子媒介存儲需要將文本數(shù)據(jù)信息輸入至電子文檔中進行保存。
對于文本數(shù)據(jù)信息的錄入,常見的文本輸入排版方式均為橫排的文本輸入。雖目前市面上有少許支持豎排的文本輸入框,但是都存在較大的性能問題。例如圖1所示為一種現(xiàn)有的橫排文本輸入轉(zhuǎn)換至豎排文本輸入的示意圖,如圖1所示,常見的豎排文本輸入控制是按照段落或行為單位來繪制得到渲染后的結果,雖可以對這個結果進行操作,但是操作的最小單位是行,因此不管怎樣對行進行選中變換都無法得到理想的豎排文本,存在不好的用戶體驗。
技術實現(xiàn)要素:
本發(fā)明旨在至少解決現(xiàn)有技術中存在的技術問題之一。為此,本發(fā)明的一個目的在于提出一種豎排文本的輸入控制方法及系統(tǒng)。
根據(jù)本發(fā)明實施例的豎排文本的輸入控制方法,包括:
將文本輸入框中的文本數(shù)據(jù)以字符為最小單位,對每個所述字符進行文本渲染,得到每個所述字符對應的渲染對象;
依序?qū)⒚總€所述渲染對象按照豎排排列方式顯示在所述文本輸入框中。
本發(fā)明實施例的豎排文本的輸入控制方法,通過以文本數(shù)據(jù)中的單個字符為最小操作單位,分別對單個字符進行文本渲染,以產(chǎn)生渲染對象,再依序?qū)︿秩竞蟮膶ο蟀凑肇Q排排列方式進行排列,以顯示在文本輸入框中,可得到理想的豎排排版效果,用戶體驗更好,另外以字符為最小操作單位進行文本排版,從操控性來說,更方便控制,可得到更優(yōu)的性能。
另外,根據(jù)本發(fā)明上述實施例的豎排文本的輸入控制方法,還可以具有如下附加的技術特征:
進一步地,在本發(fā)明的一個實施例中,所述依序?qū)⒚總€所述渲染對象按照豎排排列方式顯示在所述文本輸入框中還包括:
依序判斷所述字符為中文字符或非中文字符;
若所述字符為所述非中文字符,則將所述非中文字符對應的所述渲染對象按照順時針方向旋轉(zhuǎn)90度后,依序?qū)⑺鲂D(zhuǎn)后的渲染對象按照豎排排列方式顯示在所述文本輸入框中;
若所述字符為所述中文字符,則不對所述中文字符對應的所述渲染對象進行旋轉(zhuǎn),僅依序?qū)⒚總€渲染對象按照豎排排列方式顯示在所述文本輸入框中。
進一步地,在本發(fā)明的一個實施例中,所述依序?qū)⒚總€所述渲染對象按照豎排排列方式顯示在所述文本輸入框中的步驟還包括:
按照所述豎排排列方式中指定的豎排文本排版方向及指定的字符間隔依序?qū)⒚總€所述渲染對象進行豎排排列,其中所述豎排文本排版方向包括在所述文本輸入框中從左至右進行豎排排版或從右至左進行豎排排版。
進一步地,在本發(fā)明的一個實施例中,所述對每個所述字符進行文本渲染,得到每個所述字符對應的渲染對象的步驟包括:
調(diào)用渲染數(shù)據(jù)組件,對每個所述字符進行文本渲染,并將文本渲染后的字符封裝成所述對應的渲染對象,其中所述渲染數(shù)據(jù)組件中規(guī)定了所述渲染對象的數(shù)據(jù)參數(shù),所述數(shù)據(jù)參數(shù)包括所述渲染對象的所占的渲染區(qū)域及所處的位置。
進一步地,在本發(fā)明的一個實施例中,采用紅黑樹的數(shù)據(jù)管理結構對所述文本輸入框中的文本段落及文本屬性進行管理。
本發(fā)明的另一個目的在于提出一種豎排文本的輸入控制系統(tǒng),包括:
文本渲染模塊,用于將文本輸入框中的文本數(shù)據(jù)以字符為最小單位,對每個所述字符進行文本渲染,得到每個所述字符對應的渲染對象;
垂直排列模塊,用于依序?qū)⒚總€所述渲染對象按照豎排排列方式顯示在所述文本輸入框中。
另外,根據(jù)本發(fā)明上述實施例的非智能電視機的激活量統(tǒng)計系統(tǒng),還可以具有如下附加的技術特征:
進一步地,在本發(fā)明的一個實施例中,所述垂直排列模塊還包括:
判斷模塊,用于依序判斷所述字符為中文字符或非中文字符;
非中文字符處理模塊,用于當所述判斷模塊判斷到所述字符為所述非中文字符時,則將所述非中文字符對應的所述渲染對象按照順時針方向旋轉(zhuǎn)90度后,依序?qū)⑺鲂D(zhuǎn)后的渲染對象按照豎排排列方式顯示在所述文本輸入框中;
中文字符處理模塊,用于當所述判斷模塊判斷到所述字符為所述中文字符時,則不對所述中文字符對應的所述渲染對象進行旋轉(zhuǎn),僅依序?qū)⒚總€渲染對象按照豎排排列方式顯示在所述文本輸入框中。
進一步地,在本發(fā)明的一個實施例中,所述垂直排列模塊還用于按照所述豎排排列方式中指定的豎排文本排版方向及指定的字符間隔依序?qū)⒚總€所述渲染對象進行豎排排列,其中所述豎排文本排版方向包括在所述文本輸入框中從左至右進行豎排排版或從右至左進行豎排排版。
進一步地,在本發(fā)明的一個實施例中,所述文本渲染模塊具體用于調(diào)用渲染數(shù)據(jù)組件,對每個所述字符進行文本渲染,并將文本渲染后的字符封裝成所述對應的渲染對象,其中所述渲染數(shù)據(jù)組件中規(guī)定了所述渲染對象的數(shù)據(jù)參數(shù),所述數(shù)據(jù)參數(shù)包括所述渲染對象的所占的渲染區(qū)域及所處的位置。
進一步地,在本發(fā)明的一個實施例中,所述系統(tǒng)還包括文本管理模塊,用于采用紅黑樹的數(shù)據(jù)管理結構對所述文本輸入框中的文本段落及文本屬性進行管理。
本發(fā)明的附加方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
附圖說明
本發(fā)明的上述和/或附加的方面和優(yōu)點從結合下面附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1所示為一種現(xiàn)有的橫排文本輸入轉(zhuǎn)換至豎排文本輸入的示意圖;
圖2是根據(jù)本發(fā)明另一實施例的豎排文本的輸入控制方法的流程圖;
圖3是根據(jù)本發(fā)明另一實施例的豎排文本的輸入控制方法的流程圖;
圖4為本發(fā)明實施例的文本渲染方法的效果示意圖;
圖5為本發(fā)明實施例中非中文字符的垂直排版示意圖;
圖6所示分別為本發(fā)明實施例中從左至右進行豎排排列和從右至左進行豎排排列的效果示意圖;
圖7是根據(jù)本發(fā)明一實施例的豎排文本的輸入控制系統(tǒng)的結構示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參閱圖2,本發(fā)明一實施例提出的豎排文本的輸入控制方法,至少包括以下步驟:
s101,將文本輸入框中的文本數(shù)據(jù)以字符為最小單位,對每個所述字符進行文本渲染,得到每個所述字符對應的渲染對象;
其中,文本輸入框中的文本數(shù)據(jù)不再是以段落或行為最小單位進行編輯,而是以文本數(shù)據(jù)中的每個字符為最小單位進行文本渲染。通過對每個字符按照預設的文本輸入控件進行文本渲染,可得到對應每個字符的渲染對象。
s102,依序?qū)⒚總€所述渲染對象按照豎排排列方式顯示在所述文本輸入框中。
以每個字符為單位,依序?qū)γ總€字符進行文本渲染后,通過依序?qū)⒚總€渲染對象(即渲染后的字符)進行豎排排版,并按照豎排排列方式依序?qū)⒚總€渲染對象顯示在文本輸入框中,可以得到理想的豎排文本排版。
本發(fā)明實施例的豎排文本的輸入控制方法,通過以文本數(shù)據(jù)中的單個字符為最小操作單位,分別對單個字符進行文本渲染,以產(chǎn)生渲染對象,再依序?qū)︿秩竞蟮膶ο蟀凑肇Q排排列方式進行排列,以顯示在文本輸入框中,可得到理想的豎排排版效果,用戶體驗更好,另外以字符為最小操作單位進行文本排版,從操控性來說,更方便控制,可得到更優(yōu)的性能。
請參閱圖3,本發(fā)明另一實施例提出的豎排文本的輸入控制方法,至少包括以下步驟:
s201,將文本輸入框中的文本數(shù)據(jù)以字符為最小單位,對每個字符進行文本渲染,得到每個字符對應的渲染對象;
本步驟中,主要是通過調(diào)用渲染數(shù)據(jù)組件(例如textview組件),對文本輸入框內(nèi)的每個字符進行文本渲染,并將文本渲染后的字符封裝成對應的渲染對象。其中所述渲染數(shù)據(jù)組件中規(guī)定了文本渲染后的渲染對象的數(shù)據(jù)參數(shù),例如所述渲染對象的所占的渲染區(qū)域及所處的位置。
圖4為本發(fā)明實施例的文本渲染方法的效果示意圖。如圖4所示,每個字符都有一個方框區(qū)域,該區(qū)域?qū)儆谠撟址跈M排行內(nèi)布局時所屬的區(qū)域,即上述渲染區(qū)域?;谠撲秩緟^(qū)域,可以進行豎排布局,即通過繪制渲染每個字符,可得到對應每個字符的渲染對象,而通過構造橫排段落數(shù)據(jù)對象,可以得到每個字符的所占的渲染區(qū)域。
s202,依序判斷每個字符為中文字符或非中文字符,若為非中文字符則執(zhí)行步驟s203,若為中文字符則執(zhí)行步驟s204;
本實施例中,對每個文本渲染后的渲染對象進行垂直排版前,需判斷每個字符為中文字符還是非中文字符,通常來說,中文字符指中文漢字,而非中文字符包括阿拉伯數(shù)字、標點符號、英文字符等。具體地,可通過每個字符對應的ascii碼來判斷當前字符是中文字符還是非中文字符。對于中文字符及非中文字符,在具體進行重新排版操作會不一樣。
s203,將非中文字符對應的渲染對象按照順時針方向旋轉(zhuǎn)90度,執(zhí)行步驟s205;
s204,不對所述中文字符對應的所述渲染對象進行旋轉(zhuǎn),執(zhí)行步驟s205;
具體地,若當前字符為非中文字符,為使文本顯示后在閱讀上不產(chǎn)生歧義,本實施例實施例中需將非中文字符對應的渲染對象按照順時針方向旋轉(zhuǎn)90度再進行垂直排版。如圖5所示,圖5為本發(fā)明實施例中非中文字符的垂直排版示意圖。而若當前字符為中文字符,則無需對中文字符對應的渲染對象進行額額外的旋轉(zhuǎn)操作。
s205,依序?qū)⒚總€渲染對象按照豎排排列方式排列顯示在文本輸入框中。
本步驟中按照豎排排列方式中指定的豎排文本排版方向及指定的字符間隔依序?qū)⒚總€渲染對象進行豎排排列。其中所述的豎排文本排版方向包括在文本輸入框中從左至右進行豎排排列或從右至左進行豎排排列。如圖6所示,圖6所示分別為本發(fā)明實施例中從左至右進行豎排排列和從右至左進行豎排排列的效果示意圖。而指定的字符間隔是指相鄰渲染對象在豎排排列之后彼此之間的間隔。無論上述豎排文本排版方向還是字符間隔均可以由開發(fā)者通過上述文本輸入控件中的textview組件進行設定。
還需要說明的是,依序?qū)γ總€渲染對象進行豎排排列后,本發(fā)明實施例還對豎排排版后的渲染對象按照其所在渲染區(qū)域的中線進行居中對齊。具體地,若為非中文字符,由于已經(jīng)順時針旋轉(zhuǎn)90度,則沿水平方向按照非中文字符對應的渲染對象所在的渲染區(qū)域的中線進行居中對齊,而若為中文字符,其并未做任何宣和旋轉(zhuǎn)操作,則沿垂直方向按照中文字符對應的渲染對象所在的渲染區(qū)域的中線進行居中對齊。
具體實施中,本發(fā)明實施例可基于一個自定義的文本輸入控件,從文本輸入,文本顯示,文本格式設置,文本選中效果,文本光標顯示等方面均進行自定義,進而可以完整的控制文本渲染的各個過程,以更加優(yōu)異的性能呈現(xiàn)文本。具體地,該文本輸入控件可包含以下組件:
texteditor組件:為針對外界的統(tǒng)一入口,該組件的作用在于負責包裝內(nèi)部的其他各個組件;
textarea組件:用于負責處理鼠標的點擊和移動等,當鼠標點擊時用于控制光標的顯示位置,而當鼠標按下滑動時,用于控制選中效果的區(qū)域等;
textview組件:為所有組件中的核心組件,用于負責處理文本渲染,例如上述s101步驟中的文本渲染步驟即通過該組件來完成。在該組件內(nèi)部封裝了所有文本控件呈現(xiàn)的每個部分(在本發(fā)明中,將各部分稱為層,即layer),其中包括文本的呈現(xiàn)、光標的呈現(xiàn)、選中效果的呈現(xiàn)等。例如該組件可包括markerlayer、texteffectlayer、textlayer、selectionlayer以及caretlayer。這些層均為并列的呈現(xiàn)層,分別用于處理文本中不同內(nèi)容的渲染,具體可參見下述:
markerlayer(項目符號層):負責項目符號的繪制,主要是根據(jù)運行時的數(shù)據(jù)繪制項目符號,并將項目符號布局到每一個段落的相應位置;
texteffectlayer(藝術字層):主要負責藝術字的繪制,對原文本數(shù)據(jù)進行藝術字的加工渲染;
textlayer(文本繪制層):負責文本的繪制和布局,在本發(fā)明實施例中,文本的繪制是按照單個字符為單位進行繪制。為了優(yōu)化性能,未經(jīng)更改的段落將不會重新繪制,僅僅在重新布局時修改其位置。
selectionlayer(選擇層):負責選中效果的繪制,主要是利用運行時數(shù)據(jù),繪制一個一個的矩形,然后拼接成完整的繪制效果。
各組件之間交互合作,以完成文本輸入控件對文本輸入的排版、光標移動、選中區(qū)域顯示等操作的控制。
另需要說明的是,本發(fā)明實施例中,除了上述描述的這些交互的組件外,自定義文本控件的有一套完整的文檔管理組件,負責對文檔中的文本段落,文本屬性等進行管理。因為會頻繁的進行段落的插入、刪除和查找操作,本發(fā)明實施例使用了紅黑樹的數(shù)據(jù)結構來對文本輸入框中的文本段落及文本屬性進行管理,該紅黑樹數(shù)據(jù)結構在最壞的情況下的操作時間為0,是效率極高的一種數(shù)據(jù)結構,能夠保證在大量文本的編輯和渲染時的流暢性。
而對于文本屬性的管理,為了減少內(nèi)存占用,本發(fā)明實施例還做了特殊的處理。具體地,只要是相同的屬性,只存儲一次,在屬性管理器中只存儲相應文字對應的屬性索引,這種方式可以使得90%情況下的文本編輯內(nèi)存占用以數(shù)倍的方式減少。
請參閱圖7,基于同一發(fā)明構思,本發(fā)明另一實施例提出了一種豎排文本的輸入控制系統(tǒng),包括文本渲染模塊11及垂直排列模塊12。其中,文本渲染模塊11用于將文本輸入框中的文本數(shù)據(jù)以字符為最小單位,對每個所述字符進行文本渲染,得到每個所述字符對應的渲染對象;而垂直排列模塊12用于依序?qū)⒚總€所述渲染對象按照豎排排列方式顯示在所述文本輸入框中。
本發(fā)明實施例的豎排文本的輸入控制系統(tǒng),通過以文本數(shù)據(jù)中的單個字符為最小操作單位,分別對單個字符進行文本渲染,以產(chǎn)生渲染對象,再依序?qū)︿秩竞蟮膶ο蟀凑肇Q排排列方式進行排列,以顯示在文本輸入框中,可得到理想的豎排排版效果,用戶體驗更好,另外以字符為最小操作單位進行文本排版,從操控性來說,更方便控制,可得到更優(yōu)的性能。
進一步地,在本發(fā)明的一個實施例中,所述垂直排列模塊12還包括判斷模塊121、非中文字符處理模塊122和中文字符處理模塊123。其中判斷模塊121用于依序判斷所述字符為中文字符或非中文字符;非中文字符處理模塊122用于當所述判斷模塊判斷到所述字符為所述非中文字符時,則將所述非中文字符對應的所述渲染對象按照順時針方向旋轉(zhuǎn)90度后,依序?qū)⑺鲂D(zhuǎn)后的渲染對象按照豎排排列方式顯示在所述文本輸入框中;而中文字符處理模塊123用于當所述判斷模塊判斷到所述字符為所述中文字符時,則不對所述中文字符對應的所述渲染對象進行旋轉(zhuǎn),僅依序?qū)⒚總€渲染對象按照豎排排列方式顯示在所述文本輸入框中。
進一步地,在本發(fā)明的一個實施例中,所述垂直排列模塊12還具體用于按照所述豎排排列方式中指定的豎排文本排版方向及指定的字符間隔依序?qū)⒚總€所述渲染對象進行豎排排列,其中所述豎排文本排版方向包括在所述文本輸入框中從左至右進行豎排排版或從右至左進行豎排排版。
進一步地,在本發(fā)明的一個實施例中,所述文本渲染模塊11還具體用于調(diào)用渲染數(shù)據(jù)組件,對每個所述字符進行文本渲染,并將文本渲染后的字符封裝成所述對應的渲染對象,其中所述渲染數(shù)據(jù)組件中規(guī)定了所述渲染對象的數(shù)據(jù)參數(shù),所述數(shù)據(jù)參數(shù)包括所述渲染對象的所占的渲染區(qū)域及所處的位置。
進一步地,在本發(fā)明的一個實施例中,所述系統(tǒng)還包括文本管理模塊13,用于采用紅黑樹的數(shù)據(jù)管理結構對所述文本輸入框中的文本段落及文本屬性進行管理。
在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認為是用于實現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實現(xiàn)在任何計算機可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設備(如基于計算機的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設備取指令并執(zhí)行指令的系統(tǒng))使用,或結合這些指令執(zhí)行系統(tǒng)、裝置或設備而使用。就本說明書而言,“計算機可讀介質(zhì)”可以是任何可以包含、存儲、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設備或結合這些指令執(zhí)行系統(tǒng)、裝置或設備而使用的裝置。
計算機可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個或多個布線的電連接部(電子裝置),便攜式計算機盤盒(磁裝置),隨機存取存儲器(ram),只讀存儲器(rom),可擦除可編輯只讀存儲器(eprom或閃速存儲器),光纖裝置,以及便攜式光盤只讀存儲器(cdrom)。另外,計算機可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因為可以例如通過對紙或其他介質(zhì)進行光學掃描,接著進行編輯、解譯或必要時以其他合適方式進行處理來以電子方式獲得所述程序,然后將其存儲在計算機存儲器中。
應當理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領域公知的下列技術中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(pga),現(xiàn)場可編程門陣列(fpga)等。
在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。
盡管已經(jīng)示出和描述了本發(fā)明的實施例,本領域的普通技術人員可以理解:在不脫離本發(fā)明的原理和宗旨的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發(fā)明的范圍由權利要求及其等同物限定。