Chenyang “Platy” Hsu


Editor. Currently at SSPAI.

Reachable in Shenzhen physically, at me(at)cyhsu.net over port 25, and with the handle “platyhsu” elsewhere.

Scroll down for my recent writings (RSS, archive). You’re also welcomed to see colophon for trivia about me and the site, links for online resources and tools I frequent, and now for my current interests.


在 iOS 主屏幕上添加 iCloud 文件快捷方式


文件操作是 iOS 长久以来让人感到「别扭」的功能弱项。究其原因,很大程度上是 iOS 的文件操作逻辑与桌面系统截然不同:同样是打开一个文档,在桌面端,第一步通常是在文件管理器中找到文档本身,然后再考虑用什么程序打开它;而到了 iOS 上,操作顺序则完全相反——先是打开应用,然后才是找到需要的文档。

这种操作逻辑是 iOS「沙盒」机制的产物。在早期版本的 iOS 中,应用的读写权限被严格限制在其特定的文档目录内,因此打开应用就成了任何文件操作的必经步骤。较新版本的 iOS 略微放松了限制,允许应用读写 iCloud Drive、并通过 Document Provider 扩展相互访问文档,但仍然没有从根本上改变 iOS 的文件操作逻辑。观察 iOS 的「文件」应用的呈现方式,会发现每个应用仍然被赋予了一个独立的文件夹,并且和用户创建的其他文件夹是平级的。这体现的还是一种以应用为中心的思路。

Apple Watch 表盘的设计问题


Apple Watch Series 4 发布后,收到了比较积极的评价。大多数评论都认为,经过四年的摸索,苹果对这一产品的定位和思路已经比较清晰,将开发和宣传的重点聚焦在健康、运动和联系上;硬件迭代虽然不算激进,但逐年积累下来,相比早期版本已经有了相当可观的进化。市场反应也印证了这种积极评价。相比于 iPhone XS 较为平淡的销售情况,新 Apple Watch 在预购中显得紧俏不少,至今仍有不少款式无法做到现货供应。

但这并不代表 Apple Watch Series 4 就已经接近完善了。在最初的肯定过后,爱好者社区很快开始了新一轮的「挑刺」。不过,与往年对续航、性能等比较明显问题的抱怨不同,今年讨论的热点集中于一个细节问题——表盘设计。

苹果 2018 秋季新品的细节探讨


相较于事前的关注度和期待,苹果今年九月的发布会最终成为了比较平淡的一场。iPhone 的升级幅度较以往的「S」年更小,不断抬升的定价也让人们在购买决策时更加犹豫。

但正如往年一样,苹果并没有在发布会上覆盖新产品的所有信息,而是把很多细节留在了参数页面的字里行间。仔细阅读这些参数并相互比较,不仅能对产品有更深刻的了解,也能间接读出苹果的布局、策略等弦外之音。

iPhone

外观:大趋势下的小插曲

作为 iPhone 更新周期中的「S」年,今年新品在外观上与去年的高度一致并不令人奇怪。iPhone X 的继承者 XS 在三围上与前者完全相同,仅重量(177g)上有可以忽略的 3g 增量。XS Max 和 XR 则都接近但略小于与以往的 Plus 机型。

macOS Mojave 动态桌面功能探析


前不久推出正式版的 macOS 10.14 (Mojave),应该可以称为四年前的 Yosemite 以来,macOS 在用户界面上变化最大的一次更新。千呼万唤始出来的原生「黑暗模式」让人耳目一新,也引发了第三方应用的适配热潮。

相比之下,另一项用户界面的新功能——动态桌面(dynamic desktop)受到的关注则少得多。这是一项默认关闭的功能,启用方法是打开「系统偏好设置」>「桌面与屏幕保护程序」,从「动态桌面」中选择系统自带的两套壁纸之一。

译文 | 对抗互联网的欧盟


