17

说到汉字,我无法让 Mathematica 的前端使用我选择的字体。我怎样才能让它使用我需要的字体?

在这里,我提供了两个屏幕截图来显示问题,一个来自 Word(顶部),另一个来自 WinXP 上的 Mathematica,两者都显示相同的字符串。请注意,Mathematica 使用了几种不同的字体(我猜当它首先尝试使用的字体不包含字形时,它会使用字体替换——但是我指定的字体包含我需要的所有字形!)。这里我使用的是 Win7 自带的 Microsoft YaHei 字体,但XP 也可以下载

编辑: 这是一些测试代码:

str = "肖诮陗俏削帩消峭捎绡莦弰悄焇琑逍㲖㲵䏴哨娋宵屑綃梢痟睄筲艄萷销䇌䘯趙揱旓硝稍踃輎矟䌃箾蛸誚榍蕱銷鞘潲碿糏霄䴛韒髾鮹鞩魈颵"

Style[str, Large, FontFamily -> "SimSun"]

(SimSun 随 XP 一起提供,也应该包含所有这些字符,但不确定是否在所有版本中。)

编辑 2:我在 Windows XP 上(启用了东亚语言支持),我想知道其他操作系统上的结果是否不同。

Word 中的字体 Mathematica 中的字体


摘要: 似乎行为取决于特定的操作系统和安装的字体,不幸的是,似乎没有办法使字体统一(即使存在包含所有字形的单一字体)。

4

3 回答 3

4

可能是mathematica 正在用Font-Family相邻字体替换您的设置。跑步

Options[$FrontEnd, FontSubstitutions]

将为您提供mathematica 使用的替换列表。

于 2011-06-09T11:51:11.977 回答
4

字体系列名称不等同于系统字体文件名称。您可以通过以下方式阅读这些字体名称。

这是获得正确字体系列名称的简单方法是

  • 首先,输入一些文本,例如“我们”,使用 Mathematica 菜单编辑您的“目标字体”。
  • 其次,添加//InputForm. 运行单元格后,您将获得正确的字体名称。在我的电脑中,“楷体”的字体家族名称是“¿ [Not]Ìå_GB2312”。惊人的。

图片

于 2012-09-21T00:45:05.643 回答
1

对于您的第一次编辑,某些 SimSun 字体可能无法覆盖足够的 CJK 范围(str 中的某些字符属于CJK Unified Ideographs Extension A)。有一个很棒的网站总结了许多东亚 Unicode 字体的覆盖范围。

对于您的第二次编辑,我想也许您想使用

"\[CapitalIHat]\[Cent]\[CapitalEGrave]\[IAcute]\[CapitalNTilde]\[CapitalARing]\.ba\[CapitalUAcute]"

作为 FontFamily,它实际上是字体名称的简体中文版本的 Unicode 表示:

FromCharacterCode[ToCharacterCode["微软雅黑", "CP936"]]

它适用于我的 Windows 7 英文版。

而且我认为,至少对于英文版 Mathematica,FrontEnd 总是首先尝试将 CJK 字符解释为日文字符,如果失败(这意味着该字符未出现在UnicodeLanguageFontMapping.tr的# Japanese部分中),请查找#中文简体部分。然后在UnicodeFontMapping.tr中定义了不同语言的默认字体(甚至还有一个克林贡语条目 LOL),它链接到 @JohnFultz 的建议。

于 2012-01-08T03:04:24.960 回答