You could do that with Tasker. This app matches defined conditions with tasks -- i.e. you can tell it to execute a task (which is a set of actions) whenever a (set of) condition(s) is met.
Under conditions it lists "Orientation".
As actions, it e.g. describes:
Vibrate On Notify: Whether to vibrate with a system notification.
Vibrate On Ringer: Whether to vibrate on an incoming call.
So you could create a task named, say, NoVibrate, which says:
- Vibrate on Notify: Off
- Vibrate on Ringer: Off
Then create two profiles FaceUp and FaceDown (there's no "OR" connection possible with conditions, hence you need two profiles), each with the respective orientation, and have them execute the NoVibrate task.
What happens then? As soon as the phone is FaceUp or FaceDown (where "face" is the display), vibration is turned off. And as soon the orientation changes, the prior setting gets re-activated.
Problem solved with the 6-letter-solver of (almost) all Android problems: Tasker :)