Я пытаюсь преобразовать текст в путь, используя CGPATH в iOS, а затем преобразовать этот путь в строку SVG, но когда я сохраняю SVG и загружаю его снова, путь является круглым, а не формирует правильную форму текста.
Вот моя реализация: Функция TextTopath:
func textToPath(text: String, font: UIFont) -> CGPath? {
let attributedString = NSAttributedString(string: text, attributes: [.font: font])
let line = CTLineCreateWithAttributedString(attributedString)
let runArray = CTLineGetGlyphRuns(line) as NSArray
let path = CGMutablePath()
for run in runArray {
let run = run as! CTRun
let count = CTRunGetGlyphCount(run)
for index in 0.. String {
let boundingBox = path.boundingBox
let svgWidth = boundingBox.width
let svgHeight = boundingBox.height
var svgString = "\n"
svgString += "
path.applyWithBlock { elementPointer in
let element = elementPointer.pointee
let points = element.points
switch element.type {
case .moveToPoint:
svgString += "M \(points.pointee.x) \(points.pointee.y) "
case .addLineToPoint:
svgString += "L \(points.pointee.x) \(points.pointee.y) "
case .addQuadCurveToPoint:
svgString += "Q \(points.pointee.x) \(points.pointee.y) \(points.pointee.x) \(points.pointee.y) "
case .addCurveToPoint:
svgString += "C \(points.pointee.x) \(points.pointee.y) \(points.pointee.x) \(points.pointee.y) \(points.pointee.x) \(points.pointee.y) "
case .closeSubpath:
svgString += "Z "
@unknown default:
break
}
}
svgString += "\" fill=\"\(color.hexString)\" />\n"
svgString += ""
return svgString
}
< /code>
[b] Проблема: < /strong>
Когда я загружаю сохраненный файл SVG, он создает круглый путь вместо правильной формы текста. Я полагаю, что преобразование пути не захватывает правильные координаты или кривые, поскольку оно не отображается должным образом в зрителе SVG. < /P>
Дополнительные детали: < /strong>
Функция TextTopath генерирует CGPATH, основанный на тексту и его шрифте.
Функция PathToSVG должна преобразовать CGPATH в строку пути SVG.
Сохраняемый файл SVG отображает круглый путь, а не на предполагаемом Текст.
Что я пробовал: [/b]
Я проверил преобразование, применяемое к пути, и это Кажется правильным для инвертирования оси Y.
Я попытался использовать как M, так и L для команд Path, но SVG все еще не делает текст, как и ожидалось.
Любая помощь будет высоко оценена. Заранее спасибо!
Подробнее здесь: [url]https://stackoverflow.com/questions/79395763/converting-text-to-cgpath-to-svg-problem-with-svg-path-conversion-from-cgpath[/url]
Я пытаюсь преобразовать текст в путь, используя CGPATH в iOS, а затем преобразовать этот путь в строку SVG, но когда я сохраняю SVG и загружаю его снова, путь является круглым, а не формирует правильную форму текста. Вот моя реализация: [b] Функция TextTopath: [/b] [code]func textToPath(text: String, font: UIFont) -> CGPath? { let attributedString = NSAttributedString(string: text, attributes: [.font: font]) let line = CTLineCreateWithAttributedString(attributedString) let runArray = CTLineGetGlyphRuns(line) as NSArray
let path = CGMutablePath()
for run in runArray { let run = run as! CTRun let count = CTRunGetGlyphCount(run)
for index in 0.. String { let boundingBox = path.boundingBox let svgWidth = boundingBox.width let svgHeight = boundingBox.height
var svgString = "\n" svgString += " path.applyWithBlock { elementPointer in let element = elementPointer.pointee let points = element.points
< /code> [b] Проблема: < /strong> Когда я загружаю сохраненный файл SVG, он создает круглый путь вместо правильной формы текста. Я полагаю, что преобразование пути не захватывает правильные координаты или кривые, поскольку оно не отображается должным образом в зрителе SVG. < /P> Дополнительные детали: < /strong> Функция TextTopath генерирует CGPATH, основанный на тексту и его шрифте. Функция PathToSVG должна преобразовать CGPATH в строку пути SVG. Сохраняемый файл SVG отображает круглый путь, а не на предполагаемом Текст. Что я пробовал: [/b] Я проверил преобразование, применяемое к пути, и это Кажется правильным для инвертирования оси Y. Я попытался использовать как M, так и L для команд Path, но SVG все еще не делает текст, как и ожидалось. Любая помощь будет высоко оценена. Заранее спасибо!
Я пытаюсь преобразовать текст в путь, используя CGPATH в iOS, а затем преобразовать этот путь в строку SVG, но когда я сохраняю SVG и загружаю его снова, путь является круглым, а не формирует правильную форму текста.
Вот моя реализация:
Функция...
Я пытаюсь преобразовать текст в путь, используя CGPATH в iOS, а затем преобразовать этот путь в строку SVG, но когда я сохраняю SVG и загружаю его снова, путь является круглым, а не формирует правильную форму текста.
Вот моя реализация:
Функция...
Я пытаюсь преобразовать строку в cgpath в Swift с помощью Coretext. Подход работает для большинства символов, но для букв с круглыми краями, такими как «o», 'p', 'e', путь неправильно отображается. Изогнутые части кажутся искаженными или...
CGRect имеет очень удобную встроенную константу: CGRect.null
let aRect = ... //get rect from somewhere
CGRect.null.union(aRect) //is aRect
CGRect.null.intersection(aRect) //is CGRect.null
CGPathВ нет ничего подобного, то есть вы не можете...