控制台打印不同的文本字体 swift

Console printing different text font swift

我已经为我的 textField 设置了不同的字体并且它工作正常。我可以通过设置字体的方式将古吉拉特语字体输入 textField

但是当我尝试打印用户的文本时,它正在打印英文字母。假设我像 અબચ 一样进入 textField 但它在控制台中打印 Optional("abc") 所以我尝试使用 attributedString 但它给了我相同的结果,下面是我的代码:

if let font = UIFont(name: "HARIKRISHNA", size: 16) {
        let attributedString = NSMutableAttributedString(string: userText!, attributes: [NSFontAttributeName : font])
        print(attributedString.string)
    } else {
        // The font "Raleway-SemiBold" is not found
        print("The font Raleway-SemiBold is not found")

    }

有什么方法可以用 textField 的相同语言记录输出吗?

Sample 了解更多信息。

Xcode 控制台 window 使用的字体可以在 Xcode 首选项,但不是在运行时以编程方式。 print() 函数写入一个 "textual representation" 给出的参数。对于 String,这只是字符串本身:

print(textF.text!)
// Output:
abc

对于属性字符串,文本表示是描述 包含字符串和属性:

print(textF.attributedText!)
// Output:
abc{
    NSColor = "UIDeviceRGBColorSpace 0 0 0 1";
    NSFont = "<UICTFont: 0x7fa6984241f0> font-family: \"HARIKRISHNA\"; font-weight: normal; font-style: normal; font-size: 14.00pt";
    NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 2, Tabs (\n    28L,\n    56L,\n    84L,\n    112L,\n    140L,\n    168L,\n    196L,\n    224L,\n    252L,\n    280L,\n    308L,\n    336L\n), DefaultTabInterval 0, Blocks (\n), Lists (\n), BaseWritingDirection 0, HyphenationFactor 0, TighteningForTruncation NO, HeaderLevel 0";
    NSShadow = "NSShadow {0, -1} color = {(null)}";
}

您的实际问题似乎是另一回事。分配一个特殊的 文本字段的字体仅更改字符串的外观, 不是字符串本身中的字符。

所以如果用户输入 "abc" 那么 textF.text 就是 "abc",即使你 有一个 显示 的字体 "અબચ"。因此匹配那个 针对 "અબચ" 的字符串无法工作。

我没有古吉拉特语的经验,无法提出好的建议 解决方案。知道您可以 "transliterate" 可能会很有趣 外语到拉丁字母表(来自 http://nshipster.com/cfstringtransform/):

let text = "અબચ" as NSMutableString
CFStringTransform(text, nil, kCFStringTransformToLatin, false)
print(text) 

结果是"abaca"因为

અ = GUARATI LETTER A
બ = GUARATI LETTER BA
ચ = GUARATI LETTER CA

但我不知道这对你的实际应用是否有帮助。