당신의 Obj-C 또는 스위프트 사용하는 경우 나도 몰라,하지만 당신은 결과를 볼 수있는 스위프트 놀이터 페이지에이 붙여 넣을 수 있습니다 :
사소한 편집
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's 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's 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
을
많은 오류 검사/처리가 필요하지만 이는 레이블 프레임 대신 실제 문자 모양의 범위를 찾고 사용하는 데 좋은 시작점이 될 수 있습니다.
결과 :
CTFont''을 살펴보세요 - 특히 ** 얻기 문양 데이터 ** 섹션 https://developer.apple.com/documentation/coretext/ctfont-를 q6r – DonMag
그걸 보았습니다.하지만 그 글꼴에 대한 데이터를 얻습니다. 구체적인 글리프가 아닙니다. –
나는 그것을 되 찾는다. 글리프 배열에 사용할 수있는 경계 데이터가있는 것 같습니다. 나는 그것을 볼 것이다 ... –