Issue #14687: Optimize str%args

 * formatfloat() uses unicode_fromascii() instead of PyUnicode_DecodeASCII()
   to not have to check characters, we know that it is really ASCII
 * Use PyUnicode_FromOrdinal() instead of _PyUnicode_FromUCS4() to format
   a character: if avoids a call to ucs4lib_find_max_char() to compute
   the maximum character (whereas we already know it, it is just the character
   itself)
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 18bc07f..95993e8 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -13431,7 +13431,7 @@
                               (flags & F_ALT) ? Py_DTSF_ALT : 0, NULL);
     if (p == NULL)
         return NULL;
-    result = PyUnicode_DecodeASCII(p, strlen(p), NULL);
+    result = unicode_fromascii((unsigned char*)p, strlen(p));
     PyMem_Free(p);
     return result;
 }
@@ -13947,7 +13947,7 @@
                 Py_UCS4 ch = formatchar(v);
                 if (ch == (Py_UCS4) -1)
                     goto onError;
-                temp = _PyUnicode_FromUCS4(&ch, 1);
+                temp = PyUnicode_FromOrdinal(ch);
                 break;
             }