feat:add letter spacing

pr675
Hufe921 4 years ago
parent 6b2d0dc4a4
commit 2152c00238

@ -587,6 +587,9 @@ export class Draw {
ctx.font = this._getFont(element)
const fontMetrics = this.textParticle.measureText(ctx, element)
metrics.width = fontMetrics.width * scale
if (element.letterSpacing) {
metrics.width += element.letterSpacing * scale
}
metrics.boundingBoxAscent = (element.value === ZERO ? defaultSize : fontMetrics.actualBoundingBoxAscent) * scale
metrics.boundingBoxDescent = fontMetrics.actualBoundingBoxDescent * scale
if (element.type === ElementType.SUPERSCRIPT) {

@ -25,6 +25,7 @@ export interface IElementStyle {
strikeout?: boolean;
rowFlex?: RowFlex;
rowMargin?: number;
letterSpacing?: number;
}
export interface ITableAttr {

@ -1,5 +1,6 @@
import { deepClone, getUUID } from '.'
import { ElementType, IEditorOption, IElement } from '..'
import { defaultCheckboxOption } from '../dataset/constant/Checkbox'
import { ZERO } from '../dataset/constant/Common'
import { defaultControlOption } from '../dataset/constant/Control'
import { EDITOR_ELEMENT_ZIP_ATTR } from '../dataset/constant/Element'
@ -123,10 +124,12 @@ export function formatElementList(elementList: IElement[], options: IFormatEleme
const valueStrList = valueSet.value.split('')
for (let e = 0; e < valueStrList.length; e++) {
const value = valueStrList[e]
const isLastLetter = e === valueStrList.length - 1
elementList.splice(i, 0, {
controlId,
value,
type: el.type,
letterSpacing: isLastLetter ? defaultCheckboxOption.gap : 0,
control: el.control,
controlComponent: ControlComponent.VALUE
})

Loading…
Cancel
Save