所见即所得

<image>

在计算领域，WYSIWYG（ˈ WIZ；所见即所得，what you see is what you get）是一种软件功能，可使内容在编辑界面中的显示效果，与最终打印或输出成品（如网页、幻灯片等）的外观极为相似。换言之，“所见即所得”代表了一种用户界面设计理念：用户在创作文档时，屏幕上看到的画面就是最终生成的结果。因此，用户通常可以直观地调整文档的页面布局，而无需手动输入或记忆复杂的布局命令。

## 历史

在“所见即所得”技术普及前，编辑器通常只能以系统默认的字体和样式显示文本，几乎无法提供页边距、行距等布局预览。用户必须输入特殊的非打印“控制代码”（现称为标记标签），才能使特定文本在最终输出时呈现为粗体、斜体，或改变其字体与大小。在这种纯文本环境下，早期的文本编辑器和文字处理器之间几乎没有明显的界限。

早期的文字处理应用通常各自使用一套独特的标记语言来定义格式标签。由于各软件的格式标准互不兼容，用户在不同的文字处理器之间迁移文档是一件极其困难且耗时的工作。因其能精确控制复杂的排版信息，标记标签和代码时至今日在某些专业应用中依然盛行。然而，如果在编辑器中直接显示这些标签，它们会占据原本属于纯文本的视觉空间，从而破坏版面的整洁度与阅读的流畅感。

1974年，巴特勒·兰普森、查尔斯·西蒙尼及其团队在施乐帕克为Alto计算机开发了文档编辑程序Bravo。该程序通常被认为是首款采用“所见即所得”技术的软件，它首次实现了将文本格式（如对齐方式、字体及字符比例间距）直接渲染在屏幕上。Alto计算机的显示器专为排版设计（分辨率为72 PPI，正好与标准的排版单位“磅”对应），用户可以在屏幕上预览整页文本，随后用早期的激光打印机进行打印。不过，由于屏幕排版基于72 PPI的字体文件，而打印机则使用300 PPI的高清字体文件，导致打印出来的字符和单词位置往往会出现轻微的偏移——这一技术痛点直到今天仍偶尔可见。Bravo程序后来被商业化，最终演变为Xerox Star内置的文档软件。

1978年底，与施乐PARC并行且相互独立的团队中，惠普开发并发布了首款用于制作投影幻灯片（即今天的演示文稿）的商业“所见即所得”软件。其首个版本名为BRUNO（得名于惠普的一款销售培训木偶），运行在HP 1000小型计算机上，充分利用了惠普首款位图终端HP 2640的图形功能。BRUNO随后被移植到HP-3000计算机上，并更名为HP Draw重新发布。

到1981年，MicroPro公司开始宣传其WordStar文字处理器具备了WYSIWYG功能，但其所谓的“所见即所得”仅限于基础的富文本展示：即粗体和斜体等可以直接在屏幕上显现，而不再被控制标签包裹。1983年，《Weekly Reader》杂志以“所见即所得”为口号宣传其Stickybear教育软件，并配上了运行在Apple II上的图形界面照片。然而在20世纪70年代和80年代初，普通家用电脑缺乏运行真正的WYSIWYG软件所需的图形处理能力。因此，早期的“所见即所得”应用往往局限于普通大众难以企及的高端工作站（如IBM Displaywriter System）。后来，随着硬件技术的发展，低成本的位图显示器成为现实，“所见即所得”软件才开始走入大众视野，例如1983年为Apple Lisa发布的LisaWrite，以及1984年为苹果麦金塔发布的MacWrite。

1988年，《PC Magazine》撰文指出，尽管业界付出了“英雄般的努力”，但与Macintosh上的同类软件相比，基于IBM PC平台的文字处理器“依然不尽如人意”。Macintosh最初的系统设计巧妙地统一了屏幕分辨率与配套的ImageWriter点阵打印机输出分辨率：屏幕为72 PPI，打印机为144 DPI。得益于这种精确的比例换算，在MacWrite和MacPaint等程序中，屏幕上的显示尺寸能完美映射到打印纸张上——若将纸张贴在屏幕上，打印图像与屏幕显示的物理尺寸完全一致，仅仅是分辨率翻倍。因为ImageWriter最初是唯一兼容Mac打印机端口的设备，这种软硬件高度统一的封闭生态造就了出色的排版体验。随后，当Macintosh开始支持外接显示器时，为了维持严格的“所见即所得”，其分辨率被强行与屏幕尺寸绑定（固定在72 DPI）。这导致Macintosh的显示标准逐渐偏离了当时PC领域的VGA主流标准：例如，一台普通PC的15in显示器使用640×480分辨率时，一台16in的Mac显示器为了维持比例，其分辨率会被锁定在832×624，而非PC标准的800×600。此后，随着第三方点阵打印机、激光打印机和多频显示器的不断涌入，设备分辨率不再是屏幕分辨率的固定倍数，实现完美的“所见即所得”也就变得愈发困难。

