mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-31 15:36:07 +00:00 
			
		
		
		
	Fonts
This commit is contained in:
		
							parent
							
								
									5e870cd180
								
							
						
					
					
						commit
						de54fad9c5
					
				
					 1 changed files with 138 additions and 28 deletions
				
			
		|  | @ -55,14 +55,14 @@ namespace AideDeJeu.Pdf | ||||||
|             //reader.Close(); |             //reader.Close(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         Font ParagraphFont = null; |         private BaseFont GetBaseFont(string fontName) | ||||||
|         private void Render(IEnumerable<Block> blocks, Document document) |  | ||||||
|         { |         { | ||||||
|             if(ParagraphFont == null) |             string fontPath = fontName; | ||||||
|  |             if(Xamarin.Essentials.DeviceInfo.Platform != Xamarin.Essentials.DevicePlatform.Unknown) | ||||||
|             { |             { | ||||||
|                 //var fontPath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, "Cinzel-Regular.otf"); |                 fontPath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, fontPath); | ||||||
|                 var fontPath = @"C:\Users\yanma\Documents\Visual Studio 2017\Projects\AideDeJeu\AideDeJeu\AideDeJeuCmd\bin\Debug\netcoreapp2.1\Cinzel-Regular.otf"; |             } | ||||||
|                 using (var inFont = AideDeJeu.Tools.Helpers.GetResourceStream("AideDeJeu.Pdf.Cinzel-Regular.otf")) |             using (var inFont = AideDeJeu.Tools.Helpers.GetResourceStream($"AideDeJeu.Pdf.{fontName}")) | ||||||
|             { |             { | ||||||
|                 using (var outFont = new FileStream(fontPath, FileMode.Create, FileAccess.ReadWrite)) |                 using (var outFont = new FileStream(fontPath, FileMode.Create, FileAccess.ReadWrite)) | ||||||
|                 { |                 { | ||||||
|  | @ -71,15 +71,123 @@ namespace AideDeJeu.Pdf | ||||||
|             } |             } | ||||||
|             FontFactory.Register(fontPath); |             FontFactory.Register(fontPath); | ||||||
| 
 | 
 | ||||||
|                 //var mafont = FontFactory.GetFont("cinzel", 20, iTextSharp.text.Font.NORMAL); |             return iTextSharp.text.pdf.BaseFont.CreateFont(fontPath, iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED); | ||||||
|                 var mafont = iTextSharp.text.pdf.BaseFont.CreateFont(fontPath, iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED); |  | ||||||
|                 //var font = mafont.BaseFont; |  | ||||||
|                 var bigFont = new iTextSharp.text.Font(mafont, 20); |  | ||||||
| 
 |  | ||||||
|                 var fonts = FontFactory.RegisteredFonts; |  | ||||||
| 
 |  | ||||||
|                 ParagraphFont = bigFont; |  | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         BaseFont _CinzelRegular = null; | ||||||
|  |         public BaseFont CinzelRegular | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _CinzelRegular ?? (_CinzelRegular = GetBaseFont("Cinzel-Regular.otf")); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         BaseFont _CinzelBold = null; | ||||||
|  |         public BaseFont CinzelBold | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _CinzelBold ?? (_CinzelBold = GetBaseFont("Cinzel-Bold.otf")); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         BaseFont _LinuxLibertine = null; | ||||||
|  |         public BaseFont LinuxLibertine | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _LinuxLibertine ?? (_LinuxLibertine = GetBaseFont("LinLibertine_R.ttf")); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         Font _Header1Font = null; | ||||||
|  |         public Font Header1Font | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _Header1Font ?? (_Header1Font = new iTextSharp.text.Font(CinzelBold, 30)); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         Font _Header2Font = null; | ||||||
|  |         public Font Header2Font | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _Header2Font ?? (_Header2Font = new iTextSharp.text.Font(CinzelRegular, 25)); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         Font _Header3Font = null; | ||||||
|  |         public Font Header3Font | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _Header3Font ?? (_Header3Font = new iTextSharp.text.Font(CinzelRegular, 20)); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         Font _Header4Font = null; | ||||||
|  |         public Font Header4Font | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _Header4Font ?? (_Header4Font = new iTextSharp.text.Font(CinzelRegular, 18)); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         Font _Header5Font = null; | ||||||
|  |         public Font Header5Font | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _Header5Font ?? (_Header5Font = new iTextSharp.text.Font(CinzelRegular, 16)); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         Font _Header6Font = null; | ||||||
|  |         public Font Header6Font | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _Header6Font ?? (_Header6Font = new iTextSharp.text.Font(CinzelRegular, 15)); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         Font _ParagraphFont = null; | ||||||
|  |         Font ParagraphFont | ||||||
|  |         { | ||||||
|  |             get | ||||||
|  |             { | ||||||
|  |                 return _ParagraphFont ?? (_ParagraphFont = new iTextSharp.text.Font(LinuxLibertine, 15)); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         private void Render(IEnumerable<Block> blocks, Document document) | ||||||
|  |         { | ||||||
|  |             //if(ParagraphFont == null) | ||||||
|  |             //{ | ||||||
|  |             //    if(CinzelRegular == null) | ||||||
|  |             //    { | ||||||
|  | 
 | ||||||
|  |             //    } | ||||||
|  |             //    //var fontPath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, "Cinzel-Regular.otf"); | ||||||
|  |             //    //var fontPath = @"C:\Users\yanma\Documents\Visual Studio 2017\Projects\AideDeJeu\AideDeJeu\AideDeJeuCmd\bin\Debug\netcoreapp2.1\Cinzel-Regular.otf"; | ||||||
|  |             //    var fontPath = @"Cinzel-Regular.otf"; | ||||||
|  |             //    using (var inFont = AideDeJeu.Tools.Helpers.GetResourceStream("AideDeJeu.Pdf.Cinzel-Regular.otf")) | ||||||
|  |             //    { | ||||||
|  |             //        using (var outFont = new FileStream(fontPath, FileMode.Create, FileAccess.ReadWrite)) | ||||||
|  |             //        { | ||||||
|  |             //            inFont.CopyTo(outFont); | ||||||
|  |             //        } | ||||||
|  |             //    } | ||||||
|  |             //    FontFactory.Register(fontPath); | ||||||
|  | 
 | ||||||
|  |             //    //var mafont = FontFactory.GetFont("cinzel", 20, iTextSharp.text.Font.NORMAL); | ||||||
|  |             //    var mafont = iTextSharp.text.pdf.BaseFont.CreateFont(fontPath, iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED); | ||||||
|  |             //    //var font = mafont.BaseFont; | ||||||
|  |             //    var bigFont = new iTextSharp.text.Font(mafont, 20); | ||||||
|  | 
 | ||||||
|  |             //    var fonts = FontFactory.RegisteredFonts; | ||||||
|  | 
 | ||||||
|  |             //    ParagraphFont = bigFont; | ||||||
|  |             //} | ||||||
|             var phrases = Render(blocks); |             var phrases = Render(blocks); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -93,7 +201,7 @@ namespace AideDeJeu.Pdf | ||||||
|             foreach (var phrase in phrases) |             foreach (var phrase in phrases) | ||||||
|             { |             { | ||||||
|                 //var pphrase = new Phrase("test", bigFont); |                 //var pphrase = new Phrase("test", bigFont); | ||||||
|                 phrase.Font = ParagraphFont; |                 //phrase.Font = ParagraphFont; | ||||||
|                 y = ct.YLine; |                 y = ct.YLine; | ||||||
| 
 | 
 | ||||||
|                 document.Add(phrase); |                 document.Add(phrase); | ||||||
|  | @ -187,21 +295,23 @@ namespace AideDeJeu.Pdf | ||||||
| 
 | 
 | ||||||
|         private Phrase Render(HeadingBlock block) |         private Phrase Render(HeadingBlock block) | ||||||
|         { |         { | ||||||
|             return CreateFormatted(block.Inline, Font.HELVETICA, 0, new Color(0x9B1C47), 14 + (7 - block.Level) * 2); |             var fonts = new Font[] { Header1Font, Header2Font, Header3Font, Header4Font, Header5Font, Header6Font }; | ||||||
|  |             var colors = new Color[] { new Color(0x9B1C47), new Color(0, 0, 0), new Color(0, 0, 0), new Color(0, 0, 0), new Color(0, 0, 0), new Color(0, 0, 0) }; | ||||||
|  |             return CreateFormatted(block.Inline, fonts[block.Level - 1], 0, colors[block.Level - 1]); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         private Phrase Render(ParagraphBlock block) |         private Phrase Render(ParagraphBlock block) | ||||||
|         { |         { | ||||||
|             return CreateFormatted(block.Inline, Font.HELVETICA, 0, new Color(0, 0, 0), 12); |             return CreateFormatted(block.Inline, ParagraphFont, 0, new Color(0, 0, 0)); | ||||||
|             //_Document.Add(CreateFormatted(block.Inline, Font.HELVETICA, 0, new Color(0, 0, 0), 20)); |             //_Document.Add(CreateFormatted(block.Inline, Font.HELVETICA, 0, new Color(0, 0, 0), 20)); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         private Phrase CreateFormatted(ContainerInline inlines, int fontFamily, int fontStyle, Color fontColor, float fontSize) |         private Phrase CreateFormatted(ContainerInline inlines, Font fontFamily, int fontStyle, Color fontColor) | ||||||
|         { |         { | ||||||
|             var phrase = new Phrase(); |             var phrase = new Phrase(); | ||||||
|             foreach (var inline in inlines) |             foreach (var inline in inlines) | ||||||
|             { |             { | ||||||
|                 var spans = CreateChunks(inline, fontFamily, fontStyle, fontColor, fontSize); |                 var spans = CreateChunks(inline, fontFamily, fontStyle, fontColor); | ||||||
|                 if (spans != null) |                 if (spans != null) | ||||||
|                 { |                 { | ||||||
|                     foreach (var span in spans) |                     foreach (var span in spans) | ||||||
|  | @ -212,7 +322,7 @@ namespace AideDeJeu.Pdf | ||||||
|             } |             } | ||||||
|             return phrase; |             return phrase; | ||||||
|         } |         } | ||||||
|         private Chunk[] CreateChunks(Inline inline, int fontFamily, int fontStyle, Color fontColor, float fontSize) |         private Chunk[] CreateChunks(Inline inline, Font fontFamily, int fontStyle, Color fontColor) | ||||||
|         { |         { | ||||||
|             switch (inline) |             switch (inline) | ||||||
|             { |             { | ||||||
|  | @ -222,12 +332,12 @@ namespace AideDeJeu.Pdf | ||||||
|                         new Chunk() |                         new Chunk() | ||||||
|                         { |                         { | ||||||
|                             Content = literal.Content.Text.Substring(literal.Content.Start, literal.Content.Length), |                             Content = literal.Content.Text.Substring(literal.Content.Start, literal.Content.Length), | ||||||
|                             Font = ParagraphFont, //new Font(fontFamily, fontSize, fontStyle, fontColor) |                             Font = new Font(fontFamily.BaseFont, fontFamily.Size, fontStyle, fontColor) | ||||||
|                         } |                         } | ||||||
|                     }; |                     }; | ||||||
|                 case EmphasisInline emphasis: |                 case EmphasisInline emphasis: | ||||||
|                     var childStyle = fontStyle | (emphasis.DelimiterCount == 2 ? Font.BOLD : Font.ITALIC); |                     var childStyle = fontStyle | (emphasis.DelimiterCount == 2 ? Font.BOLD : Font.ITALIC); | ||||||
|                     var espans = emphasis.SelectMany(x => CreateChunks(x, fontFamily, childStyle, fontColor, fontSize)); |                     var espans = emphasis.SelectMany(x => CreateChunks(x, fontFamily, childStyle, fontColor)); | ||||||
|                     return espans.ToArray(); |                     return espans.ToArray(); | ||||||
| 
 | 
 | ||||||
|                 case LineBreakInline breakline: |                 case LineBreakInline breakline: | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yan Maniez
						Yan Maniez