function setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) {
	        // Consider there will be abnormal when merge hover style to normal style if given default value.
	        opt = opt || EMPTY_OBJ;

	        if (opt.isRectText) {
	            var textPosition = textStyleModel.getShallow('position')
	                || (isEmphasis ? null : 'inside');
	            // 'outside' is not a valid zr textPostion value, but used
	            // in bar series, and magric type should be considered.
	            textPosition === 'outside' && (textPosition = 'top');
	            textStyle.textPosition = textPosition;
	            textStyle.textOffset = textStyleModel.getShallow('offset');
	            var labelRotate = textStyleModel.getShallow('rotate');
	            labelRotate != null && (labelRotate *= Math.PI / 180);
	            textStyle.textRotation = labelRotate;
	            textStyle.textDistance = zrUtil.retrieve2(
	                textStyleModel.getShallow('distance'), isEmphasis ? null : 5
	            );
	        }

	        var ecModel = textStyleModel.ecModel;
	        var globalTextStyle = ecModel && ecModel.option.textStyle;

	        // Consider case:
	        // {
	        //     data: [{
	        //         value: 12,
	        //         label: {
	        //             normal: {
	        //                 rich: {
	        //                     // no 'a' here but using parent 'a'.
	        //                 }
	        //             }
	        //         }
	        //     }],
	        //     rich: {
	        //         a: { ... }
	        //     }
	        // }
	        var richItemNames = getRichItemNames(textStyleModel);
	        var richResult;
	        if (richItemNames) {
	            richResult = {};
	            for (var name in richItemNames) {
	                if (richItemNames.hasOwnProperty(name)) {
	                    // Cascade is supported in rich.
	                    var richTextStyle = textStyleModel.getModel(['rich', name]);
	                    // In rich, never `disableBox`.
	                    setTokenTextStyle(richResult[name] = {}, richTextStyle, globalTextStyle, opt, isEmphasis);
	                }
	            }
	        }
	        textStyle.rich = richResult;

	        setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, true);

	        if (opt.forceRich && !opt.textStyle) {
	            opt.textStyle = {};
	        }

	        return textStyle;
	    }
{
     disableBox: boolean, Whether diable drawing box of block (outer most).
     isRectText: boolean,
     autoColor: string, specify a color when color is 'auto',
             for textFill, textStroke, textBackgroundColor, and textBorderColor.
             If autoColor specified, it is used as default textFill.
     useInsideStyle:
             `true`: Use inside style (textFill, textStroke, textLineWidth)
                 if `textFill` is not specified.
             `false`: Do not use inside style.
             `null/undefined`: use inside style if `isRectText` is true and
                 `textFill` is not specified and textPosition contains `'inside'`.
     forceRich: boolean
}