linebreakdata.java
来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 372 行 · 第 1/2 页
JAVA
372 行
/*
* @(#)LineBreakData.java 1.8 98/01/12
*
* (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
* (C) Copyright IBM Corp. 1996 - All Rights Reserved
*
* Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
*
* The original version of this source code and documentation is copyrighted
* and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
* materials are provided under terms of a License Agreement between Taligent
* and Sun. This technology is protected by multiple US and International
* patents. This notice and attribution to Taligent may not be removed.
* Taligent is a registered trademark of Taligent, Inc.
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for NON-COMMERCIAL purposes and without
* fee is hereby granted provided that this copyright notice
* appears in all copies. Please refer to the file "copyright.html"
* for further important copyright and licensing information.
*
* SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
* THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*
*/
package java.text;
/**
* The LineBreakData contains data used by SimpleTextBoundary
* to determine line breaks.
* @see #BreakIterator
*/
final class LineBreakData extends TextBoundaryData
{
private static final byte BREAK = 0;
//always breaks (must be present as first item)
private static final byte blank = 1;
//spaces, tabs, nulls.
private static final byte cr = 2;
//carriage return
private static final byte nonBlank = 3;
//everything not included elsewhere
private static final byte op = 4;
//hyphens....
private static final byte jwrd = 5;
//hiragana, katakana, and kanji
private static final byte preJwrd = 6;
//characters that bind to the beginning of a Japanese word
private static final byte postJwrd = 7;
//characters that bind to the end of a Japanese word
private static final byte digit = 8;
//digits
private static final byte numPunct = 9;
//punctuation that can appear within a number
private static final byte currency = 10;
//currency symbols that can precede a number
private static final byte nsm = 11;
// non-spacing marks
private static final byte nbsp = 12;
// non-breaking characters
private static final byte EOS = 13;
private static final int COL_COUNT = 14;
private static final byte SI = (byte)0x80;
private static final byte STOP = (byte) 0;
private static final byte SI_STOP = (byte)SI + STOP;
private static final byte kLineForwardData[] =
{
// brk bl cr nBl
// op kan prJ poJ
// dgt np curr nsm
// nbsp EOS
/*00*/
STOP, STOP, STOP, STOP,
STOP, STOP, STOP, STOP,
STOP, STOP, STOP, STOP,
STOP, STOP,
/*01*/
(byte)(SI+4), (byte)(SI+2), (byte)(SI+7), (byte)(SI+3),
(byte)(SI+6), (byte)(SI+5), (byte)(SI+1), (byte)(SI+8),
(byte)(SI+9), (byte)(SI+8), (byte)(SI+1), (byte)(SI+1),
(byte)(SI+1), SI_STOP,
/*02*/
(byte)(SI+4), (byte)(SI+2), (byte)(SI+7), SI_STOP,
SI_STOP, SI_STOP, SI_STOP, SI_STOP,
SI_STOP, SI_STOP, SI_STOP, (byte)(SI+2),
(byte)(SI+1), SI_STOP,
/*03*/
(byte)(SI+4), (byte)(SI+2), (byte)(SI+7), (byte)(SI+3),
(byte)(SI+6), SI_STOP, SI_STOP, (byte)(SI+8),
(byte)(SI+9), (byte)(SI+8), SI_STOP, (byte)(SI+3),
(byte)(SI+1), SI_STOP,
/*04*/
SI_STOP, SI_STOP, SI_STOP, SI_STOP,
SI_STOP, SI_STOP, SI_STOP, SI_STOP,
SI_STOP, SI_STOP, SI_STOP, SI_STOP,
SI_STOP, SI_STOP,
/*05*/
(byte)(SI+4), (byte)(SI+2), (byte)(SI+7), SI_STOP,
SI_STOP, SI_STOP, SI_STOP, (byte)(SI+8),
SI_STOP, (byte)(SI+8), SI_STOP, (byte)(SI+5),
(byte)(SI+1), SI_STOP,
/*06*/
(byte)(SI+4), SI_STOP, (byte)(SI+7), SI_STOP,
SI_STOP, SI_STOP, SI_STOP, SI_STOP,
(byte)(SI+9), SI_STOP, (byte)(SI+11), (byte)(SI+6),
(byte)(SI+1), SI_STOP,
/*07*/
(byte)(SI+4), SI_STOP, SI_STOP, SI_STOP,
SI_STOP, SI_STOP, SI_STOP, SI_STOP,
SI_STOP, SI_STOP, SI_STOP, SI_STOP,
SI_STOP, SI_STOP,
/*08*/
(byte)(SI+4), (byte)(SI+2), (byte)(SI+7), SI_STOP,
SI_STOP, SI_STOP, SI_STOP, (byte)(SI+8),
SI_STOP, (byte)(SI+8), SI_STOP, (byte)(SI+8),
(byte)(SI+1), SI_STOP,
/*09*/
(byte)(SI+4), (byte)(SI+2), (byte)(SI+7), (byte)(SI+3),
(byte)(SI+6), SI_STOP, SI_STOP, (byte)(SI+8),
(byte)(SI+9), (byte)(SI+10), (byte)(SI+10), (byte)(SI+9),
(byte)(SI+1), SI_STOP,
/*10*/
(byte)(SI+4), (byte)(SI+2), (byte)(SI+7), SI_STOP,
SI_STOP, SI_STOP, SI_STOP, (byte)(SI+8),
(byte)(SI+9), (byte)(SI+8), SI_STOP, (byte)(SI+10),
(byte)(SI+1), SI_STOP,
/*11*/
STOP, STOP, STOP, STOP,
STOP, STOP, STOP, STOP,
(byte)(SI+9), STOP, STOP, (byte)(11),
(byte)(SI+1), STOP
};
private static final WordBreakTable kLineForward
= new WordBreakTable(COL_COUNT, kLineForwardData);
private static final byte kLineBackwardData[] =
{
// brk bl cr nBl
// op kan prJ poJ
// dgt np curr nsm
// nbsp EOS
/*00*/
STOP, STOP, STOP, STOP,
STOP, STOP, STOP, STOP,
STOP, STOP, STOP, STOP,
STOP, STOP,
/*01*/
(byte)(SI+1), (byte)(SI+1), (byte)(SI+1), (byte)(SI+2),
(byte)(SI+2), (byte)(SI+4), (byte)(SI+2), (byte)(SI+3),
(byte)(SI+2), (byte)(SI+3), (byte)(SI+2), (byte)(SI+1),
(byte)(SI+2), STOP,
/*02*/
STOP, STOP, STOP, (byte)(SI+2),
(byte)(SI+2), STOP, (byte)(SI+2), (byte)(SI+3),
(byte)(SI+2), (byte)(SI+3), (byte)(SI+2), (byte)(SI+2),
(byte)(SI+2), STOP,
/*03*/
STOP, STOP, STOP, (byte)(SI+2),
STOP, (byte)(SI+4), (byte)(SI+2), (byte)(SI+3),
(byte)(SI+2), (byte)(SI+3), (byte)(SI+2), (byte)(SI+3),
(byte)(SI+2), STOP,
/*04*/
STOP, STOP, STOP, STOP,
STOP, STOP, (byte)(SI+2), STOP,
STOP, STOP, (byte)(SI+2), (byte)(SI+4),
(byte)(SI+4), STOP
};
private static final WordBreakTable kLineBackward
= new WordBreakTable(COL_COUNT, kLineBackwardData);
private static final int kRawMapping[] =
{
nonBlank, //UNASSIGNED = 0,
nonBlank, //UPPERCASE_LETTER = 1,
nonBlank, //LOWERCASE_LETTER = 2,
nonBlank, //TITLECASE_LETTER = 3,
nonBlank, //MODIFIER_LETTER = 4,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?