前端问题的解决思路

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 $200 免费积分!

“您的字体在 Opera 移动版上显示很奇怪。”

感谢您抽出时间告知我。 请您发送一个截图,方便我查看吗?

哇,这真是奇怪。 我使用自定义字体,通过 @font-face 和第三方服务。 这不仅仅是自定义字体无法加载,然后回退到另一种字体的问题,这种字体可能看起来很奇怪,因为间距等方面不同。 看起来

  • 某些字符在正确的 @font-face 字体中渲染
  • 某些字符在回退字体中渲染
  • 某些字符根本无法渲染(带有 x 的方框)

首先,我知道有两种类型的 Opera 移动浏览器。 “Opera Mini” 和 “Opera Mobile”。 我应该快速了解一下。

{搜索 “opera mini 和 opera mobile”。}

发现一些奇怪的论坛帖子,点了一下,最后来到 一篇不错的博文,解释了它们之间的区别。

在 Opera Mini 中,Opera Presto 浏览器引擎位于服务器上。 在 Opera Mobile 中,它安装在您的手机上。

给我发邮件说字体问题的人说那是 Opera Mobile,所以我会先测试它。 但是,正如我所想,世界上每个人都不知道手机上甚至有不同类型的 Opera 浏览器,如果需要,我会测试另一个浏览器。 事实上,这似乎有点像是 Mini 出现了问题,因为我能想象一个服务器端渲染引擎可能会做一些特殊的操作,比如“仅等待 X 秒”来获取第三方资源,或者类似的事情,导致字体文件下载一半就停止了。

我想知道我是否可以自己复制这个问题。

我这里有个 Kindle Fire,但是它上面有那个奇怪的亚马逊 Silk 浏览器,我认为它不允许我下载任何其他浏览器。 我有一台 Nexus 7,我买来在 Android 上测试,但我无法开机。 我曾经开机一次,但我不得不取下后盖,基本上用刀子戳它,直到它开始工作。 我还没有把它扔进火山里。

也许我应该买一台评价更好的新 Android 设备来测试。 或者一台默认安装了 Opera 的设备。 唉,现在没有时间做这些事。

也许 BrowerStack 可以模拟它? 喔,它可以,不错。

Bingo。

现在至少我可以复制这个问题。 这样,如果我想改变一些东西,就可以测试结果。 不过不幸的是,这个模拟器中没有内置任何 DevTools,所以它不能帮助我自行解决问题。

也许有一个模拟器我可以自己运行? 喔,有! 干得好,Opera。

在我等待下载的同时,我会搜索一下。 嗯,Zeldman 先生的一篇帖子,它 **非常** 类似。 他的解决方案是使用第三方服务(例如 Typekit),主要是因为他们在这方面很专业。 或者使用信赖的工具,比如 Font Squirrel 生成器,以确保最佳质量的文件和语法。

不幸的是,我已经在使用第三方服务 (Cloud Typography),所以我不能在那里进行太多控制。 我会继续自己解决这个问题,但我会给他们发一封电子邮件,描述一下这个问题。 最重要的是让他们知道,其次,他们可能会有一个我可以尝试的解决方案。

{写完邮件并发送。}

好了,模拟器下载完成了。

它可以运行。 酷。 下载网站看起来像是你可以使用 Opera Dragonfly 从这里进行调试,但在 阅读相关文档 后,似乎你只能对本地网站进行调试,并且设置起来有点奇怪。 此外,现在我发现,在我拥有的 Opera 版本中,它基本上已经是 Chrome DevTools 了,而不是 Dragonfly。 所以,我需要找到一些旧版本的 Opera 下载才能这样做? 哎呀,我觉得这个兔子洞越来越深了。

也许我应该看看另一个也使用与 CSS-Tricks 相同第三方服务的网站。 我们在 CodePen 上也使用 Cloud Typography 来提供字体,但字体完全不同,所以这应该是一个有趣的测试。

啊哈! 方式相同,都很奇怪。

这是目前最强的线索。 这可能就是 Cloud Typography 的工作方式。 不幸的是,我对它的控制力有限,因为他们会向你提供文件,而且这些文件有意地被混淆了。

但我可以控制是否完全提供样式表。 我知道我不准备完全放弃自定义字体,因为我喜欢它们,而且它们通常运行良好,但我可能可以设法只在 Opera Mobile 上放弃它们。

尝试用户代理检测总是有点诱惑。 Opera 提供了相关文档,说明了他们在那里做了些什么,我总是可以进行测试。 但我犹豫了。 这不仅在 理论上不好,而且每次我这样做都会后悔,因为它要么没有捕捉到我想要捕捉的内容,要么捕捉了太多内容,或者两者兼而有之。 此外,我没有找到任何专门针对这种情况的漂亮 PHP 代码片段,而且我更擅长芭蕾舞而不是编写正则表达式。 我想再次走这条路吗? 不想。

我也可以在这里查看一下分析数据,以了解问题的范围。 这是这里排名前 10 的浏览器

“Opera Mobile” 没有出现在列表中,即使查看了所有 189 个浏览器也是如此。 它必须要么与 “Opera” (1% 的一部分) 或 “Opera Mini” (0.1% 的一部分) 归类在一起。 移动版网站在这个网站上的总比例大约为 3%,其中包括 iOS 和 Android,这两个平台要受欢迎得多。 所以,我认为这可能影响了大约 0.25% 的用户。

我真的很想解决这个问题,但由于影响的用户数量非常少,缺乏良好的测试工具,我无法控制的部分,以及一些修复的潜在风险,我感到无能为力。 我想我会静观其变,看看提供商怎么说。


这只是一个关于成为前端开发者的故事。 它与字体无关,更多的是关于奋斗、过程和选择。