diff --git a/cocos/2d/CCLabel.cpp b/cocos/2d/CCLabel.cpp index 468f175eea8c..e14a1c4a0aa8 100644 --- a/cocos/2d/CCLabel.cpp +++ b/cocos/2d/CCLabel.cpp @@ -2092,6 +2092,7 @@ FontDefinition Label::_getFontDefinition() const systemFontDef._fontSize = _systemFontSize; systemFontDef._alignment = _hAlignment; systemFontDef._vertAlignment = _vAlignment; + systemFontDef._lineSpacing = _lineSpacing; systemFontDef._dimensions.width = _labelWidth; systemFontDef._dimensions.height = _labelHeight; systemFontDef._fontFillColor.r = _textColor.r; diff --git a/cocos/base/ccTypes.h b/cocos/base/ccTypes.h index ae30d7939be5..46bc0c491235 100644 --- a/cocos/base/ccTypes.h +++ b/cocos/base/ccTypes.h @@ -561,6 +561,7 @@ struct CC_DLL FontDefinition : _fontSize(0) , _alignment(TextHAlignment::CENTER) , _vertAlignment(TextVAlignment::TOP) + , _lineSpacing(0.0f) , _dimensions(Size::ZERO) , _fontFillColor(Color3B::WHITE) , _fontAlpha(255) @@ -575,7 +576,9 @@ struct CC_DLL FontDefinition /// horizontal alignment TextHAlignment _alignment; /// vertical alignment - TextVAlignment _vertAlignment; + TextVAlignment _vertAlignment; + /// line spacing + float _lineSpacing; /// rendering box Size _dimensions; /// font color diff --git a/cocos/platform/android/CCDevice-android.cpp b/cocos/platform/android/CCDevice-android.cpp index 002888effdc6..c72ab7d8d3bf 100644 --- a/cocos/platform/android/CCDevice-android.cpp +++ b/cocos/platform/android/CCDevice-android.cpp @@ -89,7 +89,7 @@ class BitmapDC { JniMethodInfo methodInfo; if (! JniHelper::getStaticMethodInfo(methodInfo, "org.cocos2dx.lib.Cocos2dxBitmap", "createTextBitmapShadowStroke", - "([BLjava/lang/String;IIIIIIIIZFFFFZIIIIFZI)Z")) + "([BLjava/lang/String;IIIIIIIIFZFFFFZIIIIFZI)Z")) { CCLOG("%s %d: error to get methodInfo", __FILE__, __LINE__); return false; @@ -122,7 +122,7 @@ class BitmapDC if(!methodInfo.env->CallStaticBooleanMethod(methodInfo.classID, methodInfo.methodID, strArray, jstrFont, textDefinition._fontSize, textDefinition._fontFillColor.r, textDefinition._fontFillColor.g, textDefinition._fontFillColor.b, textDefinition._fontAlpha, - eAlignMask, nWidth, nHeight, + eAlignMask, nWidth, nHeight, textDefinition._lineSpacing, textDefinition._shadow._shadowEnabled, textDefinition._shadow._shadowOffset.width, -textDefinition._shadow._shadowOffset.height, textDefinition._shadow._shadowBlur, textDefinition._shadow._shadowOpacity, textDefinition._stroke._strokeEnabled, textDefinition._stroke._strokeColor.r, textDefinition._stroke._strokeColor.g, diff --git a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxBitmap.java b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxBitmap.java index 6aec602b92d3..07fd695a3fab 100644 --- a/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxBitmap.java +++ b/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxBitmap.java @@ -151,7 +151,7 @@ public static Typeface calculateShrinkTypeFace(String text, int width, int heigh public static boolean createTextBitmapShadowStroke(byte[] bytes, final String fontName, int fontSize, int fontTintR, int fontTintG, int fontTintB, int fontTintA, - int alignment, int width, int height, + int alignment, int width, int height, float lineSpacing, boolean shadow, float shadowDX, float shadowDY, float shadowBlur, float shadowOpacity, boolean stroke, int strokeR, int strokeG, int strokeB, int strokeA, float strokeSize, boolean enableWrap, int overflow) { String string; @@ -196,12 +196,12 @@ public static boolean createTextBitmapShadowStroke(byte[] bytes, final String f if (overflow == 1 && !enableWrap){ int widthBoundary = (int)Math.ceil( StaticLayout.getDesiredWidth(string, paint)); - layout = new StaticLayout(string, paint, widthBoundary , hAlignment,1.0f,0.0f,false); + layout = new StaticLayout(string, paint, widthBoundary, hAlignment, 1.0f, lineSpacing, false); }else { if (overflow == 2) { calculateShrinkTypeFace(string, width, height, hAlignment, fontSize, paint, enableWrap); } - layout = new StaticLayout(string, paint, maxWidth , hAlignment,1.0f,0.0f,false); + layout = new StaticLayout(string, paint, maxWidth, hAlignment, 1.0f, lineSpacing, false); } layoutWidth = layout.getWidth(); diff --git a/cocos/platform/ios/CCDevice-ios.mm b/cocos/platform/ios/CCDevice-ios.mm index 682dbd98eb23..3de2df7ee8c5 100644 --- a/cocos/platform/ios/CCDevice-ios.mm +++ b/cocos/platform/ios/CCDevice-ios.mm @@ -339,6 +339,7 @@ - (void)accelerometer:(CMAccelerometerData *)accelerometerData float tintColorG; float tintColorB; float tintColorA; + float lineSpacing; unsigned char* data; @@ -414,6 +415,7 @@ static bool _initWithString(const char * text, cocos2d::Device::TextAlign align, NSTextAlignment nsAlign = FontUtils::_calculateTextAlignment(align); NSMutableParagraphStyle* paragraphStyle = FontUtils::_calculateParagraphStyle(enableWrap, overflow); paragraphStyle.alignment = nsAlign; + paragraphStyle.lineSpacing = info->lineSpacing; // measure text size with specified font and determine the rectangle to draw text in @@ -579,6 +581,7 @@ static bool _initWithString(const char * text, cocos2d::Device::TextAlign align, info.tintColorG = textDefinition._fontFillColor.g / 255.0f; info.tintColorB = textDefinition._fontFillColor.b / 255.0f; info.tintColorA = textDefinition._fontAlpha / 255.0f; + info.lineSpacing = textDefinition._lineSpacing; if (! _initWithString(text, align, textDefinition._fontName.c_str(), textDefinition._fontSize, &info, textDefinition._enableWrap, textDefinition._overflow)) { diff --git a/cocos/renderer/CCTexture2D.cpp b/cocos/renderer/CCTexture2D.cpp index 7934e620ebf4..1598b31128d9 100644 --- a/cocos/renderer/CCTexture2D.cpp +++ b/cocos/renderer/CCTexture2D.cpp @@ -1144,6 +1144,7 @@ bool Texture2D::initWithString(const char *text, const FontDefinition& textDefin auto textDef = textDefinition; auto contentScaleFactor = CC_CONTENT_SCALE_FACTOR(); textDef._fontSize *= contentScaleFactor; + textDef._lineSpacing *= contentScaleFactor; textDef._dimensions.width *= contentScaleFactor; textDef._dimensions.height *= contentScaleFactor; textDef._stroke._strokeSize *= contentScaleFactor;