JavaTM 2 Platform
Standard Ed. 6

java.text
類別 Bidi

java.lang.Object
  繼承者 java.text.Bidi

public final class Bidi
extends Object

此類別實作了 Unicode 雙向演算法 (Unicode Bidirectional Algorithm)。

Bidi 物件提供了有關用於創建它的文本的雙向重排序的資訊。例如,這對於正確顯示阿拉伯語或者希伯來語文本來說是必需的。這些語言本來是混合方向的,因為其從左向右排列數字,而大多數其他文本則從右向左排列。

一旦創建完成,Bidi 物件就能查詢,以查看文本表示都是從左向右或從右向左。這些物件都是非常輕量級的並且此文本也相對容易處理。

如果有多次文本的運行,則可以通過索引存取運行的資訊,以獲得起始位置、限制和運行層次。層次代表了方向和一個方向運行的“巢狀層次”。奇數層次是從右到左,則偶數層次是從左到右。因此,例如層次 0 代表從左到右的文本,而層次 1 代表從右到左的文本,層次 2 代表嵌入在一個從右到左的運行中的從左到右的文本。

從以下版本開始:
1.4

欄位摘要
static int DIRECTION_DEFAULT_LEFT_TO_RIGHT
          表示基本方向依賴於根據 Unicode 雙向演算法得到的文本中第一個強方向字元的常數。
static int DIRECTION_DEFAULT_RIGHT_TO_LEFT
          表示基本方向依賴於根據 Unicode 雙向演算法得到的文本中第一個強方向字元的常數。
static int DIRECTION_LEFT_TO_RIGHT
          表示基本方向是從左到右的常數。
static int DIRECTION_RIGHT_TO_LEFT
          表示基本方向是從右到左的常數。
 
建構子摘要
Bidi(AttributedCharacterIterator paragraph)
          由給定的文本段建構 Bidi。
Bidi(char[] text, int textStart, byte[] embeddings, int embStart, int paragraphLength, int flags)
          由給定的文本、嵌入和方向資訊建構 Bidi。
Bidi(String paragraph, int flags)
          由給定的文本段和基本方向建構 Bidi。
 
方法摘要
 boolean baseIsLeftToRight()
          如果基本方向是從左到右,則返回 true。
 Bidi createLineBidi(int lineStart, int lineLimit)
          建構一個 Bidi 物件,表示當前 Bidi 所代表的段落中的一行文本上的雙向資訊。
 int getBaseLevel()
          返回基本層次(如果是從左到右,則為 0;如果是從右到左,則為 1)。
 int getLength()
          返回該行中文本的長度。
 int getLevelAt(int offset)
          返回偏移位置處的字元的解析層次。
 int getRunCount()
          返回層次運行的數目。
 int getRunLevel(int run)
          返回該行中第 n 次邏輯運行的層次。
 int getRunLimit(int run)
          以該行開始的偏移量返回該行中第 n 次邏輯運行之後的字元索引。
 int getRunStart(int run)
          以該行開始的偏移量返回該行中第 n 次邏輯運行開始時的字元索引。
 boolean isLeftToRight()
          如果該行都是從左到右的文本且基本方向也是從左到右,則返回 true。
 boolean isMixed()
          如果該行既不是從左到右也不是從右到左,則返回 true。
 boolean isRightToLeft()
          如果該行都是從右到左的文本且基本方向也是從右到左,則返回 true。
static void reorderVisually(byte[] levels, int levelStart, Object[] objects, int objectStart, int count)
          根據物件的層次,在陣列中將物件重新排序為可視順序。
static boolean requiresBidi(char[] text, int start, int limit)
          如果指定的文本需要雙向解析,則返回 true。
 String toString()
          用於除錯時顯示雙向演算法的內部狀態。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

DIRECTION_LEFT_TO_RIGHT

public static final int DIRECTION_LEFT_TO_RIGHT
表示基本方向是從左到右的常數。

另請參見:
常數欄位值

DIRECTION_RIGHT_TO_LEFT

