我想,这个问题可以推广到任何角色;但我的具体用例是表情符号。
我正在编写一个命令行程序,我想检测运行它的计算机是否安装了可以显示表情符号的字体;以及当前终端应用程序是否以该字体显示它们。
目前,我有一个黑客,只是在非OS X上过滤它们;但我不想让那些拥有表情符号设置的Linux用户做短路。我更喜欢以“正确的方式”这样做。
谢谢!
答案 0 :(得分:3)
您的脚本必须:
如果您进入PHP,则可以calculate the bounding box知道表情符号已知的TTF字体,并查看该值是否是支持它的字体的预期值。
您还可以使用GD绘制带有白色字体的黑色内存中图像来模拟字体使用情况,并计算(平均)白色像素数量,以查看其是否符合预期阈值。
您还要求检查当前终端应用程序是否显示它们。为此,您需要能够检查配置,这是非常重要的,因为您需要能够区分所有终端应用程序。 一个实际的解决方案是使用当前字体显示一些表情符号,只询问用户是否可见。毕竟,如果终端应用程序需要支持表情符号,你还需要依赖用户吗?
答案 1 :(得分:3)
<强>击强>
我还没有在不同的环境中尝试这些,所以我不肯定他们会工作 - 但我认为你可以使这种方法有效。基本方法是尝试隐藏渲染并检查渲染是否成功。例如:
echo -e '\xE0\xA5\xA5' | wc -m
wc -m计算渲染的字符数。如果您发现渲染失败导致输入字符串被打印,那么这应该是执行预期长度检查的一种方法。如果您发现渲染失败导致渲染默认符号,那么我建议将echo的输出用于相等检查:
echo -e '\xE0\xA5\xA5' | grep -q 'some-default-failure-symbol'
尝试失败的方法可能看起来很糟糕,但我不认为这是一个标准,所以它可能是目前最强大的方法。
<强> Node.js的强>
注意:仅适用于浏览器,可能是模拟浏览器。不确定模拟浏览器如何或是否会找到本地表情符号包,但它可能是一件容易检查的事情。
有一个node.js模块,它使用非常简单的代码来检查系统/浏览器是否支持表情符号。代码尝试渲染表情符号,并可以判断渲染是否成功。
调用npm包: 如果-表情符号
源代码只有几行,如果您熟悉javascript,我应该很容易理解(我不会在这里复制并粘贴完整代码,以便让Dafrok获得信用): https://github.com/Dafrok/if-emoji