Macos 当请求Myriad Pro的粗体版本时,为什么核心文本返回Myriad Pro半粗体
我安装了常用的Adobe Myriad Pro字体。其中包括Myriad Pro Regular、Myriad Pro Bold和Myriad Pro Semibold。假设我有一个指向Myriad Pro Regular的Macos 当请求Myriad Pro的粗体版本时,为什么核心文本返回Myriad Pro半粗体,macos,fonts,core-text,opentype,ctfont,Macos,Fonts,Core Text,Opentype,Ctfont,我安装了常用的Adobe Myriad Pro字体。其中包括Myriad Pro Regular、Myriad Pro Bold和Myriad Pro Semibold。假设我有一个指向Myriad Pro Regular的CTFontRef baseFont,并且我想要的字体大小是size。我运行以下代码: CTFontRef boldFont = CTFontCreateCopyWithSymbolicTraits(baseFont, size, NULL, kCTFontBoldTrait
CTFontRef baseFont
,并且我想要的字体大小是size
。我运行以下代码:
CTFontRef boldFont = CTFontCreateCopyWithSymbolicTraits(baseFont, size, NULL, kCTFontBoldTrait, kCTFontBoldTrait);
返回的字体是Myriad Pro半黑体,而不是Myriad Pro黑体
除了请求命名样式“Bold”之外,是否有其他方法强制此项返回Myriad Pro Bold?我想让这段代码完全通用,没有硬连接样式名称
我在各种排列中尝试过这种方法,包括在最初创建字体时将粗体特征作为属性字典的一部分传递,避免了这里描述的两步过程,但它仍然返回半粗体字体,而不是普通粗体字体。我也对字体本身进行了一些探索。全加粗字体在其
表格中的权重为700,半加粗字体的权重为600。全景权重与此相对应。但是,半粗体和粗体字体的
表中的macStyle
字段都设置了粗体标志,因此,这大概就是核心文本所使用的内容。但是有没有办法让它更具辨别力呢?基于对文档的阅读,再加上一些关于字体处理的一般知识,而不是核心文本的具体知识,我认为这是可能的,但并不简单
指定symTraitValue
和SYMTRAITMAK
参数的类型为CTFONTSYMBOLCTRAITS
。定义您正在使用的“粗体”值
kCTFontBoldTrait = (1 << 1)
kCTFontBoldTrait=(1对于CtfontWeightDescriptor
您可以指定一个属性kCTFontTraitsAttribute
,该属性应为CFDictionaryRef
,其中您可以指定kCTFontWeightTrait
,该属性采用一个表示-1和1之间的浮点值的CFNumberRef
,为您提供一个权重谱,1为最粗体的变体,0为常规/中等