Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UI Improvements (macOS deployment target = 10.15+, up to 14.4) #756

Closed
wants to merge 179 commits into from

Conversation

groverlynn
Copy link
Contributor

@groverlynn groverlynn commented Apr 21, 2023

包括下述UI改進:

  1. 修正直式輸入面板的排版(採用NSTextView),直立(upright)的寬字符和側臥(sideways)的窄字符均能對齊基線。Emoji在橫式和直式下均不會產生基線跳躍。(MacOS 12及以後的版本採用新的textkit 2API,對部分罕用字符的支援度高於MacOS 11及以前的系統使用的textkit。)
  2. 修正輸入面板與遊標之間的相對位置:
  • 輸入面板相應邊界或輸入面板內的輸入遊標對齊App內的文字輸入遊標。
  • 輸入面板和App的文字輸入的上下邊界之間均保持一定距離以避免遮擋,特別修正了輸入面板位於App文字輸入位置以上時未留足空間而導致遮擋的bug。
  • 新增支援App內文字直式輸入時(sweep vertical)輸入面板的智能定位,輸入面板爲橫式或直式均適用。
  • 新增允許滑鼠臨時性拖拽輸入面板,可以查看被輸入面板遮擋的內容。輸入面板會在下一輪輸入(清空當前輸入或確認上屏後)或面板超出屏幕邊界時回到默認的位置。
  1. 候選項線性(linear)排列模式下只在選項之前或之後換行/列,確保同一選項不分屬兩行/列,除非單一選項長度超過上限。修改行間距(line-spacing)實現方式以避免出現高亮多邊形摺疊、並且橫式各行上下居中/直式各欄左右居中。
  2. 修改native方案配色以更接近系統顏色,其中選項標籤和高亮選項背景色採用預設(accent)顏色。
  3. 選項標籤默認採用全寬(full-width)的1234567890。其中第十項改用以反應實際按鍵。直式模式下全寬數字保持直立,更利閱讀。修改後選項標籤部分確保等寬,無需設置專門字型。同時,標籤的缺省字型則改爲數字等寬(monospaced digit)的系統字型。當然,用戶仍可以自選字型、自定選項標籤字符。自選字型優先使用數字等寬(monospaced)或字母數字半寬(half-width)(若字型支援)。
  4. 輸入面板邊框(border)厚度遵從用戶設定,區分上下邊界的邊框高度(height)和左右邊界的邊框寬度(width)。
  5. 新增頁碼及翻頁提示(◃⃝/◂⃝及▸⃝/▹⃝,空心代表盡頭,無法繼續翻頁)。線性(linear)模式位於末行行尾,堆疊(stacked)模式獨佔末行),用戶可以知曉當前是否爲第一頁(尤其在回翻時),以免不慎繼續使用,向前翻頁觸發上屏。翻頁提示符亦是翻頁鍵,支援滑鼠和觸控板直接點選翻頁,terminal等APP攔截鍵盤方向鍵時也可以點選面板上按鈕。選項開關:style/show_paging
  6. 半透明(磨砂)參數translucency修改爲程度,取值爲0到1之間,0爲不透明,1爲完全透明(與alpha相反/互補)。無需另外設置半透明的背景色(back_colorpreedit_back_color)。註:背景顏色的alpha通道、輸入面板的alpha值、輸入面板的translucency值互相獨立且效果疊加。因半透明效果會混合系統的淺色或暗黑模式,所以輸入面板的配色也必須使用相應的淺色或深色,否則會呈現並非半透明的效果。如果選用的背景色與淺色/暗黑模式衝突,會自動替換所有顏色爲其亮度(Lab*色彩空間之luminance)上的補色。
  7. 支援滑鼠和觸控板直接點選候選項。主鍵/單指上屏,次鍵/雙指刪除自造詞或歸零詞頻(相當於高亮該候選項然後執行shift+Fn+delete)。開啓翻頁提示(show_paing)時支援滑鼠和觸控板主鍵/單指點選翻頁提示來翻頁,次鍵/雙指分別相當於HomeEnd。主鍵/單指點選輸入編碼區的⌫退格,次鍵/雙指點選相當於esc
  8. 支援背景使用圖片(設置項:back_image,默認路徑為~/Library/Rime),此時半透明(磨砂)參數translucency代表背景色(back_colorpreedit_back_color)遮擋背景圖片的程度,0爲背景色徹底遮擋背景圖片,1爲無背景色/只顯示背景圖片 。
  9. 新增候選項線性排列模式linear的子模式:表格式排列tabled。表格模式中,候選項盡可能地居左對齊,高亮區域覆蓋候選項所在的整個單元格。
  10. 新增設置:行長line_length(橫排時爲候選框每行寬度,直排時爲候選框每行高度,單位爲point)。當取值爲正數時,文字框長度即固定不變,選項不足一行時留空補足該長度(tabled表格式排版時,以單元格為單位向下取整,單元格寬度為2/4/6/8…個漢字寬)。另外,line兩端額外留有半個漢字寬的padding(不計入line_length中),避免文字被圓角切割。
  11. 修正了選項標籤字符不帶強書寫方向(strong writing direction)時(比如符號)選項中的由右至左書寫字符導致整個選項書寫方向改爲由右至左的bug。修正後選項整體保持由左至右的書寫方向,由右至左書寫的字符串則由右至左嵌套其中。
  12. markdownhtml<tag>語法對候選項套用加粗**__)、斜體*_)、下劃線(<u>)、刪除線~~)、上標(^)、下標~)等樣式,以及ruby注音(Unicode範式:U+FFF9文字U+FFFAㄨㄣˊ ㄗˋU+FFFB,注音部分以空格斷字;三個定位符號可使用UTF8編碼輸入,比如U+FFF9即是\xEF\xBF\xB9)。相關的設定項為candidate_formatcomment_format
  13. 暗黑模式(Dark Appearance)不跟隨系統,而是跟隨調用輸入法的App界面。如系統暗黑模式但文檔背景白色,則輸入法也使用淺色配色(前提是分別設置了color_schemecolor_scheme_dark,或使用color_scheme: native,或啓用半透明磨砂效果/translucency為正數)。
  14. 選單switches可控制樣式style(會覆蓋當前color_scheme的相應設定)。既可以是單獨控制樣式的switch,也可以附屬於其他switch之上。相關的設定項為方案的style/<option_name>。典型應用場景:根據繁簡選擇相應字型。
    假定switches中有一組繁簡轉換選項options: [ zh_TW, zh_HK, zh_Hans ],則style中設定如左:
