Files
2020-10-05 20:51:21 +08:00

131 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Options
## API Signature
```typescript
export function computeTextFrames(options: FrameOptions): TextFrame[];
export function renderFrame(context: CanvasRenderingContext2D, frame: TextFrame, clear: boolean): void;
```
## FrameOptions
### viewWidth
* Type: `number`
* Default: `300`
* Description: view width, must equal to canvas.style.width, but be numeric
### viewHeight
* Type: `number`
* Default: `150`
* Description: view height
### canvasWidth
* Type: `number`
* Default: compute with `viewWidth`
* Description: canvas.widthdefault is `viewWidth * window.devicePixelRatio`
### canvasHeight
* Type: `number`
* Default: compute with `viewHeight`
* Description: canvas.height is `viewHeight * window.devicePixelRatio`
### margin
* Type: `number | { left?: number, right?: number, top?: number, bottom?: number }`
* Default: `0`
* Description: margin for **frame**
### lineStartProhibitedMarks
* Type: `string`
* Default: `、,..。:;!?'"」』”’)]})】〗〕]}》〉–~~—·.‧•・//`
* Description: prohibition characters for line start
### lineEndProhibitedMarks
* Type: `string`
* Default: `「『“‘([{(【〖〔[〔《〈/`
* Description: prohibition characters for line end
### unbreakableRule
* Type: `RegExp`
* Default: `/──|……|[\w\d]+/`
* Description: unbreakable marks. If not empty, must be a RegExp instance. Marks match the rule will not be split into diffrent lines
### fragments
* Type: `FragmentOptions[]`
* Default: `null`
* Description: text fragments, typically one paragraph one fragment
## FrameOptions & FragmentOptions
Options for both frame and fragment. Fragment option will inhirit from frame option if it's empty except `margin`.
### fontFamily
* Type: `string`
* Default: `serif`
* Description: font family
### fontSize
* Type: `number`
* Default: `16`
* Description: font size
### fontWeight
* Type: `string | number`
* Default: `16`
* Description: font weight, refer CSS `font-weight`
### color
* Type: `string`
* Default: `#000000`
* Description: font color
### lineHeight
* Type: `number`
* Default: 1.5 * `fontSize`
* Description: line height
### textIndent
* Type: `number`
* Default: `0`
* Description: text indentation for first line of fragment. interal new line of a fragment is not processed
### textAlign
* Type: `'center' | 'start' | 'end' | 'left' | 'right' | 'justify'`
* Default: `start`
* Description: text alignment, refer CSS `text-align`
### textAlignLast
* Type: `'center' | 'start' | 'end' | 'left' | 'right' | 'justify'`
* Default: `start`
* Description: when `textAlign` is `justify`, how the last line is aligned. internal new line of a fragment is also processed. refer CSS `text-align-last`
### rtl
* Type: `boolean`
* Default: `false`
* Description: if true, draw text from right to left
### trim
* Type: `boolean`
* Default: `false`
* Description: if true, trim white characters of text of a fragment
### marginCollapse
* Type: `boolean`
* Default: `true`
* Description: if true, the margin-top a fragment is the max of its own and the previous one. if `marginCollapse` of the previous fragment is `false`, margin of current fragment will not collapse
### noHeadMargin
* Type: `boolean`
* Default: `false`
* Description: ignore margin-top if a fragment is on the top of a frame
## FragmentOptions
### margin
* Type: `number | { left?: number, right?: number, top?: number, bottom?: number }`
* Default: `0`
* Description: margin of a **fragment**
### text
* Type: `string`
* Default: `''`
* Description: text content of a fragment