Swift: ¿Cómo agregar puntos a un CGPath cerrado?

Me gustaría hacer que SKSpriteNodes se mueva a lo largo de los contornos de las letras. Tengo muchas letras pero aquí hay un ejemplo:

Me gustaría que el sprite siguiera la línea roja. Encontré esta respuesta que cubre principalmente mi problema:Obtenga la ruta para rastrear un personaje en un iOS UIFont

La respuesta viene con este código de ejemplo bueno y funcional:

 let font = UIFont(name: "HelveticaNeue", size: 64)!


var unichars = [UniChar]("P".utf16)
var glyphs = [CGGlyph](count: unichars.count, repeatedValue: 0)
let gotGlyphs = CTFontGetGlyphsForCharacters(font, &unichars, &glyphs, unichars.count)
if gotGlyphs {
    let cgpath = CTFontCreatePathForGlyph(font, glyphs[0], nil)!
    let path = UIBezierPath(CGPath: cgpath)
    print(path)
    XCPlaygroundPage.currentPage.captureValue(path, withIdentifier: "glyph \(glyphs[0])")
}

Sin embargo, todavía me encuentro con un problema ya que mi sprite no completa la ruta completa alrededor de la letra para todas las letras, sino que, por ejemplo, con "P" se detiene aquí (y comienza desde abajo):

Traté de agregar algunos puntos a lapath al igual que:

CGPathAddLineToPoint(path, nil, 0, 0)

pero el resultado no funciona probablemente porque el punto agregado es después del<Close> declaración:

<UIBezierPath: 0x7889ff70; <MoveTo {25.950001, 55.800003}>,
 <LineTo {25.950001, 95.100006}>,
 <LineTo {53.850002, 95.100006}>,
 <QuadCurveTo {71.625, 90.075005} - {66, 95.100006}>,
 <QuadCurveTo {77.25, 75.450005} - {77.25, 85.050003}>,
 <QuadCurveTo {71.625, 60.750004} - {77.25, 65.850006}>,
 <QuadCurveTo {53.850002, 55.800003} - {66, 55.650002}>,
 <Close>,
 <MoveTo {11.700001, 107.10001}>,
 <LineTo {11.700001, 0}>,
 <LineTo {25.950001, 0}>,
 <LineTo {25.950001, 43.800003}>,
 <LineTo {58.650002, 43.800003}>,
 <QuadCurveTo {83.175003, 52.050003} - {74.850006, 43.650002}>,
 <QuadCurveTo {91.5, 75.450005} - {91.5, 60.450001}>,
 <QuadCurveTo {83.175003, 98.775002} - {91.5, 90.450005}>,
 <QuadCurveTo {58.650002, 107.10001} - {74.850006, 107.10001}>,
 <Close>,
 <LineTo {0, 0}>

Respuestas a la pregunta(1)

Su respuesta a la pregunta