mirror of
https://github.com/konvajs/konva.git
synced 2025-10-15 12:34:52 +08:00
getKerning TextPath API is deprecated. Use "kerningFunc" instead.
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
* @param {String} config.text
|
||||
* @param {String} config.data SVG data string
|
||||
* @param {Function} config.getKerning a getter for kerning values for the specified characters
|
||||
* @param {Function} config.kerningFunc a getter for kerning values for the specified characters
|
||||
* @@shapeParams
|
||||
* @@nodeParams
|
||||
* @example
|
||||
@@ -42,7 +43,7 @@
|
||||
* fontFamily: 'Arial',
|
||||
* text: 'All the world\'s a stage, and all the men and women merely players.',
|
||||
* data: 'M10,10 C0,0 10,150 100,100 S300,150 400,50',
|
||||
* getKerning: function(leftChar, rightChar) {
|
||||
* kerningFunc: function(leftChar, rightChar) {
|
||||
* return kerningPairs.hasOwnProperty(leftChar) ? pairs[leftChar][rightChar] || 0 : 0
|
||||
* }
|
||||
* });
|
||||
@@ -63,7 +64,6 @@
|
||||
var that = this;
|
||||
this.dummyCanvas = Konva.Util.createCanvasElement();
|
||||
this.dataArray = [];
|
||||
this.getKerning = config && config.getKerning;
|
||||
|
||||
// call super constructor
|
||||
Konva.Shape.call(this, config);
|
||||
@@ -85,9 +85,17 @@
|
||||
|
||||
// update text data for certain attr changes
|
||||
this.on(
|
||||
'textChange.konva alignChange.konva letterSpacingChange.konva',
|
||||
'textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva',
|
||||
that._setTextData
|
||||
);
|
||||
|
||||
if (config && config.getKerning) {
|
||||
Konva.Util.warn(
|
||||
'getKerning TextPath API is deprecated. Please use "kerningFunc" instead.'
|
||||
);
|
||||
this.setKerningFunc(config.getKerning);
|
||||
}
|
||||
|
||||
that._setTextData();
|
||||
this.sceneFunc(this._sceneFunc);
|
||||
this.hitFunc(this._hitFunc);
|
||||
@@ -206,6 +214,7 @@
|
||||
var size = this._getTextSize(this.attrs.text);
|
||||
var letterSpacing = this.getLetterSpacing();
|
||||
var align = this.align();
|
||||
var kerningFunc = this.getKerningFunc();
|
||||
|
||||
this.textWidth = size.width;
|
||||
this.textHeight = size.height;
|
||||
@@ -337,9 +346,9 @@
|
||||
currentT = start + 0.00000001;
|
||||
} else if (glyphWidth > currLen) {
|
||||
// Just in case start is 0
|
||||
currentT += Math.PI / 180.0 * dTheta / Math.abs(dTheta);
|
||||
currentT += ((Math.PI / 180.0) * dTheta) / Math.abs(dTheta);
|
||||
} else {
|
||||
currentT -= Math.PI / 360.0 * dTheta / Math.abs(dTheta);
|
||||
currentT -= ((Math.PI / 360.0) * dTheta) / Math.abs(dTheta);
|
||||
}
|
||||
|
||||
// Credit for bug fix: @therth https://github.com/ericdrowell/KonvaJS/issues/249
|
||||
@@ -448,11 +457,10 @@
|
||||
var width = Konva.Path.getLineLength(p0.x, p0.y, p1.x, p1.y);
|
||||
|
||||
var kern = 0;
|
||||
if (this.getKerning) {
|
||||
if (kerningFunc) {
|
||||
try {
|
||||
// getKerning is a user provided getter. Make sure it never breaks our logic
|
||||
kern =
|
||||
this.getKerning(charArr[i - 1], charArr[i]) * this.fontSize();
|
||||
kern = kerningFunc(charArr[i - 1], charArr[i]) * this.fontSize();
|
||||
} catch (e) {
|
||||
kern = 0;
|
||||
}
|
||||
@@ -685,5 +693,24 @@
|
||||
* text.textDecoration('underline');
|
||||
*/
|
||||
|
||||
Konva.Factory.addGetterSetter(Konva.TextPath, 'kerningFunc', null);
|
||||
|
||||
/**
|
||||
* get/set kerning function.
|
||||
* @name kerningFunc
|
||||
* @method
|
||||
* @memberof Konva.Text.prototype
|
||||
* @param {String} kerningFunc
|
||||
* @returns {String}
|
||||
* @example
|
||||
* // get text decoration
|
||||
* var kerningFunc = text.kerningFunc();
|
||||
*
|
||||
* // center text
|
||||
* text.kerningFunc(function(leftChar, rightChar) {
|
||||
* return 1;
|
||||
* });
|
||||
*/
|
||||
|
||||
Konva.Collection.mapMethods(Konva.TextPath);
|
||||
})();
|
||||
|
Reference in New Issue
Block a user