git-svn-id: https://pdfsharp.svn.codeplex.com/svn@39620 56d0cb2f-6006-4f69-a5a2-94740...
[pdfsharp:pdfsharp.git] / PDFsharp / code / PdfSharp / PdfSharp.Drawing / PdfFontOptions.cs
1 #region PDFsharp - A .NET library for processing PDF\r
2 //\r
3 // Authors:\r
4 //   Stefan Lange (mailto:Stefan.Lange@pdfsharp.com)\r
5 //\r
6 // Copyright (c) 2005-2009 empira Software GmbH, Cologne (Germany)\r
7 //\r
8 // http://www.pdfsharp.com\r
9 // http://sourceforge.net/projects/pdfsharp\r
10 //\r
11 // Permission is hereby granted, free of charge, to any person obtaining a\r
12 // copy of this software and associated documentation files (the "Software"),\r
13 // to deal in the Software without restriction, including without limitation\r
14 // the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
15 // and/or sell copies of the Software, and to permit persons to whom the\r
16 // Software is furnished to do so, subject to the following conditions:\r
17 //\r
18 // The above copyright notice and this permission notice shall be included\r
19 // in all copies or substantial portions of the Software.\r
20 //\r
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
22 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
23 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\r
24 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
25 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
26 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER \r
27 // DEALINGS IN THE SOFTWARE.\r
28 #endregion\r
29 \r
30 using System;\r
31 using System.Runtime.InteropServices;\r
32 using System.ComponentModel;\r
33 using System.IO;\r
34 #if GDI\r
35 using System.Drawing;\r
36 using System.Drawing.Drawing2D;\r
37 #endif\r
38 #if WPF\r
39 using System.Windows.Media;\r
40 #endif\r
41 using PdfSharp.Internal;\r
42 using PdfSharp.Fonts.OpenType;\r
43 using PdfSharp.Pdf;\r
44 using PdfSharp.Pdf.Advanced;\r
45 \r
46 namespace PdfSharp.Drawing\r
47 {\r
48   /// <summary>\r
49   /// Specifies details about how the font is used in PDF creation.\r
50   /// </summary>\r
51   public class XPdfFontOptions\r
52   {\r
53     internal XPdfFontOptions() { }\r
54 \r
55     /// <summary>\r
56     /// Initializes a new instance of the <see cref="XPdfFontOptions"/> class.\r
57     /// </summary>\r
58     public XPdfFontOptions(PdfFontEncoding encoding,  PdfFontEmbedding embedding)\r
59     {\r
60       this.fontEncoding = encoding;\r
61       this.fontEmbedding = embedding;\r
62     }\r
63 \r
64     /// <summary>\r
65     /// Initializes a new instance of the <see cref="XPdfFontOptions"/> class.\r
66     /// </summary>\r
67     public XPdfFontOptions(PdfFontEncoding encoding)\r
68     {\r
69       this.fontEncoding = encoding;\r
70       this.fontEmbedding = PdfFontEmbedding.None;\r
71     }\r
72 \r
73     /// <summary>\r
74     /// Initializes a new instance of the <see cref="XPdfFontOptions"/> class.\r
75     /// </summary>\r
76     public XPdfFontOptions(PdfFontEmbedding embedding)\r
77     {\r
78       this.fontEncoding = PdfFontEncoding.WinAnsi;\r
79       this.fontEmbedding = embedding;\r
80     }\r
81 \r
82     /// <summary>\r
83     /// Initializes a new instance of the <see cref="XPdfFontOptions"/> class.\r
84     /// </summary>\r
85     /// <param name="embed">If set to <c>true</c> the font is embedded.</param>\r
86     /// <param name="unicode">If set to <c>true</c> Unicode encoding is used.</param>\r
87     /// <param name="baseFont">Not yet implemented. Should be "".</param>\r
88     /// <param name="fontFile">Not yet implemented. Should be "".</param>\r
89     [Obsolete("Use other constructor")]\r
90     XPdfFontOptions(bool embed, bool unicode, string baseFont, string fontFile)\r
91     {\r
92       this.fontEmbedding = embed ? PdfFontEmbedding.Always : PdfFontEmbedding.None;\r
93       this.fontEncoding = unicode ? PdfFontEncoding.Unicode : PdfFontEncoding.WinAnsi;\r
94       //this.baseFont = baseFont == null ? "" : baseFont;\r
95       //this.fontFile = fontFile == null ? "" : fontFile;\r
96 \r
97       this.fontEmbedding = PdfFontEmbedding.Default;\r
98       this.fontEncoding = PdfFontEncoding.WinAnsi;\r
99     }\r
100 \r
101     /// <summary>\r
102     /// Initializes a new instance of the <see cref="XPdfFontOptions"/> class.\r
103     /// </summary>\r
104     /// <param name="unicode">If set to <c>true</c> Unicode encoding is used.</param>\r
105     /// <param name="fontData">User supplied font data.</param>\r
106     [Obsolete("Use other constructor")]\r
107     public XPdfFontOptions(bool unicode, byte[] fontData)\r
108     {\r
109       this.fontEmbedding = PdfFontEmbedding.None;\r
110       this.fontEncoding = unicode ? PdfFontEncoding.Unicode : PdfFontEncoding.WinAnsi;\r
111       //this.baseFont = "";\r
112       //this.fontFile = "";\r
113       //this.fontData = fontData;\r
114     }\r
115 \r
116     /// <summary>\r
117     /// Initializes a new instance of the <see cref="XPdfFontOptions"/> class.\r
118     /// </summary>\r
119     /// <param name="embed">If set to <c>true</c> the font is embedded.</param>\r
120     /// <param name="baseFont">Not yet implemented. Should be "".</param>\r
121     [Obsolete("Use other constructor")]\r
122     public XPdfFontOptions(bool embed, string baseFont)\r
123       : this(embed, false, baseFont, "")\r
124     { }\r
125 \r
126     /// <summary>\r
127     /// Initializes a new instance of the <see cref="XPdfFontOptions"/> class.\r
128     /// </summary>\r
129     /// <param name="embed">If set to <c>true</c> the font is embedded.</param>\r
130     /// <param name="unicode">If set to <c>true</c> Unicode encoding is used.</param>\r
131     [Obsolete("Use other constructor")]\r
132     public XPdfFontOptions(bool embed, bool unicode)\r
133       : this(embed, unicode, "", "")\r
134     { }\r
135 \r
136     /// <summary>\r
137     /// Initializes a new instance of the <see cref="XPdfFontOptions"/> class.\r
138     /// </summary>\r
139     /// <param name="embed">If set to <c>true</c> the font is embedded.</param>\r
140     [Obsolete("Use other constructor")]\r
141     public XPdfFontOptions(bool embed)\r
142       : this(embed, false, "", "")\r
143     { }\r
144 \r
145     /// <summary>\r
146     /// Initializes a new instance of the <see cref="XPdfFontOptions"/> class.\r
147     /// </summary>\r
148     /// <param name="fontEmbedding">Indicates how font is embedded.</param>\r
149     /// <param name="unicode">If set to <c>true</c> Unicode encoding is used.</param>\r
150     [Obsolete("Use other constructor")]\r
151     public XPdfFontOptions(PdfFontEmbedding fontEmbedding, bool unicode)\r
152       : this(fontEmbedding == PdfFontEmbedding.Always || fontEmbedding == PdfFontEmbedding.Automatic,\r
153       unicode, "", "")\r
154     { }\r
155 \r
156     /// <summary>\r
157     /// Gets a value indicating whether the gets embedded in the PDF file.\r
158     /// </summary>\r
159     [Obsolete("Use FontEmbedding")]\r
160     public bool Embed\r
161     {\r
162       get { return this.fontEmbedding != PdfFontEmbedding.None; }\r
163     }\r
164     //bool embed;\r
165 \r
166     /// <summary>\r
167     /// Gets a value indicating the font embedding.\r
168     /// </summary>\r
169     public PdfFontEmbedding FontEmbedding\r
170     {\r
171       get { return this.fontEmbedding; }\r
172     }\r
173     PdfFontEmbedding fontEmbedding;\r
174 \r
175     //public bool Subset\r
176     //{\r
177     //  get {return this.subset;}\r
178     //}\r
179     //bool subset;\r
180 \r
181     /// <summary>\r
182     /// Gets a value indicating whether the font is encoded as Unicode.\r
183     /// </summary>\r
184     [Obsolete("Use FontEncoding")]\r
185     public bool Unicode\r
186     {\r
187       get { return this.fontEncoding == PdfFontEncoding.Unicode; }\r
188     }\r
189     //bool unicode;\r
190 \r
191 \r
192     /// <summary>\r
193     /// Gets a value indicating how the font is encoded.\r
194     /// </summary>\r
195     public PdfFontEncoding FontEncoding\r
196     {\r
197       get { return this.fontEncoding; }\r
198     }\r
199     PdfFontEncoding fontEncoding;\r
200 \r
201     /// <summary>\r
202     /// Not yet implemented.\r
203     /// </summary>\r
204     [Obsolete("Not yet implemented")]\r
205     public string BaseFont\r
206     {\r
207       //get { return this.baseFont; }\r
208       get { return ""; }\r
209     }\r
210     //string baseFont = "";\r
211 \r
212     /// <summary>\r
213     /// Not yet implemented.\r
214     /// </summary>\r
215     [Obsolete("Not yet implemented")]\r
216     public string FontFile\r
217     {\r
218       //get { return this.fontFile; }\r
219       get { return ""; }\r
220     }\r
221     //string fontFile = "";\r
222 \r
223     /// <summary>\r
224     /// Gets the font image.\r
225     /// </summary>\r
226     [Obsolete("Not yet implemented")]\r
227     public byte[] FontData\r
228     {\r
229       //get { return this.fontData; }\r
230       get { return null; }\r
231     }\r
232     //byte[] fontData;\r
233 \r
234     // this is part of XGraphics\r
235     //    public double CharacterSpacing;\r
236     //    public double WordSpacing;\r
237     //    public double HorizontalScaling;\r
238     //    public double Leading;\r
239     //    public double TextRise;\r
240     //    Kerning\r
241   }\r
242 }\r