让Mathematica前端服从FontFamily选项

时间:2011-05-02 12:47:57

标签: fonts wolfram-mathematica mathematica-frontend

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

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

编辑:以下是一些测试代码:

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

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

(SimSun附带XP和 也包含所有这些字符,但不确定是否在所有版本中。)

编辑2:我在Windows XP上(East Asian language support enabled),我想知道其他操作系统的结果是否有所不同。

Fonts in Word Fonts in Mathematica


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

3 个答案:

答案 0 :(得分:4)

可能是mathematica正在用邻近字体替换您的Font-Family设置。运行

Options[$FrontEnd, FontSubstitutions]

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

答案 1 :(得分:4)

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

这是获取正确字体系列名称的简便方法

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

image

答案 2 :(得分:1)

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

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

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

作为FontFamily,它实际上是fontname的ChineseSimplified版本的Unicode表示形式:

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

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

我认为,至少在英文版Mathematica中,FrontEnd总是试图将CJK角色首先解释为日文角色,如果失败(这意味着角色没有出现在 #Japan 中) UnicodeLanguageFontMapping.tr 部分,查找#中文简化部分。然后在 UnicodeFontMapping.tr (甚至还有一个Klingon条目LOL)中定义了不同语言的默认字体,它们链接到@JohnFultz的建议。