Using python and bmesh to scale/resize a face in place
Scale the distance from face centre to vert.

Propose in this case could simply use the face centre as stationary point, and reposition each vertex coordinate by a scale factor.  For a face face with a centre c = face.calc_center_median()  having a  vertex v the vector v.co - c represents the straight line from vert to c. Can then move the vertex to a new location by a factor along this line v.co = c + scale_factor * (v.co - c)  

Example script, run in edit mode with the face you want to scale  active.

import bpy
import bmesh

context = bpy.context
ob = context.edit_object
me = ob.data
bm = bmesh.from_edit_mesh(me)
scale_factor = 0.5

face = bm.select_history.active
if isinstance(face, bmesh.types.BMFace):
    c = face.calc_center_median()
    for v in face.verts:
        v.co = c + scale_factor * (v.co - c)

bmesh.update_edit_mesh(me)


Have assumed the face is co-planar

Using Matrices.

Another way to achieve this is using matrices, v.co = c + scale_factor * (v.co - c) Indicates the operation needs both a transformation and scale. For the transformation can change the space locally such that the point c becomes the origin.  (Wont be shifted by any scale).  

face = bm.select_history.active
if isinstance(face, bmesh.types.BMFace):
    c = face.calc_center_median()
    T = Matrix.Translation(-c)
    S = Matrix.Scale(scale_factor, 4)
    bmesh.ops.transform(bm, matrix=S, verts=face.verts, space=T)