Knightley Beats Johansson for 'Fair' Role