Customization
Custom Tag Mapping
The default tag mapping uses row names like Bold, Italic, Code, Header1, etc. If your DataTable uses different row names (for example, because it's shared with other systems), you can provide a custom mapping in C++:
FMarkdownTagMapping MyMapping;
MyMapping.Bold = TEXT("StrongText");
MyMapping.Italic = TEXT("EmphasisText");
MyMapping.Header1 = TEXT("TitleLarge");
MyMapping.InlineCode = TEXT("MonospaceText");
// ... set any fields you need to override
TArray<FMarkdownBlock> AST = FAzimuthMarkdownParser::Parse(Input);
FString Tagged = FAzimuthMarkdownRenderer::RenderToTaggedText(AST, MyMapping);
Any fields you don't set retain their defaults. See Appendix B for all available fields.
Note: Custom tag mapping is a C++ feature. Blueprint users should name their DataTable rows to match the default mapping.
Custom Link Handling
By default, clicking a link opens the URL in the system browser via FPlatformProcess::LaunchURL. To handle clicks yourself:
- Get a reference to the
AzimuthRichTextLinkDecoratoron your RichTextBlock - Bind to its OnLinkClicked event (BlueprintAssignable delegate)
- Your handler receives the URL as an
FString - When
OnLinkClickedis bound, the default browser-open behavior is skipped
Example use cases:
- Open links in an in-app browser widget instead of the system browser
- Log link clicks for analytics
- Navigate to in-app content based on URL patterns
- Block specific domains
Custom Fonts and Styles
The DataTable drives all visual styling. You can:
- Use any font available in your project (not just Roboto and Courier New)
- Set different sizes for different elements
- Use custom colors to match your project's theme
- Add shadow effects via the Shadow Offset and Shadow Color fields in each row
- Change the background highlight color via Selected Background Color
The parser doesn't care what your styles look like -- it only maps element types to row names. The visual presentation is entirely in your hands.