**译者按:**本文以欧洲近期备受关注和争议的「链接税」立法动态为切入点,分析了为何传统思维指导下的互联网规制措施往往是无效的,甚至适得其反。作者认为,严厉的规制措施会给互联网行业造成高额成本,只有大型企业能够负担,因此反而会强化后者的垄断地位。接着,作者分析了新闻出版在互联网时代的新特征:信息富余导致的买方市场,指出有效规制也应当顺应互联网发展趋势,从利用需求侧入手。作者认为,通过要求互联网公司提高透明度,能够提高用户的权利意识、促进其积极行动,由此造成的公关压力将有效迫使互联网公司做出改变。

数字世界中的纸张——理解 PDF


引言

PDF 是我们打交道最多的文件格式之一。提到这个格式,即使是对技术并不熟悉的用户,也能说出「通用性好」「格式不会乱变」这些优点。但同时,PDF 也是让我们感到困惑最多的格式之一。与 Word 文档等其他常见办公软件格式相比,PDF 似乎有着太多的「怪癖」,例如复制文字困难、几乎没法编辑等等。PDF 软件数量繁多、质量良莠不齐的现状,也进一步让很多用户无法正确理解和使用 PDF。

疑难符号使用与输入指南


一、引言

在电脑和手机上,文本输入是我们再熟悉不过的操作。但提到输入,很多人首先想到的只是输入文字,而符号——包括标点符号和特殊字符——的输入则往往不太受到重视。观念上,这似乎是一件非常琐碎而简单的事情,不值得单独讨论和专门学习。

真的是这样吗?请试试看能不能答得出下面几个问题:

英文中的右单引号、缩写词中的撇号和表示英尺的「撇」是一个符号吗?它们是垂直的还是弯曲的?

译文 | ‘The Developer Migration’


WWDC 每年开场视频的固定主题都是向开发者致敬。相比于几次往年视频以开发者的作品——应用——为主角,今年的视频直接聚焦于这个群体本身,用比喻的手法将全球开发者前来参会的情景描绘为一个「物种」大迁徙的过程,以生物观察的视角和纪录片式的口吻勾勒了 WWDC 会场中的片段。

我个人对这个视频持保留态度。诚然,视频的拍摄手法非常新颖、制作质量一贯地突出;但这个「物种」的比喻未免有些牵强,其中强调的某些特质更像是对开发者的刻板印象——我虽然不是开发者,但也不免怀疑有几位开发者会认同「昼伏夜出」的生活状态是本性使然、而非工作压力所致。另外,旁白虽然文采颇佳,但似乎有些过度渲染,听起来有种「尬聊」的感觉。

Kobo 系统使用和修改综述


激活

  • Kobo 首次开机需要联机登录账号来激活。
    • Kobo 的激活服务器在中国大陆无法访问,需要连接可以正常访问互联网的电脑,使用 Kobo Desktop 客户端来激活。
    • 大量指南提出通过向 .kobo 目录拷贝其他用户已激活设备中的 KoboReader.sqlite 文件来绕过激活,原理是该文件中的 user 表中存储了用户登录信息。显然,这是极其错误的做法。
  • 登出账号会抹掉 Kobo 上的内容,并且需要重新激活。
    • Kobo 的登出操作实质上是对一系列目录执行 rm -rf 命令,其中包括上述 .kobo 目录。

