無標題文檔

几款黑体的测试和介绍

黑体是视觉设计师常用的一款字体,特别是针对广告的 Banner 等。根据 维基百科 的相关介绍,有关 黑体的定义 可以认为

黑體与白体相反,没有衬线装饰,筆劃粗壯有力,撇捺等笔画不尖,使人易於閱讀。
黑体是在现代印刷术传入東方後依据西文无衬线体所创造的。所以黑体这个词的范
畴和无衬线字体是类似的。而宋体就可以被称作衬线字体。

「黑体」在日文中被称为ゴシック体(Goshikku-tai,英文:Gothic,直译即「哥特
体」)。

相对于「 白体 」,也有相应的解释

与黑体相反,白体是笔画较细的一种字体。宋体(亦称明朝体)、仿宋体、楷体、
魏书等都是白体。

所以,综上所述。使用黑体的原因之一就是加重信息并容易阅读。这就不难理解为什么 Mac OS X 和 Vista ,都改用黑体作为系统的默认字体。

国内简体中文的黑体,除了众人皆知的 微软雅黑(据说造价非常昂贵),还有其他的一些,在这里简单的列下

  • 华文黑体,这款是苹果机默认的字体
  • 方正黑体,在设计领域使用甚为频繁
  • 中易黑体,也就是我们「传统」 Windows 系统中所带的 SimHei
  • 微软雅黑,Vista 系统默认的字体
  • 文泉驿正黑 ,开源自由的黑体

下面是各款黑体的不同样式,根据不同的抗锯齿程度,显示的效果可能会不一致

https://friable.rocks/_/2008_07_17/1216270805.gif

各款黑体字体文件的大小,从另个侧面能说明这款字体包含了多少的中文字符。

https://friable.rocks/_/2008_07_17/1216270845.png

那么,到底选择哪款黑体合适呢?就个人观点而言,本人偏向于选择 文泉驿 正黑。

原因有两点:其一,就是其自由的版权。其他的黑体有不定的版权限制,要么就是单独作为软件(字体也是软件)销售、要么就是其自身产品的一部分;其二,就是更新的频率,由于有开源社区的支持,处在不断的更新中(并且如果你愿意,也可以加入改进改字体的队伍中)。

于己不利,勿施于人。设计师如果能在不影响设计的前提下,使用无争议的软件(即便是款「小小的字体」),何乐而不为呢?

另,期前已经有「理想主义者」,在几年前就号召大家使用自由字体了( 详细 )。

Javascript 每日测试 - 第九期

今天的题目「看起来」没有任何的悬念。

请问点击第三个链接时弹出的值?

<div id="demo">
    <a href="#">A</a>
    <a href="#">B</a>
    <a href="#">C</a>
    <a href="#">D</a>
</div>

<script type="text/javascript">
var addHandlers = function(nodes) {
    for (var i = 0; i < nodes.length; ++i) {
        nodes[i].onclick = function(ev) {
            alert(i * 100);
        }
    }
}

addHandlers(document.getElementById('demo').getElementsByTagName('a'));

「很不幸」的是,上述的这段代码没有按照原意实现,点击它们所有的链接都是为 400。这是因为「点击以后执行 i * 100 ,而这个 i 是循环结束以后的值,按照上面的循环后值为 4」。

如果按照期望的写法,也就是点击链接以后 alert 不同的值,可以用闭包。比如下面有几个解决方案

var addHandlers = function(nodes) {
    for (var i = 0; i < nodes.length; ++i) {
        (function () {
         var j = i * 100;
            nodes[i].onclick = function(ev) {
                alert(j);
            }
        }) ();
    }
}

期前也讨论过 ,只不过那时还没有了解闭包,详细」。类似的题目,在 《精通 Javascript》 中 23 页( 中文版 )有提及。

var addHandlers = function(nodes) {
    for (var i = 0; i < nodes.length; ++i) {
        nodes[i].onclick = function(idx) {
            return function(ev) {
                alert(idx * 100);
            }
        }(i);
    }
}

「另,如果是使用 YUI 的话,可能会更直观些」

var addHandlers = function(nodes) {
    for (var i = 0; i < nodes.length; ++i) {
        YAHOO.util.Event.on(nodes[i], 'click', function(ev, idx) {
            alert(idx * 100);
        }, i);
    }
}

使用闭包的话,必须注意两点:其一,就是避免出现无谓的匿名函数;其二,就是注意内存溢出。下面有几条有关闭包的参考链接。

Javascript 每日测试 - 外一篇

这是期前讨论的,由于比较琐碎,所以整理在一起。

大家认为如下的函数会返回什么?

function test() {
    return
    {
        status: true
    };
}

答案是返回 undefined,因为 return 后面有回车(被认为是条完整的语句),可以认为等效下面的代码

function test() {
    return;
    {
        status: true
    };
}

清羽 同学从 ECMA 上找到了相应的解释

ReturnStatement:
    return [no LineTerminator here] Expressionopt ;    ——from Ecma-262

-- Split --

var Obj = {};
alert(Obj.abc == undefined); //true 

undefined = 'hello, world';
alert(undefined == 'hello, world'); //true

Obj.abc = 'hello, world';
alert(Obj.abc == undefined);

上述的代码最后 alert 的结果为 true 还是 false ?

在 Mozilla 相关的 Javascript 文档中, 对于 undefined 的描述 中可以得知

undefined is a property of the global object, i.e. it is a variable in global scope. 

The initial value of undefined is the primitive value undefined.

所以,「undefined」 的值是可以被覆盖的。所以,上述的答案为 true 。另,相对于「undefined」,null 则为关键字( 来源

null, a special keyword denoting a null value; null is also a primitive value. 
Because JavaScript is case-sensitive, null is not the same as Null, NULL, 
or any other variant

「同样的还有NaN, 可以试一下:」from 小马( 相关解释 )。

var a = parseInt('hello123'); 
alert(a); //NaN

NaN = 'hello123';
alert(NaN == 'hello123'); //true

var b = parseInt('hello123'); 
alert(b == 'hello123');  //?

-- Split --

本期最后一个问题:

<script>
function doClick() {
    alert(1);
}
</script>
<a href="#" onclick="执行:doClick();">测试</a>

上述的代码会执行(弹出 1)吗?详细描述请参看 http://www.hedgerwow.com/360/dhtml/js_label/

-- EOF --

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章