Giter Club home page Giter Club logo

han's Introduction

漢字標準格式

「漢字標準格式」是一個集「語意樣式標準化」「文字設計」「高階排版功能」三大概念的Sass/Stylus、JavaScript排版框架。其專為漢字網頁提供的美觀而標準化的環境,不僅符合傳統閱讀習慣、更為螢幕閱讀提供了既成標準,得以完整解決現今漢字網頁設計的排版需求。

「漢字標準格式」完整支援繁體中文、簡體中文及日文等三個採用漢字的語言文字。

檢視範例測試頁

安裝

  • NPM npm install --save han-css
  • Bower bower install --save Han
  • Rails gem install 'hanzi-rails'詳細說明

定製

「漢字標準格式」提供多項定製功能,可經由變數設定、模組引用等方式定製專屬的樣式表。詳情請見使用手冊

使用CDN文件

若毋須特別定製,你也可以直接使用以預設値編譯的CDN外連樣式表、腳本及網頁字體,以求高速下載及快取。此服務由cdnjs.com提供

<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/han.min.css">

腳本,

<script src="//cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/han.min.js"></script>

Web字體,

  • WOFF //cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/font/han.woff
  • OTF //cdnjs.cloudflare.com/ajax/libs/Han/3.3.0/font/han.otf

使用方式

  1. 在網頁所有樣式表引用經編譯的han.min.css(或使用Sass/Stylus匯入)。
  2. 依需求選用腳本han.min.js,並在<html>元素標籤上加入類別han-init以啓用DOM-ready渲染。
  3. 或依需求定製渲染方式,詳見使用手冊

可選用的腳本

「漢字標準格式」具低耦合、高度語意化等特性,樣式表與腳本各司其職、相互依賴性極低,並有多級樣式回退(fallback),故可依需求選用腳本。

常見問題

瀏覽器支援

  • Chrome(最新版)
  • Edge(最新版)
  • Firefox(最新版)
  • Firefox ESR+
  • Internet Explorer 11
  • Opera(最新版)
  • Safari 9

