Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

或许可以参考的 repo #1

Open
tanukihee opened this issue Feb 1, 2021 · 1 comment
Open

或许可以参考的 repo #1

tanukihee opened this issue Feb 1, 2021 · 1 comment

Comments

@tanukihee
Copy link

https://github.com/h20y6m/xelatexja

@RuixiZhang42
Copy link
Owner

还蛮新的!

粗读了一下,小结如下:

  1. 分类分得好细(JIS 里有的类别都在)。
  2. 不依赖 fontspec,日文字体的设置居然自起炉灶、从「零」(NFSS)开始,感觉被晒到了(笑)。不过,字体名、OpenType 特性是写死的,感觉不灵活啊。
  3. 码位分类的时候,居然用 global assignment。若把同一个机制拓展到简中、繁中,局部切换就不可能了,每次切换都是全局的。
  4. 抹掉二分、四分的实现比较绕(还是我没看懂玄机?),例如 \vrule width 0pt \kern -0.5\zw。本库直接来 \vrule width -0.5em [*<CJK condensed ratio>]
  5. 英转汉转英,实现方法是 <English> \jpfont <日本語> \selectfont <English>。而 xeCJK 和本库是 <English> {\CJKfont <中文>} <English>。前者不开新的 group,思路很独特(也没看懂玄机)。
  6. 处理直排「对齐」的思路是对的:该动的是西文,而不是一个一个字地去移动中文。直排时,把西文按词放进 \hbox 并向下平移(西文侧躺 90 度,向下即是版面的「向左」),平移量预设为 0.38\zw(88% 减去 50%)。这样,移完的西文基线到汉字字身左线的距离就是 0.12\zw(12%),做到跟横排一样。
    • 本库 SVG 样张的直排里,西文的平移量是 0.36\zw,所以西文基线到汉字字身左线是 0.14\zw,西文大写线到汉字字身右线大概是 0.125\zw,稍微靠右,让西文的下降部不至于太往左边凸。
    • 没记错的话,p(La)TeX/up(La)TeX 系的平移量是让西文的大写字母(用 M 去量)处在汉字字身的正中间。若是 10pt 的 Computer Modern Roman 配 13Q 的日文,那么单侧距离就大概是 0.1305\zw(基线到左线、大写线到右线)。看起来,大家都爱调基线到左线在 12% 到 14% 之间(当然,还是跟字体风格、相对大小有关系)。
  7. 直排「对齐」的思路对,但这个实现方法会让 TeX 无法断词(虽说直排不宜有长篇西文,如有需要完全可以手动断词)。一个解决办法是:先预设不动西文,让 TeX 把段落分行;接着,手动记录断词点(也可能没有断词点);最后,开启自动平移西文,同时手动断词(类似 \hbox{hyphen-}\hbox{ation} 这种操作)。觉得此办法不够好,所以没提交代码上库,只是在样张里 showoff 了一下。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants