func setFont()

in react-native-pytorch-core/ios/Canvas/DrawingCanvasView.swift [243:293]


    func setFont(font: NSDictionary) throws {
        if let fr = currentState.fontRepresentation, fr.isEqual(font) {
            return
        } else {
            currentState.fontRepresentation = font
        }

        var fontName = ""
        var serif = false

        if let fontFamilyArr = font["fontFamily"] as? NSArray, let fontFamily = fontFamilyArr[0] as? String {
            switch fontFamily {
            case "serif":
                fontName = "TimesNewRomanPS-"
                serif = true
            case "sans-serif":
                fontName = "HelveticaNeue-"
            case "monospace":
                fontName = "Menlo-"
            default:
                throw CanvasError.InvalidFontFamily
            }
        }

        if let fontWeight = font["fontWeight"] as? NSString {
            if (fontWeight == "bold") {
                fontName += "Bold"
            }
        }

        if let fontStyle = font["fontStyle"] as? NSString {
            if (fontStyle == "italic") {
                fontName += "Italic"
            }
        }

        if fontName.last == "-" {
            fontName.removeLast()
        }

        if serif {
            fontName += "MT"
        }

        currentState.font = UIFont(name: fontName, size: 10.0) ?? .systemFont(ofSize: 10)

        if let fontSizeString = font["fontSize"] as? NSString {
            let fontSize = CGFloat(fontSizeString.floatValue)
            currentState.font = currentState.font.withSize(fontSize)
        }
    }