mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-30 23:16:09 +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(); | ||||
|         } | ||||
| 
 | ||||
|         Font ParagraphFont = null; | ||||
|         private void Render(IEnumerable<Block> blocks, Document document) | ||||
|         private BaseFont GetBaseFont(string fontName) | ||||
|         { | ||||
|             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"); | ||||
|                 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")) | ||||
|                 fontPath = Path.Combine(Xamarin.Essentials.FileSystem.CacheDirectory, fontPath); | ||||
|             } | ||||
|             using (var inFont = AideDeJeu.Tools.Helpers.GetResourceStream($"AideDeJeu.Pdf.{fontName}")) | ||||
|             { | ||||
|                 using (var outFont = new FileStream(fontPath, FileMode.Create, FileAccess.ReadWrite)) | ||||
|                 { | ||||
|  | @ -71,15 +71,123 @@ namespace AideDeJeu.Pdf | |||
|             } | ||||
|             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; | ||||
|             return iTextSharp.text.pdf.BaseFont.CreateFont(fontPath, iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED); | ||||
|         } | ||||
| 
 | ||||
|         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); | ||||
| 
 | ||||
| 
 | ||||
|  | @ -93,7 +201,7 @@ namespace AideDeJeu.Pdf | |||
|             foreach (var phrase in phrases) | ||||
|             { | ||||
|                 //var pphrase = new Phrase("test", bigFont); | ||||
|                 phrase.Font = ParagraphFont; | ||||
|                 //phrase.Font = ParagraphFont; | ||||
|                 y = ct.YLine; | ||||
| 
 | ||||
|                 document.Add(phrase); | ||||
|  | @ -187,21 +295,23 @@ namespace AideDeJeu.Pdf | |||
| 
 | ||||
|         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) | ||||
|         { | ||||
|             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)); | ||||
|         } | ||||
| 
 | ||||
|         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(); | ||||
|             foreach (var inline in inlines) | ||||
|             { | ||||
|                 var spans = CreateChunks(inline, fontFamily, fontStyle, fontColor, fontSize); | ||||
|                 var spans = CreateChunks(inline, fontFamily, fontStyle, fontColor); | ||||
|                 if (spans != null) | ||||
|                 { | ||||
|                     foreach (var span in spans) | ||||
|  | @ -212,7 +322,7 @@ namespace AideDeJeu.Pdf | |||
|             } | ||||
|             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) | ||||
|             { | ||||
|  | @ -222,12 +332,12 @@ namespace AideDeJeu.Pdf | |||
|                         new Chunk() | ||||
|                         { | ||||
|                             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: | ||||
|                     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(); | ||||
| 
 | ||||
|                 case LineBreakInline breakline: | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yan Maniez
						Yan Maniez