zh_TW:
  font_face: "PingFangTC-Regular"
  comment_font_face: "PingFangTC-Light"
zh_HK:
  font_face: "PingFangHK-Regular"
  comment_font_face: "PingFangHK-Light"
zh_Hans:
  font_face: "PingFangSC-Regular"
  comment_font_face: "PingFangSC-Light"

上述所有UI改善均無需提高最低系統要求,保持最低支援macOS 10.15(最低支援MacOS 10.6,需配合librime 1.8.5-)。一圖以蔽之:
Screenshot 2023-06-30 at 00 25 07

背景圖片
Screenshot 2023-06-30 at 02 34 46

固定行長(本例為200 pt)
Screenshot 2023-07-05 at 03 29 12

tabled表格式排列
Screenshot 2023-08-31 at 00 02 31

所有依賴combining marks的合成字符均能夠正確顯示(註:多數合成字母和數學符號有專門的碼位,所以已被unicode官方建議不要使用,例如不建議使用U+0061U+0304 | ā,而應使用U+0101 | ā)。
Screenshot 2023-06-29 at 20 05 43 (2)

此外,這個PR沒有 #749 新引入的諸多bug:

  • 候選高亮框和翻頁高亮框相當於按鈕,整個高亮框100%可點選,沒有高亮框和滑鼠點選區域錯位的問題。
  • 輸入面板不會在每個輸入動作(包括且尤其是翻頁選詞)之後發生上下左右隨機一個方向1px的晃動。在開啓remember_size之後,進一步確保輸入面板左上角(豎排右上角)錨定,最大程度杜絕輸入面板不停跳躍的毛病。
  • 所有UI參數嚴格遵守用戶設定,不會隨意增減行高、字間距等。狀態調整提示方塊不帶任何行間距和段間距,不會有惱人且無法消除的留白。
  • 線性模式下不會優先在空格處換行,所以不會有左首對不齊或者末尾多出來一行空白的問題
  • 移動滑鼠可以有效控制候選項的高亮區域,不會在滑鼠離開面板後強行回彈到初始高亮選項,也不會有同時使用滑鼠和鍵盤導致輸入法崩潰的問題。
  • 用滑鼠/觸控板選詞或換頁不會有明顯卡頓,更不會出現高亮框或翻頁明顯滯後跟不上滑鼠的問題。
  • 鎖定列高,不會因爲系統自動替換字體(如emoji)而導致列高變化晃動。
  • 改善內存管理,降低內存使用。特效全開的情況下,高峯內存使用也僅30MB(intel集顯芯片所佔內存可能需要翻倍)。

groverlynn and others added 30 commits October 29, 2022 22:21
* Float font size
* No line-break within short candidate and comment
* Highlighted candidate background shadow
* Non-highlighted candidate background color
* Optional mutual exclusive color filling
* Option to disable sticky panel size
…ich is used in NSString.

(cherry picked from commit a533b41)
@ShikiSuen
Copy link
Contributor

虽然这时候讲可能有点晚了,但是:

注意针对过长的候选字词、使其占据两个或三个候选字词的位置。
不然的话,选字窗窗体总长度太宽的话也不好(说的就是搜狗 mac 版)。

@blackhole889
Copy link

不支持12.7.4.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants