Заставить интерфейс Mathematica подчиняться опции FontFamily
Когда дело доходит до китайских иероглифов, я не могу заставить Front End of Mathematica использовать шрифты по своему выбору. Как я могу заставить его использовать нужные мне шрифты?
Здесь я предоставляю два скриншота, чтобы показать проблему, один из Word (вверху), другой из Mathematica на WinXP, оба отображают одну и ту же строку. Обратите внимание, что Mathematica использует несколько разных шрифтов (я думаю, что он использует замену шрифта, когда шрифт, который он пытается использовать первым, не содержит глифа - однако указанный мной шрифт содержит все глифы, которые мне нужны!). Здесь я использую шрифт Microsoft YaHei, который поставляется с Win7, но также доступен для загрузки для XP.
РЕДАКТИРОВАТЬ: Вот некоторый тестовый код:
str = "肖诮陗俏削帩消峭捎绡莦弰悄焇琑逍㲖㲵䏴哨娋宵屑綃梢痟睄筲艄萷销䇌䘯趙揱旓硝稍踃輎矟䌃箾蛸誚榍蕱銷鞘潲碿糏霄䴛韒髾鮹鞩魈颵"
Style[str, Large, FontFamily -> "SimSun"]
(SimSun поставляется с XP и должен содержать все эти символы, хотя не уверен, что во всех версиях.)
РЕДАКТИРОВАТЬ 2: Я нахожусь на Windows XP (с включенной поддержкой восточноазиатских языков), мне интересно, отличаются ли результаты на других ОС.
Резюме. Похоже, что поведение зависит от конкретной ОС и установленных шрифтов, и, к сожалению, нет никакого способа сделать шрифты единообразными (даже если существует один шрифт, содержащий все глифы).
3 ответа
Это может быть Mathematica заменяет ваш Font-Family
установка с соседним шрифтом. Бег
Options[$FrontEnd, FontSubstitutions]
предоставит вам список замен, который использует Mathematica.
Имена семейств шрифтов не эквивалентны именам файлов системных шрифтов. Вы можете прочитать эти названия шрифтов по пути ниже.
Это простой способ получить правильное имя семейства шрифтов
- Во-первых, введите текст, например, "我们", отредактируйте его до "целевого шрифта" с помощью меню Mathematica.
- Во-вторых, добавить
//InputForm
, После запуска ячейки вы получите правильное имя шрифта. На моем компьютере имя шрифтовой семьи для "楷体" - "¿ [Not]Ìå_GB2312". Потрясающие.
Для вашего первого редактирования, некоторые шрифты SimSun могут не охватывать достаточный диапазон CJK (некоторые символы в str принадлежат CJK Unified Ideographs Extension A). Там есть замечательный сайт, в котором кратко описаны диапазоны многих восточноазиатских шрифтов Unicode.
Для вашего второго редактирования, я думаю, что вы хотели бы использовать
"\[CapitalIHat]\[Cent]\[CapitalEGrave]\[IAcute]\[CapitalNTilde]\[CapitalARing]\.ba\[CapitalUAcute]"
как FontFamily, которая на самом деле является представлением Unicode версии шрифта ChineseSimplified:
FromCharacterCode[ToCharacterCode["微软雅黑", "CP936"]]
Это хорошо работает для моей английской версии Windows 7.
И я думаю, что, по крайней мере, для английской версии Mathematica FrontEnd всегда пытается сначала интерпретировать символ CJK как японский символ, в случае неудачи (что означает, что этот символ не появляется в разделе # Japanese в UnicodeLanguageFontMapping.tr), ищите # Китайский упрощенный раздел. Тогда шрифты по умолчанию для разных языков определяются в UnicodeFontMapping.tr (есть даже запись клингона LOL), которая ссылается на предложение @JohnFultz.