事先说明:这个想法不是我原创的,最早的出处在 BadAppleFont。我将字体构建和 HarfBuzz 编译的流程做了整理和简化,放到了 Github 上: https://github.com/hsfzxjy/Bad-Apple-Font
1
hsfzxjy OP |
2
hsfzxjy OP 懂了
|
3
favourstreet 2023-09-01 19:01:44 +08:00 via Android
绷不住了,用 WASM ,写赛博书法。
谁想到给字体里塞 wasm 这个主意的? 这次是在字体里塞了个视频播放器,下次是不是要在字体里塞一个 3d 引擎了? 怎么保证安全性?众所周知停机问题不可判定,那是不是给字体里塞一个死循环就能卡爆用户的 cpu 了? |
4
favourstreet 2023-09-01 19:06:05 +08:00 via Android
看了视频。感觉这个 shaper 威力有点大,没什么限制的话,迟早有人往字体里直接塞一整个操作系统,在文本框里靠 layout engine 跑操作系统,谁不怕啊~
|
5
hsfzxjy OP @favourstreet
> Harfbuzz is therefore restricted to turning a buffer of codepoints for a segmented run of the same script, language, font, and variation settings, into glyphs and positioning them. This is also all that you can do with the WASM shaper; you can influence the process of mapping a string of characters into an array of glyphs, you can determine how those glyphs are positioned and their advance widths, but you cannot manipulate outlines, variations, line breaks, or affect text layout between texts of different font, variation, language, script or OpenType feature selection. https://github.com/harfbuzz/harfbuzz/blob/main/docs/wasm-shaper.md 看起来这种 shaper 功能十分有限,但是你说的运行过久也确实是个问题,目前没看到官方有说如何处理 |
6
Mitt 2023-09-01 20:59:27 +08:00
@favourstreet #3 其实如果 WASM 的话套个容器,安全性应该不是啥问题,死循环卡爆 CPU 可以靠配额限制 CPU 时钟来解决,包括内存等其他资源都可以限制
|
7
favourstreet 2023-09-01 23:30:44 +08:00
@Mitt 其实 wasm 本身就是个容器,它已经考虑到了接受任意输入情况下的安全性。但我朴素地认为能整活就等于不安全,太过自由就让人不放心。
另外,文本 buffer 好像也没什么限制,那岂不是可以实现大部分键盘交互了?既然已经有 Bad Apple 了,期待有人实现在 gedit 中玩东方正作。 |
8
favourstreet 2023-09-01 23:39:12 +08:00
@Mitt 刚刚想到,wasm 虚拟机本身可以保证接受任意输入情况下的安全性,但 harfbuzz 里跑的 wasm shaper 本身也是接受用户输入的,在这一层上,就难以保证 shaper 不被构造的恶意输入炸了,这一炸谁知道是炸了 wasm 虚拟机、炸了 harfbuzz 、炸了文本框,还是炸了整个进程甚至整个操作系统呢,众所周知,文本框是系统级 bug 的高发地带。
|
9
7gugu 2023-09-02 00:47:07 +08:00
啊这...,牛的
|
10
zthxxx 2023-09-02 15:53:45 +08:00
可以用来播彩六吗
|
12
proxychains 2023-09-02 17:25:31 +08:00
@zthxxx 一种基于 wasm 的 R6 直播方案
|