最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

對于編輯器的一些思考

2022-05-27 01:21 作者:clerk_ma  | 我要投稿

打開手機或者電腦的時候,都會碰到編輯器。能輸入文本的地方,表現(xiàn)可能是框或是線,就是編輯器。輸入法也是一種編輯器,即input method editor。

然而用是容易的,創(chuàng)造一個新的編輯器卻不是太容易的。這個容易,指的是使用API就能實現(xiàn)出一個編輯器的容易度。

我一直試圖把TeX遷移到移動平臺,但是難度不低。這個編輯器就是困擾我很久的事情。我之前做的Android版TeX編輯器,用的是WebView中使用CodeMirror的實現(xiàn),出效果很快,但是問題也有,就是WebView中的操作是異步的,發(fā)送編輯命令和預覽命令給別的UI組件就略微有些麻煩。再加上這些年Android的安全政策更新,我還得重新編譯一套動態(tài)庫版的TeX組件。所以啊,越不想弄的東西,越不想看見的問題,越會在之后重新出現(xiàn)。

編譯的事,簡單。編輯器的事,復雜。

所以我在前幾天開始重新思考編輯器的實現(xiàn)。能參考的東西不少,比如CodeMirror,比如Scintilla,也比如Qt中的QTextEdit。

所有的GUI都是在畫圖。但是怎么畫圖,這是得琢磨的。因為很少有書講怎么去實現(xiàn)GUI框架以及具體的GUI組件。我琢磨了幾天,就突然發(fā)現(xiàn)這事的好玩之處:能不能實現(xiàn)一個編輯器,基本上能夠驗證掌握了多少相關的知識。比如:設計模式(尤其是事件驅動),多線程編程,文本處理支持(Unicode和相關編碼),排版知識(字體等)。

文本處理和排版,對我來說并不困難。設計模式和多線程編程也不麻煩。

麻煩的反而是文檔。Android的一些API的文檔,寫的極為精簡,想要知道使用場景和具體含義,都得看AOSP的源碼。這對我來說,就得看源碼之后不斷的測試。這其中最讓我頭痛的是輸入法的交互:實體鍵盤和軟鍵盤的處理,按鍵事件的處理,快捷鍵的處理。

輸入法的處理結束之后,基本上就是花活了,按部就班,能參考的就很多。

比如說,Android的View在Canvas上繪制。文本是不是要渲染成一行?如果過長,一行太長要拆開,要怎么分割文本?文本的拖選高亮怎么實現(xiàn)?文本的語法高亮怎么實現(xiàn)?暗色模式怎么做?光標和光標閃爍是如何現(xiàn)實的?標尺(如行號,頂欄標尺)是怎么實現(xiàn)的?Bidirectional文本是如何控制的(如光標移動)?

我之前寫的proto.py其實是個基于偽終端的最簡單的文本編輯器。和Android這種基于View的實現(xiàn),實在是太簡單了(所以講解的部分,基本停了,準備在這個Android的搞定了之后,加大篇幅寫)。文本編輯器的門路大概是摸清楚了,我另外想搞懂的,其實是字體編輯器。這事好玩啊,足夠打發(fā)很長一段時間。雖然大部分公司都不會從頭搞這些東西。

對于編輯器的一些思考的評論 (共 條)

分享到微博請遵守國家法律
武强县| 汉源县| 荆州市| 黄梅县| 防城港市| 长垣县| 会昌县| 姜堰市| 潜江市| 台东市| 柳江县| 无锡市| 临西县| 新乡县| 绥德县| 高雄县| 贡嘎县| 仁化县| 财经| 西盟| 密山市| 台山市| 承德市| 麻城市| 项城市| 翁牛特旗| 平陆县| 镇沅| 神池县| 三门县| 榆林市| 耒阳市| 芦溪县| 兴化市| 新河县| 龙川县| 扎兰屯市| 化州市| 彰化县| 山阴县| 石渠县|