Repository navigation
Avalonia fonts
Report fonts can come from Avalonia FontManager.
UsePysar installs a typeface fallback before your configuration. The family string in the report must be the Avalonia FontFamily string — fonts:Inter#Inter after WithInterFont, or avares://MyApp/Fonts#Ubuntu for a resource folder — not a file path. A bare name is a system-font lookup; if TryGetGlyphTypeface substitutes Helvetica, Pysar treats that as a miss.
AddFont still wins. A library ReportAsset still needs one AddFont: the file is not copied into the head, and FontManager does not see it. A XAML FontFamily resource is not a registration. Styles stay Normal, Bold, Italic and BoldItalic. This bridge is Avalonia only. Console, the design-time preview, MAUI, WPF and Uno keep AddFont.
PDF export
PDF/A-2b is an option of PDF, not another format.
Pass new PdfExportOptions { PdfA = true } to SavePdfAsync, RenderToPdfAsync, RenderToPdfBytesAsync, or IReportExportService.ExportAsync. Skia writes the archival document setup: XMP pdfaid identification, a document UUID, and an sRGB output intent. It does not validate the file. A font Skia cannot embed still fails a checker, and the UUID makes those bytes non-reproducible. Existing overloads are unchanged.
Images
SVG is drawn from the bytes, not only from a .svg path.
A stream or embedded source whose bytes start with <svg (optional XML declaration) is rendered as SVG. A decode or parse failure is recorded on the image cache, so the same bad bytes are not decoded again. Fixes #23.
Rendering
A built report may be rendered more than once, only sequentially.
PDF and then page bitmaps, or a retry of the same export, is supported. Do not render one instance concurrently. PageNumber and PageCount are scratch written during the pass, and OnPageChanged runs again on every render.
Uno
Android report pages no longer depend on OpenGL ES.
UsePysar sets UseOpenGLOnSkiaAndroid to false before the window is created. OpenGL ES draws image textures as opaque black, which hid every report page.
Internal
- Host startup (Avalonia, MAUI, WPF, Uno) shares one installation sequence,
PysarInstallation. InternalsVisibleToforPysar.AvaloniaandPysar.Avalonia.Tests.
Full changelog: v0.1.56...HEAD