/ CoreText / CTFont.m
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  }