gpt4 book ai didi

ios - UITextKit 中英文字符的顶部与行的顶部不对齐

转载 作者:行者123 更新时间:2023-11-30 12:41:24 25 4
gpt4 key购买 nike

配置系统文本:

func prepareTextSystem()  {

textStorage.addLayoutManager(layoutManager)
layoutManager.addTextContainer(textContainer)
layoutManager.delegate = self
textContainer.lineFragmentPadding = 0
textContainer.lineBreakMode = lineBreakMode
textContainer.maximumNumberOfLines = numberOfLines
}

获取路径:

   let glyphaRect = layoutManager.boundingRect(forGlyphRange: glyphRange, in: textContainer!)

let glyphPosition = layoutManager.location(forGlyphAt: index)
let lineUsedRect = layoutManager.lineFragmentUsedRect(forGlyphAt: index, effectiveRange: nil)
let pointY = lineUsedRect.origin.y + glyphPosition.y

if index == 0 {
firstCharPath = UIBezierPath(rect: glyphaRect)//the first char Rect

lineUsedRectPath = UIBezierPath(rect: lineUsedRect)//the whole lineUsedRect
baseLinePath = UIBezierPath()//Baseline
baseLinePath?.move(to: CGPoint.init(x: 0, y: pointY))
baseLinePath?.addLine(to: CGPoint.init(x: Screen_W, y: pointY))
setNeedsDisplay()
}

绘制:

override func draw(_ rect: CGRect) {
if let path = firstCharPath {
path.stroke()
}
if let path = lineUsedRectPath {
path.stroke()
}
if let path = baseLinePath{
path.stroke()
}
}

如果textStorage存储字符串“Ye”,则表示如下: enter image description here

如果textStorage存储的是字符串“有y”(第一个字符是汉字),则表示如下: enter image description here

问题:

  1. 为什么英文字符的顶部没有与线条对齐,而汉字的顶部却对齐了?

2.如何获得英文字符的最高位置?

最佳答案

两种情况下的对齐都是正确的。也是一样的。

汉字很好地利用了所有空间(上方和下方),并且看起来与顶部对齐。

对于英文字符,仅使用部分空格。其上方还有额外的空间供特殊阅读标志使用。它与顶部对齐。

考虑一下下划线 _ 符号。上面有很多空白,但下面几乎没有。

Æ 已经很高了。为 Å 顶部的小点保留的空间导致了您的问题。

关于ios - UITextKit 中英文字符的顶部与行的顶部不对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42185208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com