字元寬度

字元寬度(Character Width)指從字元的最左黑網點到最右黑網點的值,一般只用於位映象字型檔,它指定了按網點計算的物理頁面坐標系中字元的寬度。

字元寬度的有效範圍是從1到16384個網點

基本介紹

  • 中文名:字元寬度
  • 外文名:character duration
  • 套用領域:計算機,印刷等
  • 描述對象:字元
  • 涉及軟體:CAD、Word等
  • 作用:排版等
簡介,字元寬度,字間距,等寬字型,設定字元寬度,Turboc,Word,計算字元寬度,

簡介

字元寬度

一個字元的寬度被稱做它的“設定寬度”,是用像素表示的。單個字元的寬度是隨著字型的不同而不同的,有些字型中每個字元的寬度互不相同,例如:Times字型和Windows中大多數的字型。也可能每個字元的寬度都是相同的,例如:Courier字型。在它自己的度量單位制中,一種字型的設定寬度等於它的像素尺寸,但是單個字元有各自的寬度。在一個Truetype字型中,字元的寬度在建立字型時被包含在一寬度表中。

字間距

字元也有一個固定的間隔,叫做字間距,用來加到字元寬度上以及提供字元間的寬度。一個字元所占的位置,實際上也許會超過包含自己的字元單元,許多斜體的字元在被設定的時候,就伸展到下一個字元單元中去了。調整字間距能夠提供更合適的字元間距離,它經常針對某些字元進行調整,以得到更好看的字型。例如:一個大寫字母T和一個小寫字母例如:a或o,通過字間距調整可以被安排得更近,把小寫字母安放在T的翅膀之下。
如果使用現代排版設備,可以調整字型的設定寬度是,尤其是使用TrueType字型時。例如:可以為一個12像素的字型指定10像素的設定距離,這樣字元將會被輕微的壓縮。直到計算機化的排版出現後,這種情況才可能發生。當一個字元被列印到矩陣上時,字元的寬度和字間距才被決定,而且每一個從矩陣上輸出的字元是大小相等的。
LOGFONT結構的lfWidth成員用來指定一個邏輯單元中的字型的平均字元寬度。在大多數的實踐套用中平均字元距離是一條無用的信息,當創建一個字型的時候應該把這個成員設定成0。

等寬字型

等寬字型是指字元寬度相同的電腦字型。與此相對,字元寬度不盡相同的電腦字型稱為比例字型。
在傳統西文印刷中,比例字型可以提高單詞的可讀性。但因早期的電腦顯示器打字機,由於技術的局限,無法進行字母寬度的比例調整,因此將每個字元都製作成一樣的寬度,從而形成了等寬字型。在等寬字型中,字母i,j顯得兩側餘白較多,而字母w,m等的筆畫顯得相當擁擠。
但是隨著圖形用戶界面主流的更新和電腦技術的提高,處理比例字型的局限性得到了突破,因此現在排版上顯得比較自然的比例字型的使用已經相當普及。
東亞語言中,方塊字基本上都作為等寬字型處理,如各個地區的漢字、日語假名的全形字元、韓語諺文音節等字元都是等寬的。 但是一些中文、日文字型中,由於同時涵蓋西文的半形文字字元,因此也含有比例字型,造成一個字型中兩種類型混雜的局面。
Windows簡體中文作業系統中,老版本的默認字型中易宋體全部是等寬字型(因此用中易宋體進行西文排版看起來很不自然),而Windows Vista的默認字型微軟雅黑中,半角的西文部分是比例字型,全形字元是等寬字型。
由於等寬字型的特點,當今的平面設計上也有特意使用等寬字型所具有的文化特徵進行創作的風格,其中最具有代表性的就是ASCII藝術。ASCII藝術所使用的字元都是等寬字型,如果改用比例字型,圖片往往變形而無法表達創作者本意。在網頁設計中,<tt> </tt>或<pre> </pre>HTML標記通常都是使用等寬字型。在LaTeX中也是使用等寬字型。
另外,代碼也經常使用等寬字型

設定字元寬度

不同軟體的設定字元寬度方法有很大不同,在此舉例進行說明。

Turboc

Turboc提供了一個函式Setusercharsize(),該函式設定圖形字元的放大係數:滯用該函式以後。每個顯示在螢幕上的字元都以其預設值大小乘以mulx/divx為字元寬,乘以muly/divy為字元高,例如若想使字元寬度2倍於預設值,高度比預設值高50%,可設定muItx=2,divx=l;multy=3,divy=2。只有當先前調用Bettextstyle函式設定char size=0。該函式設定的值才有效。
例:
#include<graphics.h>
main()
{
int driver.mode;
driver=EGA;/*設定EGA圖形適配器*/
mode=EGAHI;/ *設定EGA圖形模式*/
initgraph(&driver,&mode,"");/*圖形系統初始化*/
seitextstyle(TRIPLEX_FONT,HORIZ_DIR,4);
SEIUSERCHARSIZE(1,3,1,1);/*確定字元寬度和高度*/
outtextxy(150,100,"ABCDEF");/*輸出字元串*/
getch();
closegraph();/*關閉圖形系統*/
}

Word

首先在對多個不滿行的文字進行兩端對齊時,我們可以使用Word的“調整文字寬度”功能。文字會根據設定擴大間距或自動緊縮,以達到所需要求。使用步驟如下:
1.選中要調整寬度的文字。
2.執行“格式”→“調整文字寬度”,打開“調整寬度”對話框。
3.在“新文字寬度”框中設定所需的寬度值。
注意:首次對表格中的文字操作時,只能選中單元格中文字(可按住Ctrl鍵選擇不連續文本),不能選中整個單元格,否則會出現“所選區域包含對‘適應文字’範圍無效的字元或對象”的提示。但一經設定,需再次調整時,就可以直接選中單元格進行操作了。
4.單擊“確定”按鈕。
注意:
1.需要刪除所設定的寬度時,可在設定的文本上單擊(其下方將出現一青綠色下劃線),然後打開“調整寬度”對話框,再單擊“刪除”按鈕。
2.僅選中單元格內文字,單擊“格式”工具列的“分散對齊”按鈕,可以打開“調整寬度”對話框;選中或單擊進行過調整寬度的文字,再單擊“分散對齊”按鈕(對於本例中的“名單”二字,則需單擊兩次,第一次為取消居中對齊),同樣能打開“調整寬度”對話框,另外,“調整寬度”命令也會出現在快捷選單中。

計算字元寬度

不同軟體的計算字元寬度方法不盡相同,在以Python為例進行說明。
urwid是一個成熟的python終端UI庫,它在curses的基礎之上包裝了類似HTML的控制項用以顯示文本內容,比直接使用curses庫方便很多,它對unicode的文本寬度截取非常準確,文本寬度計算方面其核心代碼如下:
widths = [
(126, 1), (159, 0), (687, 1), (710, 0), (711, 1),
(727, 0), (733, 1), (879, 0), (1154, 1), (1161, 0),
(4347, 1), (4447, 2), (7467, 1), (7521, 0), (8369, 1),
(8426, 0), (9000, 1), (9002, 2), (11021, 1), (12350, 2),
(12351, 1), (12438, 2), (12442, 0), (19893, 2), (19967, 1),
(55203, 2), (63743, 1), (64106, 2), (65039, 1), (65059, 0),
(65131, 2), (65279, 1), (65376, 2), (65500, 1), (65510, 2),
(120831, 1), (262141, 2), (1114109, 1),
]
def get_width( o ):
"""Return the screen column width for unicode ordinal o."""
global widths
if o == 0xe or o == 0xf:
return 0
for num, wid in widths:
if o <= num:
return wid
return 1
如代碼所示,首先根據unicode的官方EastAsianWidth文檔整理出字元寬度的範圍表,然後使用unicode代碼查表即可。

相關詞條

熱門詞條

聯絡我們