系统与修改

  • 与 Kindle 等阅读器类似,Kobo 的系统软件是一个高度定制化的 Linux。
    • USB 模式下的根目录挂载在 Kobo 系统的 /mnt/onboard/ 下。
    • 根目录下的 .kobo 目录存储了 Kobo 系统对外暴露的重要配置文件。
  • Kobo 系统软件的桌面环境称为 Nickel。
  • Kobo 系统默认停用了截图功能。若要启用,需要手动编辑 USB 目录下的 .kobo/Kobo/Kobo eReader.conf,并在其中的 [FeatureSettings] 段后加入 Screenshots=true,然后就可以通过按电源键来截图。电源键的原始功能在删除这条配置前会失效。
  • 系统升级可以通过设备自动下载或 Kobo Desktop 软件进行。
    • 在国内网络环境下,最快捷的方法是直接下载对应版本升级包,将其中所有文件解压到 /.kobo 目录,然后弹出 Kobo 磁盘。设备会自动开始升级。
    • 事实上,Kobo 系统会在检测到 /.kobo 目录下的任何 KoboRoot.tgz 文件时,自动重启并将其中文件拷贝或替换到系统分区中。因此,可以通过自制 KoboUpdate.tgz 文件来达到修改系统文件的目的。
    • 像早期的 Kindle 一样,Kobo 升级时不检查升级包版本是否大于当前系统版本,即可以任意降级到偏好的版本
    • Settings > Device information > Factory Reset 会将系统版本回滚到出厂版本。
  • 民间对 Kobo 系统的主要修改(patching)工具来自 MobileRead 论坛上的 GeoffR
    • 该 patching 工具为版本特定,每次升级系统需要等待放出针对该版本的 patching 工具,重新修改。
    • 工具的原理是:修改升级包中的 /usr/local/Kobo 中的配置文件,并将经修改的文件重新打包成升级包,然后通过 Kobo 的升级机制替换到系统中。
    • 工具的使用方法是:将对应版本的原版升级包(.zip 文件)拷贝到 patching 工具中的 $systemVersion_source 目录下,然后用文本编辑器打开同目录下几个 .patch 文件,根据其中注释部分的提示修改文件内容来启用希望作出的修改。完成后,运行 $systemVersion.sh 脚本,获得 $systemVersion_target 目录下的 KoboRoot.tgz 文件;用手动更新系统的方式安装该文件。
    • 用户 oren64 额外提供了基于 GeoffR 方法的大量修改脚本,例如修改主屏幕布局。
  • Kobo 安装 KOReader 非常简单。
    • 与很多在其他嵌入系统上运行自制软件类似,在 Kobo 上运行 KOReader 需要两步:安装一个启动器(launcher),和安装 KOReader 本身。
    • 目前民间流行的启动器是 KSM (Kobo Start Menu) 09,其同样通过引导系统安装一个自制的升级包来安装,并且通过在原生桌面环境 Nickel 下浏览特殊的自制图片来启动(非常类似 PSP 3000 下运行 Prometheus 自制系统,表明原理应该同样是利用内存溢出。)
    • 安装 KSM 后,系统每次启动会首先进入到 KSM 菜单;同时,当检测到存在 /.kobo/KoboRoot.tgz 文件时,KSM 也会首先接管系统引导并询问是否安装该升级包。
    • 安装 KSM 后,将 KOReader 安装包拷贝到根目录下的 .add 目录中,然后即可在 KSM 菜单中启动 KOReader。
  • MobileRead 论坛上的一个帖子列举了其他对系统的各种修改。

字体与字典

  • Kobo 原生支持更换自定义字体。自定义字体存放于根目录下的 fonts 目录。
    • 字体格式可以是 OpenType 或 TrueType。
    • 要让粗体和斜体正常显示,拷入的属于同一家族的字体文件,其 PostScript Name 中的 Font Family 必须具有相同的值。否则,Kobo 将认为其属于不同的字体家族。
      • 可以通过 FontForge 来修改字体文件的 PostScript Name。在 macOS 上运行 FontForge 需要安装 XQuartz 框架。
  • Kobo 的字典位于 /.kobo/dict
    • 英文字典的文件名为 dicthtml.zip,其他语言的字典名形如 dicthtml-$sourceLang-$targetLang.zip,如英日字典名为 dicthtml-en-ja.zip
    • 要修改字典,只要用下载得到的字典文件替换那些不常用的内建字典。
    • 应当将内建的英日字典替换为中文字典。如果将其他字典替换为中文字典,会出现汉字过小的显示问题。

