排版系统探险计划——第2站——段落书写器

字体
字号(px)
行宽(px)
行高(px)

Knuth-Plass断行算法

段落书写器(paragraph composer)一次排一整段,比每次排一行的单行书写器(single-line composer)排版更加美观。此页面加载了WebAssembly版的Knuth-Plass断行算法,支持Unicode中英文混排,中文标点避头避尾和标点悬挂等。参考了W3C《中文排版需求》Unicode Standard AnneX 14以正确实现排版禁则。

使用说明

控制命令的说明

以下三个命令可以在格式控制命令(见下节)的大括号中使用。

格式控制命令

\everyhbox{<token list>} 将控制命令插入到每个水平盒子(box)前。

\everypar{<token list>} 将控制命令插入到整个段落前,\indent请通过此命令实现。

\spaceskip=<glue> 空格和空白字符对应的间隔(glue)。

\leftskip=<glue> 左边距,插入到新的一行前的间隔(glue)。

\rightskip=<glue> 右边距,插入到一行结尾处的间隔(glue)。

\parfillskip=<glue> 作为段落结尾,插入到段落最后的间隔(glue),一般设置为可伸展至略小于末行长度,以避免末行孤字。如果设置为空,即0plus0minus0,整段文字将排成精确的矩形。

\CJKskip=<glue> 汉字之间的间隔(glue)。

\xCJKskip=<glue> 汉字和西文之间的间隔(glue)。

\everyXA{<token list>} 将控制命令插入到每个避尾的中文标点前。

\XAfillskip=<glue> 避尾中文标点字符后的间隔(glue)。

\everyXB{<token list>} 将控制命令插入到每个避头的中文标点前。

\XBfillskip=<glue> 避头中文标点字符后的间隔(glue)。

\AtBeginXA{<token list>} 将控制命令插入到整组(一个及以上)连续的避尾中文标点前。

\AtEndXB{<token list>} 将控制命令插入到整组(一个及以上)连续的避头中文标点后。


排版系统探险计划——其他站点