请考虑添加一个接口来检测操作系统/平台名称,例如windows
或linux
。
ctex
包为例,已经实现了\ctex_detected_platform:
我们在\sys_if_platform_(unix|windows):(pTF)
有\c_sys_platform_str
l3candidates
:它们对您有用吗?
希望也测试 macos,因为fontspec
等可能有不同的行为。
我看到这只是通过在 macOS 中查找“标准”文件来完成的,因此不需要 write18 并且应该很快。 没有我的反对。 你怎么看约瑟夫?
使用GitHawk发送
仅供参考:
/Library/Fonts/Songti.ttc
(中文字体)自 macOS 10.9 (Mavericks) 开始存在。/Library/Fonts/Songti.ttc
的存在性测试将失败。/System/Library/Fonts/Palatino.ttc
/System/Library/Fonts/Menlo.ttc
)。感谢您提供额外的详细信息! 测试 Palatino 听起来是一个非常安全的赌注。
这是否包含在现有代码中? 您是否要求我们考虑转向稳定版?
我认为该请求也是针对 \sys_if_platform_ macos:pTF (或类似的)的。 它可以通过检查(比如)mac 特定字体或系统文件的文件的存在来完成。
仅供参考:
抱歉, /System/Library/Fonts/Palatino.ttc
从 10.9 Mavericks 开始存在(对于 10.8 Mountain Lion 或更早版本,它是/Library/Fonts/Palatino.ttc
),
从 10.6 Snow Leopard 到 10.14 Mojave, /System/Library/Fonts/Menlo.ttc
始终存在。 这可能是一个更安全的测试。
我的“TeX 横幅”计划行得通吗? 我们必须做一点工作才能对原语进行排序 ((u)pTeX/XeTeX),但这是一个明显的地方,可以找到明确的操作系统细节。
当前的 TeX 横幅并不总是包含平台名称。
使用 pdfTeX 我已经看到 Debian 构建提供(TeX Live 2018/debian)
和 Win32 构建提供(TeX Live 2018/W32TeX)
,但其他人不包含任何字符串。
对于 e-(u)pTeX,我们已经有了横幅原语的候选实现: https :
剩下的问题是它的名称(\epTeXbanner、\eptexbanner,与更通用的像 \enginebanner?)和必要性。
@aminophen听起来这种方法行不通:我不记得 MacOS TeX 系统在横幅中有什么。 所以这不值得担心,我怀疑。 可能寻找标记文件是我们能做的最好的事情
像基本系统字体这样的东西对于像 OSX 这样的东西来说可能是一个足够好的指标,另一方面,它总是存在未来版本或区域变体没有它的危险。 不知何故,在我看来,如果引擎提供该信息,应该不会太难(前提是人们就他们提供的内容达成一致)
@FrankMittelbach你在\platformname
这样的东西是原始的吗? 可能会在 TL 列表中提出?
@josephwright是的,在引擎中定义了类似的结果,以便所有报告都在同一平台上报告相同的值(对于不常见/非标准化平台可能是“未知”)。
@FrankMittelbach肯定比试图用依赖于系统的怪癖来猜测要好。 相关的 C 系统调用应该很容易使用。
只是谷歌搜索,我发现这个: https :
我不确定该功能是否实际上在所有平台上都可用。 另外,我不知道返回的“sysname”的完整列表。
-- 无论如何,如果您选择提出引擎级添加,我希望这是关于架构信息的最后一个建议。 我的意思是,如果将来有可能提出建议(例如检测 32/64 位,或检测操作系统修订版),也应该在这里提出。 我对不时添加这样的新原语不太舒服,因为在各种平台上进行测试通常很困难。
我认为目前我们可能已经在expl3
尽可能多地涵盖
@josephwright对不起,我本想回到这个问题上。 IMO 将/System/Library/Fonts/Menlo.ttc
为一种快速而强大的方法来查询我们是否在 mac OS 中运行是非常安全的。 它已经存在很长时间了,因此可以在旧平台上运行; 它是操作系统的核心部分,因此极不可能消失,并且在跨区域安装时应该是健壮的; 它走在一条不太可能在其他平台上复制的道路上; 字体文件Menlo.ttc
本身 AFAIK 不能以任何 3rd 方方式使用。
我建议添加这个测试,可能发生的最坏情况是,如果它确实得到一些使用,并且发现有一些边缘情况,我们可以通过原语或类似方法探索更强大的操作系统检测。 如果你愿意,我可以为此添加一个分支吗?
@wspr计划是否只是拆分当前的\sys_if_platform_unix:(TF)
以至于它不适用于 MacOS? 或者你想要一个单独的\sys_if_platform_macos:(TF)
测试? 我可以看到两种方法的逻辑。
@josephwright我认为“如果 unix”会为 mac OS 返回 true。 可能也适用于 Linux 的 Windows 子系统?? 我无法测试。
@wspr我检查了 WSL:它报告了“ unix
”。
目前我们有\c_sys_platform_str
将是windows
或unix
:我们会在 MacOS 上更改它吗?
在 5/6/19 10:37,约瑟夫·赖特写道:
@wspr https://github.com/wspr我检查了 WSL:它报告了“|unix|”。
目前我们有|\c_sys_platform_str| 将是 |windows| 或者
|unix|:我们会在 MacOS 上改变它吗?
这与 \sys_if_engine_ luatex:TF和
\c_sys_engine_str 我们遇到了其他一些问题。
我建议将 \c_sys_engine_str 和 \c_sys_platform_str 设为特定
尽可能(在合理范围内,因此不包括版本和其他内容),但是
允许几个 \sys_if_engine_... 和 \sys_if_platform_... 为真。
我的意见并不强烈。
我同意布鲁诺...
需要提及的是,在 macOS Catalina (10.15) 中, Songti.ttc
和许多其他字体被移至/System/Library/Fonts/Supplemental/
。
最有用的评论
我认为该请求也是针对 \sys_if_platform_ macos:pTF (或类似的)的。 它可以通过检查(比如)mac 特定字体或系统文件的文件的存在来完成。