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

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

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

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

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

剩下的解决办法,就相对自然了,在 %Wing IDE 4.1%\bin\gtk-bin\etc\pango\pango.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%\AppData\Roaming\Wing IDE 4\preferences 文件里,做如下修改。

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 倍行距」的区别。

 

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

「2013-9-5」Configure WingIDE for better display of East Asian Glyphs的更多相关文章

  1. [Q&A]VS 2012 MVC4专案与网站的差异?「ASP.NET组态」的Login账号出现在「新旧两组」会员数据库里面?

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/30/mvc4_vs2012_login_member_db.aspx [Q&a ...

  2. [转帖]「知乎知识库」— 5G

    「知乎知识库」— 5G 甜草莓 https://zhuanlan.zhihu.com/p/55998832 ​ 通信 话题的优秀回答者 已关注 881 人赞同了该文章 谢 知识库 邀请~本文章是几个答 ...

  3. 对于前端,「微信小程序」其实不美好

    微信小程序开放公测了,9月底我曾经写过一篇 「微信小程序」来了,其中最后一句:"谢天谢地,我居然还是个前端". 这种火爆的新事物总是令人激动,感谢这个时代. 但是,当我真作为开发者 ...

  4. macOS安装「oh my zsh」

    目前常用的 Linux 系统和 OS X 系统的默认 Shell 都是 bash,但是真正强大的 Shell 是深藏不露的 zsh, 这货绝对是马车中的跑车,跑车中的飞行车,史称『终极 Shell』, ...

  5. 报名|「OneAPM x DaoCloud」技术公开课:Docker性能监控!

    如今,越来越多的公司开始 Docker 了,「三分之二的公司在尝试了 Docker 后最终使用了它」,也就是说 Docker 的转化率达到了 67%,同时转化时长也控制在 60 天内. 既然 Dock ...

  6. 企业运营对 DevOps 的「傲慢与偏见」

    摘要:出于各种原因,并非所有人都信任 DevOps .有些人觉得 DevOps 只不过给开发者改善产品提供了一个途径而已,还有的人觉得 DevOps 是一堆悦耳的空头支票,甚至有人认为 DevOps ...

  7. 「前端开发者」如何把握住「微信小程序」这波红利?

    由于前两周一直在老家处理重要事情,虽然朋友圈被「微信小程序」刷爆了,但并没有时间深入了解. 昨天回广州之后,第一件事情就是把「微信小程序」相关的文章.开发文档.设计规范全部看了一遍,基本上明白了「微信 ...

  8. 「花田对」CSDN程序员专场——谁来拯救技术宅!_豆瓣

    「花田对」CSDN程序员专场--谁来拯救技术宅!_豆瓣 「花田对」CSDN程序员专场--谁来拯救技术宅!

  9. Objective-C 实用关键字详解1「面试、工作」看我就 🐒 了 ^_^.

    在写项目 或 阅读别人的代码(一些优秀的源码)中,总能发现一些常见的关键字,随着编程经验的积累大部分还是知道是什么意思 的. 相信很多开发者跟我当初一样,只是基本的常用关键字定义属性会使用,但在关键字 ...

随机推荐

  1. Js_Ajax_输入词提示

    输入"1",有提示,否则没有 suggest.jsp #suggest { background-color: #e0e0e0; width: 200px; } var xhr; ...

  2. MYSQL整理的语法

    MYSQL整理的语法 http://www.cnblogs.com/suoning/p/5744849.html

  3. 循序渐进之Spring AOP(6) - 使用@Aspect注解

    前面几节的示例看起来让人沮丧,要记忆如此多的接口.类和继承关系,做各种复杂的配置.好在这些只是一种相对过时的实现方式,现在只需要使用@Aspect注解及表达式就可以轻松的使用POJO来定义切面,设计精 ...

  4. 读取jar包资源(转)

    可能有不少初学者会有这样的困惑:在你的代码里调用了一些资源文件,如图片,音乐等,在调试环境或单独运行的时候可以正常显示或播放,而一旦打包到jar文件中,这些东东就再也出不来了,除非把这个jar放到原来 ...

  5. [wechall] Time to Reset (Exploit, Coding, PHP)

    Time to Reset (Exploit, Coding, PHP) <?php $start=1453000000; $cstf="nipNlJ6ZQPuGQ3i90QUTP8J ...

  6. Adobe Dreamweaver(DW)

    下载破解版地址:http://www.frontopen.com/1179.html 详情地址:http://baike.baidu.com/link?url=8Jv88BJ-wXeyABAbYEMl ...

  7. 初识ASP.NET CORE:一、HTTP pipeline

    完整的http请求在asp.net framework中的处理流程: Asp.Net HttpRequest--> HTTP.exe--> inetinfo.exe(w3wp.exe)-& ...

  8. node.js 基础学习 express安装使用

    安装好nodeJs,我们需要使用命令行中安装express. 我这里默认将Node.js安装在C:\Program Files\nodCejs\盘中. 在保持联网的状态下,依次输入如下命令. npm ...

  9. sqlserver 分区表

    我们知道很多事情都存在一个分治的思想,同样的道理我们也可以用到数据表上,当一个表很大很大的时候,我们就会想到将表拆 分成很多小表,查询的时候就到各个小表去查,最后进行汇总返回给调用方来加速我们的查询速 ...

  10. 咏南中间件+开发框架支持最新的DELPHI XE10.1(BERLIN) UPDATE1

    咏南中间件+开发框架支持最新的DELPHI XE10.1(BERLIN) UPDATE1 购买提供:中间件源码,价格十分优惠!有意者请向本人索取演示程序! 附带福利(赠送): CS开发框架源码BS开发 ...