public static final int DIRECTION_RIGHT_TO_LEFT
表示基本方向是從右到左的常數。

另請參見:
常數欄位值

DIRECTION_DEFAULT_LEFT_TO_RIGHT

public static final int DIRECTION_DEFAULT_LEFT_TO_RIGHT
表示基本方向依賴於根據 Unicode 雙向演算法得到的文本中第一個強方向字元的常數。如果沒有強方向字元,則基本方向是從左到右。

另請參見:
常數欄位值

DIRECTION_DEFAULT_RIGHT_TO_LEFT

public static final int DIRECTION_DEFAULT_RIGHT_TO_LEFT
表示基本方向依賴於根據 Unicode 雙向演算法得到的文本中第一個強方向字元的常數。如果沒有強方向字元,則基本方向是從右到左。

另請參見:
常數欄位值
建構子詳細資訊

Bidi

public Bidi(String paragraph,
            int flags)
由給定的文本段和基本方向建構 Bidi。

參數:
paragraph - 一個文本段
flags - 控制演算法的標誌集合。此演算法識別標誌 DIRECTION_LEFT_TO_RIGHT、DIRECTION_RIGHT_TO_LEFT、DIRECTION_DEFAULT_LEFT_TO_RIGHT 以及 DIRECTION_DEFAULT_RIGHT_TO_LEFT。其他值保留。

Bidi

public Bidi(AttributedCharacterIterator paragraph)
由給定的文本段建構 Bidi。

文本中 RUN_DIRECTION 屬性(如果存在)定義了基本方向(從左到右或者從右到左)。如果不存在,使用 Unicode 雙向演算法計算基本方向,預設為如果文本中沒有強方向字元則從左到右。此屬性(如果存在)必須應用於段中所有文本。

文本中 BIDI_EMBEDDING 屬性(如果存在)代表了嵌入層次資訊。從 -1 到 -62 的負值指示覆寫層次的絕對值。從 1 到 62 的正值指示嵌入。如果值為 0 或者沒有定義,則基本的嵌入層次由假定的基本方向來決定。

文本中的 NUMERIC_SHAPING 屬性(如果存在)在運行雙向演算法之前將歐洲數字轉換成其他十進制數字。此屬性(如果存在)必須應用於段中所有文本。

參數:
paragraph - 具有可選的字元和段落屬性資訊的文本段。
另請參見:
TextAttribute.BIDI_EMBEDDING, TextAttribute.NUMERIC_SHAPING, TextAttribute.RUN_DIRECTION

Bidi

public Bidi(char[] text,
            int textStart,
            byte[] embeddings,
            int embStart,
            int paragraphLength,
            int flags)
由給定的文本、嵌入和方向資訊建構 Bidi。Embeddings 陣列可以為 null。如果有的話,其值代表了嵌入層次資訊。從 -1 到 -61 的負值指示覆寫層次的絕對值。從 1 到 61 的正值指示嵌入。如果值為 0,則基本的嵌入層次由假定的基本方向來決定。

參數:
text - 套件含了要處理的文本段的一個陣列。
textStart - 段落開始的文本陣列中的索引。
embeddings - 套件含了段落中每個字元的嵌入值的一個陣列。在假定不存在外部嵌入資訊的情況下可能為空。
embStart - 段落開始的嵌入陣列中的索引。
paragraphLength - 在文本和嵌入陣列中的段落長度。
flags - 控制演算法的標誌集合。此演算法識別標誌 DIRECTION_LEFT_TO_RIGHT、DIRECTION_RIGHT_TO_LEFT、DIRECTION_DEFAULT_LEFT_TO_RIGHT 和 DIRECTION_DEFAULT_RIGHT_TO_LEFT。其他值保留。
方法詳細資訊

createLineBidi

public Bidi createLineBidi(int lineStart,
                           int lineLimit)
建構一個 Bidi 物件,表示當前 Bidi 所代表的段落中的一行文本上的雙向資訊。如果整個段落裝配在一行中則不需要此調用。