CJK 支持

  • Kobo 由于被日本企业乐天(Rakuten)收购,对日文支持较好。其系统内建了三个日文字体,两个来自森泽(Morisawa):Gothic MB101(ゴシック MB101,PostScript Name 为 A-OTF Gothic MB101 Pr6N R),和 UD Kakugo(UD 角ゴ,PostScript Name 为 KBJ-UDKakugo Pr6N M,这也是任天堂 Switch 的 UI 字体);另一个来自 FONTWORKS,著名的筑紫明朝(TsukuMinPr6N)。
    • 很奇怪的是,Kobo 西文界面全部使用衬线体 Georgia 作为界面字体,而日文界面却选用了两个无衬线体,又因为其 list view 中大量使用的斜体,显示效果非常扎眼,可以认为是典型的失败 l10n 案例。
  • Kobo 原生系统没有任何中文支持。随附的日文字体可以显示部分汉字,未包含的汉字在主界面中显示为方框,在阅读界面中显示为空白。
  • 可以通过拷入中文字体解决阅读中文书籍的问题。
  • 要在 UI 上正确显示中文,需要修改系统文件,并拷入伪装为系统内建日文字体的中文字体。
    • 首先,制作一个 KoboRoot.tgz 升级包,在其中的 ./usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/fonts 路径下放入两个虚假的空字体文件 Gothic MB101.otfRyumin.otf,安装该升级包,从而使系统内建的日文界面字体失效。
    • 其次,用 FontForge 将欲作为界面字体的中文字体的 PostScript Name 改为 KBJ-UDKakugo Pr6N M,然后拷入 fonts 目录。
      • 应当使用 GBK 字符集的中文字体来修改。
    • 最后,任意打开一本电子书,唤出字体菜单,使 Kobo 系统发现 font 目录中的「内建字体」。这时 UI 中的中文已经可以显示。
      • 每次重启系统(更准确地说是启动 Nickel 图形界面),都需要重复该步骤以显示中文。

电子书格式

  • Kobo 宣称支持的格式有 14 种,即:EPUB, EPUB3, PDF, MOBI, JPEG, GIF, PNG, BMP, TIFF, TXT, HTML, RTF, CBZ, CBR。
  • Kobo 使用的主力电子书格式是 ePub,不支持 Amazon 的 .azw/.azw3 格式。
    • 但是,Kobo 对标准的 ePub(.epub) 文件支持较差,许多高级特性(例如阅读时间统计、快速翻页)等只在阅读其私有的 Kobo ePub(.kepub) 格式时可用。
    • 可以用 Calibre 将标准的 ePub 文件转换为 Kobo ePub 格式;为此,需要先在 Preferences > Plugins 搜索安装 KePub Input 和 kePub Output 插件。也可以使用命令行工具 kepubify
    • 转换好的 .kepub 文件可能不会被 Kobo 正确识别,需要手动将后缀名改为 .kepub.epub。
      • 一个简单的方法是用 Automator Service 或 Hazel 监控 Kobo 的根目录,规则为当有文件的后缀名是 .kepub 时,自动追加 .epub。
  • Kobo 对 PDF 的支持非常差,几乎不可用。KOReader 下表现良好,表明并非性能问题。

电纸书的另一种定义——Kobo Aura ONE 体验


一、六英寸的暴政

一个产品能获得的最高荣誉,莫过于成为它所属品类的代名词。

在消费数码领域能做到这一点的,除了 iPad 之于平板,大概就是 Kindle 之于电纸书。随便问一位身边朋友,他未必知道电纸书背后的技术细节,但几乎都会对 Kindle 有所耳闻。

不可否认,Kindle 这样的品牌影响力是实至名归的,其背后是亚马逊良好的产品质量和完善的内容生态。但当「该买哪种电纸书」变得等同于「该买哪个型号的 Kindle」时,我们的选择余地和想象空间也就不可避免地受到了限制。