Integration Tiers
Azimuth Markdown offers three ways to integrate, from zero-effort to full control.
Tier A: Drop-In Prebuilt Widget (Easiest)
For the fastest possible integration:
- In the Widget palette, search for WBP_AzimuthMarkdownBlock
- Drag it into your widget layout
- Call Set Markdown Text on it with your markdown string
That's it. The widget handles parsing, rendering, styling, and Unicode sanitization internally.
Best for: Quick prototyping, simple use cases, developers who want formatted text display with zero setup.
Tier B: Blueprint Function Library (Recommended)
For more control over your UI layout while still avoiding C++:
- Add a
URichTextBlock(orAzimuthRichTextBlock) to your widget - Assign DT_AzimuthMarkdownStyles to its Text Style Set property
- Add AzimuthRichTextStyleDecorator to its Decorator Classes array
- Add AzimuthRichTextLinkDecorator to its Decorator Classes array
- In your Blueprint, call Convert and Sanitize Markdown from the Azimuth Markdown Library
- Pass the result to the RichTextBlock's Set Text function
Best for: Production use, custom UI layouts, any project that needs formatted text display integrated into existing widgets.
Tier C: Full C++ Access (Maximum Control)
For C++ projects or advanced customization:
#include "AzimuthMarkdownParserStatics.h"
#include "AzimuthMarkdownRenderer.h"
#include "AzimuthMarkdownTagMapping.h"
// Parse markdown into an Abstract Syntax Tree
TArray<FMarkdownBlock> AST = FAzimuthMarkdownParser::Parse(RawMarkdown);
// Render to tagged rich text for URichTextBlock
FString Tagged = FAzimuthMarkdownRenderer::RenderToTaggedText(AST, GetDefaultAzimuthTagMapping());
// Sanitize Unicode symbols for font compatibility
FString Safe = FAzimuthMarkdownRenderer::SanitizeUnicodeSymbols(Tagged);
// Display in your RichTextBlock
MyRichTextBlock->SetText(FText::FromString(Safe));
Best for: C++ projects, custom renderers, integration with existing parsing pipelines, projects that need access to the AST for custom processing.