UnicodeRanges.cs
C# VB
//// This code is part of Document Solutions for PDF .NET demos.// Copyright (c) MESCIUS inc. All rights reserved.//using System.IO;using System.Drawing;using GrapeCity.Documents.Pdf;using GrapeCity.Documents.Text;
namespace DsPdfWeb.Demos.Basics{ // This sample lists Unicode ranges available in each system font. public class UnicodeRanges { public int CreatePDF(Stream stream) { // Setup: var doc = new GcPdfDocument(); var tl = new TextLayout(72) { MaxWidth = doc.PageSize.Width, MaxHeight = doc.PageSize.Height, MarginAll = 72, }; tl.DefaultFormat.FontSize = 7; var tfH = new TextFormat() { Font = StandardFonts.TimesBold, FontSize = 12 }; var tfP = new TextFormat() { Font = StandardFonts.Times, FontSize = 11 };
// Loop through all system fonts, // list Unicode ranges provided by each font: foreach (var font in FontCollection.SystemFonts) { tl.AppendLine($"{font.FontFileName} [{font.FullFontName}] [{font.FontFamilyName}]", tfH); var shot = font.CreateFontTables(TableTag.OS2); tl.AppendLine(shot.GetUnicodeRanges(), tfP); tl.AppendLine(); }
// Split and render TextLayout as shown in the PaginatedText sample: var to = new TextSplitOptions(tl) { MinLinesInFirstParagraph = 2, MinLinesInLastParagraph = 2 }; tl.PerformLayout(true); while (true) { var splitResult = tl.Split(to, out TextLayout rest); doc.Pages.Add().Graphics.DrawTextLayout(tl, PointF.Empty); if (splitResult != SplitResult.Split) break; tl = rest; }
// Done: doc.Save(stream); return doc.Pages.Count; } }}