參數:
lineStart - 從段的開始到行的開始的偏移量。
lineLimit - 從段的開始到行的限制的偏移量。

isMixed

public boolean isMixed()
如果該行既不是從左到右也不是從右到左,則返回 true。這意味著它具有從左到右和從右到左文本的混合運行,或者基本方向與文本單運行的方向不同。

返回:
如果該行既不是從左到右也不是從右到左,則返回 true。

isLeftToRight

public boolean isLeftToRight()
如果該行都是從左到右的文本且基本方向也是從左到右,則返回 true。

返回:
如果該行都是從左到右的文本且基本方向也是從左到右,則返回 true

isRightToLeft

public boolean isRightToLeft()
如果該行都是從右到左的文本且基本方向也是從右到左,則返回 true。

返回:
如果該行都是從右到左的文本且基本方向也是從右到左,則返回 true

getLength

public int getLength()
返回該行中文本的長度。

返回:
該行中文本的長度

baseIsLeftToRight

public boolean baseIsLeftToRight()
如果基本方向是從左到右,則返回 true。

返回:
如果基本方向是從左到右,則返回 true

getBaseLevel

public int getBaseLevel()
返回基本層次(如果是從左到右,則為 0;如果是從右到左,則為 1)。

返回:
基本層次

getLevelAt

public int getLevelAt(int offset)
返回偏移位置處的字元的解析層次。如果偏移量小於 0 或者大於等於行的長度,則返回基本的方向層次。

參數:
offset - 返回層次的字元的索引
返回:
偏移位置處的字元的解析層次

getRunCount

public int getRunCount()
返回層次運行的數目。

返回:
層次運行的數目

getRunLevel

public int getRunLevel(int run)
返回該行中第 n 次邏輯運行的層次。

參數:
run - 運行的索引,在 0 到 getRunCount() 之間
返回:
運行層次

getRunStart

public int getRunStart(int run)
以該行開始的偏移量返回該行中第 n 次邏輯運行開始時的字元索引。

參數:
run - 運行的索引,在 0 到 getRunCount() 之間
返回:
運行的開始位置

getRunLimit

public int getRunLimit(int run)
以該行開始的偏移量返回該行中第 n 次邏輯運行之後的字元索引。例如,這將返回該行上最後一次運行的行的長度。

參數:
run - 運行的索引,在 0 到 getRunCount() 之間
返回:
運行的限制

requiresBidi

public static boolean requiresBidi(char[] text,
                                   int start,
                                   int limit)
如果指定的文本需要雙向解析,則返回 true。如果返回 false,該文本將從左到右顯示。客戶端可以避免建構一個 Bidi 物件。Unicode 的 Arabic Presentation Forms 區域的文本假定為已經針對顯示進行整形和排序,因此不會導致此函數返回 true。

參數:
text - 套件含測試字元的文本
start - 測試字元的範圍的開始
limit - 測試字元的範圍的限制
返回:
如果該字元範圍需要雙向解析,則返回 true

reorderVisually

public static void reorderVisually(byte[] levels,
                                   int levelStart,
                                   Object[] objects,
                                   int objectStart,
                                   int count)
根據物件的層次,在陣列中將物件重新排序為可視順序。當您有一個以邏輯順序表示文本運行的物件集合時(其中每個運行包含同一個層次上的文本),這是一個可用的實用工具函數。假定每一個文本運行具有層次陣列中相應的元素(位於 index - objectStart + levelStart)所指示的層次時,物件陣列中位於 index 的元素從 objectStart 一直到 objectStart + count 將被重新排序為可視順序。

參數:
levels - 表示每一個物件雙向層次的陣列
levelStart - 層次陣列中的開始位置
objects - 將被重新排序為可視順序的物件陣列
objectStart - 物件陣列中的開始位置
count - 要重新排序的物件數

toString

public String toString()
用於除錯時顯示雙向演算法的內部狀態。

覆寫:
類別 Object 中的 toString
返回:
該物件的字元串表示形式。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only