场景:

1.假如你向做自己的字体管理界面时,这样就需要获取支持的所有字体名字。

2.objc的强大之处是它可以和C++混合编程,这是其他语言所不具备的。这里使用了ATS Service接口.ATS(AppleType Service)

文件1:test_fontdata.mm

#include <stdlib.h>
#include <stdio.h>
#include <ATSFont.h>
#import  <Foundation/Foundation.h>
#include <vector>
#include <string>inline void StoreFontDatabaseFromATS(std::vector<std::string>& name_list)
{NSAutoreleasePool *pool = [NSAutoreleasePool new];ATSFontFamilyIterator theFontFamilyIterator = NULL;ATSFontFamilyRef theATSFontFamilyRef = 0;OSStatus status = noErr;// Create the iteratorstatus = ATSFontFamilyIteratorCreate(kATSFontContextLocal, nil,nil,kATSOptionFlagsUnRestrictedScope,&theFontFamilyIterator );while (status == noErr){// Get the next font in the iteration.status = ATSFontFamilyIteratorNext( theFontFamilyIterator, &theATSFontFamilyRef );if(status == noErr){CFStringRef theName = NULL;ATSFontFamilyGetName(theATSFontFamilyRef, kATSOptionFlagsDefault, &theName);NSString *aNSString = (NSString*)theName;std::string name([aNSString UTF8String]);name_list.push_back(name);}else if (status == kATSIterationScopeModified) // Make sure the font database hasn't changed.{// reset the iteratorstatus = ATSFontFamilyIteratorReset (kATSFontContextLocal, nil, nil,kATSOptionFlagsUnRestrictedScope,&theFontFamilyIterator);name_list.clear() ;}}ATSFontFamilyIteratorRelease(&theFontFamilyIterator);[pool drain];
}int main(int argc,char* argv[])
{std::vector<std::string> name_list;StoreFontDatabaseFromATS(name_list);for (int i = 0; i < name_list.size(); ++i){printf("%s\n",name_list[i].c_str());}return 0;}

一部分输出:

Futura
Futura Condensed
Optima ExtraBlack
Herculanum
Gill Sans
Gill Sans Light
Helvetica Neue
Helvetica Neue Bold Condensed
Helvetica Neue UltraLight
Helvetica Neue Light
Helvetica Neue Black Condensed
Papyrus
Papyrus Condensed
.TimesLTMM_1_Wt_1_Wd
.HelveLTMM_170_Wt_1200_Wd
Optima

编译项:

g++ -I/Applications/Xcode\(4.3.2\).app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Headers -o test_fontdata test_fontdata.mm  -framework ApplicationServices -framework Cocoa

[Objc]_[获取Mac下的字体库支持的所有字体名称]相关推荐

  1. cad字体库大全2485种字体 附使用教程|cad字体库大全免费版

    在CAD工程设计中,设计图纸是不可缺少的核心,而不同的设计图纸所需要的字体也是不同的,若缺少相对应的字体,那么设计图纸文字显示就会产生乱码,严重的话还会影响布局,为此小编带来了cad字体库大全2485 ...

  2. cad字体库大全2485种字体

    cad字体库安装教程 1.首先下载解压压缩包,全部解压后,得到字体文件夹,总计2485个,如图: 2.找到autocad软件安装路径,并搜索[fonts]文件夹,然后打开解压后的文件夹,按[ctrl+ ...

  3. macbook自带python保存文件夹_在mac下查找python包存放路径site-packages的实现方法 在Mac系统下python如何安装第三方函数库?...

    mac怎么查看python的site-package位置世界上最伤心的事,不是你爱的人不爱你,而是他爱你过后,最后却不爱你. 可以通过find命令查看,参考demo如下: sudo find / -n ...

  4. IOS6 _内置字体库下载,轻松实现字体主体变换

    大家都发现在很多阅读类APP中都有很多字体风格,如果自己实现比较的麻烦,需要打包字体库内嵌到项目中,字体库又大,大多数情况下吃力不讨好:如果想做一个个性点APP,想要实现不同风格字体,有没有的能够简单 ...

  5. pom文件报错_解决mac下tess4j文字识别报错问题

    tesseract想必大家都知道(不知道自个查去),tess4j是java对tesseract的封装. Description: A Java JNA wrapper for Tesseract OC ...

  6. mac mysql密码错误_解决mac 下mysql安装后root用户登录密码错误问题

    使用的mac OS 10.11  安装mysql后访问root/root用户失败,网上找了一些解决办法,下面记录下解决方法方便以后自己查询 概述(看懂下面就不用看了): 停服务:sudo /usr/l ...

  7. mac模式怎样构造在jsp中_在MAC下搭建JSP开发环境

    1.Mac下JDK的下载安装及配置 在安装jdk之后,需要为jdk安装目录配置环境变量: 任意打开终端,默认是家目录的,然后直接输入: touch .bash_profile 然后输入:vi .bas ...

  8. Mac下matplotlib显示中文(不用安装字体)

    matplotlib绘图中文显示小方格,网上一大堆方法要下载simhei.ttf字体,还要修改matplotlib设定balabalabala,我一步步照做了,结果,没用. 然后发现: matplot ...

  9. OSS.Common获取枚举字典列表标准库支持

    上篇(.Net Standard扩展支持实例分享)介绍了OSS.Common的标准库支持扩展,也列举了可能遇到问题的解决方案.由于时间有限,同时.net standard暂时还没有提供对Descrip ...

最新文章

  1. C语言数组只会输出两个!_只愿与一人十指紧扣_新浪博客
  2. 8个实用的响应式设计框架
  3. python中requests库的用途-Python.Requests库的基本使用
  4. RDCL报表的两种使用方法/为DataSet添加两个Table_AX
  5. 使用C语言来实现模块化
  6. springmvc 重定向传递参数
  7. php mongodb连接数据库,PHP下 Mongodb 连接远程数据库的实例代码
  8. 解析网上的XML文件
  9. Softmax回归模型的构建和实现(Fashion-MNIST图像分类)
  10. Permission Denial: requires android.permission.CHANGE_CONFIGURATION
  11. limit mongodb 聚合_mongodb-$type、limit、skip、sort方法、索引、聚合
  12. java react_2019JAVA最新课程-React从入门到实战(新)
  13. d3js scales深入理解
  14. paip.python错误解决16
  15. PBRT——零基础到完全吃透系列
  16. 在ARM+LINUX上使用pppd拔号上网(GPRS)流程
  17. 计算机科普小知识大全,电脑小白知识科普 10个Win10实用技巧科普
  18. Web前端笔试115道题(带答案及解析)
  19. Android知识体系导图
  20. 亚马逊再开3000+无人店!国内却一半是海水一半是火焰

热门文章

  1. tongyuekeji123 实战 SQL Server 2008 数据库误删除数据的恢复
  2. 易语言调用大漠字库显示游戏坐标和角色等级
  3. 计算机英语翻译测试稿,英语翻译中级口译模拟测试及答案.doc
  4. 戴尔2950服务器陈烈卡什么型号,戴尔PowerEdge2950
  5. 获取 挂载有Content Size Fitter 组件的UI物体的 宽 和 高
  6. 微型计算机 总结,微机室工作总结范文
  7. mysql获取某个表中除了某个字段名外的所有字段名
  8. SpringBoot之@ControllerAdvice,@ModelAttribute,@InitBinder详解
  9. xftp,xftp下载文件
  10. 关于计算机申报职称的范文,职称申请报告范文