V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
hsfzxjy
V2EX  ›  分享创造

使用 WASM shaper 在 gedit 中播放 Bad Apple!

  •  
  •   hsfzxjy ·
    hsfzxjy · 2023-09-01 18:20:01 +08:00 · 2499 次点击
    这是一个创建于 449 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事先说明:这个想法不是我原创的,最早的出处在 BadAppleFont。我将字体构建和 HarfBuzz 编译的流程做了整理和简化,放到了 Github 上: https://github.com/hsfzxjy/Bad-Apple-Font

    https://www.youtube.com/embed/qFd8vsr8nag

    12 条回复    2023-09-02 17:25:31 +08:00
    hsfzxjy
        1
    hsfzxjy  
    OP
       2023-09-01 18:27:47 +08:00
    额,V 站该如何嵌入 Youtube 视频?

    https://www.youtube.com/embed/qFd8vsr8nag
    hsfzxjy
        2
    hsfzxjy  
    OP
       2023-09-01 18:50:39 +08:00
    懂了

    favourstreet
        3
    favourstreet  
       2023-09-01 19:01:44 +08:00 via Android
    绷不住了,用 WASM ,写赛博书法。

    谁想到给字体里塞 wasm 这个主意的?
    这次是在字体里塞了个视频播放器,下次是不是要在字体里塞一个 3d 引擎了?

    怎么保证安全性?众所周知停机问题不可判定,那是不是给字体里塞一个死循环就能卡爆用户的 cpu 了?
    favourstreet
        4
    favourstreet  
       2023-09-01 19:06:05 +08:00 via Android
    看了视频。感觉这个 shaper 威力有点大,没什么限制的话,迟早有人往字体里直接塞一整个操作系统,在文本框里靠 layout engine 跑操作系统,谁不怕啊~
    hsfzxjy
        5
    hsfzxjy  
    OP
       2023-09-01 19:17:24 +08:00 via Android
    @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 功能十分有限,但是你说的运行过久也确实是个问题,目前没看到官方有说如何处理
    Mitt
        6
    Mitt  
       2023-09-01 20:59:27 +08:00
    @favourstreet #3 其实如果 WASM 的话套个容器,安全性应该不是啥问题,死循环卡爆 CPU 可以靠配额限制 CPU 时钟来解决,包括内存等其他资源都可以限制
    favourstreet
        7
    favourstreet  
       2023-09-01 23:30:44 +08:00
    @Mitt 其实 wasm 本身就是个容器,它已经考虑到了接受任意输入情况下的安全性。但我朴素地认为能整活就等于不安全,太过自由就让人不放心。

    另外,文本 buffer 好像也没什么限制,那岂不是可以实现大部分键盘交互了?既然已经有 Bad Apple 了,期待有人实现在 gedit 中玩东方正作。
    favourstreet
        8
    favourstreet  
       2023-09-01 23:39:12 +08:00
    @Mitt 刚刚想到,wasm 虚拟机本身可以保证接受任意输入情况下的安全性,但 harfbuzz 里跑的 wasm shaper 本身也是接受用户输入的,在这一层上,就难以保证 shaper 不被构造的恶意输入炸了,这一炸谁知道是炸了 wasm 虚拟机、炸了 harfbuzz 、炸了文本框,还是炸了整个进程甚至整个操作系统呢,众所周知,文本框是系统级 bug 的高发地带。
    7gugu
        9
    7gugu  
       2023-09-02 00:47:07 +08:00
    啊这...,牛的
    zthxxx
        10
    zthxxx  
       2023-09-02 15:53:45 +08:00
    可以用来播彩六吗
    hsfzxjy
        11
    hsfzxjy  
    OP
       2023-09-02 16:15:16 +08:00 via Android
    @zthxxx 可以哦( doge )
    proxychains
        12
    proxychains  
       2023-09-02 17:25:31 +08:00
    @zthxxx 一种基于 wasm 的 R6 直播方案
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2637 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:53 · PVG 13:53 · LAX 21:53 · JFK 00:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.