先插一段小廣告為下文做鋪墊
我一直覺得WebMatrix是一個很不錯的ASP.NET開發工具, 雖然這個小軟件是在遙遠的 v1.x 年代的產品, 但功能齊全, 使用方便, 而且個頭小, 安裝後總共才2.8M的個頭(想想 Web Developer Express的個頭), 自帶一個服務器, 安裝後還可以直接把程序目錄拷貝到 U盤裡隨身攜帶, 非常適合那些自己沒有電腦但又想學習ASP.NET開發的童鞋(我以前大學 時沒買電腦前就是這麼干的啦). 不過它有個很大的缺點, 就是不能很好的支持中文. 在 文本編輯器裡輸入中文後, 光標顯示的位置不對.... 一個對策就是不輸入中文就好啦, 順便還可以鍛煉英文 :-)
最近一直在研究WebMatrix, 為什麼要研究它? 有幾個目的和原因:
學習如何設計並實現一個結構良好且有擴展性的程序
學習如何從零開始實現一個代碼編輯器
WebMatrix這個程序功能齊全, 具有一定擴展性(支持插件), 個頭不大不小(核心部分 估計有50000行左右代碼, 花一兩個星期摸透, 非常適合進行研究
這是微軟出品的, 就算程序設計的不是很完美, 但至少不會是錯誤的
響應上面的小廣告, 對其進行改造, 使其能夠完美支持中文
我花了大概一個星期左右, 基本摸清了整個程序的結構和流程, 發現其實這個程序設 計的還是很不錯的. 各模塊職責分明, 配合良好, 擴展性很強也很容易進行擴展, 非常符 合 "對修改關閉, 對擴展開放" 這個軟件設計思想.
對程序研究得比較清楚之後, 最主要的任務就是
對其進行改造,
使其能夠完美支持中文
啦. 經研究發現, WebMatrix裡的文本編輯器在輸出文本時, 使用了一個固定的字符寬 度(杯具的開始), 這個固定寬度在僅僅使用英文時是沒有問題的, 但是如果有中文(或其 他非拉丁系文字), 就會出problems了: 計算出來的文本寬度不對, 這個就直接導致了兩 個問題:
當前文本行裡的光標位置不對
被選中部分的文字顯示不正常
如圖: