小编Luc*_*uca的帖子

使用 Swift 获取字体字形指标

为了在自定义 UIView 中定位/缩放字体字形,我需要知道一些字形指标,例如: - 上升(字形从基线的高度,例如“g”位于基线之上的部分) - 下降(字形距基线的深度,例如“g”位于基线下方的部分) - 宽度 - 字距调整 - 斜体校正(字形中超过其斜体宽度的部分)

我尝试子类化NSLayoutManager并从drawGlyphs以下位置读取这些信息:

override func drawGlyphs(forGlyphRange glyphsToShow: NSRange, at origin: CGPoint) {
    enumerateLineFragments(forGlyphRange: glyphsToShow) {
        (rect, usedRect, textContainer, glyphRange, stop) in
        for i in glyphsToShow.location ..< NSMaxRange(glyphsToShow) {

            if let textContainer = self.textContainer(forGlyphAt: glyphsToShow.location, effectiveRange: nil) {
                var glyphRect = self.boundingRect(forGlyphRange: NSMakeRange(i, 1), in:textContainer)
                glyphRect.origin.x += origin.x;
                glyphRect.origin.y += origin.y;

                /// NOW I HAVE AT LEAST THE BOUNDING BOX
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

glyphRect …

glyph fontmetrics textkit swift

0
推荐指数
1
解决办法
850
查看次数

标签 统计

fontmetrics ×1

glyph ×1

swift ×1

textkit ×1