private static int s_idCount = 0;
private int _id;
#endif
-
+
[SuppressMessage("Microsoft.Security", "CA2106:SecureAsserts")]
private void SetNativeFamily(IntPtr family)
{
/// <summary>
/// Returns the name of this <see cref='FontFamily'/> in the specified language.
/// </summary>
- public string GetName(int language)
+ public unsafe string GetName(int language)
{
- // LF_FACESIZE is 32
- var name = new StringBuilder(32);
-
+ char* name = stackalloc char[32]; // LF_FACESIZE is 32
int status = SafeNativeMethods.Gdip.GdipGetFamilyName(new HandleRef(this, NativeFamily), name, language);
SafeNativeMethods.Gdip.CheckStatus(status);
-
- return name.ToString();
+ return Marshal.PtrToStringUni((IntPtr)name);
}
/// <summary>
private static FunctionWrapper<GdipDeleteFontFamily_delegate> GdipDeleteFontFamily_ptr;
internal static int IntGdipDeleteFontFamily(HandleRef fontFamily) => GdipDeleteFontFamily_ptr.Delegate(fontFamily);
- private delegate int GdipGetFamilyName_delegate(HandleRef family, IntPtr name, int language);
+ private delegate int GdipGetFamilyName_delegate(HandleRef family, char* name, int language);
private static FunctionWrapper<GdipGetFamilyName_delegate> GdipGetFamilyName_ptr;
- internal static int GdipGetFamilyName(HandleRef family, IntPtr name, int language) => GdipGetFamilyName_ptr.Delegate(family, name, language);
- internal static unsafe int GdipGetFamilyName(HandleRef family, StringBuilder nameBuilder, int language)
- {
- const int LF_FACESIZE = 32;
- char* namePtr = stackalloc char[LF_FACESIZE];
- int ret = GdipGetFamilyName(family, (IntPtr)namePtr, language);
- string name = Marshal.PtrToStringUni((IntPtr)namePtr);
- nameBuilder.Append(name);
- return ret;
- }
+ internal static int GdipGetFamilyName(HandleRef family, char* name, int language) => GdipGetFamilyName_ptr.Delegate(family, name, language);
private delegate int GdipIsStyleAvailable_delegate(HandleRef family, FontStyle style, out int isStyleAvailable);
private static FunctionWrapper<GdipIsStyleAvailable_delegate> GdipIsStyleAvailable_ptr;