Well, I don't actually know much about the history of this, but I think the page Laure found "Le verbe faire" has some useful information that ought to be put in an answer. The translations from the French are by me, with help from Laure and TKR (there may still remain some errors I've made that they haven't caught).
It says:
Faz
En ancien français, les désinences des verbes en -kio et en -tio se
palatalisent en une affriquée ts, par l'étape gy, ty. Elle se réduit
ensuite en z ou s.
"In Old French, the endings of the verbs in -kio and -tio were palatalized, yielding an affricate ts, by the stage gy, ty. This then reduced to z or s."
I think there are various examples of this sound change in other contexts, such as the noun face which CNRTL says is from V. Latin *facia.
Fais, fait
Contrairement à ce que l'on pourrait s'imaginer, ces deux formes sont
déjà analogiques en ancien français. On aurait dû obtenir *faiz et
*faist. Le problème est identique à celui de dire et de duire. Les formes du pluriel seraient elles aussi analogiques.
"Contrary to what one might imagine, these two forms are already analogical in Old French. We should have gotten *faiz and *faist. The problem is the same as that of dire and duire. The plural forms must also be analogical."
Font
La formation en ancien français repose sur l'effacement de k
intervocalique devant u. Il faut supposer la forme vulgaire *facunt
pour faciunt, contrairement aux personnes précédentes. De *facunt on
passe à *faunt avec accentuation sur a qui forme une diphtongue au,
laquelle se simplifie en o à date prélittéraire, puis se nasalise
avant le XIIe s. L'évolution est similaire à celle de *vadunt > vont,
*habunt > ont. Mais elle n'est pas comparable à celle de sunt > sont.
"The formation in Old French is based on the erasure of intervocalic k before u. We must suppose the vulgar form *facunt for faciunt, contrary to the forms for the preceding grammatical persons. From *facunt we pass to *faunt with accentuation on the a which forms a diphthong au, which simplifies to o at a pre-literary period, then nasalizes before the twelfth century. The evolution is similar to that of *vadunt > vont, *habunt > ont. But it is not comparable to that of sunt > sont."
So "font" is not thought to come directly from Latin faciunt.