CTFont.m
1 /* Copyright (c) 2008 Christopher J. W. Lloyd 2 3 Permission is hereby granted, free of charge, to any person obtaining a copy of 4 this software and associated documentation files (the "Software"), to deal in 5 the Software without restriction, including without limitation the rights to 6 use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 the Software, and to permit persons to whom the Software is furnished to do so, 8 subject to the following conditions: 9 10 The above copyright notice and this permission notice shall be included in all 11 copies or substantial portions of the Software. 12 13 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 15 FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 16 COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 17 IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 18 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 19 20 #import <CoreText/CTFont.h> 21 #import <CoreText/CoreText.h> 22 #import <CoreText/KTFont.h> 23 24 const CFStringRef kCTFontCopyrightNameKey = CFSTR("CTFontCopyrightName"); 25 const CFStringRef kCTFontFamilyNameKey = CFSTR("CTFontFamilyName"); 26 const CFStringRef kCTFontSubFamilyNameKey = CFSTR("CTFontSubFamilyName"); 27 const CFStringRef kCTFontStyleNameKey = CFSTR("CTFontSubFamilyName"); 28 const CFStringRef kCTFontUniqueNameKey = CFSTR("CTFontUniqueName"); 29 const CFStringRef kCTFontFullNameKey = CFSTR("CTFontFullName"); 30 const CFStringRef kCTFontVersionNameKey = CFSTR("CTFontVersionName"); 31 const CFStringRef kCTFontPostScriptNameKey = CFSTR("CTFontPostScriptName"); 32 const CFStringRef kCTFontTrademarkNameKey = CFSTR("CTFontTrademarkName"); 33 const CFStringRef kCTFontManufacturerNameKey = CFSTR("CTFontManufacturerName"); 34 const CFStringRef kCTFontDesignerNameKey = CFSTR("CTFontDesignerName"); 35 const CFStringRef kCTFontDescriptionNameKey = CFSTR("CTFontDescriptionName"); 36 const CFStringRef kCTFontVendorURLNameKey = CFSTR("CTFontVendorURLName"); 37 const CFStringRef kCTFontDesignerURLNameKey = CFSTR("CTFontDesignerURLName"); 38 const CFStringRef kCTFontLicenseNameKey = CFSTR("CTFontLicenseNameName"); 39 const CFStringRef kCTFontLicenseURLNameKey = CFSTR("CTFontLicenseURLName"); 40 const CFStringRef kCTFontSampleTextNameKey = CFSTR("CTFontSampleTextName"); 41 const CFStringRef kCTFontPostScriptCIDNameKey = CFSTR("CTFontPostScriptCIDName"); 42 43 const CFStringRef kCTFontVariationAxisIdentifierKey = CFSTR("NSCTVariationAxisIdentifier"); 44 const CFStringRef kCTFontVariationAxisMinimumValueKey = CFSTR("NSCTVariationAxisMinimumValue"); 45 const CFStringRef kCTFontVariationAxisMaximumValueKey = CFSTR("NSCTVariationAxisMaximumValue"); 46 const CFStringRef kCTFontVariationAxisDefaultValueKey = CFSTR("NSCTVariationAxisDefaultValue"); 47 const CFStringRef kCTFontVariationAxisNameKey = CFSTR("NSCTVariationAxisName"); 48 const CFStringRef kCTFontVariationAxisHiddenKey = CFSTR("NSCTVariationAxisHidden"); 49 50 const CFStringRef kCTFontFeatureTypeIdentifierKey = CFSTR("CTFeatureTypeIdentifier"); 51 const CFStringRef kCTFontFeatureTypeNameKey = CFSTR("CTFeatureTypeName"); 52 const CFStringRef kCTFontFeatureTypeExclusiveKey = CFSTR("CTFeatureTypeExclusive"); 53 const CFStringRef kCTFontFeatureTypeSelectorsKey = CFSTR("CTFeatureTypeSelectors"); 54 const CFStringRef kCTFontFeatureSelectorIdentifierKey = CFSTR("CTFeatureSelectorIdentifier"); 55 const CFStringRef kCTFontFeatureSelectorNameKey = CFSTR("CTFeatureSelectorName"); 56 const CFStringRef kCTFontFeatureSelectorDefaultKey = CFSTR("CTFeatureSelectorDefault"); 57 const CFStringRef kCTFontFeatureSelectorSettingKey = CFSTR("CTFeatureSelectorSetting"); 58 const CFStringRef kCTFontFeatureSampleTextKey = CFSTR("CTFeatureSampleText"); 59 const CFStringRef kCTFontFeatureTooltipTextKey = CFSTR("CTFeatureTooltipText"); 60 61 CTFontRef CTFontCreateWithName(CFStringRef name, CGFloat size, const CGAffineTransform *matrix) 62 { 63 printf("STUB %s\n", __PRETTY_FUNCTION__); 64 return nil; 65 } 66 67 CTFontRef CTFontCreateWithNameAndOptions(CFStringRef name, CGFloat size, 68 const CGAffineTransform *matrix, 69 CTFontOptions options) 70 { 71 printf("STUB %s\n", __PRETTY_FUNCTION__); 72 return nil; 73 } 74 75 CTFontRef CTFontCreateWithFontDescriptor(CTFontDescriptorRef descriptor, CGFloat size, 76 const CGAffineTransform *matrix) 77 { 78 printf("STUB %s\n", __PRETTY_FUNCTION__); 79 return nil; 80 } 81 82 CTFontRef CTFontCreateWithFontDescriptorAndOptions(CTFontDescriptorRef descriptor, CGFloat size, 83 const CGAffineTransform *matrix, 84 CTFontOptions options) 85 { 86 printf("STUB %s\n", __PRETTY_FUNCTION__); 87 return nil; 88 } 89 90 CTFontRef CTFontCreateUIFontForLanguage(CTFontUIFontType uiFontType, 91 CGFloat size, CFStringRef language) 92 { 93 return [[KTFont alloc] initWithUIFontType: uiFontType 94 size: size 95 language: language]; 96 } 97 98 CTFontRef CTFontCreateCopyWithAttributes(CTFontRef font, CGFloat size, 99 const CGAffineTransform *matrix, 100 CTFontDescriptorRef attributes) 101 { 102 printf("STUB %s\n", __PRETTY_FUNCTION__); 103 return nil; 104 } 105 106 CTFontRef CTFontCreateCopyWithSymbolicTraits(CTFontRef font, CGFloat size, 107 const CGAffineTransform *matrix, 108 CTFontSymbolicTraits symTraitValue, 109 CTFontSymbolicTraits symTraitMask) 110 { 111 printf("STUB %s\n", __PRETTY_FUNCTION__); 112 return nil; 113 } 114 115 CTFontRef CTFontCreateCopyWithFamily(CTFontRef font, CGFloat size, 116 const CGAffineTransform *matrix, CFStringRef family) 117 { 118 printf("STUB %s\n", __PRETTY_FUNCTION__); 119 return nil; 120 } 121 122 CTFontRef CTFontCreateForString(CTFontRef currentFont, CFStringRef string, CFRange range) 123 { 124 printf("STUB %s\n", __PRETTY_FUNCTION__); 125 return nil; 126 } 127 128 CTFontRef CTFontCreateForStringWithLanguage(CTFontRef currentFont, CFStringRef string, 129 CFRange range, CFStringRef language) 130 { 131 printf("STUB %s\n", __PRETTY_FUNCTION__); 132 return nil; 133 } 134 135 CTFontDescriptorRef CTFontCopyFontDescriptor(CTFontRef font) 136 { 137 printf("STUB %s\n", __PRETTY_FUNCTION__); 138 return nil; 139 } 140 141 CFTypeRef CTFontCopyAttribute(CTFontRef font, CFStringRef attribute) 142 { 143 printf("STUB %s\n", __PRETTY_FUNCTION__); 144 return nil; 145 } 146 147 CGFloat CTFontGetSize(CTFontRef self) { 148 return [self pointSize]; 149 } 150 151 CGAffineTransform CTFontGetMatrix(CTFontRef font) 152 { 153 printf("STUB %s\n", __PRETTY_FUNCTION__); 154 return CGAffineTransformIdentity; 155 } 156 157 CTFontSymbolicTraits CTFontGetSymbolicTraits(CTFontRef font) 158 { 159 printf("STUB %s\n", __PRETTY_FUNCTION__); 160 return kCTFontTraitItalic; 161 } 162 163 CFDictionaryRef CTFontCopyTraits(CTFontRef font) 164 { 165 printf("STUB %s\n", __PRETTY_FUNCTION__); 166 return nil; 167 } 168 169 CFArrayRef CTFontCopyDefaultCascadeListForLanguages(CTFontRef font, CFArrayRef languagePrefList) 170 { 171 printf("STUB %s\n", __PRETTY_FUNCTION__); 172 return nil; 173 } 174 175 CFStringRef CTFontCopyPostScriptName(CTFontRef font) 176 { 177 printf("STUB %s\n", __PRETTY_FUNCTION__); 178 return nil; 179 } 180 181 CFStringRef CTFontCopyFamilyName(CTFontRef font) 182 { 183 printf("STUB %s\n", __PRETTY_FUNCTION__); 184 return nil; 185 } 186 187 CFStringRef CTFontCopyFullName(CTFontRef self) { 188 return [self copyName]; 189 } 190 191 CFStringRef CTFontCopyDisplayName(CTFontRef font) 192 { 193 printf("STUB %s\n", __PRETTY_FUNCTION__); 194 return nil; 195 } 196 197 CFStringRef _Nullable CTFontCopyName(CTFontRef font, CFStringRef nameKey) 198 { 199 printf("STUB %s\n", __PRETTY_FUNCTION__); 200 return nil; 201 } 202 203 CFStringRef CTFontCopyLocalizedName(CTFontRef font, CFStringRef nameKey, 204 CFStringRef _Nullable *actualLanguage) 205 { 206 printf("STUB %s\n", __PRETTY_FUNCTION__); 207 return nil; 208 } 209 210 CFCharacterSetRef CTFontCopyCharacterSet(CTFontRef font) 211 { 212 printf("STUB %s\n", __PRETTY_FUNCTION__); 213 return nil; 214 } 215 216 CFStringEncoding CTFontGetStringEncoding(CTFontRef font) 217 { 218 printf("STUB %s\n", __PRETTY_FUNCTION__); 219 return CFStringGetSystemEncoding(); 220 } 221 222 CFArrayRef CTFontCopySupportedLanguages(CTFontRef font) 223 { 224 printf("STUB %s\n", __PRETTY_FUNCTION__); 225 return nil; 226 } 227 228 CGFloat CTFontGetAscent(CTFontRef self) { 229 return [self ascender]; 230 } 231 232 CGFloat CTFontGetDescent(CTFontRef self) { 233 return [self descender]; 234 } 235 236 CGFloat CTFontGetLeading(CTFontRef self) { 237 return [self leading]; 238 } 239 240 unsigned int CTFontGetUnitsPerEm(CTFontRef font) 241 { 242 printf("STUB %s\n", __PRETTY_FUNCTION__); 243 return 0; 244 } 245 246 CFIndex CTFontGetGlyphCount(CTFontRef font) { 247 return [font numberOfGlyphs]; 248 } 249 250 CGRect CTFontGetBoundingBox(CTFontRef self) { 251 return [self boundingRect]; 252 } 253 254 CGFloat CTFontGetUnderlinePosition(CTFontRef self) { 255 return [self underlinePosition]; 256 } 257 258 CGFloat CTFontGetUnderlineThickness(CTFontRef self) { 259 return [self underlineThickness]; 260 } 261 262 CGFloat CTFontGetSlantAngle(CTFontRef self) { 263 return [self italicAngle]; 264 } 265 266 CGFloat CTFontGetCapHeight(CTFontRef self) { 267 return [self capHeight]; 268 } 269 270 CGFloat CTFontGetXHeight(CTFontRef self) { 271 return [self xHeight]; 272 } 273 274 CGPathRef CTFontCreatePathForGlyph(CTFontRef self, CGGlyph glyph, 275 CGAffineTransform *xform) 276 { 277 return (CGPathRef) [self createPathForGlyph: glyph transform: xform]; 278 } 279 280 CGGlyph CTFontGetGlyphWithName(CTFontRef font, CFStringRef glyphName) 281 { 282 printf("STUB %s\n", __PRETTY_FUNCTION__); 283 return CGNullGlyph; 284 } 285 286 CGRect CTFontGetBoundingRectsForGlyphs(CTFontRef font, CTFontOrientation orientation, 287 const CGGlyph *glyphs, CGRect *boundingRects, 288 CFIndex count) 289 { 290 printf("STUB %s\n", __PRETTY_FUNCTION__); 291 return CGRectMake(0, 0, 0, 0); 292 } 293 294 double CTFontGetAdvancesForGlyphs(CTFontRef font, CTFontOrientation orientation, 295 const CGGlyph *glyphs, CGSize *advances, 296 CFIndex count) 297 { 298 [font getAdvancements: advances forGlyphs: glyphs count: count]; 299 300 double sum; 301 302 for (int i = 0; i < count; i++) { 303 sum += advances[i].width; 304 } 305 306 return sum; 307 } 308 309 CGRect CTFontGetOpticalBoundsForGlyphs(CTFontRef font, const CGGlyph *glyphs, 310 CGRect *boundingRects, CFIndex count, 311 CFOptionFlags options) 312 { 313 printf("STUB %s\n", __PRETTY_FUNCTION__); 314 return CGRectMake(0, 0, 0, 0); 315 } 316 317 void CTFontGetVerticalTranslationsForGlyphs(CTFontRef font, const CGGlyph *glyphs, 318 CGSize *translations, CFIndex count) 319 { 320 printf("STUB %s\n", __PRETTY_FUNCTION__); 321 } 322 323 CFArrayRef CTFontCopyVariationAxes(CTFontRef font) 324 { 325 printf("STUB %s\n", __PRETTY_FUNCTION__); 326 return nil; 327 } 328 329 CFDictionaryRef CTFontCopyVariation(CTFontRef font) 330 { 331 printf("STUB %s\n", __PRETTY_FUNCTION__); 332 return nil; 333 } 334 335 CFArrayRef CTFontCopyFeatures(CTFontRef font) 336 { 337 printf("STUB %s\n", __PRETTY_FUNCTION__); 338 return nil; 339 } 340 341 CFArrayRef CTFontCopyFeatureSettings(CTFontRef font) 342 { 343 printf("STUB %s\n", __PRETTY_FUNCTION__); 344 return nil; 345 } 346 347 bool CTFontGetGlyphsForCharacters(CTFontRef font, const UniChar *characters, 348 CGGlyph *glyphs, CFIndex count) 349 { 350 [font getGlyphs: glyphs forCharacters: characters length: count]; 351 // FIXME: change getGlyphs: to return a BOOL 352 return YES; 353 } 354 355 void CTFontDrawGlyphs(CTFontRef font, const CGGlyph *glyphs, const CGPoint *positions, 356 size_t count, CGContextRef context) 357 { 358 printf("STUB %s\n", __PRETTY_FUNCTION__); 359 } 360 361 CFIndex CTFontGetLigatureCaretPositions(CTFontRef font, CGGlyph glyph, CGFloat *positions, 362 CFIndex maxPositions) 363 { 364 printf("STUB %s\n", __PRETTY_FUNCTION__); 365 return -1; 366 } 367 368 CGFontRef CTFontCopyGraphicsFont(CTFontRef font, CTFontDescriptorRef _Nullable *attributes) 369 { 370 printf("STUB %s\n", __PRETTY_FUNCTION__); 371 return nil; 372 } 373 374 CTFontRef 375 CTFontCreateWithGraphicsFont(CGFontRef cgFont, CGFloat size, 376 CGAffineTransform *xform, 377 CTFontDescriptorRef attributes) 378 { 379 return [[KTFont alloc] initWithFont: cgFont size: size]; 380 } 381 382 ATSFontRef CTFontGetPlatformFont(CTFontRef font, CTFontDescriptorRef _Nullable *attributes) 383 { 384 printf("STUB %s\n", __PRETTY_FUNCTION__); 385 return 0; 386 } 387 388 CTFontRef CTFontCreateWithPlatformFont(ATSFontRef platformFont, CGFloat size, 389 const CGAffineTransform *matrix, 390 CTFontDescriptorRef attributes) 391 { 392 printf("STUB %s\n", __PRETTY_FUNCTION__); 393 return nil; 394 } 395 396 CTFontRef CTFontCreateWithQuickdrawInstance(ConstStr255Param name, int16_t identifier, 397 uint8_t style, CGFloat size) 398 { 399 printf("STUB %s\n", __PRETTY_FUNCTION__); 400 return nil; 401 } 402 403 CFArrayRef CTFontCopyAvailableTables(CTFontRef font, CTFontTableOptions options) 404 { 405 printf("STUB %s\n", __PRETTY_FUNCTION__); 406 return nil; 407 } 408 409 CFDataRef CTFontCopyTable(CTFontRef font, CTFontTableTag table, CTFontTableOptions options) 410 { 411 printf("STUB %s\n", __PRETTY_FUNCTION__); 412 return nil; 413 } 414 415 CFTypeID CTFontGetTypeID(void) 416 { 417 printf("STUB %s\n", __PRETTY_FUNCTION__); 418 return 0; 419 }