字体不仅是设计师手中重要的武器,对我们开发人员来说,字体的选择也有许多讲究,一个好的、适合展示代码的字体,应该具备以下要素:

  • 等宽的字符
  • 简洁、清晰并且规范的字符形状
  • 支持ASCII码为128以上的扩展字符集
  • 与字符同等宽度的空格
  • 易于分辨的小写字母l、大写字母I、数字1和符号|
  • 易于分辨的大写字母O和数字0
  • 易于分辨的前引号和后引号,最好能够前后对称
  • 易于分辨的其他标点符号,尤其是大括号、中括号、小括号和尖括号
  • 良好的中文支持和显示

下图展示了一个极端的反例,虽然很有个性,但并不适合用来显示代码。它的大写字母大的可怕,小写字母却小的可怜;字符不仅不清晰,而且不规范;小写字母l、大写字母I、数字1和符号| 难以分辨;大写字母O和数字0难以分辨;标点符号还凑合,只是下划线为什么是断开的?

当然,这个反例的确有些夸张,但其上文所列举的条件是比较苛刻的,我们在选择字体时没有必要非要完全满足所有条件,事实上这种字体也是凤毛麟角。下文所分享的一些字体也并没有完全满足所有条件,我们发现,只要满足了其中一些关键条件,用来显示代码就已经很不错了。

在Visual Studio中,更改编辑器的字体是件简单的事情,选择菜单【工具】【选项】,在弹出的“选项”对话框中依次选择“环境”和“字体和颜色”,然后在“显示其设置”中选择“文本编辑器”,最后在“字体”中选择字体就可以了,如下图所示:

在上图中,我们发现Visual Studio已经将等宽字体用粗体标识了出来,这样做是为了让我们更容易找到等宽的字体,并不表示等宽字体就一定适合显示代码,比如下图所示的“新宋体”就是一个反例:

在新宋体中,数字0之比大写字母O瘦那么一点点,小写字母l和数字1也十分相像,幸亏配色方案能够颜色将它们区别开来,否则实在难以分辨。这也从另一个角度说明了配色方案与字体是相辅相成的,搭配恰当时,会让代码更加清晰易辨。

下面就和大家分享一些在编程界声名烜赫的字体,截图所采用的配色方案为HumaneStudio,展示顺序为字体首字母升序。这些字体可能乍一看都一样,但仔细品味,还是能够发现不同的味道,希望大家都能找到适合自己的字体。

Andale Mono,演示字号为14,猛击这里下载

Anonymous Pro,演示字号为14,猛击这里下载

Bitstream Vera Sans Mono,演示字号为14,猛击这里下载

Consolas,演示字号为14,Windows或Visual Studio已内置:

Courier New,演示字号为14,Windows已内置:

DejaVu Sans Mono,演示字号为14,猛击这里下载

Envy Code R,演示字号为16,猛击这里下载

Inconsolata,演示字号为16,猛击这里下载

Monaco,演示字号为12,猛击这里下载

Monofur,演示字号为16,猛击这里下载

Progmata,演示字号为14,猛击这里下载

Share TechMono,演示字号为16,猛击这里下载

注:此字体似乎会将连在一起的fl显示为一个点,不建议使用,可惜可惜。

尾注:

  • 本文所分享的字体均支持ClearType。
  • 从评论来看,中文的显示的确是一个影响美观的重要因素,所以产生了许多微软雅黑和一些优秀英文字体的混合版,但其实还有一种方法可以快速而简单的实现用不同的字体显示中英文(感谢DiryBoy提醒),方法如下:
    • 用文本编辑器打开%AppData%\Microsoft\VisualStudio\9.0\VsFontLk.dat;
    • 将0804一行修改为需要的中文字体,格式为“0804|中文字体名称”,比如“0804|微软雅黑”;

引用:http://www.cppblog.com/Hero/archive/2009/11/25/101900.html

最新文章

  1. 小丁带你走进git的世界二-工作区暂存区分支
  2. Bzoj2850 巧克力王国
  3. Java开发中的高频Collections用法总结与Java平台实现源代码查看方式
  4. Android中的“再按一次返回键退出程序”实现
  5. Go语言实现HashSet
  6. 实例介绍Cocos2d-x物理引擎:使用关节
  7. Mybatis 学习---${ }与#{ }获取输入参数的区别、Foreach的用法
  8. 机器学习算法总结(二)——决策树(ID3, C4.5, CART)
  9. NandFlash和iNand【转】
  10. 数据库分区分表(sql、mysql)
  11. Eclipse安装Activiti Designer插件
  12. 8 -- 深入使用Spring -- 6...1 Spring支持的事务策略
  13. summary_16th Nov, 2018
  14. 带你从零学ReactNative开发跨平台App开发(二)
  15. UINavigationController出现nested push animation can result in corrupted navigation bar的错误提示
  16. Go语言中的常量
  17. Scala-字符串操作
  18. 【架构】Kubernetes和Spring Cloud哪个部署微服务更好?
  19. cuDNN下载地址和指南
  20. FastReport.Net使用:[16]图片控件使用

热门文章

  1. PythonStudy——PyCharm使用技巧 Column Selection Mode(列选择模式)
  2. Linux 连接mysql
  3. edgedb 内部pg 数据存储的探索 (二) 创建数据库命令说明
  4. [踩坑系列]URLEncode 中对 空格的编码有 “+”和“%20”两种
  5. java web中分层MVC的意义
  6. debian shell脚本关联
  7. 发布一个PHP包到Packagist, 然后使用Composer安装
  8. 未来-区块链-Micron:区块链永远不会忘记:内存对这项革命性技术的推动作用
  9. Ubuntu16.04安装Python3.6 和pip(python3 各版本切换)
  10. Struts S2-048 RCE漏洞分析