V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
plqws
V2EX  ›  Windows

Atom / VS Code 在不重新编译的情况下启用 MacType

  •  1
     
  •   plqws · 2015-07-29 16:50:26 +08:00 · 3737 次点击
    这是一个创建于 3412 天前的主题,其中的信息可能已经有所发展或是发生改变。

    参考/翻译/扩展
    原文地址: http://www.jianshu.com/p/7432489e0d3b

      很多使用 Atom / Visual Studio Code 的朋友会发现 MacType 无法正常地渲染,其原因和 Chrome 37+ 失去渲染功能一样,是因为 Chromium 默认开启了 DirectWrite 字体渲染功能,所以就造成了 MacType 失效的后果。
      通过谷歌参阅了很多资料,Github 上全都是推荐用开启 CSS3 抗锯齿的方法,但是我尝试后效果并不明显。还有一种办法就是 Clone 一份源码主动修改 Flags 的设置,然后重新编译,我觉得太麻烦就先不考虑这种做法了。返回搜索结果,有一篇日语的搜索结果吸引了我的注意:

    谷歌搜索结果

    原文如下:(地址 http://silight.hatenablog.jp/entry/2015/07/02/001518)

    2015年6月26日に1.0.0が公開されたAtom Editorですが、WindowsではDirectWriteがデフォルトで有効になっており、MacTypeなどのgdi++系ソフトとの相性が良くありません。

    一応DirectWriteを無効にする方法があるのでここに書いておきます。

    Atom Editorは終了しておきます。
    「app.asar」をバイナリエディタ(Stirlingがオススメ)で開きます。
    場所はC:\Users\(ユーザー名)\AppData\Local\atom\app-1.0.0\resources\app.asar
    「'direct-write': true,」で検索し、「'direct-write':false,」に書き換えます。
    trueの前の半角スペースは無くてもいいので、半角スペース+trueをfalseに書き換えます。
    残念なことに、app.asarファイルはバージョンアップで更新されるので、バージョンアップの度に毎回やらなければいけません。

    一応Atom Editorのソースコードを(Electronも含めて)読みましたが、現時点ではこれ以外に方法は無さそうです。

    翻译后,大概是这样的流程(Atom 的解决方案):

    • 下载一个 16进制编辑器,原文推荐 Stirling 但是我没有搜索到,所以我就用了 UltraEdit。
    • 用 16进制编辑器 打开 Atom 安装目录下的 /app-1.0.3/resources/app.asar (版本号自己替换),如果显示的是一堆16进制文本,请按快捷键 Ctrl+H 切换至字符串编辑模式。
    • 搜索 'direct-write': true, ,修改为 'direct-write':false,,其中,false:冒号之间不能留有空格,要保持字符数目一样,不然会导致 Atom无法启动。 (具体原因我也不确定,以前用不同长度的字符串 Hex 替换过 Java 的 Class 文件并没有出现过类似的问题,可能是因为有类似 Java 的 META-INF 的完整性检验机制吧)。

    之后就可以启动 Atom,会发现 MacType 已经生效了。

    然而 Visual Studio Code 就更简单了,连 16进制编辑器 都不用了!

    • 退出 Visual Studio Code
    • 用合适的代码编辑器(VSCode 自己也可以 _(:з」∠)_)打开 VSCode 安装目录下的 /app-0.5.0/resources/app/window.js,找到 TicinoWindow 这个函数,其中有 options 变量,值是 JSON 类型的。我们只需要在这个 JSON 类型变量的根节点加上:
    'web-preferences': {
        'direct-write': false
    }
    

    修改后这个变量的效果就像这样子(缩进重新排的 /ω\):

    var options = {
        width: this.windowState.width,
        height: this.windowState.height,
        x: typeof this.windowState.x === 'number' ? this.windowState.x : undefined,
        y: typeof this.windowState.x === 'number' ? this.windowState.y : undefined,
        'min-width': 200,
        'min-height': 80,
        show: showDirectly,
        title: env.appNameLong,
        'web-preferences': {
            'direct-write': false
        }
    };
    

    然后保存退出,启动 Visual Studio Code,MacType 可以正常渲染了!

    原文地址: http://www.jianshu.com/p/7432489e0d3b

    5 条回复    2021-02-25 18:07:05 +08:00
    zerh925
        1
    zerh925  
       2015-07-29 23:13:47 +08:00
    好怀念。。。
    初中在极限(themex.net)就跟着mayi从GDI++开始折腾windows下如何使用LiHei Pro。
    当年梦想就是有一台MacBook
    现在少了好多当年那种折腾劲了
    ayanamist9
        2
    ayanamist9  
       2015-08-09 07:35:16 +08:00
    谢谢,MacType真是Win下的神器。
    leeyuzhe
        3
    leeyuzhe  
       2015-10-13 10:19:48 +08:00
    终于让我找到了!
    bluefalconjun
        4
    bluefalconjun  
       2015-11-20 16:11:35 +08:00
    Nice!!!
    测试 atom 1.20 版本有效.

    另外直接使用 vim 编辑的话 app.asar 文件还是比较清晰的.改起来比较方便.
    wanaiqing
        5
    wanaiqing  
       2021-02-25 18:07:05 +08:00
    请问现在的版本有没有解决方案?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2708 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:13 · PVG 23:13 · LAX 07:13 · JFK 10:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.