选择一个优秀正文字体的15个技巧

 更新时间:2016年9月20日 19:06  点击:1559

 很多人都问我如何为一本杂志、一份报纸、一张海报、一份简报或是一份出版物选择一个合适的正文字体。一般我都会告诉他们该用哪个字体,但我知道,这不是最佳答案,因为他们没有学会如何自己去选择。

        今天,我打算花一点时间来分析一下怎样为不同的案例选择正确的正文字体进行排版设计。你应该知道,这些技巧并非金科玉律,但它们会是你选择正文字体时的好参谋。无论如何,这种选择取决于你希望用这个字体来表达什么,很多时候,易读性和字体的个性是同等的重要。所以请记住下面这些要点,小心从事。

1. The Letterform 字形

        上面的“弯管”体现了这个字体的结构。这一点很重要。为了文本的易读,我们应该采用字形尽量简单的字体,而不需要太多复杂的细节。这些细节会让阅读者分心,我们应该让读者关注文本的内容而非字体。

2. The Weight 字重

        当我们讨论字体的“重量”时,我们指的是字符之间的一种一致性关系,以及页面文本流的整体“亮度”。如果你为大段文字设置一种很纤细的字体,阅读起来就会很费力,没有人愿意去读它。

3. The Contrast 粗细对比

        粗细对比指的是垂直笔画和水平笔画之间的粗细差异-字符最粗部分和最细部分的差异。Bodoni 和 Didot 是粗细对比很强烈的字体。如果你看到 Bodoni 排版的文本的复印件的复印件的复印件,你就会发现你已经看不见水平笔画了。一款设计精良的正文字体应该能经受反复多次的复印。它的笔画应当是结实有力而不粗糙。

4. The axis 轴向

        我认为字体的轴向设置同样会影响阅读。正文字体的主流是垂直笔画,如果轴向是倾斜的,视线沿文本方向流动的时候就会造成干扰。如果一款字体使用了一种以上的轴向,那么这一行文本看起来就好像在跳舞,这样是很难阅读的。如果你采用垂直的轴向,字符就不会跳舞。

5. x height x高度

v基线到 x高度之间的区域包含了大部分的可读信息(75%的小写字母)。在阅读正文时这是非常重要的区域。上升部和下降部如果很长,就必然会导致 x高度很小。如果你比较例图中上升部长度不同的两款字体,你就会看出后者的 x高度更大,因而它也就更易于识别。你可以对比看看 Times New Roman 和 Mrs. Eaves 这两款字体的区别。

6. Capital letters height 大写字母高度

        旧式的字体设计中上升部和大写高度是一致的。有些字体中大写高度要更大一些... 那么大小写连排的时候通常就会很难看。比如我写一个‘Garamond’,这个“G”看起来就象是一只恐龙,而后面的“a”看上去就象是它的猎物...

7. Endings and details 末端和细节

        当我们在大字号下面使用一个字体时候(比如说一张海报),一切都被放大。所有设计上的细节都变得很明显,同样明显的还有它的瑕疵。很多字体的绘制其实是很糟糕的。身为设计师,这是我们所无法忍受的。

8. Text and texture 文本和版面纹路

        从远处看,文本块就像是一张有纹路的织物。这种纹路应该是均匀的,那些特别突出的字符就像污点一样会分散人的注意力。

9. Degree of the Counter Opening 字谷开放的程度

        很多字体的设计中,字谷都封的太死了。这会导致识别困难,有人会把这个“c”当成一个“o”。但是,假如字谷过于开放(象 Frutiger 那样),内外空间的界限又会变得模糊,这样便产生大量的白空间,看上去会很难看。

10. The Fish Effect 鱼眼效应

        当内部空间明显大于字符间距时,这种效应就很突出。因此当一个圆形字母和一个直笔画的字母连排时,看上去就会很怪异。

11. External counter 外部空间

        一些小细节可以让一款正文字体更易于识别。如果外部空间经过很好的设计,文本就更易于阅读。想想小写“n”中竖笔和弧线的连接部分,或是‘rn’ 和‘m’的区别。

12. Internal counter 内部空间

        如果‘a’ 或‘e’的字“眼”过小,在小字号的时候它们可能根本就等于没有。在大多数语言中这些都是最常用的字母,所以这可不是什么小问题。

13. Is the set complete? 字符集是否完整

        不知道有多少次,我们发现我们所用的字库竟然缺少一些字符,并且总是到我们的设计将要完成的时候才发现。真恐怖!我们不得不改换字体然后重新校对全部的文本。许多字体设计师会漏掉一些字符,诸如“ñ”、重音符、波浪线、句号、逗号甚至是数字... 所以在你使用一个字体之前务必检查它的完整性。

14. The family 字族

        还有一个重要的事情是,检查字族是否足够丰富,是否包含了不同的磅数、粗细以及意大利体等等。确定它的意大利体和常规版本一样易于阅读。它们有时会包含许多洛可可风格的细节。

