When inserting ligature languages text into a block, the text doesn't appear on the generated PDF file.
With the following sample code, the issue can be reproduced:
private static string fileName = "Hello.pdf"; static void Main(string[] args) { byte[] fontData = File.ReadAllBytes("calibri.ttf"); FontFamily fontFamily = new FontFamily("Calibri"); FontsRepository.RegisterFont(fontFamily, FontStyles.Normal, FontWeights.Normal, fontData); RadFixedDocument document = new RadFixedDocument(); RadFixedPage page = new RadFixedPage(); string text = "مرحبا"; var reversedText = text.ToCharArray(); Array.Reverse(reversedText); Block block = new Block(); block.InsertText(new FontFamily("Calibri"), new string(reversedText)); FixedContentEditor editor = new FixedContentEditor(page); editor.DrawBlock(block); document.Pages.Add(page); PdfFormatProvider provider = new PdfFormatProvider(); using (Stream output = File.OpenWrite(fileName)) { provider.Export(document, output); } ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = fileName; Process.Start(fileName); }
SkiaImageFormatProvider: Add support for Text, TextMarkup, Line, and Stamp annotations.
Currently, these annotations are omitted on image export.
Add support for documents containing RTL (right-to-left) text.
Handle import of documents with wrong type of action key.
Once this is completed use the Exceptions Handling mechanism to handle this scenario. For instance:
private void ImportSettings_DocumentUnhandledException(object sender, DocumentUnhandledExceptionEventArgs e)
{
if (e.Exception is InvalidActionException)
{
Matte color is used for preblending images with some background color, using the SMask. Matte color is specified using the optional 'Matte' entry for the SMask object. See PDF 1.7 specification, page 554-555: Matte array (Optional; PDF 1.4) An array of component values specifying the matte color with which the image data in the parent image has been preblended. The array consists of nnumbers, where n is the number of components in the color space specified by the ColorSpace entry in the parent image’s image dictionary; the numbers must be valid color components in that color space. If this entry is absent, the image data is not preblended.
This allows specifying a soft mask in the external graphics state.