Individual css class for each tag in wp_tag_cloud

try this code:

add_filter ( 'wp_tag_cloud', 'tag_cloud_font_size_class' );  
function tag_cloud_font_size_class( $taglinks ) { 
    $tags = explode('</a>', $taglinks);
    $regex1 = "#(.*style="font-size:)(.*)((pt|px|em|pc|%);".*)#e"; 
    $regex2 = "#(style="font-size:)(.*)((pt|px|em|pc|%);")#e";         
    $regex3 = "#(.*class=")(.*)(" title.*)#e";         
    foreach( $tags as $tag ) {         
        $size = preg_replace($regex1, "(''.round($2).'')", $tag ); //get the rounded font size       
        $tag = preg_replace($regex2, "('')", $tag ); //remove the inline font-size style
        $tag = preg_replace($regex3, "('$1tag-size-'.($size).' $2$3')", $tag ); //add .tag-size-{nr} class
        $tagn[] = $tag;
    }     
    $taglinks = implode('</a>', $tagn);     
return $taglinks; 
}

there might be more effective solutions, or a way to put it all into one regex; however it works (I am no expert in preg_replace()).
can be used at the same time as the slug class filter.