search/mag_sel search/close
FontInfo.h
1 // Copyright 2001-2021 Aspose Pty Ltd. All Rights Reserved.
3 //
4 // This file is part of Aspose.Words. The source code in this file
5 // is only intended as a supplement to the documentation, and is provided
6 // "as is", without warranty of any kind, either expressed or implied.
9 #pragma once
10 
11 #include <system/enum_helpers.h>
12 #include <system/array.h>
13 #include <cstdint>
14 
15 #include <Aspose.Words.Cpp/Fonts/FontPitch.h>
16 #include <Aspose.Words.Cpp/Fonts/FontFamily.h>
17 #include <Aspose.Words.Cpp/Fonts/EmbeddedFontStyle.h>
18 #include <Aspose.Words.Cpp/Fonts/EmbeddedFontFormat.h>
19 #include <Aspose.Words.Cpp/aspose_words_api_defs.h>
20 
21 namespace Aspose { namespace Words { namespace Fonts { class FontConfigSubstitutionRule; } } }
22 namespace Aspose { namespace Words { namespace Fonts { class FontInfoSubstitutionRule; } } }
23 namespace Aspose { namespace Words { namespace Validation { class ComplexScriptRunUpdater; } } }
24 namespace Aspose { namespace Words { namespace Fonts { class EmbeddedFontCollector; } } }
25 namespace Aspose { namespace Words { namespace Fonts { class DocumentFontProvider; } } }
26 namespace Aspose { namespace Words { namespace Themes { class ThemeFonts; } } }
27 namespace Aspose { namespace Words { namespace Fonts { class FontInfoCollection; } } }
28 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Reader { class DocxThemeReader; } } } } }
29 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Reader { class OdtFontFaceDeclsReader; } } } } }
30 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Reader { class DocxFontTableReader; } } } } }
31 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Writer { class DocxFontTableWriter; } } } } }
32 namespace Aspose { namespace Words { namespace RW { namespace Doc { class FontInfoFiler; } } } }
33 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfFontCodeResolver; } } } } }
34 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfFontTableHandler; } } } } }
35 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Writer { class RtfFontTableWriter; } } } } }
36 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Writer { class RtfRunPrWriter; } } } } }
37 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Writer { class RtfWriterContext; } } } } }
38 namespace Aspose { namespace Words { namespace RW { namespace Wml { namespace Reader { class WmlFontsReader; } } } } }
39 namespace Aspose { namespace Words { namespace RW { namespace Wml { namespace Writer { class WmlFontsWriter; } } } } }
40 namespace System { namespace Collections { namespace Generic { template <typename> class IList; } } }
41 namespace Aspose { namespace Words { namespace Fonts { class EmbeddedFontCollection; } } }
42 namespace Aspose { namespace Words { namespace Fonts { class EmbeddedFont; } } }
43 namespace System { namespace Drawing { enum class FontStyle; } }
44 namespace Aspose { namespace Fonts { namespace TrueType { class TTFont; } } }
45 namespace Aspose { namespace Fonts { namespace TrueType { class FontSubsetBase; } } }
46 namespace Aspose { namespace Fonts { namespace TrueType { class FontUnicodeRanges; } } }
47 namespace Aspose { namespace Fonts { class FontSubstitutionInfo; } }
48 namespace Aspose { namespace Fonts { enum class FontFamilyCore; } }
49 namespace Aspose { namespace Fonts { enum class FontPitchCore; } }
50 
51 namespace Aspose {
52 
53 namespace Words {
54 
55 namespace Fonts {
56 
82 class ASPOSE_WORDS_SHARED_CLASS FontInfo : public System::Object
83 {
84  typedef FontInfo ThisType;
85  typedef System::Object BaseType;
86 
87  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
88  ASPOSE_WORDS_SHARED_RTTI_INFO_DECL();
89 
92  friend class Aspose::Words::Validation::ComplexScriptRunUpdater;
93  friend class Aspose::Words::Fonts::EmbeddedFontCollector;
94  friend class Aspose::Words::Fonts::DocumentFontProvider;
97  friend class Aspose::Words::RW::Docx::Reader::DocxThemeReader;
98  friend class Aspose::Words::RW::Odt::Reader::OdtFontFaceDeclsReader;
99  friend class Aspose::Words::RW::Docx::Reader::DocxFontTableReader;
100  friend class Aspose::Words::RW::Docx::Writer::DocxFontTableWriter;
101  friend class Aspose::Words::RW::Doc::FontInfoFiler;
102  friend class Aspose::Words::RW::Rtf::Reader::RtfFontCodeResolver;
103  friend class Aspose::Words::RW::Rtf::Reader::RtfFontTableHandler;
104  friend class Aspose::Words::RW::Rtf::Writer::RtfFontTableWriter;
105  friend class Aspose::Words::RW::Rtf::Writer::RtfRunPrWriter;
106  friend class Aspose::Words::RW::Rtf::Writer::RtfWriterContext;
107  friend class Aspose::Words::RW::Wml::Reader::WmlFontsReader;
108  friend class Aspose::Words::RW::Wml::Writer::WmlFontsWriter;
109 
110 public:
111 
148  ASPOSE_WORDS_SHARED_API Aspose::Words::Fonts::FontPitch get_Pitch() const;
149 
151  ASPOSE_WORDS_SHARED_API void set_Pitch(Aspose::Words::Fonts::FontPitch value);
152 
172  ASPOSE_WORDS_SHARED_API bool get_IsTrueType() const;
173 
175  ASPOSE_WORDS_SHARED_API void set_IsTrueType(bool value);
176 
213  ASPOSE_WORDS_SHARED_API Aspose::Words::Fonts::FontFamily get_Family() const;
214 
216  ASPOSE_WORDS_SHARED_API void set_Family(Aspose::Words::Fonts::FontFamily value);
217 
254  ASPOSE_WORDS_SHARED_API int32_t get_Charset();
255 
257  ASPOSE_WORDS_SHARED_API void set_Charset(int32_t value);
258 
301  ASPOSE_WORDS_SHARED_API System::ArrayPtr<uint8_t> get_Panose() const;
302 
304  ASPOSE_WORDS_SHARED_API void set_Panose(System::ArrayPtr<uint8_t> value);
305 
326  ASPOSE_WORDS_SHARED_API System::String get_Name() const;
327 
366  ASPOSE_WORDS_SHARED_API System::String get_AltName() const;
367 
369  ASPOSE_WORDS_SHARED_API void set_AltName(System::String value);
370 
405 
439 
440 protected:
441 
442  int32_t get_Weight() const;
443  void set_Weight(int32_t value);
444  System::String get_IanaCharset();
445  void set_IanaCharset(System::String value);
446  System::ArrayPtr<uint8_t> get_Sig() const;
447  void set_Sig(System::ArrayPtr<uint8_t> value);
448  bool get_IsCharsetDefined();
449 
450  static const int32_t PanoseLength;
451  static const int32_t SigLength;
452 
453  FontInfo();
454 
455  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(FontInfo, CODEPORTING_ARGS());
456 
457  FontInfo(System::String name);
458 
459  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(FontInfo, CODEPORTING_ARGS(System::String name));
460  void SetName(System::String name);
465  static Aspose::Words::Fonts::EmbeddedFontStyle FontStyleToEmbeddedFontStyle(System::Drawing::FontStyle style);
467  System::SharedPtr<Aspose::Fonts::TrueType::TTFont> GetEmbeddedFontParsedAnyStyle();
468  void AddEmbeddedFont(System::ArrayPtr<uint8_t> fontData, Aspose::Words::Fonts::EmbeddedFontFormat fontFormat, Aspose::Words::Fonts::EmbeddedFontStyle fontStyle, bool isSubsetted);
469  void AddEmbeddedFont(System::SharedPtr<Aspose::Fonts::TrueType::TTFont> ttFont);
470  void AddEmbeddedFont(System::SharedPtr<Aspose::Fonts::TrueType::FontSubsetBase> fontSubset);
471  void AddEmbeddedFont(System::SharedPtr<Aspose::Words::Fonts::EmbeddedFont> embeddedFont);
474  bool HasEmbeddedFonts();
475  bool HasEmbeddedFontsByFormat(Aspose::Words::Fonts::EmbeddedFontFormat fontFormat);
476  bool HasEmbeddedFontsByStyle(System::Drawing::FontStyle fontStyle);
477  void RemoveEmbeddedFonts();
478  int32_t GetEmbeddedFontsCount(Aspose::Words::Fonts::EmbeddedFontFormat fontFormat);
481 
482 private:
483 
485  bool mIsTrueType;
487  int32_t mWeight;
488  int32_t mCharset;
489  System::String mIanaCharset;
492  System::String mName;
493  System::String mAltName;
495 
496  void MergeAttributes(System::SharedPtr<Aspose::Words::Fonts::FontInfo> srcFontInfo);
497  static Aspose::Fonts::FontFamilyCore FontFamilyToCore(Aspose::Words::Fonts::FontFamily value);
498  static Aspose::Fonts::FontPitchCore FontPitchToCore(Aspose::Words::Fonts::FontPitch value);
499 
500 };
501 
502 }
503 }
504 }