diff --git a/ole/nls/enu.nls b/ole/nls/enu.nls
index 65e317a..8bd3a91 100644
--- a/ole/nls/enu.nls
+++ b/ole/nls/enu.nls
@@ -107,6 +107,6 @@
 LOCVAL(LOCALE_IPOSSEPBYSPACE, "0")
 LOCVAL(LOCALE_INEGSYMPRECEDES, "1")
 LOCVAL(LOCALE_INEGSEPBYSPACE, "0")
-/* LOCVAL(LOCALE_FONTSIGNATURE, "") */
+LOCVAL(LOCALE_FONTSIGNATURE,"\xaf\x00\x00\x80\xcb\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x80")
 LOCVAL(LOCALE_SISO639LANGNAME,"en")
 LOCVAL(LOCALE_SISO3166CTRYNAME,"US")
diff --git a/ole/ole2nls.c b/ole/ole2nls.c
index 4660a17..85c4a04 100644
--- a/ole/ole2nls.c
+++ b/ole/ole2nls.c
@@ -639,6 +639,10 @@
  *
  * NOTES 
  *  LANG_NEUTRAL is equal to LOCALE_SYSTEM_DEFAULT
+ *
+ *  MS online documentation states that the string returned is NULL terminated
+ *  except for LOCALE_FONTSIGNATURE  which "will return a non-NULL
+ *  terminated string".
  */
 INT32 WINAPI GetLocaleInfo32A(LCID lcid,LCTYPE LCType,LPSTR buf,INT32 len)
 {
@@ -713,16 +717,24 @@
 		SetLastError(ERROR_INVALID_PARAMETER);
 		return 0;			
 	}
-	/* if len=0 return only the length, don't touch the buffer*/
-	if (len)
-		lstrcpyn32A(buf,retString,len);
-
-	return strlen(retString)+1;
+    /* a FONTSIGNATURE is not a string, just 6 DWORDs  */
+    if (LCType == LOCALE_FONTSIGNATURE) {
+        if (len)
+            memcpy(buf, retString, (len<=sizeof(FONTSIGNATURE))?len:sizeof(FONTSIGNATURE));
+        return sizeof(FONTSIGNATURE);
+    }
+    /* if len=0 return only the length, don't touch the buffer*/
+    if (len) lstrcpyn32A(buf,retString,len);
+    return strlen(retString)+1;
 }
 
 /******************************************************************************
  *		GetLocaleInfo32W	[KERNEL32.343]
  *
+ * NOTES
+ *  MS documentation states that len "specifies the size, in bytes (ANSI version)
+ *  or characters (Unicode version), of" wbuf. Thus the number returned is
+ *  the same between GetLocaleInfo32W and GetLocaleInfo32A.
  */
 INT32 WINAPI GetLocaleInfo32W(LCID lcid,LCTYPE LCType,LPWSTR wbuf,INT32 len)
 {	WORD wlen;
@@ -734,10 +746,10 @@
 	}
 
 	abuf = (LPSTR)HeapAlloc(GetProcessHeap(),0,len);
-	wlen = 2 * GetLocaleInfo32A(lcid, LCType, abuf, len);
+	wlen = GetLocaleInfo32A(lcid, LCType, abuf, len);
 
 	if (wlen && len)	/* if len=0 return only the length*/
-	  lstrcpynAtoW(wbuf,abuf,len/2);
+	  lstrcpynAtoW(wbuf,abuf,len);
 
 	HeapFree(GetProcessHeap(),0,abuf);
 	return wlen;
@@ -2990,7 +3002,7 @@
 BOOL32 WINAPI EnumTimeFormats32W(
   TIMEFMT_ENUMPROC32W lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags)
 {
-  FIXME(ole, "(%p,%ld,%ld): stub", lpTimeFmtEnumProc, Locale, dwFlags);
+  FIXME(ole, "(%p,%ld,%ld): stub\n", lpTimeFmtEnumProc, Locale, dwFlags);
   SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
   return FALSE;
 }