15. Letter spacing 字符间距

        有些字体的字间距很糟糕,甚至根本就不设置字间距,它们当然不会有什么好的效果。一个好的设计师会校正那些不太好的字间距,但假如全部的字间距都很糟糕,那你就有得忙了。当然有些软件会有一些辅助功能,但永远比不上一个好的字体设计师所做的。所以尽量采用那些字间距和度量合适的字体。

所见所得的编辑器现在用得越来越多,原因之一,用户体验好。但是作为开发者,我们也应该清醒的认识到,这样的编辑器往往成了危险脚本、木马的温床。我们不能容忍蛀虫就在我们自己的东西里面滋生。
下面我就来尝试用正则替换的办法,使得编辑器里面的脚本无所遁形。可能我想的不是很全面,希望有漏网之鱼的,朋友们请提出。
脚本藏身之处不过有四:
1、<script>标签
2、on开头的标签属性
3、javascript(vbscript)伪协议
4、css的epression
5、<iframe>标签
下面是他们的字符串规则:
1、<script(.|\n)*\/script>\s*
2、\s*on[a-z]+\s*=\s*("[^"]+"|'[^']+'|[^\s]+)\s*(?=>)
3、\s*(href|src)\s*=\s*("\s*(javascript|vbscript):[^"]+"|'\s*(javascript|vbscript):[^']+'|(javascript|vbscript):[^\s]+)\s*(?=>)
4、epression\((.|\n)*\);?
5、<iframe(.|\n)*\/iframe>\s*
了解他们的规则后,抓虫行动就水到渠成。下面看具体代码:

<textarea id="bug" cols="80" rows="5">
<button id="kick">抓虫1</button>
<script>
function kickBug(str) {
  return str.replace(/<script(.|\n)*\/script>\s*/ig,"");
}
HTMLElement.prototype.__defineGetter__("innerText",function(){
 return this.textContent;
});
HTMLElement.prototype.__defineSetter__("innerText",function(text){
 this.textContent = text;
});
document.getElementById("kick").onclick = function() {
  var bug = document.getElementById("bug");
  bug.innerText = kickBug(bug.innerText);
}
</script>
</textarea>
<button id="kick">抓虫</button>
<script>
function kickBug(str) {
  return str.replace(/<script(.|\n)*\/script>\s*/ig,"");
}
HTMLElement.prototype.__defineGetter__("innerText",function(){
 return this.textContent;
});
HTMLElement.prototype.__defineSetter__("innerText",function(text){
 this.textContent = text;
});
document.getElementById("kick").onclick = function() {
  var bug = document.getElementById("bug");
  bug.innerText = kickBug(bug.innerText);
}
</script>

<td style="width:100px;overflow:hidden">

 

外一层再设定word-wrap: break-word有效果么?

 

注意要设置容器有宽度喽

在java端将字符串转化为xml对象可以使用DocumentHelper.parseText(xmlReturn).getRootElement();

  在js中同样有方法可以将字符串转化为xml对象,可以使用如下函数

function createXml(str){
  if(document.all){
  var xmlDom=new ActiveXObject("Microsoft.XMLDOM")
  xmlDom.loadXML(str)
  return xmlDom
  }
  else
  return new DOMParser().parseFromString(str, "text/xml")
  }  如果在js端是读取文件,那就更方便了

var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
  xmlDoc.async = false;
  xmlDoc.load("文件路径");  至于操作xml也是很简单,如果会使用jdom或是dom4j的话,操作也是相当方便。   var domxml= createXml(Http.responseText);
  var code=domxml.getElementsByTagName("code");
  if(code.item(0).text=="100"){
  var parameter=domxml.getElementsByTagName("parameter");
  identifier=parameter.item(0).attributes.getNamedItem("value").value;
  }  对于节点的值和属性的值获取的方法不同。

js 图片比例 js 按比例缩小图片 照片尺寸比例 cad尺寸比例 js 图片切换 js 图片 js图片轮换 js图片滚动 js图片特效 图片滚动js代码

问题是一个网友提出来的,想要达到的效果是:如果是图片宽高比大于150/240,以宽为主,宽=150,高度自动,否则,以高为主,高=240,宽度自动,

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script type="text/javascript">
function pic(){
var p=document.getElementsByTagName("img");
 for(var i=0;i<p.length;i++){
 pp=p[i];
  var pw = pp.width;
  var ph = pp.height; 
 
     if((150/240)>(pw/ph)){
    pp.style.width = "auto";
    pp.style.height = "240px";
     }
     if((150/240)<(pw/ph)){
    pp.style.width = "150px";
    pp.style.height= "auto";
     }
      }    
}
</script>
<body onLoad="pic()">
<img src="http:///files/allimg/071212/1605480.jpg" width="314" height="500">
<img src="http:///files/allimg/071212/1605481.jpg" width="552" height="432">
</body>
</html> 
 

