zoukankan      html  css  js  c++  java
  • 「2013-9-5」Configure WingIDE for better display of East Asian Glyphs

    很久没写软件配置相关的博客了。这次对于 WingIDE 在 Windows 下的字体配置,折腾了好一阵子,略曲折,也反映了「不清楚原理和背景的情况下,盲人摸象的效率低下是必然」这条放之四海而皆准的赤果果的真理。记录下。

    WingIDE 版本是 4.1.13-1,界面部分采用的是 gtk2 以便于跨平台。遇到的问题是:在 source code 字体设置上,如果设置成「Courier New」(我最习惯的等宽字体),那么中文显示不正常;如果设置成微软雅黑「microsoft yahei」或者宋体「simsun」,那程序部分的字体就不好看。

    起初搜索了一下解决办法,很快就找到了一个混合字体的解决方案,基本思路是,将雅黑字体和 Consolas 字体混合起来,下方的截图来自此方案的链接

    image

    这种方法非常直截了当,可惜我并不习惯 Consolas 字体。于是按照上述博客里提供的制作混合字体的方法,试着做了一把「雅黑-Courier New」混合字体(点此下载)。最初只是简单的用 Courier New 里的 ascii 字符集覆盖雅黑里对应的 glyph,并没有针对「Format – Smoothing ...」和「Format – Settings ...」做修改,结果并不理想,等宽英文字体的锯齿现象很严重;考虑到可能是字体配置导致的差异,于是尝试将 Courier New 字体的 Smoothing 和 Settings 里的选项,拷贝到雅黑对应的字体配置里,但结果依然不太理想……

    image

    在「混合字体」这种方案下浪费了很多时间但无显著成果后,开始寻找其他办法。这次算是找对了方向,抛开了 WingIDE 这个关键字,直接从 gtk2 提供的原生功能入手,很快就找到了一篇 wordpress 上的博客。换句话说,pango 本身就有「顺位查询」的设计,类似 office 里设定「英文字体 - 中文字体」的混合显示;拿如下截图里对于 sans 的设定来讲,如果某个 glyph(如某个中文字符)在 arial 里没查询到,就会顺序查询 browallia 字体,以此类推,直到成功查询到指定的 glyph 或者失败……

    image

    剩下的解决办法,就相对自然了,在 %Wing IDE 4.1%ingtk-binetcpangopango.aliases 文件里,设定 monospace 和 courier 的别名,基本就ok了(后面再解释为何只是「基本ok」)。别名里的「yahei courier new」是上文提到的「雅黑-Courier New」混合字体的 font family name。

    courier = "Courier New,yahei courier new"
    sans = "arial,microsoft yahei"
    serif = "times new roman,microsoft yahei"
    monospace = "Courier New,yahei courier new"

    上面之所是说「基本ok」,是因为 pango aliases 只是设定了别名,并没有设定字体大小。WingIDE 里 user interface 选项卡里,可以设定「source code font/size」,但似乎存在「无法选中 monospace」的诡异 bug…… 所以,可直接在配置的文本文件中,即 %your_user_name%AppDataRoamingWing IDE 4preferences 文件里,做如下修改。

    edit.default-encoding = 'utf_8'
    edit.default-font = 'monospace 10.5'
    edit.gtk-input-method = 'Default'

    到这一步,就算是搞定了,enjoy 漂亮顺眼滴字体吧有着高尚趣味(连字体也不肯放过)的代码仔们!…… 囧

    P.S.

    最后解释下,上面的「别名」设定里,为何不使用微软自带的雅黑字体,而采用自己制作的「混合字体」。这可并不是(纯粹)因为后者是自己做的所以显得略亲切一些…… 如下两张图,分别是微软自带雅黑和「雅黑-Courier New」,后者的行高和 Courier New 保持一致,而前者则显得偏高,好比是 office word 里「单倍行距」和「1.5 倍行距」的区别。

    image  image

    如果和我一样,喜欢紧凑型的代码布局,就用混合字体;如果喜欢行高较松散的布局,直接使用「microsoft yahei」就好。

  • 相关阅读:
    确保消息产生前数据库操作已提交
    信息披露和公司简介总结
    1、清空所有,给当前添加/2、清空上一个,给当前添加。
    不能作为判断条件的:
    excel表格 函数功能
    一种ui app写法
    正则中使用变量及数组去重的方法
    鼠标锁定(消失),进入无限滚动状态
    transform 的旋转 ,3d效果,要添加3d效果的父级加上景深perspective。 3d效果的容器加上 transform-style:preserve-3d。
    rem布局,在用户调整手机字体大小/用户调整浏览器字体大小后,布局错乱问题
  • 原文地址:https://www.cnblogs.com/jtuki/p/Configure-WingIDE-for-better-display-of-East-Asian-Glyphs.html
Copyright © 2011-2022 走看看