攻击iPhone Notes应用程序以获得不可否认的Nit-Picky将文本字体更改为Helvetica的目的

关于上周的很多读者反馈意见“关于iPhone上标记的重要公共服务公告“,如果你在你的iPhone的文件系统周围戳了一下(在iPhone上安装了一个SSH服务器之后)并删除了Marker Felt字体文件/系统/库/字体/,Notes应用程序将使用Arial。

非常好但是,远非理想,因为每个人都知道Arial是Helvetica的劣质淘汰赛许多读者提出的一个建议是简单地制作Helvetica字体文件的副本,将它们重命名为与Marker Felt字体文件匹配,并将Marker Felt替换为具有不同文件名文件的HelveticaThat doesn’t work, because font names are metadata contained within the files themselves; they don’t come from the file names(类似于iTunes中的音乐文件 - MP3或AAC文件本身的名称无关紧要,确定歌曲,专辑和艺术家名称的重要性是元数据。)

但是,只需简单地重命名字体文件就行不通了可以使用字体编辑软件来操作字体元数据本身,可以通过获取Helvetica的副本并替换内部元数据以匹配Marker Felt,或者通过获取Marker Felt的副本并将所有字形替换为来自Helvetica的字形副本一些读者甚至说这很有效读者最常推荐的两种字体编辑工具:FontForge, an open source X11 application that, while ugly and ungraceful in the way that all X11 apps are, is useful and free; andTypeTool,FontLab的跨平台99美元字体编辑器。

不过,这对我来说似乎有些过分我只是想让Notes使用HelveticaSo, rather than hacking the fonts, why not hack the Notes app? This turned out to be rather easy最终指定用于Notes编辑视图的样式的CSS规则在应用程序二进制文件中进行了硬编码Notes应用程序包位于/Applications/MobileNotes.app/; inside the bundle, among other files, is a file namedMobileNotes这就是应用程序二进制文件本身 - 编译器从Apple的Objective-C应用程序源代码生成的程序文件。

我不建议这样做。二进制文件are fragile; make a mistake while editing and it’s likely,很可能,该应用程序将无法正常工作此外,您今天对MobileNotes所做的任何更改都将在本周末之前被覆盖,因为Apple已经表示下一个iPhone软件即将发布。

另一方面,如果你有冲动iPhone的冲动,你现在也可以这样做,因为我强烈怀疑本周迫在眉睫的iPhone软件更新将使现有的黑客入侵/越狱iPhone无法运行Notice how no one’s yet figured out how to install or modify the software on the iPod Touch? Whatever Apple’s doing on the Touch in this regard, I expect them to begin doing on the iPhone this week(我很想被证明是错的。)

所以,无论如何,如何破解你的MobileNotes二进制文件来使用Helvetica:

将MobileNotes应用程序二进制文件的副本从iPhone传输到Mac并使用Hex Fiend,或者你最喜欢的十六进制编辑器(但如果您最喜欢的十六进制编辑器不是Hex Fiend,那么您可能会出现问题如果您不知道如何将二进制文件的副本传输到Mac,则不应该首先尝试这种黑客攻击。)搜索“Marker Felt”你应该找到一个如下所示的字节序列:

font-family:Marker Felt;

改为:

font-family:Helvetica;

必要:You must type two spaces after “Helvetica”, so that the font name occupies the exact same number of bytes as “Marker Felt” (where each character, including spaces, is one byte)它是常规的CSS,所以在字体名称和以规则结尾的分号之间有空格是完全有效的如果Helvetica的名字比Marker Felt的长,那么这个黑客行不通。

保存文件,然后将其复制回iPhone,覆盖原始的MobileNotes二进制文件重启你的iPhone,然后你去,Helvetica在Notes中:

显示Helvetica作为文本字体的iPhone Notes应用程序的屏幕截图。