I don't know if you are using Obj-C or Swift, but you can paste this into the Swift Playground page to see the result:
Minor changes
import UIKit import CoreText import PlaygroundSupport class PathView: UIView { var myPath: UIBezierPath? override func draw(_ rect: CGRect) { if let pth = myPath { UIColor.red.setStroke() // glyph path is inverted, so flip vertically let flipY = CGAffineTransform(scaleX: 1, y: -1.0) // glyph path may be offset on the x coord, and by the height (because it flipped) let translate = CGAffineTransform(translationX: -pth.bounds.origin.x, y: pth.bounds.size.height + pth.bounds.origin.y) // apply the transforms pth.apply(flipY) pth.apply(translate) // stroke the path pth.stroke() // print the modified path for debug / reference print(pth) } } } class TestViewController : UIViewController { override func viewDidLoad() { super.viewDidLoad() // blue background so we can see framing view.backgroundColor = UIColor(red: 0.25, green: 0.5, blue: 01.0, alpha: 1.0) // use a large font so we can see it easily let font = UIFont(name: "Times", size: 160)! // Hebrew character for 8 var unichars = [UniChar]("ח".utf16) unichars = [UniChar]("י".utf16) // init glyphs array var glyphs = [CGGlyph](repeatElement(0, count: unichars.count)) let gotGlyphs = CTFontGetGlyphsForCharacters(font, &unichars, &glyphs, unichars.count) if gotGlyphs { // get the cgPath for the character let cgpath = CTFontCreatePathForGlyph(font, glyphs[0], nil)! // convert it to a UIBezierPath let path = UIBezierPath(cgPath: cgpath) var r = path.bounds // let show it at 40,40 r = r.offsetBy(dx: 40.0, dy: 40.0) let pView = PathView(frame: r) pView.backgroundColor = .white pView.myPath = path view.addSubview(pView) // print bounds and path data for debug / reference print("bounds of path:", path.bounds) print() print(path) print() } } } let vc = TestViewController() PlaygroundPage.current.liveView = vc
It takes a lot of error checking / handling, but this can be a good start to finding and using the boundaries of the actual glyphs of characters (instead of label frames).
Result:

Donmag
source share