66 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| css-line-break
 | |
| ==============
 | |
| 
 | |
| 
 | |
| [](https://www.npmjs.org/package/css-line-break)
 | |
| [](https://www.npmjs.org/package/css-line-break)
 | |
| 
 | |
| A JavaScript library for Line Breaking and identifying Word Boundaries, 
 | |
| [implementing the Unicode Line Breaking Algorithm (UAX #14)](http://unicode.org/reports/tr14/)  
 | |
| 
 | |
| >> Line breaking, also known as word wrapping, is the process of breaking a section of text into 
 | |
| lines such that it will fit in the available width of a page, window or other display area. 
 | |
| The Unicode Line Breaking Algorithm performs part of this process. Given an input text, 
 | |
| it produces a set of positions called "break opportunities" that are appropriate points to 
 | |
| begin a new line. The selection of actual line break positions from the set of break opportunities 
 | |
| is not covered by the Unicode Line Breaking Algorithm, but is in the domain of higher level 
 | |
| software with knowledge of the available width and the display size of the text.
 | |
| 
 | |
| In addition, the module implements CSS specific tailoring options to line breaking as 
 | |
| defined in [CSS Text Module Level 3](https://www.w3.org/TR/css-text-3/#line-breaking).
 | |
| 
 | |
| ### Installing
 | |
| You can install the module via npm:
 | |
| 
 | |
|     npm install css-line-break
 | |
|   
 | |
| ### Usage
 | |
| The `LineBreaker` creates an [iterator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators) that returns `Break`s for a given text.
 | |
| 
 | |
|     LineBreaker(text, [options]);
 | |
|     
 | |
| ### Example
 | |
| [JSFiddle](https://jsfiddle.net/ofd3752k)
 | |
| ```javascript
 | |
| import {LineBreaker} from 'css-line-break';
 | |
| 
 | |
| const breaker = LineBreaker('Lorem ipsum lol.', {
 | |
|     lineBreak: 'strict',
 | |
|     wordBreak: 'normal'
 | |
| });
 | |
| 
 | |
| const words = [];
 | |
| let bk;
 | |
| 
 | |
| while (!(bk = breaker.next()).done) {
 | |
|     words.push(bk.value.slice());
 | |
| }
 | |
| 
 | |
| assert.deepEqual(words, ['Lorem ', 'ipsum ', 'lol.']);
 | |
| ```    
 | |
| ### Options
 | |
| The following parameters are available for the options:
 | |
| 
 | |
|  - `lineBreak`: `normal` | `strict`
 | |
|  - `wordBreak`: `normal` | `break-all` | `break-word` | `keep-all`
 | |
|  
 | |
| For more information how they affect the line breaking algorithms, 
 | |
| check out [CSS Text Module Level 3](https://www.w3.org/TR/css-text-3/#line-breaking).
 | |
| 
 | |
| ### Testing
 | |
| You can run the test suite with:
 | |
| 
 | |
|     npm test
 | |
| 
 | |
| The library implements all the [LineBreakTest.txt tests](http://www.unicode.org/Public/10.0.0/ucd/auxiliary/LineBreakTest.txt) 
 | |
|  and a number of CSS web-platform-tests. |