diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..007aa4e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*.pdf
+*.vfc
\ No newline at end of file
diff --git a/README.md b/README.md
index 0c277c2..9c3dea8 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# 傳承字形推薦形體表——網頁排版源文件
-本倉庫用於存放和托管《傳承字形推薦形體表》的網頁排版源文件。訪問本倉庫對應的 [GitHub Pages 網頁]()可以在瀏覽器內排版渲染《傳承字形推薦形體表》的 PDF 文件。
+本倉庫用於存放和託管《傳承字形推薦形體表》的網頁排版源文件。訪問本倉庫對應的 [GitHub Pages 網頁](https://ichitenfont.github.io/recom)可以在瀏覽器內排版渲染《傳承字形推薦形體表》的 PDF 文件。
本文檔使用 [Paged.js](https://pagedjs.org) 排版。使用 Chrome 123+ 版的排版效果最佳,因爲 Chrome 123 版起開始默認啓用 CSS 標點擠壓,較爲貼近舊版《傳承字形推薦形體表》1.04 版使用 Microsoft Word 排版的效果。
@@ -9,7 +9,7 @@
此處的 `本地` 指的是當前使用的電腦終端。
* `index.html`:排版顯示的網頁。固定文本(如前言、作者、各表標題等)都在這個文件編寫。也負責導入其他文件。
-* `index.css`:定義網頁顯示效果,例如頁眉頁脚、字表格式等。
+* `index.css`:定義網頁顯示效果,例如頁眉頁腳、字表格式等。
* `index.js`:排版邏輯,引入純文本的 JSON 文件來進行排版。
* `recommended-char-list.json`:字表的純文本 JSON 文件。格式如下節所述。
* `variant-forms.json`:〈附錄一:變體部件表〉的純文本 JSON 文件。格式如下節所述。
@@ -32,7 +32,7 @@
## 字表格式:`recommended-char-list.json`
-此表用於排版〈表一:一級漢字區〉、〈表二:二級漢字區〉和〈表三:添補漢字區〉,使用 [JSON 格式](https://developer.mozilla.org/zh-CN/docs/Learn/JavaScript/Objects/JSON),屬於純文本格式。使用的格式大致如下:
+此表用於排版〈表一:一級漢字區〉、〈表二:二級漢字區〉和〈表三:添補漢字區〉,使用 [JSON 格式](https://developer.mozilla.org/zh-TW/docs/Learn/JavaScript/Objects/JSON),屬於純文本格式。使用的格式大致如下:
```json
{
@@ -189,10 +189,10 @@
本倉庫源文件(除了 `webfont/` 內的字型文件)和其衍生品《傳承字形推薦形體表》 PDF 皆以 [共享創意-署名4.0授權協議](https://creativecommons.org/licenses/by/4.0/) 授權。
-`webfont/` 內的字型文件以各自的字型授權使用。`I.Iosevka` 及 `Inter` 以 SIL OFL 授權,`I.MingWebVar` 以 IPA開放字型授權協議 1.0版授權。
+`webfont/` 內的字型文件以各自的字型授權使用。`I.Iosevka` 及 `Inter` 以 SIL OFL 1.1 版授權,`I.MingWebVar` 及 `I.MingWebWriting` 以 IPA開放字型授權協議 1.0 版授權。
[`pagedjs` 0.4.3](https://www.npmjs.com/package/pagedjs) 及 [`browser-dtector` 4.1.0](https://www.npmjs.com/package/browser-dtector) 爲冷凍的引用模塊,以 MIT 授權使用。
## 致謝
-感謝 [@rwxguo](https://github.com/rwxguo) 初期協助進行數據校驗。
\ No newline at end of file
+感謝 [@rwxguo](https://github.com/rwxguo) 初期協助進行數據校驗。
diff --git a/index.css b/index.css
new file mode 100644
index 0000000..e5d2ce4
--- /dev/null
+++ b/index.css
@@ -0,0 +1,328 @@
+/* 預覽網頁(非排版) */
+body {
+ padding: 2em;
+}
+
+/* 單元格填色 */
+.not-suggested {
+ border: 0.01em solid black;
+ background-color: #eee;
+ color: #C0504D;
+}
+.repeated {
+ border: 0.01em solid black;
+ background-color: #eee;
+ color: #00B050;
+}
+span.not-suggested, span.repeated {
+ /* 前言的填色 */
+ border: none;
+}
+
+/* 附錄 部件填色 */
+.recommended-form {color: #002060;}
+.orthography-form {color: #00B0F0;}
+.aesthetic-form {color: #538135;}
+
+/* 内容字體設置 */
+h1 {
+ text-align: center;
+ margin-bottom: 1em;
+ font-size: 1.5em;
+ font-family: var(--page-header-font);
+ bookmark-level: 1;
+ bookmark-label: content();
+}
+h2 {
+ text-align: center;
+ margin-bottom: 1em;
+ font-size: 1.2em;
+ font-family: var(--serif-header-font);
+ page-break-after: avoid;
+ bookmark-level: 2;
+ bookmark-label: content();
+}
+h3, h4 {
+ font-family: var(--serif-header-font);
+ font-size: 1em;
+ text-align: left;
+ margin-block: 0.5em;
+ page-break-after: avoid;
+}
+h3 {
+ bookmark-level: 3;
+ bookmark-label: content();
+}
+h4 {
+ bookmark-level: 4;
+ bookmark-label: content();
+}
+/* SVG圖片 */
+.picture-char {
+ display: inline;
+ height: 1em;
+ width: 1em;
+ line-height: 1em;
+ /* 根據西文基綫對齊底部,然後往下壓 */
+ vertical-align: baseline;
+ position: relative;
+ bottom: -0.12em;
+}
+
+/* 頁面内容設置 */
+section.content {
+ page-break-after: always;
+}
+section.content p {
+ line-height: 1.5em;
+ margin-bottom: 1em;
+ text-align: justify; /* 左右對齊 */
+ hanging-punctuation: end; /* 標點懸挂(chrome暫不支持) */
+}
+
+/* 前言 */
+section#intro p {
+ margin-bottom: 1.2em; /* 段落之間空行 */
+}
+section#intro span.handwriting-form {
+ font-family: var(--intro-handwriting); /* 其他字形 */
+}
+section#intro ol#intro-collect-char-rules {
+ list-style-type: cjk-decimal;
+ line-height: 1.5em;
+ margin-bottom: 1.2em;
+ padding-left: 2em;
+}
+
+/* 目錄 */
+#toc-list {
+ list-style-type: none;
+ padding-left: 0;
+}
+#toc-list li a {
+ color: black;
+}
+#toc-list li[data-title-level="h1"] {
+ font-family: var(--serif-header-font);
+ margin-top: 0.5em;
+}
+#toc-list li[data-title-level="h2"] {
+ font-family: var(--text-font);
+ margin-left: 2em;
+}
+#toc-list li a::after { /* 章節頁碼自動替換 */
+ content: target-counter(attr(href), page);
+ float: right;
+}
+
+/* 表格 */
+table {
+ border-collapse: collapse;
+ width: 100%;
+}
+table tr, table td {
+ border: 0.01em solid black;
+}
+/* 表格單元格的分類標題(表三分級用) */
+table.charlist tr th.part-header {
+ background-color: #ffc;
+ color: #e26c09;
+ width: 12.5%;
+ border: 0.01em solid black;
+ font-weight: normal;
+ font-size: 2em;
+}
+/* 表格單元格 */
+table.charlist tr td {
+ text-align: center;
+ width: 12.5%;
+ height: 1.6in;
+ vertical-align: top;
+ padding: 6px 4px;
+ position: relative; /* 用於裏面的註釋號碼固定在右下角*/
+}
+table.charlist tr td span {display: block;}
+table.charlist tr td span.big5 {
+ font-family: var(--big5-value-font); /* Big5 碼用代碼字體 */
+}
+table.charlist tr td span.big5 span.hkscs{
+ font-size: 0.6em; /* HKSCS 的 H- 標簽縮小*/
+ display: inline;
+}
+table.charlist tr td span.sample-char{
+ font-size: 3em;
+ line-height: 1.4;
+ margin-bottom: -2px;
+}
+table.charlist tr td span.unicode{
+ margin-bottom: 3px;
+ font-family: var(--unicode-value-font);
+ font-feature-settings: "tnum";
+}
+
+
+/* 注釋引用標簽 */
+a.ref-tag-in-table { /* 需要上一級是 position:relative */
+ font-family: var(--reference-tag-font);
+ font-feature-settings: 'jp90'; /* 註斜點 */
+ position: absolute;
+ right: 4px;
+ bottom: 4px;
+ font-size: 0.75em;
+}
+
+/* 注釋列表設置 */
+ol.endnotes li {
+ margin-bottom: 0.5em;
+}
+ol.endnotes li a.endnote-refer-back {
+ padding-inline-end: 0.25em;
+ line-height: 0.9em;
+ white-space: nowrap;
+}
+
+
+/* 附錄表格 */
+section#appendix1 table td {
+ position: relative; /* 用於裏面的註釋號碼固定在右下角*/
+ padding: 4px 6px;
+}
+section#appendix1 table#appendix1-similar-component th {
+ width: 3em; /* 組合部件標題 */
+ font-size: 1.5em;
+ font-weight: normal;
+ background-color: #ffc;
+ color: #e26c09;
+ border: 0.01em solid black;
+}
+section#appendix1 table#appendix1-individual-component td {
+ width: 25%; /* 單獨部件4個一行,25% */
+}
+section#appendix1 table p.header-component {
+ margin: 0;
+}
+section#appendix1 table p.shown-char {
+ font-size: 2em;
+ line-height: 1.08em;
+ margin: 0;
+}
+section#appendix1 table .sample-variant-char {
+ font-family: var(--variant-font);
+}
+
+
+/* 章節分類 */
+section#chap1 {
+ page: chap1;
+}
+section#chap2 {
+ page: chap2;
+}
+section#chap3 {
+ page: chap3;
+}
+section#appendix1 {
+ page: appx1;
+}
+section#endcover {
+ page: endcover;
+ position: relative;
+ height: 100%;
+ width: 100%;
+}
+
+@media print {
+ body {
+ padding: 0;
+ }
+
+ @page {
+ size: A4;
+ margin: 1in 1.214in; /* 左右盡量使漢字網格可以在12pt對齊35字 */
+
+ @bottom-center {
+ content: "頁 " counter(page);
+ vertical-align: top;
+ }
+
+ .pagedjs_margin.pagedjs_margin-top-left, .pagedjs_margin.pagedjs_margin-top-right, .pagedjs_margin.pagedjs_margin-bottom-center {
+ font: 500 10pt var(--page-header-font);
+ }
+
+ /* dot-dot-dash https://stackoverflow.com/questions/54378607/how-to-create-dash-dot-and-dash-dot-dot-lines-and-rectanges-in-css */
+ .pagedjs_margin-top {
+ padding-bottom: 0.51em;
+ background:
+ repeating-linear-gradient(to right,#000,#000 1px,transparent 1px,transparent 2px) 0 calc(100% - 0.38em)/100% 0.05em no-repeat;
+ }
+ .pagedjs_margin-bottom {
+ padding-top: 0.4em;
+ background:
+ repeating-linear-gradient(to right,#000,#000 1px,transparent 1px,transparent 2px) 0 0.2em/100% 0.05em no-repeat;
+ }
+ }
+ @page {
+ @top-left {
+ content: "傳承字形推薦形體表";
+ vertical-align: bottom;
+ }
+ }
+ @page {
+ @top-right {
+ content: "版本:" var(--version-number, '加載資料失敗,請刷新頁面');
+ vertical-align: bottom;
+ }
+ }
+
+ /* 不同章節的不同header */
+ @page chap1 {
+ @top-left {
+ content: "傳承字形推薦形體表(表一)";
+ vertical-align: bottom;
+ }
+ }
+ @page chap2 {
+ @top-left {
+ content: "傳承字形推薦形體表(表二)";
+ vertical-align: bottom;
+ }
+ }
+ @page chap3 {
+ @top-left {
+ content: "傳承字形推薦形體表(表三)";
+ vertical-align: bottom;
+ }
+ }
+ @page appx1 {
+ @top-left {
+ content: "傳承字形推薦形體表(附錄一)";
+ vertical-align: bottom;
+ }
+ }
+
+ @page endcover {
+ @top-left {
+ content: none;
+ }
+ @top-right {
+ content: none;
+ }
+ @bottom-center {
+ content: none;
+ }
+ .pagedjs_margin-top {
+ background: none;
+ }
+ .pagedjs_margin-bottom {
+ background: none;
+ }
+ }
+
+
+ tr, th, td {
+ page-break-inside: avoid;
+ }
+ th, td {
+ page-break-before: avoid;
+ }
+}
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..d7d2ef2
--- /dev/null
+++ b/index.html
@@ -0,0 +1,236 @@
+
+
+
+ 《傳承字形推薦形體表》
+
+ 不論是中國大陸還是臺灣,都曾調整印刷漢字字形,使它變成趨近楷體的筆形。大家把整形後的寫法稱爲「新字形」。有人詬病這樣做令印刷字形「認楷作母」,破壞美感,強改漢字生境。而相對的「傳承字形」或「傳承印刷字形」,通稱作「舊字形」,則指未向手寫體靠攏、未被整形之寫法。這些字形,與《康熙字典》、《說文解字》等傳統字形規範吻合,一方面較能保存漢字字源或字理,另一方面也比較美觀、比較適合版面排印的需求,兩者可謂相得益彰。即使大陸地區有「語言文字法」,把「新字形」奉爲圭臬,坊間仍有不少傳承字形愛好者。臺灣、香港、澳門及海外華僑地區,更有大量出版物、視像媒體字幕、招牌路牌等等,都以傳承字形的字型排印。傳承字形就像陽光和水般,在日常生活裏無處不在。
+
+
+ 傳承字形向來有文字學學者硏訂的字樣作標準,例如《康熙字典》的字頭字樣是一個重要標準;《大漢和辭典》的字頭字樣也是。不幸的是,今天處理漢字編碼的國際組織,只盲目地着重政權或政權相關組織頒佈的官式字形,冷待過往學界心血。結果,一些政權不尊重傳統,動輒改造傳承印刷字形,它們頒佈的所謂「標準」字形就輕易橫行。不論其形體有沒錯訛、問題或自相矛盾處,都可以不費吹灰之力就列進編碼文件中,供字型製作者「遵從」製成字型。至於學人的心血結晶和刻字工匠多年的美學傳承,就慘遭一些人丟棄、攻擊、嘲弄。有些人甚至公然散佈「傳承字形沒有標準」等謊言,指鹿爲馬。
+
+
+ 爲保護和發揚傳承字形,推動傳承字形推薦形體的現代標準化,我們「I.字坊編輯部」上下同寅經多年功夫,仔細對比、整理多個傳承字形的重要學界標準,先後推出《傳承字形部件檢校表》(後稱《檢校表》)、《傳承字形筆畫表》等順應現今字型製作者需求的傳承字形標準化文件。如今,我們再推出《傳承字形推薦形體表》,明列相關推薦字形對應的電腦編碼,既希望讓字型製作者使用時感到更便利、更貼心,也希望徹底堵住攻擊者的任何話柄。
+
+
+ 漢字數量龐大,以我們的人力物力,難以編訂無所不包的字表。然而我們既然已推出《檢校表》,以部件爲單位,根據字理分拆部件,應當已可處理各種漢字字形問題。我們製作本表,目的是方便字型製作者直接査得推薦字形。它只要包含日常生活裏的常用字和次常用字,已經很足夠。
+
+
+ 目前世界上有多個常用漢字子集,其中好些漢字子集均收錄了大批大陸簡化字。傳承印刷字形雖然也有用於大陸簡化字的實例,但簡化字本身就是人爲地大量及大規模改變漢字形體而成,因此,大家對一般漢字的傳承字形需求明顯比對簡化字的需求大。本表從實用角度出發,暫不收錄大陸簡化字。同理,本表亦暫不收錄日本的新字體略字。可是有些簡化字或略字,跟傳統漢字環境裏的正常漢字或常見異體同形,如「个、仆、医、双、叶、吁、宝、种、糸、缶、胜、芸、达」等,本表也會收錄。
+
+
+ 經權衡後,編者今以臺灣Big5碼所收錄之常用字及次常用字爲基礎,修訂個別有問題的字,補上內木一郎編製的《常用香港外字表》第 1.8 版裏的部份漢字(撇除以推薦形體統一者)及個別的附加字例,作爲本表的收字範圍,相信能滿足絕大部份使用傳統中文場合的漢字需求。
+
+
+ 同時,本表收字主要遵從這些規則:
+
+
+ - 完全同形字只收錄一次。例如「好」既指美善、喜愛,亦爲「婦好」之「好」;「份」既指整體裏的一部份、量詞等,也是「彬」字的古代異體。本表不會收錄兩個「好」字或兩個「份」字。
+ - 有不同音義的形近字分別收錄,絕不相混。例如「刊」和「刋」、「券」和「劵」、「胄」和「冑」、「苟」和「茍」、「苜」和「𥄕」、「萑」和「雈」、「栝」和「桰」、「銛」和「銽」、「朏」和「胐」等組合,前者與後者音義有別,是不同的字,本表皆分列。
+ - 異體字之間,若構形或抽象字形相似,只是當中的構件有少許形近之差異,皆以傳承字形推薦形體統一之。例如「眞」和「真󠄃」、「直」和「直󠄄」、「青」和「青」、「俞」和「俞」、「爲」和「為」、「敎」和「教」、「査」和「查」、「姸」和「妍」、「令」和「令󠄂」、「犮」和「犮󠄂」、「吿」和「告」、「丟」和「丢」等組合,前後兩者皆同音同義,字的構形或抽象字形也相似,只是某些地方的筆畫或寫法相異。其中,前者是傳承字形,字理佔優。後者卻只是手寫時變異而成的形體,有違傳承字形原則。因此我們俱以前者統一之。
+ - 異體字之間,若構形明顯相異,但皆能立足於字理,則並收之。如「峰」和「峯」、「群」和「羣」、「煙」和「烟」、「麪」和「麵」、「𠝹」和「鎅」、「焰」和「燄」、「線」和「綫」、「糉」和「粽」、「雙」和「双」、「釁」和「衅」等。
+ - 異體字之間,若構形明顯相異,但部份形體字理較薄弱,或另有原因,以致不宜取該異體,則以灰底暗紅色標示,並以註釋說明。例如「么」宜作「幺」,「匆」宜作「怱」或「悤」,「裡」宜作「裏」等。
+ - 非全同異體字之間,即使該形體的字理較薄弱,但有已獲約定俗成的義項分化作用,我們會承認該分化。如「着、両」等字,皆有其專指義項並廣爲世人接受,我們並不主張以「著、兩」等字取代之。
+
+
+ 上述規則與Unicode「中日韓統一表意文字」收字原則相似。然而Unicode在實際收字時,不時基於「原字集分離原則」而自打嘴巴,把本應整併收錄的字,分作兩個或多個碼位。Unicode 設立「原字集分離原則」,爲的是呼應當時的技術限制,解決與既有通用字集的對應問題。但自從Unicode的漢字收錄進入擴展 A 區後,Unicode 官方已放棄「原字集分離原則」。而且今天已有異體字選擇器(Variation Sequence)、 CID 字型等技術解決對應問題,「原字集分離原則」已經過時。科技以人爲本,我們絕不應本末倒置,因爲遷就過時的技術、錯誤的碼位區分,而強行收進不符傳承字形的形體。應以字理佔優形體來整併的漢字,還是必須整併。因此本表會遵守上述規則,不會盲目依從「原字集分離原則」。
+
+
+ 我們強烈呼籲字型製作者以字理爲本,在製作傳承字形的字型時,不要盲從「原字集分離原則」這違反傳承字形原則的過時技術副產品。否則,若製作者只把「値」、「靑」、「爲」等傳承字形,放在 5024、9751、7232 這些正體(繁體)中文「事實標準」裏少用的碼位;至於正體(繁體)中文「事實標準」裏常用的碼位503C、9752、70BA,卻放置着違反傳承字形規定的「值」、「 青」、「為」等字形,只會令用戶容易踩中陷阱,誤用非傳承字形。這種做法顯然違反選擇傳承字形用戶之意願,絕不可取。
+
+
+ 在本表,我們把過往Big5碼(參考事實標準的微軟CP950代碼頁,包含倚天Big5延伸中獲大眾接納的部份)以等寬字型標於漢字上方,把Unicode碼以無襯綫字型標於漢字下方。若字之上方標示減號「-」,表示該字沒有Big5碼;若字之Big5碼標示前面帶有「H-」,表示該字的Big5碼源於HKSCS;若一字下方有超過一個編碼,即Unicode 在多於一個碼位上收錄了本應整併起來的字。製作傳承字形的字型時,製作者在這些碼位上都應該放置傳承字形,不應以「原字集分離原則」爲藉口安放非傳承字形。而序跋註釋裏的字碼,若無特別說明,皆指Unicode碼。此外,Unicode 擴展B區起的漢字,至今仍有不少程式不支援,或者尚未與基本區、擴展A區的漢字取齊。因此若非必要,本表盡可能不取擴展B區及其後區域的編碼。
+
+
+ 本表所收錄的形體,皆爲我們廣泛採樣後,整理出既盡力符合字理,也獲大眾約定俗成的寫法,即傳承字形推薦形體。大家可直接以本表字形爲準繩。爲節省篇幅,本表每字只收一形,理論上即《檢校表》的深藍色者。爲了方便字型製作者查閲,編者也在本表附錄了《檢校表》中所推薦的其他異體字形,例如《檢校表》的淺藍色或綠色字形。詳細的部件原則解說可參考《檢校表》的說明。若字型製作者按這些字形製字,我們認爲亦絕無問題,只要統一相同部件的字形處理即可。至於本表尚未收錄的字,只要在本表中翻査其所從部件的字形,並按照《檢校表》的規定,即可知悉該字的傳承字形推薦形體。
+
+
+ 本文檔以 Paged.js 排版,未知 版瀏覽器渲染。
+
+
+
+
+
+
+ 本區以 Big5 碼常用字區所收錄的漢字爲基礎,表後添上用來取代原 Big5 碼常用字區不恰當收字的推薦替換字。至於那些不恰當收字,考慮到 Big5 碼已是正體(繁體)中文地區的「事實標準」編碼,爲免令字型出現空窗,我們仍列於此表一中,但會以灰底暗紅色標示。
+
+
+
+
+
+
+
+
+
+ 本區以 Big5 碼次常用字區所收錄的漢字爲基礎,表後添上用來取代原 Big5 碼次常用字區不恰當收字的推薦替換字。考慮到 Big5 碼已是正體(繁體)中文地區的「事實標準」編碼,爲免令字型出現空窗,我們仍將不恰當收字列於此表二中,但會以灰底暗紅色標示。重出的字則以灰底綠色標示。
+
+
+
+
+
+
+
+
+
+ 有些漢字原Big5碼並無收錄,香港中諮會頒佈了HKSCS增補區,卻收字太雜亂,含有許多錯訛字,不宜全收。同時它仍缺收一些頗有用的字。今參考內木一郎編製的《常用香港外字表》第1.8版,選出當中部份漢字,撇除宜以推薦形體統一者,並另外添上個別的附加字例,列於此表三中。
+
+
+
+
+
+
+
+
+
+ 本附錄列出《檢校表》所接受的其他異體字形。本附錄標記使用的顏色意義如下:本《推薦形體表》所使用的字形且爲《檢校表》首選的字形,以黑色標示;符合字理且廣受今天大眾約定俗成的寫法,以海色(深藍色)標示;符合字理但在今天未必是最約定俗成的寫法,以天色(淺藍色)標示;稍爲遷就美觀需要的常見寫法,則以地色(草葉綠色)標示。詳細的部件解說請參考《檢校表》內文。
+
+
+ 形似部件
+
+ 本表僅按照形似的變體部件歸類在一起。部份部件在更換爲其他異體後可能會導致字源混淆,但是如果字型製作者有合適的原因考量使用異體,編者認爲亦可接受,只要同一部件皆作相同處理即可。
+
+
+
+ 單獨部件
+
+
+ 註釋
+
+
+
+