開發需求與指令

  • Node.js
  • LiveScript 1.4.0(sudo npm install -g livescript

下列清單展示了部分常用的開發指令,

  • 安裝需要的開發模組:sudo npm install
  • 啓動開發環境:npm startgulp dev(包含本機運行及自動編譯)
  • 編譯發布文件:gulp build
  • 測試han.jsAPI:gulp test(PhantomJS)
  • 更新依賴模組:sudo npm update && gulp dep

「漢字標準格式」版本:v3.3.0
本頁最後修改於:2016-3-19 00:11(UTC+8)

han's People

Contributors

audreyt avatar c933103 avatar ethantw avatar hiro0218 avatar jlhwung avatar kanru avatar tioover avatar yhsiang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

han's Issues

IE無法正確顯示陽入韻連字

在IE10/11下,拉丁字母陽入韻(\u030d\u0358)無法正確啓用OpenType的連字功能,如圖

2014-02-06 18 31 11

而一般字元(非combing character區段)的連字,則可以正常顯示,

2014-06-30 21 16 16

變音元素`i`字體樣式干擾其他框架

已知Font Awesome、Semantic UI等框架之CSS皆使用變音元素<i>做為icon的承載標籤,而漢字標準格式對<i>之字體樣式重設會因「語言屬性」的繼承問題干擾此類應用。

雖然此類icon用法不合HTML5元素之標準語意,但不可忽略此類框架的廣泛使用率,應探討其他重設樣式字體的方式。

work with 960, blueprint, or boilerplate ?

您好,想請教一下。
如果 Han 包到這些 html5 framework 或 CSS framework 中,有沒有需要特別注意的地方?

我有看到文檔中提到 han.js 不能放在 html 底部,
但是我在 boilerplate 中測試,看起來是可以運作的。

這些 framework 大抵都有自己的 CSS Reset,我想應該是可以互通的?
(就是你的 Reset 被他的 Reset 蓋掉,他的 Reset 又被別人的 Reset 蓋掉 ....)

any comment?


oh, I found something related to!

http://stackoverflow.com/questions/4407891/html5-boilerplate-with-blueprint-css
http://shikiryu.com/html5/
http://codekickoff.com/

新增宋體-繁至`Han Songti`等事宜

稍早同 @yhsiang 討論字體選用。由於OS X Mavericks已發行,其支援的新字體可能帶來較佳的閱讀體驗,以下為可能在「漢字標準格式」v2.2.0版本中的更動。歡迎提供建議。

  • 新增宋體-繁至Han Songti
  • Han HeitiHan Songti分支成CNS及GB,始區分繁體字形及新字形(中國國標)
    • Han HeitiHan Songti之字體以美觀、品質完善、收字齊全、區分字重者為優先,後方並排列所有黑、宋體,以求字集完整覆蓋
    • Han Heiti/Songti CNS則以符合上述條件之「舊字形」字體為優先排列,後方輔以台灣教育部之國字標準字形、中國國標字形之字體fallback,以求字集完整覆蓋(同Han Heiti/Songti,惟順序排列選用標準稍有不同)
    • Han Heiti/Songti GB之字體需_完全符合_中國國標字形
  • 原先已區分國家標準之Han Kaiti [CNS/GB]以上述原則修改之;至於Han Fangsong則因主流作業系統(OS X及Windows)皆只收錄國標字形之仿宋體,將同Han HeitiHan Songti分支為CNS及GB,但Han Fangsong [CNS/GB]三者之字體排序將完全一致。
    • 惟因楷體屬手寫字體及其隱含習字教學目的之特殊性,Han Kaiti CNS採用「中華民國教育部國字標準字形」字體,且_不在_後方加入不符該標準之回退。
  • 標點符號字體:
    1. 簡易版修正不變
    2. 始自中日式標點中分支出中式標點,進階版現分為:
      • Biaodian Pro Sans/Serif(任何情況下推薦使用)
      • Biaodian Pro Sans/Serif CNS(台港式標點)
      • Biaodian Pro Sans/Serif GB(中式標點)
  • 四大字體集不能保證標點符號樣式符合上述條件,但會新增@mixin,提供完整的字體排序(四大字體集、標點符號、拉丁字母、數字等)
  • 阿拉伯數字再區分文本數字及等高數字

间隔号「·」在国标中为半角字符

《GB/T 15834―2011 标点符号用法》

4.14.3.5
以月、日为标志的事件或节日,用汉字数字表示时,只在一、十一和十二月后用间隔号;当直接用阿拉伯数字表示时,月、日之间均用间隔号(半角字符)。
示例 2:“一二·九”运动
示例 3:“3·15”消费者权益日 
……
5.1.7 间隔号标在需要隔开的项目之间,占半个字位置,上下居中,不出现在一行之首。

详见:http://zhi.hu/Ygsk

版本v3.0的計畫

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

  • 四大字體集
  • 標點符號樣式修正、等高數字字體
  • 漢拉間隙
  • 相鄰二底線之視覺辨別(同屬語義樣式的一部分)
  • 使用中文大小寫數字的序列清單
  • 繁體中文使用日文字體之字符回退(順延)
  • 訛字(符)替換功能
  • 完整避頭尾禁則
  • 標點擠壓
  • 段落、清單齊頭尾與標點懸掛(v3.2)
  • 段落文字直排(v3.1)(另起專案)

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

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

  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]文字直排

強調元素`<em>`的樣式回退

目前的樣式修正過於着重JavaScript回退,在WebKit等支援CSS3原生着重號屬性text-emphasis的瀏覽器中,若關閉JavaScript,將回退使用邊框border-bottom: 2px dotted而非着重號。

下划线厚度是否应当随着字体大小改变而改变?

在使用 text-decoration:underline 生成下划线的时候,其厚度是根据字体大小的变化而变化的,但是每个浏览器的计算方式也会有差异。

当父元素设置了 text-decoration:underline ,厚度计算有如下几种情况:

  • IE8-10 中根据字号最大的子元素来计算。
  • Chrome 32 之前根据父元素字号来计算,Chrome 33 开始支持text-underline-position:under,改变了渲染策略,下划线会随着父元素字号改变而改变。
  • Firefox 根据父元素字号来计算。

Chrome 33 现在的实现有很多 Bug,Demo

以上结论需要进一步测试。

通常,text-underline-position:under 是我们需要的中英文混排时的下划线效果,所以在使用 padding-bottom 模拟的时候是否可以尽量往这个效果靠拢?han.css 目前使用的是固定厚度1px

標點字體新字元

初步研究應加入下列字符的樣式修正:

  1. 全形連接號(
  2. 全形正、反斜線(
  3. 全形內括號(〔〕

着重號的顯示位置

  1. 着重號在不支援CSS3屬性「text-emphasis」的瀏覽器上,位置過於偏離文字本身,需改進。

    2013-10-18 3 31 28

  2. 瀏覽器prefix改進

`<ruby>`的JS改寫問題及拼、注音共同顯示

  1. 現行的<ruby class="mps">JavaScript改寫需要在<rt>標籤的後方插入一斷行字符方可正確替換元素。應改用節點重寫JS替換,使之在不使用換行的情況下也應能夠正常改寫
  2. 加入拼、注音的直角共同顯示
  3. 加入文字註記雙重顯示(complex ruby)
  4. 台灣方言音符號的支援~~(依語言區分)~~
  5. Retina Display螢幕的最佳化
  6. 加入直排文字示例

實驗性底線的顯示問題

在套用border-box樣式reset的網頁中,「實驗性底線」顯示異常

*,
*:before,
*:after {
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

會導致
2013-10-21 9 09 43

使用如下代碼修正即可,

.han-js-rendered.han-lab-underline u,
.han-js-rendered.han-lab-underline u *,
.han-js-rendered.han-lab-underline u *:before,
.han-js-rendered.han-lab-underline u *:after {
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box;
    box-sizing: content-box;
}

<cite>元素的樣式標準化

鑑於W3C在HTML 5.1 Nightly草案中<cite>所做的定義更動,將在v2.2.0版本中_棄用_原書名號修正樣式——仍同舊版本支援修正樣式,但在說明文件中標示停用,並建議直接使用書名號代替。

在未來更新的版本中(暫定v3.0),將會去除書名號樣式,僅在CJK語言屬性條件下,覆蓋瀏覽器的UA樣式(即斜體)。

`article:lang(zh | ja) strong`的字重

WebKit對某些擁有多字體家族字體的字重選用不當,可能導致跳級選用粗體,如下,

2013-10-27 3 41 59
**註:**使用Gill Sans。

參考WebKit的瀏覽器user agent樣式,直接改用粗體即可,

article strong:lang(zh),
article strong:lang(ja) {
    font-family: sans-serif;
    font-weight: bold;
}

漢拉間隙改用自訂元素

目的:

  1. 以簡化代碼
  2. <span>元素可能同開發者之樣式表發生繼承衝突,使用自訂元素可減少此類影響

CSS3屬性`quotes`支援偵測問題

CSS3屬性quotes已為WebKit支援,但其測試之回傳值不同於其他瀏覽器,故當前漢字標準格式仍認為此屬性不為WebKit支援。

使用 jQuery 1.9 會碰到的問題: Cannot read property 'mozilla' of undefined

JQuery 1.9+ 移除了 jQuery.browser,使用 han.js 時會報錯:

Cannot read property 'mozilla' of undefined

jQuery Migrate 來把舊功能加到 jQuery 1.9+ 。

jQuery Migrate can be used to detect and restore APIs or features that have been deprecated in jQuery and removed as of version 1.9. See the warnings page for more information regarding messages the plugin generates. For more information about the changes made in jQuery 1.9, see the upgrade guide and blog post.

四大字體集在Firefox上的問題

@font-face四大字體集,

  1. Han Heiti
  2. Han Songti
  3. Han Kaiti (CNS/GB)
  4. Han Fangsong

由於動用到unicode-range解決IE的字體fallback問題,導致Firefox無法正確顯示以上字體。

`<h-ruby>`進階功能改進及修正

由「issue #5」延伸出之<hruby>功能改進及修正:

  1. 避頭尾
  2. 不同字號下,注音符號可依其大小彈性縮放
  3. <ruby>替換為<h-ruby>後,應保留其原屬性
  4. 客語、威妥瑪拼音等調號(自v3.2.2起,不再使用偽元素顯示注文,故可正確顯示<sup>元素)
  5. 提供專用屬性data-han-ruby-copyable,可於「複製貼上」時,選用是否包含拼音及注音
  6. 方言音「陽入韻」的連字(ligature)處理

Normalize.css需加入至Han.css中

現有版本(2.1.0)已支持Sass,故Normalize.css應直接置入Han.css中,不再分為多個檔案,並以Han.scss來控管各樣式表。

相鄰註記元素`<u>`的JS改寫

現行程式會一次性地將所有<body>中的內容截取,在完成代碼代換後取代原<body>內的標記,此方式不甚優雅,且已知將同AngularJS程式衝突。

下個版本應實作以「結點」來代換,而非一次性覆蓋所有代碼。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.