[!--infotagslink--]

相关文章

  • photoshop打开很慢怎么办 ps打开慢的设置技巧

    photoshop软件是一款专业的图像设计软件了,但对电脑的要求也是越高越好的,如果配置一般打开ps会比较慢了,那么photoshop打开很慢怎么办呢,下面来看问题解决办法。 1、...2016-09-14
  • vue Treeselect下拉树只能选择第N级元素实现代码

    这篇文章主要介绍了vue Treeselect下拉树只能选择第N级元素实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-01
  • Jquery Ajax Error 调试错误的技巧

    JQuery使我们在开发Ajax应用程序的时候提高了效率,减少了许多兼容性问题,我们在Ajax项目中,遇到ajax异步获取数据出错怎么办,我们可以通过捕捉error事件来获取出错的信息。在没给大家介绍正文之前先给分享Jquery中AJAX参...2015-11-24
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • 图解Sublime Text3使用技巧

    通过本篇文章给大家介绍Sublime Text3使用技巧的相关知识,对sublime text3技巧相关知识感兴趣的朋友一起学习吧...2015-12-24
  • 基于PHP给大家讲解防刷票的一些技巧

    刷票行为,一直以来都是个难题,无法从根本上防止。但是我们可以尽量减少刷票的伤害,比如:通过人为增加的逻辑限制。基于 PHP,下面介绍防刷票的一些技巧:1、使用CURL进行信息伪造$ch = curl_init(); curl_setopt($ch, CURLOP...2015-11-24
  • 分享12个非常实用的JavaScript小技巧

    这篇文章主要介绍了分享12个非常实用的JavaScript小技巧,这些小技巧可能在你的实际工作中或许能帮助你解决一些问题,需要的朋友可以参考下...2016-05-14
  • Python爬虫必备技巧详细总结

    本篇文章介绍了我在爬虫过程中总结的几个必备技巧,都是经过实验的,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下...2021-10-22
  • js简单实现调整网页字体大小的方法

    这篇文章主要介绍了js简单实现调整网页字体大小的方法,通过javascript动态修改页面元素样式实现调整网页字体的功能,非常简单实用,需要的朋友可以参考下...2016-07-29
  • Illustrator像素级完美绘制经验技巧分享

    今天小编在这里就来给Illustrator的这一款软件的使用者们来说一说像素级完美绘制的经验技巧,各位想知道具体信息的使用者们,那么下面就快来跟着小编一起看一看。 给...2016-09-14
  • JavaScript实现点击按钮字体放大、缩小

    字体可以调节大小,极大了满足了用户体验度,接下来通过本文给大家介绍JavaScript实现点击按钮字体放大、缩小实例代码,需要的朋友参考下吧...2016-03-01
  • uniapp 仿微信的右边下拉选择弹出框的实现代码

    这篇文章主要介绍了uniapp 仿微信的右边下拉选择弹出框的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-12
  • 前端开发必知的15个jQuery小技巧

    本文主要介绍了前端开发必知的15个jQuery小技巧。具有很好的参考价值,下面跟着小编一起来看下吧...2017-01-26
  • 十分钟轻松掌握dataframe数据选择

    这篇文章主要介绍了十分钟轻松掌握dataframe数据选择,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-04
  • MySQL中的binlog相关命令和恢复技巧

    操作命令:复制代码 代码如下:show binlog events in 'mysql-bin.000016' limit 10;reset master 删除所有的二进制日志flush logs 产生一个新的binlog日志文件show master logs; 或者 show binary logs; 查看二进制文...2014-05-31
  • goland设置颜色和字体的操作

    这篇文章主要介绍了goland设置颜色和字体的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-04
  • MySQL编程中的6个实用技巧

    每一行命令都是用分号(;)作为结束对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如: 复制代码 代码如下: mysql_query("INSERT INTO...2015-03-15
  • css中Font字体小图标应用

    Font字体小图标应用其实是在以前我们常用的css sprite进行升级了,我们可以直接在css中调用字体了,下面我们来看一篇关于Font字体小图标应用例子。 我们知道在页面上...2016-09-14
  • mysql中coalesce()的使用技巧小结

    在mysql中,其实有不少方法和函数是很有用的,这次介绍一个叫coalesce的,拼写十分麻烦,但其实作用是将返回传入的参数中第一个非null的值,下面这篇文章主要给大家介绍了在mysql中coalesce()使用技巧的相关资料,需要的朋友可以参考下。...2017-06-21
  • 每日十条JavaScript经验技巧(二)

    本文是每日十条JavaScript经验技巧系列文章的第二篇,同样给大家汇总介绍10条个人在项目中的一些经验,分享给大家,希望大家能够喜欢...2016-06-24