所見即所得

在計算領域，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: 這是你想要的嗎？