「Digital Typography筆記」修訂間的差異
跳至導覽
跳至搜尋
Tankianting(討論 | 貢獻) |
Tankianting(討論 | 貢獻) |
||
行 1: | 行 1: | ||
{{Book|Donald Knuth|9781575860107}} | {{Book|Donald Knuth|9781575860107}} | ||
這本高德納書主要講到一些排版演算法以及字型和 TeX 相關的東西。 | |||
對於想要重複發明輪子,開發排版系統的人,這本書有他一定的幫助也說不定。 | |||
==第1章與第2章== | |||
講到一些排版的歷史,以及一些排版不美觀的案例,但是後來高德納發現,排版可以用演算法來表示。 | |||
書裏面提到box和glue的概念,段落、行、字元都是box,中間用glue做填充墊,glue定義(space 正常大小, stretch 伸長係數, shrink 收縮係數)。 | |||
如果<math>Box_i, i=1,2,...,n</math>中間有<math>glue_i, i=1,2,...,n</math>,那當<math>\sum glue.space_i < W</math>, | |||
<math>space_i + t * stretch_i, i=1,2,...,n</math>就可以拉伸, | |||
<math>space_i - t * shrink_i, i=1,2,...,n</math>就可以收縮。 | |||
其中上二式 <math>t > 0</math>。 | |||
;斷行演算法 | |||
W 為最終呈現大小,w 為盒子寬度和,z為最小允許收縮量和,x為允許伸長量和,則: | |||
<math>1 + 100t^3</math>是壞度函數,詳細定義如下: | |||
<pre> | |||
1 if W = w | |||
1 + 100 * ((W - w)/y)^3 if W > w | |||
1 + 100 * ((w - W)/z)^3 if w - z <= W < w | |||
∞ if W < w - z</pre> | |||
可以設置懲罰點 penalty points | |||
[[分類:資訊]] | [[分類:資訊]] | ||
[[分類:應用科學]] | [[分類:應用科學]] |
於 2022年9月22日 (四) 00:16 的修訂
這本高德納書主要講到一些排版演算法以及字型和 TeX 相關的東西。
對於想要重複發明輪子,開發排版系統的人,這本書有他一定的幫助也說不定。
第1章與第2章
講到一些排版的歷史,以及一些排版不美觀的案例,但是後來高德納發現,排版可以用演算法來表示。
書裏面提到box和glue的概念,段落、行、字元都是box,中間用glue做填充墊,glue定義(space 正常大小, stretch 伸長係數, shrink 收縮係數)。
如果中間有,那當,
就可以拉伸,
就可以收縮。
其中上二式 。
- 斷行演算法
W 為最終呈現大小,w 為盒子寬度和,z為最小允許收縮量和,x為允許伸長量和,則:
是壞度函數,詳細定義如下:
1 if W = w 1 + 100 * ((W - w)/y)^3 if W > w 1 + 100 * ((w - W)/z)^3 if w - z <= W < w ∞ if W < w - z
可以設置懲罰點 penalty points