## 词源

首字母缩略词“WYSIWYG”源自英语短语“what you see is what you get”（你看到什么就能得到什么）。这句短语原本是喜剧演员弗利普·威尔逊的反串角色杰拉尔丁带火的一句流行语。它在1969年9月首次出现，并在20世纪70年代初期的《The Flip Wilson Show》节目中频繁被使用。在节目中，这句台词是杰拉尔丁要求别人坦然接受她真实性格与外貌的一句宣言。

关于该术语在计算机领域的首次应用，目前有几种不同的说法：

- 大约在1974年，施乐硬件设计师查尔斯·“查克”·萨克尔那位对技术恐惧的妻子凯伦·萨克尔（Karen Thacker）首次接触到了运行Bravo软件的施乐Alto电脑。当时她惊叹道：“你的意思是，我看到什么就能印出什么？”（You mean, what I see is what I get?）
- 1975年中期，Seybold Publications创始人约翰·W·塞博尔德和施乐帕克的研究人员将Gypsy软件整合进Bravo中，打造了Bravo 3，实现了文本的所见即所得打印。正是在这一时期，查尔斯·西蒙尼和其他工程师借用了弗利普·威尔逊的这句流行语来描述该功能。
- 芭芭拉·比顿（Barbara Beeton）则指出，该术语是由比尔·坦尼克利夫（Bill Tunnicliffe）在1978年创造的，当时他在一次由图形通信协会（GCA）、美国数学学会（AMS）和美国印刷工业协会（PIA）联合举行的委员会会议上发表了演讲。

## 变体

围绕WYSIWYG衍生出了许多变体词汇，它们通常是为了特定情境下的调侃或阐明特定观点而生，在实际中的使用并不广泛。常见的变体包括：

- WYGIWYG（what you get is what you get，你得到啥就是啥）：常用于表达结果无法更改的无奈，用法类似于 WYSIAYG、WYSIMOLWYG 或 WYSINWYW。
- WYGIWYS（what you get is what you see，你得到的就是你看到的）：在人机交互领域，用于描述一种“结果导向”的用户界面设计。可用性专家雅各布·尼尔森曾用该词来形容Microsoft Office 2007的“功能区”（Ribbon）界面。
- WYSIAWYG（what you see is almost what you get，你看到的差不多就是你得到的）：含义与 WYSIMOLWYG 类似。
- WYSIAYG（what you see is all you get，你看到的便是你能得到的全部）：带有贬义，指出高级用户有时反而会受困于可视化的用户界面，无法进行更深度的操作。
- WYSIMOLWYG（what you see is more or less what you get，你看到的或多或少就是你得到的）：承认了大多数所谓的“所见即所得”在实际输出时总存在着微小的偏差，并不完美。
- WYSINWYW（what you see is not what you want，你看到的并非你想要的）：主要用来吐槽微软Word等软件中“过度智能化”的自动排版功能，暗指软件经常自作主张控制排版，违背用户的初衷。
- WYSIWYW（what you see is what you want，你看到的就是你想要的）：常用于描述GNU TeXmacs等编辑平台。该词强调其与传统的 WYSIWYG 编辑器不同，用户可以高度自定义 WYSIWYW 平台，使其具有类似 TeX 或 troff 等专业手动排版软件的控制力。
- WYTIWYG（what you think is what you get，你想的即是你得到的）：诞生于沃德·坎宁安的 Wiki（全球首个用户可协作编辑的网站）中，大意为“我们最终看到的往往取决于我们预期的”，引申义为“文本的格式化输出结果，将恰好符合你的逻辑预期”。
- YAFIYGI（you asked for it you got it，你要什么系统就给你什么）：用于描述完全由命令行驱动、毫无可视化特征的传统文本编辑器。该词带有讽刺意味，暗指由于没有预览，用户输入错误指令后，往往会得到他们并不真正想要的糟糕结果。它通常被视作 WYSIWYG 的反义词。该短语在未缩写状态下，最早出现于1983年的著名文章《真正的程序员不用Pascal》中，用于调侃 TECO 文本编辑器。到了1993年前后，它才开始逐渐演变为现今的缩写形式。

## 外部链接

- 黑客词典（The Jargon File）关于 WYSIWYG 的词条
- WYSIWYG 对我们做了什么？– 1996年一篇关于引入 WYSIWYG 带来负面影响的批判性文章。
- XML：从 WYSIWYG 到 WYSIWYM – 简析 XML 文档创作 一篇关于现有 XML 创作软件的文章（2005年5月）
- ATPM.com的 WYSIWYG: 这是你想要的吗？