ethantw / Han

「漢字標準格式」印刷品般的漢字排版框架 Han.css: the CSS typography framework optimised for Hanzi.
https://hanzi.pro/
MIT License
2.42k stars 135 forks source link

版本v3.0的計畫 #24

Closed ethantw closed 9 years ago

ethantw commented 10 years ago

目前已加入、或在未來將陸續新增各項漢字「排版」功能,如下,

以上「排版功能」已同原先「漢字標準格式」的「語義元素樣式正常化」之初衷大有不同,且諸多實驗功能可能不甚穩定,將導致專案過於龐大,管理困難,亦對開發者不便。

暫時決定將以上功能同「語義元素樣式正常化」拆分為多個專案,最後各提出其重要部分由「漢字標準格式」整合為一。初步思考結果如下,

  1. [Sass]語義元素樣式正常化

    同normalize.css合併,只提供「CSS樣式類」的修正,不再依賴JavaScript處理視覺樣式。盡可能使用CSS完成語義元素之樣式。

    且不再使用指定字體,以通用字體族(generic font family)取代之。

  2. [JS+Sass]語義元素樣式正常化之回退

    加入JavaScript回退機制,以利各瀏覽器正常顯示樣式。(同1.併於同一專案中,但不強制使用JavaScript回退,而改為「推薦使用」)

    搭配JavaScript回退處理之Sass樣式表亦另外提供。

    API

    同時,提供Sass的@mixin函數以利開發者清除UA/語義元素正常化樣式。

  3. [Sass]四大字體集等指定系統/web字體

    即原本的han/_fonts.scsshan/_ff.scss,通過各系統間預設字體的搭配(標點符號樣式修正、等高數字字體),達到美觀、符合各地標準的排版效果。

    API

    提供各字體集與搭配完善的@mixin函數,方便開發者套用。

  4. [JS+Sass]其他漢字「排版」功能

    以下,除「文字直排」外之重要漢字排版功能,統一由一JavaScript專案處理之,並提供開發者選用。

    • 漢拉間隙
    • 相鄰二底線之視覺辨別(同屬語義樣式的一部分)
    • 使用中文大小寫數字的序列清單
    • 繁體中文使用日文字體之字符回退
    • 完整避頭尾禁則
    • 標點擠壓
    • 段落、清單齊頭尾與標點懸掛
      API

    開放原$(selector).charize()等各項函數。

  5. [JS+Sass]文字直排

yisibl commented 10 years ago

相鄰二底線之視覺辨別(同屬語義樣式的一部分)

这个是什么意思?

ethantw commented 10 years ago

就是相鄰註記元素<u>的底線跳脫,這應該是語意層面的視覺樣式。

http://css.hanzi.co/manual/hanzi_biaozhun_geshi/dixian#xianglin_zhuji_yuansu

目前漢字標準格式有二種JS解決方案和一種原生CSS fallback,版本v3.0會將二種方案拆分於不同層面的二個子集專案中——簡易修正同純CSS fallback歸於semantic normalisation,重繪底線的進階修正則收在「排版」層面中。

ethantw commented 10 years ago

(我草草的筆記很雜亂,不好意思)

原文把JS的DOM改寫當作fallback,上面的回應又將純CSS normalisation寫作fallback⋯⋯主要是:

  1. 純CSS normalisation可以不選用JS DOM改寫,故後者為前者之fallback
  2. 選用了DOM改寫後,純CSS normalisation僅在特殊情況下作用,成了DOM改寫的fallback
yisibl commented 10 years ago

感谢深夜回复。

其实这种高级排版,我觉得CSS解决就可以了,不支持的视觉上适当降级。

现在的u标签嵌套了太多span,如果单纯用margin来增加间距又会改变文字间距。

我在这里有讨论:http://www.zhihu.com/question/20202651/answer/21441980?group_id=148091136#comment-51879147

ethantw commented 10 years ago

我在v3.0版本中已經精簡了這個部分,應該不會有過度嵌套的問題了(請參考我的 han-hongyu-css 專案)(我搞錯了,這部分是寫在我還沒publish的repo中,今天腦子很不靈光,請見諒)。

至於現在的v2.2.3中,預設是_不_開啓這項實驗性DOM改寫,具體效果可參考 @boskijr 的〈Typecho + Han Standard〉。

八月底時我和 @lianghai、@zmmbreeze 有討論過偽類選擇器的問題,所以才又加了現在的DOM改寫。原本可以只取<u>元素的頭尾二字和中間段,但我已經有個專門處理字符的jQuery plugin method,所以就沒另外寫了。

ethantw commented 9 years ago

完整的標點擠壓懸掛:http://ethantw.github.io/Han/v3.2.0-b/jiya.html (一年半過去,這張票總算可以關了)

直書的功能可能不大適合直接放在Han.css,未來再起一個類似plugin的專案專門處理文字直排。