【发布时间】:2021-03-31 10:52:09
【问题描述】:
对于嵌入式设备上的多语言应用程序,我需要不超过 1mb 的 CJK 字体(或一种韩文和一种中文字体)。我发现这几乎是不可能完成的任务,就像Chinese fonts have around 5mb 和Korean fonts around 4mb。
我已经研究过字体子集,这在我的情况下被证明是困难的,因为我需要用大约 3500 个(英文)字翻译整个应用程序,而且我实际上无法手动选择中文/韩文字符需要。此外,我没有调查受支持的 CJK 语言的子集工具。
我现在在想,肯定还有其他人在处理同样的问题。这个问题有解决办法吗?
【问题讨论】:
-
很难找到小于 1MB 的 CJK 字体。我建议您从 Source Han Sans (github.com/adobe-fonts/source-han-sans) 和子集之类的字体开始——这意味着您需要提前确定要支持的字符库。
-
需要有关您的平台/应用程序的更多详细信息。您需要可缩放字体还是位图。您的系统可以使用什么字体格式 -TTF、ITF、EOT、WOFF、SVG、其他、专有?平台上有哪些资源?什么操作系统,什么图形/GUI库?甚至显示器的分辨率是多少?我遇到这个问题的解决方案是提前考虑并使用支持多语言界面的GUI库。高端 Qt 嵌入式、中端 Segger emWin 和低端 RamTex。当然,RamTex 包含一个从翻译文件生成字形子集的工具。
-
.... ramtex.dk/iconedit/iconedit.htm 采用 Windows TTF 字体并将位图字形生成为 C 代码数据数组。它可以从 Unicode 翻译文本生成字形集 - 仅生成呈现所提供文本所需的字形。这很粗糙,您需要为所需的每种字体大小设置单独的字形集,但您不需要复杂的字体渲染和缩放代码 - 它是经过预处理和嵌入的。它可以独立于 RamTex GUI 库使用。
-
... 生成的 C 代码示例:ramtex.dk/iconedit/fonts-as-c-source-code.htm - 大小取决于字体大小和抗锯齿级别。