     case number(Double)
     case colour(Colour)
     case boolean(Bool)
+    
+    // half of any graphics library is dealing with drawing text
+    case fontStyle(FontStyle)
+    case fontVariant(FontVariant)
+    case fontFamilies([FontFamily])
+    case fontWeight(FontWeight)
+    case fontStretch(FontStretch)
+    case fontDecorations([TextDecoration])
+    case lineHeight(LineHeight)
+    case fontSize(FontSize)
+    
     indirect case array([StyleProperty])
+    
+    // remember to update Equatable extension below
 }
 
 public struct GraphicStyle
 {
-    let key: String
-    let value: StyleProperty
-    let important: Bool
+    public let key: String
+    public let value: StyleProperty
+    public let important: Bool
     
     public init(key: String, value: StyleProperty, important: Bool = false)
     {

                return lhsBool == rhsBool
            case (.array(let lhsArray), .array(let rhsArray)):
                return lhsArray == rhsArray
            default:
                return false
        }

//
import Foundation


public protocol InheritableProperty
{
    var useInitial : Bool {get}
    var useInherited : Bool {get}
    var useNormal : Bool {get}
}

public  enum StyleUnit
{
    case pixel
    case percent
    case em
    case point
    case centimeter
}

public  enum StyleProperty
