Hi!
I think I encountered a bug in a fairly rare use case. I've got some paragraphs with alignment set to Justified. The paragraph text contains pre-hyphenated Text, that is: In every place where a word-break may occur a
soft-hyphen character is added. I was a bit suprised that this was working out of the box - the hyphen char in the rendered PDF document is only printed when a word break actually did appear.
Unfortunately there is still a drawback: Some paragraphs with justified alignment don't work properly. I've attached an image where the bug can be seen in action.
This (VB.NET) code reproduces the error (a bit long):
Code:
Dim doc As New Document()
doc.Styles(StyleNames.Normal).ParagraphFormat.Alignment = ParagraphAlignment.Justify
Dim sect As Section = doc.AddSection()
sect.AddParagraph("Lorem ipsum dolor sit amet consectetuer urna sodales justo massa semper. Parturient congue non Praesent sit lobortis senectus at ut dui cursus. Ut eget Cras ridiculus elit nibh Donec adipiscing tincidunt nibh turpis. Ac odio vel netus sem non dolor pellentesque Pellentesque interdum vitae. Consequat nibh nibh orci Vestibulum In malesuada Curabitur at Fusce lacinia. Egestas semper nunc elit tellus est natoque odio In sapien enim. Ipsum nec habitasse dui gravida Nullam metus aliquam dui eu pulvinar. Dictumst egestas et Sed Morbi Morbi est amet magna at habitant. In natoque Nulla consequat habitant ut tincidunt nibh mi Nullam semper. Curabitur Morbi pede tellus venenatis nulla Nulla odio orci et non. Mauris elit Curabitur nunc Aliquam dictumst consectetuer felis sed pede Cum. Hac pellentesque hendrerit tellus tincidunt eget sed justo Curabitur consequat Aliquam. Neque massa auctor id convallis elit wisi orci Morbi laoreet urna. Augue mattis eros facilisis Nam nec tellus gravida nulla ac turpis. Molestie tincidunt sociis nec velit non nibh elit quis eget sit. Eu id convallis turpis cursus gravida Vestibulum turpis nisl wisi Lorem.", StyleNames.Normal)
sect.AddParagraph("Justo Quisque condimentum mattis est justo pretium et nibh est condimentum. Phasellus Proin neque sem vitae nibh dolor Nam Nunc metus nulla. Tincidunt Morbi In Proin et wisi amet libero pede Aliquam netus. Maecenas Fusce facilisis orci semper Nam Phasellus porttitor parturient Curabitur libero. Velit elit vitae Lorem fringilla leo adipiscing Donec semper elit non. Rhoncus mi tristique amet interdum faucibus et wisi orci velit id. Et Nulla tortor ut elit augue elit nunc gravida id vitae. Pretium enim congue vitae pede risus interdum id Nam Nam elit. Lorem id accumsan turpis orci aliquet interdum pede Donec sed metus. Vitae augue ipsum ullamcorper semper ac.", StyleNames.Normal)
sect.AddParagraph("Congue pretium tincidunt ipsum fermentum orci Vivamus pretium Suspendisse In tellus. Sed lacus tincidunt est tellus facilisis elit morbi Maecenas et pede. Et dis enim turpis congue condimentum Vestibulum nisl laoreet eros faucibus. Sed nisl at tempus augue nulla ante vel elit mi pretium. Consequat et lacinia sapien vel Suspendisse a adipiscing facilisi accumsan elit. In arcu mauris id nunc orci orci facilisis elit nec sapien. Et vitae Suspendisse wisi in Aliquam nunc ante nisl eu odio. Consectetuer mauris consequat massa est pulvinar Aenean eu sodales Nam lacus. Leo orci Sed ac tortor.", StyleNames.Normal)
sect.AddParagraph("Elit adipiscing Curabitur quis odio elit mi quis ridiculus pretium et. Et lacus Sed cursus dignissim massa mauris ultrices pretium Aenean auctor. Ipsum Vestibulum tincidunt Donec et ut elit eget Phasellus vitae eleifend. Lorem sed a Donec felis Aenean urna nunc ipsum faucibus mauris. Vel elit ut elit tortor dui elit.", StyleNames.Normal)
sect.AddParagraph("Neque mattis id Nam euismod pellentesque dui nec Nulla Cum amet. At wisi dapibus sit tortor condimentum neque Nullam nunc metus tempus. Mauris lacinia In est consectetuer pellentesque justo elit lorem Duis a. Congue id nisl ullamcorper Morbi in id nunc tristique ipsum lacinia. Dolor non non Curabitur lacus orci justo Duis Vivamus Aliquam morbi. Condimentum ut eget Fusce laoreet congue tincidunt malesuada lobortis consequat Donec. Facilisis leo Cum mi et In Morbi hac pharetra mauris facilisis. Nulla feugiat nonummy Integer massa ac ultrices condimentum pellentesque nunc Maecenas. Leo scelerisque id platea Aenean pede ligula amet congue dui pretium. Malesuada lorem lobortis Sed hac sapien Nullam amet semper Nulla nulla. Convallis risus condimentum et eget cursus massa mauris Quisque Vestibulum enim. Sodales vitae convallis et leo Curabitur tincidunt volutpat Phasellus semper Mauris. Metus Curabitur montes sagittis accumsan sem morbi hendrerit sem arcu vel. Lobortis Nunc laoreet arcu nonummy Nam dis Nulla metus tincidunt purus. Tempus Vivamus mi Pellentesque est at facilisis et wisi.", StyleNames.Normal)
Dim renderer As New PdfDocumentRenderer(True, PdfSharp.Pdf.PdfFontEmbedding.Always)
renderer.Document = doc
renderer.RenderDocument()
renderer.PdfDocument.Save("test-doc.pdf")
Process.Start("test-doc.pdf")
EDIT: The browser interprets the soft hyphen chars and doesn't display it. If you copy the code you should get the paragraph text with the inserted soft hyphen chars.
I hope this bug is fixable. If not - are there other ways to work with hyphenated and justified text?