Noto CJK 字体不能与 ConTeXt 一起使用吗?

Noto CJK 字体不能与 ConTeXt 一起使用吗?

诺托 CJKfont 是 Google 和 Adob​​e 开发的 OpenType CJK 字体。

在 ConTeXt 中,如果我写

\definefontfamily [myfamily] [serif] [Noto Serif CJK SC]

然后context会在加载 Noto 字体时挂起。它会抱怨:

loading of table 'vorg' skipped
invalid index in single format 1: 64605 -> 67219 (max 65535)
rule 1 in gsub lookup 's_s_5' has empty lookups

然后它什么都不打印。内存使用量迅速上升到几 GB。我不得不手动终止该程序。

但是该字体单独使用 XeTeX 或 LuaTeX 效果很好。如何才能让它与 ConTeXt 配合使用?

答案1

对我来说,它运行起来没有问题。但是,构建缓存占用了我 50% 的 RAM,即 8 GB!

这是汉斯的官方声明关于情况

这些字体非常大……当需要更多字体时,lua 中的内存使用量可能会很大,因为分配量会增加一倍,但最终字体会非常高效地存储在缓存中,因此这只是一次性的内存使用

我正在使用mtxrun构建字体缓存:

$ mtxrun --script font --convert NotoSerifCJKsc-Regular.otf 
otf reader      | loading of table 'vorg' skipped
otf reader      | invalid index in single format 1: 64605 -> 67219 (max 65535)
otf reader      | rule 1 in gsub lookup 's_s_5' has empty lookups
otf reader      | merging 3 steps of 'gpos_single' lookup 'p_s_2'
otf reader      | merging 4 steps of 'gpos_pair' lookup 'p_s_3'
otf reader      | turning pairs of step 1 of 'gpos_pair' lookup 'p_s_3' into kerns
otf reader      | merging 7 steps of 'gpos_single' lookup 'p_s_4'
otf reader      | merging 3 steps of 'gpos_single' lookup 'p_s_5'
otf reader      | merging 2 steps of 'gpos_pair' lookup 'p_s_6'
otf reader      | merging 5 steps of 'gpos_single' lookup 'p_s_7'
otf reader      | 18 steps of 343 removed due to merging
otf reader      | 1 steps of 343 steps turned from pairs into kerns
otf reader      | adding soft hyphen
otf reader      | duplicates: 1 :   (U+02003) @ I00574   (U+03000)
[...snip...]
otf reader      | duplicates: 1 : ➡ (U+027A1) @ I0053A ⮕ (U+02B95)
mtx-fonts       | font: 'NotoSerifCJKsc-Regular.otf' saved as 'noto serif cjk sc.lua'

使用 ConTeXt 运行也很好。以下是 MWE:

\definefont[noto][file:NotoSerifCJKsc-Regular.otf]
\starttext
\noto 樂
\stoptext

在此处输入图片描述

第一次运行花费 50 秒并占用 8GB RAM,但后续运行只需不到 2 秒并且仅占用几 MB RAM。

如果你没有足够的内存,请尝试下载更多 RAM

相关内容