出于与许可相关的原因,我必须解密字体文件并将其加载到内存中然后注册它而不是直接从URL读取.为此,我必须使用CTFontManagerRegisterGraphicsFont.
有问题的部分出现在我尝试使用[NSFont fontWithName:@"Open Sans" size:21.0]它只接受字体的PostScript名称的地方(即("OpenSans或OpenSans-Bold为大胆的重量")并且不会使用姓氏"Open Sans".
如果ATSApplicationFontsPath在info.plist文件中使用注册字体或使用,CTFontManagerRegisterFontsForURLs那么我可以使用该字体的系列名称.但我不能这样做.
(这里使用"Open Sans"作为示例)
这是我用来注册字体的相关代码.
NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"OpenSans-Regular" ofType:@"ttf" inDirectory:@"Fonts"];
NSData *fontData = [NSData dataWithContentsOfFile:fontPath];
CGDataProviderRef fontProviderRef = CGDataProviderCreateWithCFData((CFDataRef)fontData);
CGFontRef fontRef = CGFontCreateWithDataProvider(fontProviderRef);
CFErrorRef error;
if (! CTFontManagerRegisterGraphicsFont(fontRef, &error)) {
CFStringRef errorDescription = CFErrorCopyDescription(error);
NSLog(@"Failed to load font: %@", errorDescription);
CFRelease(errorDescription);
}
CFRelease(fontRef);
CFRelease(fontProviderRef);
Run Code Online (Sandbox Code Playgroud)
有没有办法让NSFont可以使用字体系列名称CTFontManagerRegisterGraphicsFont?
(使用Xcode 5并定位Mac OS X> = 10.8)
我需要能够读取由磁性墨水中创建的任意形状产生的波形.如何以编程方式模拟这个?
我对OCR 不感兴趣.根据磁性墨水字符识别,并假设您有E13B字体和渲染到JPG/PNG上的字符:
纸平面中的墨水首先被磁化.然后字符通过MICR读头,类似于录音机的播放头的设备.当每个角色经过头部时,它会产生一个独特的波形,系统可以很容易地识别出来.
任何编程语言的解决方案的任何指导将不胜感激.
请使用以下代码
var a = b = [];
a.push('value');
if (a === b) {
console.log('a === b'); // this will execute
}
console.log(a, b); // ["value"] ["value"]
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?为什么要a和b修改?var声明是否正在制作b实时副本a?如果是这样,那么为什么不能同样适用于常规变量赋值,例如:
var a = b = '';
a = 'value';
if (a === b) {
console.log('a === b'); // this will never run
}
console.log(a, b); // value
Run Code Online (Sandbox Code Playgroud)
当然,使用以下声明解决了初始示例中的问题:
var a = [], b = [];
Run Code Online (Sandbox Code Playgroud)
但是初始示例中的行为让我觉得奇怪,特别是它只适用于数组操作.
如果有帮助,我正在使用Google Chrome 10.0.648.82测试版