Skip to content
This repository has been archived by the owner on Feb 17, 2021. It is now read-only.

Wrong LabelLayout height when using attributed string with kern and line height #184

Open
plamenterziev opened this issue Feb 13, 2018 · 2 comments

Comments

@plamenterziev
Copy link

For some reasons setting both kern and line height of an attributed string makes boundingRect to return wrong height if the string can fit only one line.

  let paragraphStyle = NSMutableParagraphStyle()
  paragraphStyle.lineSpacing = 100
  let text = NSMutableAttributedString(
       string: "test",
       attributes: [NSAttributedStringKey.paragraphStyle : paragraphStyle,
                           NSAttributedStringKey.kern : 0.1,
                           NSAttributedStringKey.font : UIFont.systemFont(ofSize: 17)])
  let size = text.boundingRect(with: CGSize(width: 1000, height: 1000),
                                                   options: [.usesLineFragmentOrigin], 
                                                   context: nil).size

Here the size is (29.59384765625, 120.287109375) which seems fine for width but the height is wrong (maybe is the real height + the line height).

If the text goes multilines then boundingRect returns correct height.

Also removing the kern attribute or setting it to 0 also fixes the problem.

@itskoBits
Copy link

I can reproduce this as well. Removing the kern spacing resolves the issue, but I want to use custom kerning.

@itskoBits
Copy link

This actually is a bug with NSAttriubutedString. You can see more https://stackoverflow.com/questions/48811307/wrong-height-for-uilabel-when-using-custom-linespacing-and-kern.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants