as wide mentioned, one of the problems is what food preferences is too narrow. Some suggestion for widenig it somehow.
It's already suggested many times, we can introduce overall somewhat abstract characteritics of meal: salty/fresh, spiced/tasteless, sweet/bitter, soft/chewy and so on. But mainly they all related to prepared dishes instead of main ingredients, as it often suggested here - there are ton of examples IRL. Seriously, there are hell of a methods to prepare, say, rice. Or to combine bread with meat.
Well, let dorfs have their dreams of dragon intestines, roc eggs or giant sperm whale eyes. Let it be a big morale boost if it even happen to be fulfilled some day.
Among with that, let they prefer to consume somewhat like "salty chewy meat" (okay, along with preference with beer) or "fresh tasteless soft cheese" (and generic wine, bearded sommeliers). Let prepared food characteristics reflect cook preferences with some deviations. Say, cook with "fresh spiced bitter" prefs prepare "salty spiced bitter", "fresh tasteless bitter", "fresh cpiced sweet" and so. If dorf consumes something, which mainly (>0.66) overlaps with his preferences, it fulfills the need; full overlap generates happy thougnt with boost based on quality.
as i see it, this way we can somehow fix current situation with some vantages:
- changes affect only prepared food, not each and every of possible ingredients
- there is no need to dive into sea of world-generated civ food traditions
- it isn't introduce deep micromanagement with recipes like "prepare 10 stacks of (cat meat)+(cave wheat flour)+(strawberry) for that unhappy peasant"
- it still need some management with assigning labors to suitable citizens and not trivial overall
well, there are still bigger problem with dorfs doing nothing to fulfill their needs (i.e. not consuming preferred food if there are sweet old raw plump helmets available), but its slightly out of topic.