It’s simpler if you can write the font to disk and avoid dealing with UFontFace.
FLegacySlateFontInfoCache::GetSystemFont provides an example of this, and you’d want to do something similar but populate the CompositeFont inside your UFont (you’d also need to make sure that FontCacheType is set to EFontCacheType::Runtime on your UFont).
If you do want to use a UFontFace then you’d need to populate its FontFaceData via a call to FFontFaceData::MakeFontFaceData passing in your raw TTF data (you’d also need to make sure that LoadingPolicy is set to EFontLoadingPolicy::Inline on your UFontFace). It’s then just a case of using that UFontFace as the asset on the FFontData for the CompositeFont inside your UFont.