13#include <CoreText/CoreText.h>
14#include "IGraphicsStructs.h"
17BEGIN_IGRAPHICS_NAMESPACE
19class CoreTextFont :
public PlatformFont
22 CoreTextFont(CTFontDescriptorRef descriptor, CGDataProviderRef provider,
const char * styleString,
bool system)
23 : PlatformFont(system)
24 , mDescriptor(descriptor)
26 , mStyleString(styleString)
31 FontDescriptor GetDescriptor()
override {
return mDescriptor; }
32 IFontDataPtr GetFontData()
override;
35 CTFontDescriptorRef mDescriptor;
36 CGDataProviderRef mProvider;
37 WDL_String mStyleString;
54 CFLocal(
const CFLocal&) =
delete;
55 CFLocal& operator=(
const CFLocal&) =
delete;
57 T Get() {
return mObject; }
70class CoreTextFontDescriptor
73 CoreTextFontDescriptor(CTFontDescriptorRef descriptor,
double EMRatio)
74 : mDescriptor(descriptor)
77 CFRetain(mDescriptor);
80 ~CoreTextFontDescriptor()
82 CFRelease(mDescriptor);
85 CoreTextFontDescriptor(
const CoreTextFontDescriptor&) =
delete;
86 CoreTextFontDescriptor& operator=(
const CoreTextFontDescriptor&) =
delete;
88 CTFontDescriptorRef GetDescriptor()
const {
return mDescriptor; }
89 double GetEMRatio()
const {
return mEMRatio; }
92 CTFontDescriptorRef mDescriptor;
96namespace CoreTextHelpers
98 extern PlatformFontPtr LoadPlatformFont(
const char* fontID,
const char* fileNameOrResID,
const char* bundleID,
const char* sharedResourceSubPath =
nullptr);
100 extern PlatformFontPtr LoadPlatformFont(
const char* fontID,
const char* fontName, ETextStyle style);
102 extern PlatformFontPtr LoadPlatformFont(
const char* fontID,
void* pData,
int dataSize);
104 extern void CachePlatformFont(
const char* fontID,
const PlatformFontPtr& font, StaticStorage<CoreTextFontDescriptor>& cache);
106 CoreTextFontDescriptor* GetCTFontDescriptor(
const IText& text, StaticStorage<CoreTextFontDescriptor>& cache);
109END_IGRAPHICS_NAMESPACE
IText is used to manage font and text/text entry style for a piece of text on the UI,...