InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
IFontMgr.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: emenning
6 //
7 // $Author$
8 //
9 // $DateTime$
10 //
11 // $Revision$
12 //
13 // $Change$
14 //
15 // Copyright 1997-2010 Adobe Systems Incorporated. All rights reserved.
16 //
17 // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
18 // with the terms of the Adobe license agreement accompanying it. If you have received
19 // this file from a source other than Adobe, then your use, modification, or
20 // distribution of it requires the prior written permission of Adobe.
21 //
22 //
23 // Purpose:
24 // IFontMgr is the Interface used to retrieve Fonts, FontGroups, etc.
25 // The Interfaces returned are not boss objects (as of 10/17/96) but are RefCounted objects
26 //
27 //========================================================================================
28 
29 #ifndef __IFontMgr__
30 #define __IFontMgr__
31 
32 #include "FontMgrID.h"
33 #include "PMString.h"
34 #include "PMMatrix.h"
35 
36 #include "BravoForwardDecl.h"
37 
38 #include <string> // for virtual std::string GetDefaultFontPSName()
39 
40 
41 class IPMFont;
42 class IFontInstance;
43 class IFontGroup;
45 class IUsedFontList;
46 class IFontFamily;
47 class IWRFontContext;
48 class IFontMenuData;
49 
50 class IPMFont;
51 class UIDList;
52 
53 //----------------------------------------------------------------------------------------
54 // Interface IFontMgr
55 //----------------------------------------------------------------------------------------
56 
62 class IFontMgr : public IPMUnknown
63 {
64  public:
65  enum { kDefaultIID = IID_IFONTMGR };
66 
67  enum FontStyleBits{ kNormal = 0x00, kItalic = 0x01, kBold = 0x02, kBoldItalic = 0x03,
68  kSmallCaps = 0x04, kCapStyles = 0x04
69  } ;
70 
71  enum WritingDirection{ kWD_LeftToRight = 0, kWD_RightToLeft, kWD_TopToBottom
72  } ;
73 
82  } ;
83 
84  // matches CTOriginatingOS enum from cooltype.
85  enum OriginalOS{
86  kOriginalMacOS,
87  kOriginalWinOS,
88  kOriginalUnknownOS
89  } ;
90 
94  struct FontNameInfo
95  {
96  public:
97  typedef object_type data_type;
98  PMString fPostScriptName;
99  PMString fFamilyName;
100  PMString fStyleName;
101  PMString fFamilyNameNative;
102  PMString fStyleNameNative;
104  bool16 fFontInfoSet;
105  } ;
106 
116  virtual int32 CurrentFontSystemSeed(bool16 fullCheck = kFalse, bool16 cooltypeSeedOnly = kFalse) const = 0;
117 
122  virtual void CoolTypeShuttingDown() = 0;
123 
129  virtual const PMString& GetDefaultFontName() = 0;
130 
138  virtual void SetDefaultFontName(const PMString& s) = 0;
139 
148  virtual bool16 IsFontAvailable(const PMString &fontname, int32 writingscript = kDontKnowScript) = 0;
149 
157  virtual bool16 IsSuitableUIFont(IPMFont* pmFont) = 0;
158 
159 
172  virtual IPMFont* QueryFont(const std::string &fontName, FontStyleBits style = kNormal, int32 writingscript = kDontKnowScript,
173  PMReal smallcapscale = 0.7, InternalFake fake = kInternalFake_Not) = 0;
174 
187  virtual IPMFont* QueryFont(const PMString &fontName, FontStyleBits style = kNormal, int32 writingscript = kDontKnowScript,
188  PMReal smallcapscale = 0.7, InternalFake fake = kInternalFake_Not) = 0;
189 
201  virtual IPMFont* QueryFont(const IFontGroup *fontGroup, int32 index, FontStyleBits style = kNormal,
202  PMReal smallcapscale = 0.7, InternalFake fake = kInternalFake_Not) = 0;
203 
217  virtual IPMFont* QueryFont(const CTFontDict* rawFont, InternalFake fake = kInternalFake_Not, int32 index = -1,
218  bool16 bIsEPSFont = kFalse, bool16 bIsEmbeddedFont = kFalse, CCTEncoding *encoding = nil) = 0;
219 
233  virtual IPMFont* QueryFont(const CTFontDict* rawFont, Fixed *designAxes, InternalFake fake = kInternalFake_Not,
234  bool16 bIsEPSFont = kFalse, bool16 bIsEmbeddedFont = kFalse, CCTEncoding *encoding = nil) = 0;
235 
251  virtual IPMFont* QueryFontPlatform(const PMString &fontName, FontStyleBits style,
252  int32 ctScript = kDontKnowScript, OriginalOS os = kOriginalUnknownOS, FontNameInfo* outNameInfo = nil) = 0;
253 
272  virtual IFontInstance *QueryFontInstance(const PMString &fontName, const PMMatrix &matrix, int32 writingscript = kDontKnowScript, WritingDirection dir = kWD_LeftToRight,
273  FontStyleBits style = kNormal, Fixed *designV = nil, PMReal smallcapscale = 0.7) = 0;
287  virtual IFontInstance *QueryFontInstance(const IPMFont* font, const PMMatrix &matrix, WritingDirection dir = kWD_LeftToRight) = 0;
288 
297  virtual IFontGroup *QueryFontGroup(const PMString &groupName) = 0;
304  virtual IFontGroup *QueryFontGroup(int32 groupIndex) = 0;
305 
311  virtual int32 GetNumFontGroups() = 0;
312 
318  virtual void IterateFontGroups( FontGroupIteratorCallBack *callBack ) = 0;
319 
324  virtual void ForceUpdateFontSystem() = 0;
325 
335  virtual IPMFont *FindVariant (IPMFont *basefont, FontStyleBits stylebits, PMReal smallCapScale, int32 technology) = 0;
336 
342  virtual void MarkBadFont (CTFontDict *badFontDict) = 0;
343 
351  virtual IPMFont *QueryFontFromDisplayName(const PMString &displayFamilyName, PMString &fontStyle) = 0;
352 
358  virtual void AddFont (CTFontDict *dict) = 0;
359  virtual void DeleteFont (CTFontDict *dict) = 0;
360 
368  virtual std::string GetDefaultFontPSName(int32 script = kDontKnowScript) = 0;
369 
375  virtual IWRFontContext* GetWRFontContext() const = 0;
376 
378  virtual void AllowPurge() = 0;
379  virtual void DisallowPurge() = 0;
380 
381  virtual void AddDirectory(IDFile fontsPath) = 0;
382  virtual void RemoveUnusedFontsFromCache() = 0;
383 
384  virtual ActionID IterateTypeQuestFonts(const ActionID lastLocalActionID, IFontMenuData* fontMenuData) = 0;
385  virtual HarfbuzzCooltype* GetHarfbuzzFontAccess() = 0;
386  virtual bool16 AddCustomOTVarInstance(IFontGroup *fontGroup, const Fixed *designAxis) = 0;
387 
395  virtual bool16 HasExtraDefaultVariableFont(CTFontDict* dict) const = 0;
396 
402  virtual void GetDefaultVariableFontName(PMString& fontName, CTFontDict* dict) const = 0;
403 
412  virtual IPMFont* QueryVariableFont(const IFontGroup *fontGroup,const PMString& styleName) const = 0;
413 
414 };
415 
416 
417 
418 //----------------------------------------------------------------------------------------
419 // Class FontGroupIteratorCallBack
420 //----------------------------------------------------------------------------------------
421 
426 {
427 public:
428  enum MissingFonts { kSkip, // skip missing fonts.
429  kBeforeFonts, // iterate missing fonts before the other fonts.
430  kAfterFonts, // iterate missing fonts after the other fonts.
431  kOnly // iterate only over missing fonts, skip the other fonts.
432  };
433 
438  virtual void OnStart() = 0;
439 
444  virtual void OnEnd() = 0;
445 
450  virtual void OnLocaleScriptFontsStart() = 0;
451 
456  virtual void OnLocaleScriptFontsEnd() = 0;
457 
462  virtual void OnMMFontsStart() = 0;
467  virtual void OnMMFontsEnd() = 0;
475  virtual void OnMMAxes( IPMFont *pFont, const Fixed *sourceAxes, int32 numAxes ) = 0;
476 
477 
486  virtual void OnFont( IPMFont *pFont, IFontGroup *fontGroup, const PMString &displayFamilyName, const PMString &displayStyleName ) = 0;
487 
493  virtual void OnFontGroupStart( IFontGroup *fontGroup ) = 0;
499  virtual void OnFontGroupEnd( IFontGroup *fontGroup ) = 0;
500 
505  virtual void OnFontsAddedForLastScript() = 0;
506 
507 
511  virtual bool16 RunFamilyOnly() const = 0;
512 
516  virtual int16 GetNamesFlag() const = 0;
517 
521  virtual bool16 RunMMFonts() const = 0;
522 
527  virtual bool16 SkipThisFont( IPMFont *font ) const = 0;
528 
529  // missing fonts
535  virtual MissingFonts RunMissingFonts() const = 0;
540  virtual void OnMissingFontsStart() = 0;
545  virtual void OnMissingFontsEnd() = 0;
551  virtual IUsedFontList * QueryUsedFontList() = 0;
560  virtual void OnMissingFont( IFontFamily *fontFamily, int32 faceIndex, const PMString &displayFamilyName, const PMString &displayStyleName ) = 0;
561 
567  virtual const UIDList * UseFontUIDList() const = 0;
573  virtual bool16 RunDuplicateFonts() const = 0;
574 };
575 
576 #endif