TextJustifyRules.cs
- //
- // This code is part of Document Solutions for PDF demos.
- // Copyright (c) MESCIUS inc. All rights reserved.
- //
- using System;
- using System.Drawing;
- using System.IO;
- using GrapeCity.Documents.Pdf;
- using GrapeCity.Documents.Text;
- using GCTEXT = GrapeCity.Documents.Text;
- using GCDRAW = GrapeCity.Documents.Drawing;
-
- namespace DsPdfWeb.Demos.Basics
- {
- // TBD:
-
- public class TextJustifyRules
- {
- public int CreatePDF(Stream stream)
- {
- var arialbd = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "arialbd.ttf"));
- var arialuni = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "arialuni.ttf"));
-
- var doc = new GcPdfDocument();
- var page = doc.NewPage();
- var g = page.Graphics;
-
- var tl = g.CreateTextLayout();
- //tl.LineBreakingRules = LineBreakingRules.Unicode;
- //tl.WordBoundaryRules = WordBoundaryRules.Unicode;
- //tl.TextExtensionStrategy = TextExtensionStrategy.Default;
- tl.TextAlignment = TextAlignment.Distributed;
- tl.JustifiedSpaceExtension = 0f;
- tl.JustifiedTextExtension = 20f;
-
- var tf = new TextFormat { FontSize = 26f, Font = arialuni };
- var tfInfo = new TextFormat { FontSize = 11f, Font = arialbd };
-
- float marginx = 120, marginy = 36;
- tl.MaxWidth = page.Size.Width - marginx * 2;
- var text = "abcdefg!1010101010abc;999999本列島で使され99 555";
-
- float DrawText(TextLayout tl, float y)
- {
- var pt = new PointF(marginx, y + 20);
- tl.Append(text, tf);
- tl.PerformLayout(true);
- var rc = new RectangleF(pt, new SizeF(tl.ContentWidth, tl.ContentHeight));
- g.FillRectangle(rc, Color.PaleGoldenrod);
- g.DrawString($"LineBreakingRules.{tl.LineBreakingRules}, TextExtensionStrategy.{tl.TextExtensionStrategy}:",
- tfInfo, new PointF(marginx / 2f, y));
- g.DrawTextLayout(tl, pt);
- tl.Clear();
- return rc.Bottom + 16;
- }
-
- float y = marginy, dy = marginy * 3.5f;
- y = DrawText(tl, y);
- tl.TextExtensionStrategy = TextExtensionStrategy.EastAsianExcel;
- y = DrawText(tl, y);
- tl.TextExtensionStrategy = TextExtensionStrategy.Excel;
- y = DrawText(tl, y);
- tl.LineBreakingRules = LineBreakingRules.Simplified;
- tl.WordBoundaryRules = WordBoundaryRules.Simplified;
- tl.TextExtensionStrategy = TextExtensionStrategy.Default;
- y = DrawText(tl, y);
- tl.TextExtensionStrategy = TextExtensionStrategy.EastAsianExcel;
- y = DrawText(tl, y);
- tl.TextExtensionStrategy = TextExtensionStrategy.Excel;
- y = DrawText(tl, y);
-
- // Done:
- doc.Save(stream);
- return doc.Pages.Count;
- }
- }
- }
-