富文本编辑器可以实现很多的功能,例如字体类型(微软雅黑、宋体…)、字体大小(11 - 86)、字体背景颜色、字体颜色等等丰富格式的功能。但不妨思考下:

你的产品,是否“要”这么多功能么?

给予用户过多的选择,不是在体现你功能有多厉害,实则是更多的累赘。增加一个功能容易,但是下线一个功能却很难。

最近听到一个同事的座右铭:“坚持你的坚持,相信你的相信”,这句话伴随她在阿里走了 16 年。我想做产品也是应该这样,坚持我们最初认为应该坚持的(简洁),相信我们最初相信的(内容为王)。我们今天接入一个编辑器,不是要把它所有的功能都加上,而是要有选择地开启。为了让编辑器输出的更多是内容本身,而不是注重格式,那么可以不开启太多复杂的功能;当你在消费(阅读)这些文字的时候,没有字体类型、字体大小、背景颜色等格式,反而可以让用户在你设定好的样式下,拥有更好的阅读体验。

反之,人云亦云地去把编辑器的所有功能开启,则是一种不负责任的功能泛滥。哪怕你的编辑器拥有像 Word 那样丰富的编辑能力,那也不代表你的产品就能给用户带来等价的体验。并没有人会和你称赞说:我这篇文章,用上了 Word 的所有功能。但可能会有人和你说,我写文章的时候,把我认为重要的内容标红了一下。一个再小的功能,使用的场景都是它鲜活存在的理由,但并不是你产品生命(灵魂)的拼凑。

我一向认为,在知识内容消费领域,编辑器更应该对功能做取舍。对于 Web 端,去掉那些看似很酷的格式,只保留最简单的功能,反而会让创作者关注到内容本身,而非花时间在美化文章样式、排版以及融入“个人独特的审美观” — 当我看到一篇文章,有几种背景颜色的时候,我其实已经多半放弃继续去阅读了。很多人在美感的掌控程度上往往是不足的,当然我们没有一个通用的标准来衡量它(阅读的美感)。那么作为一个产品,我们就应该并且有责任降低用户在追求阅读美感上的代价。

了解交互设计的同学大概都会知道下面的几个原则:

  • 一行可以放下多少个字符是最适合阅读的?
  • 字体间的行间距多少会让用户在一篇密集的文字面前没那么压抑?
  • 为什么要用统一的字体颜色来表示,通常并不是全黑的 #000000,而是 #4d4d4d 会更适合阅读?

站在巨人的肩膀上,既然我们在纯阅读的角度有这么多的方案和细则,那么我们为何不去融入他们呢?不要因为你的编辑器“可以”给用户提供“灵活”的编写,而损失掉这些值得追求的设计原则。当然,你和我说你要写的是一篇大字报,那就另外一回事了。

编辑器写了这么久,也用了这么久。遇到最难的问题,就是粘贴了。对于编辑器来说,它只能通过操作系统的粘贴板来感知有那些内容需要输入到编辑器里去,于是按照编辑器(自己)的一个规则设定,去完成一次序列化与反序列化的过程,再把转义后的内容呈现在用户面前。

这个道理都很容易懂,但中间的那一步转义算法,真的很难处理好用户期待的“要”和“不要”。千人前面,你只想拷贝一个网页的内容,但你的粘贴版里可能就把该网页的格式(字体类型、字号大小、字体颜色、行高…)都记录进去了;你想要拷贝另外一个编辑器里的格式,但你的粘贴版偏偏只有纯文本内容)… 这种带有“期望”的操作,由于编辑器无法感知,大概率上用户得不到想要的结果。

我们的同事把我们已知的场景都列举了一遍,将不同场景下的粘贴版内容梳理出来,得不到规律。粘贴版里的数据存储方式 HTML 或者 RTH,都没有一个标准的格式,各有各的实现,各有各的标记。哪怕我们能够把用户的场景都覆盖到,也仅解决了“源”。粘贴板有趣的地方在于,它还和 Target 相关。一段相同的内容,粘贴在标题里和粘贴在列表里,得到的是不同的结果。

作为一个短期内无法解决的技术难题,我们能否在产品上做些取舍?

你的产品,要达到什么样的“度”?

无论外界如何变化,我们只做当前我们能做的事情。哪怕你的粘贴板里带了 N 种格式,我们也只能输出我们能够识别的。把不确定的事情变为确定,让用户感知到“哦,这才是对的”,“哦,原来是这样”的自然感觉。什么是确定的?我们不会去做过多的格式识别,因为我们有阅读体验上的要求,所以编写的时候就朝着所见即所得去做。所以你从 Word 里拷贝出来的内容,我们暂时还无法完全识别。但底线是文本内容不会丢失。

不同的时间,产品的“度”应该随之变化。我们用最简单的方法满足用户复制粘贴的诉求之后,需要跟进反馈以做适当的调整。衡量某一阶段产品的功能体验是否适合,需要有一定的数据支撑,让数据说话来帮助你做产品决策。实际的经验告诉我们,大部分复制粘贴的要求已经满足了,但仍有高端用户想要自主的选择权 — 在粘贴动作完成的时候,如果不符合预期,希望能够选择性粘贴(带原始格式的、匹配当前格式的、纯文本的…)。而这时候,为了达到我们对产品阅读体验对追求,需要加以引导,匹配我们当前的格式的这个版本,会是跟合适的。