//// This code is part of Document Solutions for PDF .NET demos.// Copyright (c) MESCIUS inc. All rights reserved.//usingSystem.IO;usingSystem.Drawing;usingGrapeCity.Documents.Pdf; namespaceDsPdfWeb.Demos.Basics{// This sample shows how to hyphenate text that contains soft hyphen characters (0x00AD).// Breaks will be inserted at soft hyphen positions (if they are present in the text)// if TextLayout.WrapMode is set to WordWrap. Two properties are provided to control// hyphenation:// - TextLayout.SoftHyphenReplacementCharCode: specifies the character used as replacement// for soft hyphen when breaking words across lines. By default this property is 0x002D// (the Unicode hyphen-minus character). Setting this property to 0 breaks words without// showing any visible hyphen character. Setting it to -1 prevents breaking words at soft// hyphens).// - TextLayout.LinesBetweenConsecutiveHyphens: specifies the minimum number of non-// hyphenated lines between lines ending in a hyphen. By default this property is zero.publicclassHyphenation {publicintCreatePDF(Stream stream) { // The online hypho-o tool // was used to insert soft hyphens in the sample text from WordCharWrap:var str ="Lose noth­ing in your doc­u­ments! Document Solutions for PDF " +"in­cludes text and para­graph format­ting, spe­cial char­ac­ters, " +"mul­tiple lan­guages, RTL sup­port, ver­tic­al and ro­tated text " +"on all sup­por­ted plat­forms.";// Replace HTML soft hyphens with Unicode ones: str = str.Replace("­", "\u00AD"); var doc = newGcPdfDocument();var page = doc.NewPage();var g = page.Graphics; var tl = g.CreateTextLayout(); tl.Append(str); tl.DefaultFormat.Font = StandardFonts.Times; tl.DefaultFormat.FontSize = 12; tl.MaxWidth = 72 * 3; // By default 0x002D (hyphen-minus) will be used as the hyphenation character// when breaking a line at a soft hyphen (0x00AD): tl.PerformLayout(true); var dy = tl.Lines[0].Height + 72 / 16;var rc = newRectangleF(72, 72 + dy, tl.MaxWidth.Value, 72 * 1.4F); g.DrawString("Default hyphenation:", tl.DefaultFormat, newPointF(rc.Left, rc.Top - dy)); g.DrawTextLayout(tl, rc.Location); g.DrawRectangle(rc, Color.CornflowerBlue); rc.Offset(0, 72 * 2);// This will avoid hyphenating two consecutive lines: tl.LinesBetweenConsecutiveHyphens = 1;// Changing hyphenation options requires RecalculateGlyphs(): tl.PerformLayout(true); g.DrawString("LinesBetweenConsecutiveHyphens: 1", tl.DefaultFormat, newPointF(rc.Left, rc.Top - dy)); g.DrawTextLayout(tl, rc.Location); g.DrawRectangle(rc, Color.CornflowerBlue); rc.Offset(0, 72 * 2);// Reset previous setting: tl.LinesBetweenConsecutiveHyphens = 0;// Prevent hyphenating words at all: tl.SoftHyphenReplacementCharCode = -1;// Changing hyphenation options requires RecalculateGlyphs(): tl.PerformLayout(true); g.DrawString("SoftHyphenReplacementCharCode: -1", tl.DefaultFormat, newPointF(rc.Left, rc.Top - dy)); g.DrawTextLayout(tl, rc.Location); g.DrawRectangle(rc, Color.CornflowerBlue); // Done: doc.Save(stream);return doc.Pages.Count; } }}