In small towns, to distinguish one guy from another with the same first name,
'di' was added relating to a one word description of the father or of the family,
or of the original city they came from (in this case 'da' = from).
If the parents have in their family two names that are relevant for them, they can
be merged for the new-born like in Gianfranco (Giovanni+Franco), Pierpaolo (Piero+Paolo); you will also find the form Abc-maria (examples: Gianmaria, Annamaria), which is related to Christian religion; 'di' is called 'patronimico', that is referring back to the paternal origin.
Other family names like degli Angeli, De Angelis tell a story of somebody in the
ancestor line that has been probably abandoned in front of a church and
therefore initially raised with the help of 'angels'; the same probably for Donati (given as a gift).
Many family names appear as plural, I would call that a false plural, and
actually the desinence of genitive in Latin, therefore still 'patronimico';
a clear example: Rutili (from rutilus== red, in Latin). Rutili: of the red (person).