View Issue Details

IDProjectCategoryView StatusLast Update
0002550NoesisGUIUnrealpublic2023-03-30 12:11
Reportersfernandez Assigned Tosfernandez  
PrioritynormalSeveritymajorReproducibilityhave not tried
Status resolvedResolutionfixed 
Product Version3.2.0 
Target Version3.2.1Fixed in Version3.2.1 
Summary0002550: Font Fallbacks defined in Noesis settings don't work
DescriptionDefault FontFaces specified into Noesis settings are ignored.
TagsNo tags attached.
PlatformAny

Activities

sfernandez

sfernandez

2023-03-30 12:11

manager   ~0008391

This is the patch:

Index: NoesisSettings.cpp
===================================================================
--- NoesisSettings.cpp	(revision 12413)
+++ NoesisSettings.cpp	(revision 12414)
@@ -79,12 +79,15 @@
     }
 }
 
-static void GetFamilyNames(const TArray<uint8>& FontData, TArray<Noesis::FixedString<128>>& FamilyNames)
+static void GetFamilyNames(const TArray<uint8>& FontData, TArray<Noesis::FixedString<128>>& FamilyNames,
+	const Noesis::String& Path)
 {
-	Noesis::Ptr<Noesis::MemoryStream> Stream = Noesis::MakePtr<Noesis::MemoryStream>(FontData.GetData(), FontData.Num());
-	Noesis::Fonts::GetTypefaces(Stream, [&FamilyNames](const Noesis::Typeface& Typeface)
+	Noesis::MemoryStream Stream(FontData.GetData(), FontData.Num());
+	Noesis::Fonts::GetTypefaces(&Stream, [&FamilyNames, &Path](const Noesis::Typeface& Typeface)
     {
-		FamilyNames.AddUnique(Typeface.familyName);
+		Noesis::FixedString<512> PathFamilyName(Path.Str());
+		PathFamilyName.Append(Typeface.familyName);
+		FamilyNames.AddUnique(PathFamilyName.Str());
     });
 }
 
@@ -100,6 +103,9 @@
 
     DefaultFontRefs.Empty(DefaultFonts.Num());
 
+	FString PackageRoot, PackagePath, PackageName;
+	Noesis::String PathStr;
+
     TArray<Noesis::FixedString<128>> FamilyNamesStr;
     for (auto& FontFallback : DefaultFonts)
     {
@@ -110,6 +116,10 @@
             DefaultFontRefs.Add(FontFace);
             NoesisRuntime.RegisterFont(FontFace);
 
+			UPackage* Package = FontFace->GetOutermost();
+			FPackageName::SplitLongPackageName(Package->GetPathName(), PackageRoot, PackagePath, PackageName, false);
+			PathStr = TCHAR_TO_UTF8(*(PackageRoot.LeftChop(1) + ";component" / PackagePath / "#"));
+
 #if !WITH_EDITORONLY_DATA
             if (FontFace->GetLoadingPolicy() != EFontLoadingPolicy::Inline)
             {
@@ -116,7 +126,7 @@
                 TArray<uint8> FileData;
                 FFileHelper::LoadFileToArray(FileData, *FontFace->GetFontFilename());
 
-				GetFamilyNames(FileData, FamilyNamesStr);
+				GetFamilyNames(FileData, FamilyNamesStr, PathStr);
             }
             else
 #endif
@@ -125,7 +135,7 @@
                 const FFontFaceData& FontFaceData = FontFaceDataRef.Get();
                 const TArray<uint8>& FontFaceDataArray = FontFaceData.GetData();
 
-				GetFamilyNames(FontFaceDataArray, FamilyNamesStr);
+				GetFamilyNames(FontFaceDataArray, FamilyNamesStr, PathStr);
             }
         }
     }

Issue History

Date Modified Username Field Change
2023-03-30 11:55 sfernandez New Issue
2023-03-30 11:55 sfernandez Assigned To => sfernandez
2023-03-30 11:55 sfernandez Status new => assigned
2023-03-30 11:55 sfernandez Target Version => 3.2.1
2023-03-30 12:11 sfernandez Status assigned => resolved
2023-03-30 12:11 sfernandez Resolution open => fixed
2023-03-30 12:11 sfernandez Fixed in Version => 3.2.1
2023-03-30 12:11 sfernandez Note Added: 0008391