Font.h
1 #pragma once
2 // Copyright (c) 2001-2024 Aspose Pty Ltd. All Rights Reserved.
3 
4 #include <system/string.h>
5 #include <system/eventhandler.h>
6 
7 #include "Aspose.PDF.Cpp/Text/Interfaces/IFontOptions.h"
8 #include "Aspose.PDF.Cpp/aspose_pdf_api_defs.h"
9 
10 namespace Aspose
11 {
12 namespace Font
13 {
14 class IFont;
15 } // namespace Font
16 namespace Pdf
17 {
18 namespace Annotations
19 {
20 class ColorBarAnnotation;
21 class PageInformationAnnotation;
22 class RedactionAnnotation;
23 class WatermarkAnnotation;
24 class WidgetAnnotation;
25 } // namespace Annotations
26 class ApsToPdfConverter;
27 class Artifact;
28 class Document;
29 namespace Engine
30 {
31 namespace CommonData
32 {
33 namespace PageContent
34 {
35 namespace Operators
36 {
37 namespace OperatorHelpers
38 {
39 class ShowTextFontResolver;
40 } // namespace OperatorHelpers
41 } // namespace Operators
42 } // namespace PageContent
43 namespace Text
44 {
45 namespace Fonts
46 {
47 class IPdfFont;
48 class OpenTypeLayoutFont;
49 namespace Substitution
50 {
51 class FontSubstitutor;
52 } // namespace Substitution
53 namespace Utilities
54 {
55 class DocumentCIDType2FontContentUpdater;
56 class DocumentFontsCollector;
57 class FontUtilities;
58 } // namespace Utilities
59 } // namespace Fonts
60 namespace Segmenting
61 {
62 class TextSegmentBuilder;
63 } // namespace Segmenting
64 } // namespace Text
65 } // namespace CommonData
66 namespace Data
67 {
68 class IPdfPrimitive;
69 class ITrailerable;
70 } // namespace Data
71 namespace IO
72 {
73 namespace ConvertStrategies
74 {
75 namespace ConvertHelpers
76 {
77 class LowLevelFontSubstitutor;
78 } // namespace ConvertHelpers
79 class PdfAConvertStrategy;
80 class PdfUaConvertStrategy;
81 class TransparentContentRemoval;
82 } // namespace ConvertStrategies
83 } // namespace IO
84 } // namespace Engine
85 namespace Facades
86 {
87 class Form;
88 class FormattedText;
89 } // namespace Facades
90 namespace Forms
91 {
92 class ButtonField;
93 class C128Barcode;
94 class ListBoxField;
95 class TextModel;
96 } // namespace Forms
97 class Heading;
98 class HtmlFragment;
99 namespace Operators
100 {
101 class ShowText;
102 } // namespace Operators
103 namespace PageModel
104 {
105 class TextElement;
106 } // namespace PageModel
107 namespace Tests
108 {
109 namespace Engine
110 {
111 namespace CommonData
112 {
113 namespace PageContent
114 {
115 namespace Operators
116 {
117 namespace TextShowing
118 {
119 class TextShowingTests;
120 } // namespace TextShowing
121 } // namespace Operators
122 } // namespace PageContent
123 namespace Text
124 {
125 namespace Fonts
126 {
127 class FontSubstitutorTests;
128 } // namespace Fonts
129 } // namespace Text
130 } // namespace CommonData
131 } // namespace Engine
132 namespace Facades
133 {
134 class DomFormTests;
135 } // namespace Facades
136 namespace Fonts
137 {
138 class FontRepositoryTests;
139 class FontTests;
140 class Resources_ViewFont_Tests;
141 } // namespace Fonts
142 namespace Markdown
143 {
144 class MarkdownToPDFTests;
145 } // namespace Markdown
146 class RegressionTests_v10_2;
147 class RegressionTests_v10_3;
148 class RegressionTests_v10_4;
149 class RegressionTests_v10_8;
150 class RegressionTests_v17_10;
151 class RegressionTests_v17_11;
152 class RegressionTests_v17_12;
153 class RegressionTests_v17_5;
154 class RegressionTests_v18_6;
155 class RegressionTests_v22_06;
156 class RegressionTests_v23_12;
157 class RegressionTests_v24_02;
158 class RegressionTests_v6_9;
159 class RegressionTests_v7_0;
160 class RegressionTests_v7_1;
161 class RegressionTests_v7_3;
162 class RegressionTests_v7_4;
163 class RegressionTests_v7_5;
164 class RegressionTests_v7_7;
165 class RegressionTests_v7_8;
166 class RegressionTests_v7_9;
167 class RegressionTests_v8_4;
168 class RegressionTests_v9_0;
169 class RegressionTests_v9_3;
170 class RegressionTests_v9_6;
171 class RegressionTests_v9_8;
172 class TestBase;
173 namespace Text
174 {
175 class TextFragmentTests;
176 } // namespace Text
177 class XpsToPdfConverterTests;
178 } // namespace Tests
179 namespace Text
180 {
181 class FontAbsorber;
182 class FontCleanup;
183 class FontCollection;
184 class FontRepository;
185 class FontSubstitutionRegistrator;
186 class TextParagraph;
187 class TextState;
188 } // namespace Text
189 class TextBoxFieldXfa;
190 class TextStamp;
191 class XfaToPdfConverter;
192 } // namespace Pdf
193 namespace XfaRenderer
194 {
195 namespace Core
196 {
197 class XfaFontCash;
198 class XfaPdfFont;
199 } // namespace Core
200 } // namespace XfaRenderer
201 } // namespace Aspose
202 namespace System
203 {
204 namespace IO
205 {
206 class Stream;
207 } // namespace IO
208 } // namespace System
209 
210 namespace Aspose {
211 
212 namespace Pdf {
213 
214 namespace Text {
215 
224 class ASPOSE_PDF_SHARED_CLASS Font final : public System::Object
225 {
226  typedef Font ThisType;
227  typedef System::Object BaseType;
228 
229  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
230  ASPOSE_PDF_SHARED_RTTI_INFO_DECL();
231 
232  friend class Aspose::Pdf::ApsToPdfConverter;
233  friend class Aspose::Pdf::Engine::CommonData::PageContent::Operators::OperatorHelpers::ShowTextFontResolver;
234  friend class Aspose::Pdf::Text::FontSubstitutionRegistrator;
235  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::OpenTypeLayoutFont;
236  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentFontsCollector;
237  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::ConvertHelpers::LowLevelFontSubstitutor;
238  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::FontUtilities;
239  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Utilities::DocumentCIDType2FontContentUpdater;
240  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfUaConvertStrategy;
243  friend class Aspose::Pdf::PageModel::TextElement;
245  friend class Aspose::Pdf::Engine::CommonData::Text::Fonts::Substitution::FontSubstitutor;
246  friend class Aspose::Pdf::Engine::CommonData::Text::Segmenting::TextSegmentBuilder;
247  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::PdfAConvertStrategy;
248  friend class Aspose::Pdf::Text::FontCleanup;
249  friend class Aspose::Pdf::Heading;
251  friend class Aspose::Pdf::Document;
257  friend class Aspose::Pdf::Forms::C128Barcode;
265  friend class Aspose::XfaRenderer::Core::XfaFontCash;
266  friend class Aspose::XfaRenderer::Core::XfaPdfFont;
267  friend class Aspose::Pdf::XfaToPdfConverter;
268  friend class Aspose::Pdf::TextBoxFieldXfa;
269  friend class Aspose::Pdf::ApsToPdfConverter;
270  friend class Aspose::Pdf::Forms::TextModel;
271  friend class Aspose::Pdf::Artifact;
272  friend class Aspose::Pdf::Engine::IO::ConvertStrategies::TransparentContentRemoval;
274  friend class Aspose::Pdf::Tests::Engine::CommonData::Text::Fonts::FontSubstitutorTests;
275  friend class Aspose::Pdf::Tests::Text::TextFragmentTests;
276  friend class Aspose::Pdf::Tests::Facades::DomFormTests;
277  friend class Aspose::Pdf::Tests::Fonts::FontRepositoryTests;
278  friend class Aspose::Pdf::Tests::Fonts::FontTests;
279  friend class Aspose::Pdf::Tests::Fonts::Resources_ViewFont_Tests;
280  friend class Aspose::Pdf::Tests::Engine::CommonData::PageContent::Operators::TextShowing::TextShowingTests;
281  friend class Aspose::Pdf::Tests::TestBase;
282  friend class Aspose::Pdf::Tests::RegressionTests_v7_0;
283  friend class Aspose::Pdf::Tests::RegressionTests_v8_4;
284  friend class Aspose::Pdf::Tests::RegressionTests_v9_0;
285  friend class Aspose::Pdf::Tests::RegressionTests_v9_6;
286  friend class Aspose::Pdf::Tests::RegressionTests_v10_3;
287  friend class Aspose::Pdf::Tests::RegressionTests_v17_11;
288  friend class Aspose::Pdf::Tests::RegressionTests_v18_6;
289  friend class Aspose::Pdf::Tests::Markdown::MarkdownToPDFTests;
290  friend class Aspose::Pdf::Tests::RegressionTests_v6_9;
291  friend class Aspose::Pdf::Tests::RegressionTests_v7_1;
292  friend class Aspose::Pdf::Tests::RegressionTests_v7_3;
293  friend class Aspose::Pdf::Tests::RegressionTests_v7_4;
294  friend class Aspose::Pdf::Tests::RegressionTests_v7_5;
295  friend class Aspose::Pdf::Tests::RegressionTests_v7_7;
296  friend class Aspose::Pdf::Tests::RegressionTests_v7_8;
297  friend class Aspose::Pdf::Tests::RegressionTests_v7_9;
298  friend class Aspose::Pdf::Tests::RegressionTests_v9_3;
299  friend class Aspose::Pdf::Tests::RegressionTests_v9_8;
300  friend class Aspose::Pdf::Tests::RegressionTests_v10_2;
301  friend class Aspose::Pdf::Tests::RegressionTests_v10_4;
302  friend class Aspose::Pdf::Tests::RegressionTests_v10_8;
303  friend class Aspose::Pdf::Tests::RegressionTests_v17_10;
304  friend class Aspose::Pdf::Tests::RegressionTests_v17_5;
305  friend class Aspose::Pdf::Tests::RegressionTests_v17_12;
306  friend class Aspose::Pdf::Tests::RegressionTests_v22_06;
307  friend class Aspose::Pdf::Tests::RegressionTests_v23_12;
308  friend class Aspose::Pdf::Tests::RegressionTests_v24_02;
309  friend class Aspose::Pdf::Tests::XpsToPdfConverterTests;
310 
311 private:
312 
313  class FontOptionsImplementor : public Aspose::Pdf::Text::IFontOptions
314  {
315  typedef FontOptionsImplementor ThisType;
316  typedef Aspose::Pdf::Text::IFontOptions BaseType;
317 
318  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
319  RTTI_INFO_DECL();
320 
321  public:
322 
332  bool get_NotifyAboutFontEmbeddingError() override;
342  void set_NotifyAboutFontEmbeddingError(bool value) override;
343 
344  FontOptionsImplementor(System::SharedPtr<Font> parent);
345 
346  private:
347 
348  bool _notifyAboutFontEmbeddingError;
349  System::WeakPtr<Font> _parent;
350 
351  };
352 
353 
354 public:
355 
363  ASPOSE_PDF_SHARED_API System::String get_FontName() const;
376  ASPOSE_PDF_SHARED_API System::String get_DecodedFontName();
380  ASPOSE_PDF_SHARED_API System::String get_BaseFont();
390  ASPOSE_PDF_SHARED_API bool get_IsEmbedded() const;
400  ASPOSE_PDF_SHARED_API void set_IsEmbedded(bool value);
409  ASPOSE_PDF_SHARED_API bool get_IsSubset();
418  ASPOSE_PDF_SHARED_API void set_IsSubset(bool value);
429  ASPOSE_PDF_SHARED_API bool get_IsAccessible() const;
433  ASPOSE_PDF_SHARED_API System::SharedPtr<IFontOptions> get_FontOptions();
434 
440  ASPOSE_PDF_SHARED_API System::String GetLastFontEmbeddingError();
447  ASPOSE_PDF_SHARED_API void Save(System::SharedPtr<System::IO::Stream> stream);
454  ASPOSE_PDF_SHARED_API double MeasureString(System::String str, float fontSize);
455  ASPOSE_PDF_SHARED_API bool CppIsSetTrailerable();
456 
457 protected:
458 
461  const System::SharedPtr<Aspose::Font::IFont>& get_iFont() const;
462  void set_iFont(System::SharedPtr<Aspose::Font::IFont> value);
477  System::String get_UniqueId();
478 
480 
482 
483  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(Font, CODEPORTING_ARGS(System::SharedPtr<Aspose::Pdf::Engine::Data::IPdfPrimitive> fontObj));
484 
486 
487  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(Font, CODEPORTING_ARGS(System::SharedPtr<Aspose::Pdf::Engine::CommonData::Text::Fonts::IPdfFont> iPdfFont));
488 
490 
491  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(Font, CODEPORTING_ARGS(System::SharedPtr<Aspose::Font::IFont> font));
492 
494 
495  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(Font, CODEPORTING_ARGS(System::SharedPtr<Aspose::Pdf::Engine::Data::ITrailerable> trailerable, System::SharedPtr<Aspose::Pdf::Engine::CommonData::Text::Fonts::IPdfFont> iPdfFont));
497  System::SharedPtr<Font> Clone();
498 
499  virtual ASPOSE_PDF_SHARED_API ~Font();
500 
501 private:
502 
503  System::String fontName;
504  bool isEmbedded;
505  bool isSubset;
506  bool isAccessible;
507  bool isAttached;
508  System::String subsetTag;
513 
515 
516 };
517 
518 } // namespace Text
519 } // namespace Pdf
520 } // namespace Aspose
521 
522 
Represents a Page Information annotation in a PDF document. This annotation contains the file name...
Definition: PageInformationAnnotation.h:49
System::EventHandler FontPropertiesChanged
Definition: Font.h:479
Represents font object.
Definition: Font.h:224
Class representing Tj operator (show text).
Definition: Operator.h:5032
Class which represents formatted text. Contains information about text and its color, size, style.
Definition: FormattedText.h:65
String class used across the library. Is a substitute for C# System.String when translating code...
Definition: string.h:121
Performs font search. Searches in system installed fonts and standard Pdf fonts. Also provides functi...
Definition: FontRepository.h:61
Class representing Acro form object.
Definition: Form.h:115
Base class that enables using methods available for System.Object class in C#. All non-trivial classe...
Definition: object.h:64
Class representing PDF document
Definition: Document.h:625
Definition: Artifact.h:67
Represents an absorber object of fonts. Performs search for fonts and provides access to search resul...
Definition: FontAbsorber.h:31
Represents text paragraphs as multiline text object.
Definition: TextParagraph.h:86
Class represnets push button field.
Definition: ButtonField.h:73
Represents html fragment.
Definition: HtmlFragment.h:48
Class representing widget annotation.
Definition: WidgetAnnotation.h:93
Definition: signed_info.h:13
Represents heading.
Definition: Heading.h:58
Class describes Watermark annotation object.
Definition: WatermarkAnnotation.h:73
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: fwd.h:22
Represents a text type.
Class representing ColorBarAnnotation annotation. Property Color ignored, instead used ColorsOfCMYK c...
Definition: ColorBarAnnotation.h:53
Definition: AFRelationship.h:4
Subclass of System::SmartPtr which sets itself to weak mode at construction. Please note that this cl...
Definition: TextFragmentState.h:69
Class represents ListBox field.
Definition: ListBoxField.h:54
Represents textual stamp.
Definition: TextStamp.h:69
Represents font collection.
Definition: FontCollection.h:125
means saving in Markdown format.
Represents Redact annotation.
Definition: RedactionAnnotation.h:61
MulticastDelegate< void(System::SharedPtr< Object >, TEventArgs)> EventHandler
Represents a method that reacts to and processes an event. This type should be allocated on stack and...
Definition: eventhandler.h:16
Represents a text state of a text
Definition: TextState.h:135
Class represents PDF Artifact object.
Definition: Artifact.h:90
Useful properties to tune Font behaviour
Definition: IFontOptions.h:17
Whole PDF file will be submitted.