 /**
  Class represents single character representation - glyph
  */
-class TextPathGlyph {
-    typealias Index = String.UnicodeScalarView.Index
+public class TextPathGlyph {
+    public typealias Index = String.UnicodeScalarView.Index
     
     /// Character index in source string unicode view
-    fileprivate(set) var index: Index
+    public fileprivate(set) var index: Index
     
     /// Glyph path defined in glyph coordinates
-    fileprivate(set) var path: CGPath
+    public fileprivate(set) var path: CGPath
     
     /// Glyph path position (top left corner) in line space
-    fileprivate(set) var position: CGPoint
+    public fileprivate(set) var position: CGPoint
     
     /// Glyph line advance
-    fileprivate(set) var advance = CGSize.zero
+    public fileprivate(set) var advance = CGSize.zero
     
     /// Glyph origin offset (x component is a glyph origin offset, y component is an offset to baseline)
-    fileprivate(set) var originOffset = CGPoint.zero
+    public fileprivate(set) var originOffset = CGPoint.zero
     
     /// Glyph line run index
     fileprivate var lineRun: Int = 0

                                unicodeIndex = unicodeScalars.index(after: unicodeIndex)
                                
                                if(!ignoredCharsSet.contains(unicodeScalars[glyphUnicodeIndex])) {
                                    effectiveDescent = max(effectiveDescent, abs(rt_descent))
                                    
                                    let glyph = glyphPtr.pointee

 Text frame representation. This can represent a simple text rectangle (eq. UITextView text content),
 as well as a complex frame defined by CGPath
 */
public class TextPathFrame {
    
    /// Frame shape path (eq. textfield bounds rect)
    public fileprivate(set) var path: CGPath
    
    /// Text frame lines
    public fileprivate(set) var lines = [TextPathLine]()
    
    init(path: CGPath) {
        self.path = path
