繁体   English   中英

从UIFont或.ttf文件中获取每个char(带形状)字体

[英]Get each char (with shape) of font from UIFont or .ttf file

我没有确切的想法是否有可能我也确实试图找到我的问题的解决方案,但没有成功,这就是为什么我在这里问,并希望我会得到解决方案。

我正在开发一个绘图相关的应用程序,我想在其中获得由.ttf文件或UIFont提供的每种字体的形状。

对于Ex。

如果我有像"OpenSans-Italic"这样的UIFont / .ttf文件 ,那么怎么能用"OpenSans"字体的形状(这里是“斜体”形状)获得每个“char”? 我希望在Char or NSString.

=> @ [@“a”,@“b”,@“c”,@“d”,... @“A”,@“B”,@“C”,@“D”,.... 。@“1”,@“2”,@“3”....]; //这是char数组,仅用于理解目的。

请建议我,我怎么能得到这个?

这是一种方法,借鉴这篇文章。 它遍历NSCharacterSet所有可能字符并找到有效字符。 现在它正在使用.URLPathAllowedCharacterSet()但它可以使用其他。

import UIKit

var attributedString = NSMutableAttributedString()
if let font = UIFont(name: "OpenSans-Italic", size: 12) {
  let charset = NSCharacterSet.URLPathAllowedCharacterSet()
  for var plane : UInt32 in 0...16 where charset.hasMemberInPlane(UInt8(plane)) {
    let planeRange = (plane << 16)..<((plane+1) << 16)
    for characterValue in planeRange where charset.longCharacterIsMember(characterValue) {
      let character = String(UnicodeScalar(CFSwapInt32HostToLittle(characterValue)))
      attributedString.appendAttributedString(NSAttributedString(string:character, attributes: [NSFontAttributeName:font]))
    }
  }
}

如果代码中列出了可用的字形,它是否有效? 如果它有效,一切似乎都很容易。

我的意思是添加一些构建阶段来解析字体文件并生成一些代码,包括所有可用的字符。 我创建了一个提供类似想法IconFont的项目。 该项目从字体文件提供UIImage。 在开发分支中,我添加了一个构建阶段来使用项目PyTTF解析ttf字体文件并将代码添加到TBCityIcon.m 很容易修改python脚本以生成包含所有可用字符的NSArray代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM