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

时间:2015-10-24 09:48:15

标签: ios swift fonts nsattributedstring

我为textField设置了不同的字体,它运行正常。我可以通过这种方式输入古吉拉特语字体textField,我设置字体:

enter image description here

但是当我尝试打印用户的文字时,它会打印英文字母。假设我像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了解更多信息。

1 个答案:

答案 0 :(得分:1)

Xcode控制台窗口使用可在Xcode中更改的字体 首选项,但不是在运行时以编程方式。 print()函数写入了“文本表示” 给出论点。对于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",即使您 有一个显示的字体为"અબચ"。因此匹配 "અબચ"的字符串无效。

我没有使用古吉拉特语来提出好的经验 解。知道你可以“音译”可能会很有趣 拉丁字母的外语(来自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

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

相关问题