|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性都会因为与NT的捆绑而显现出来;用ASP完成中英笔墨体的主动选择
在Windows体系中,每种言语的字符的显现都有对应的默许字体,比方在年夜部分的使用程序中,简体中文(GB2312)字符默许的显现字体是“宋体”,英笔墨符则为“Arial”。利用这类默许字体不但能够照应到年夜多半的客户端体系不会呈现短少此类字体的为难场合排场,主要的是还能到达此类字符的显现与打印的最年夜限制上的工致与美妙,与人们的浏览习气坚持分歧。
提出成绩
在Word97/2000中,文档注释默许的字体款式是:中笔墨符的字体是宋体(简体中文,GB2312或GBK),英笔墨符的字体则是“TimesNewRoman”。实在在GB2312编码的宋体字库中自己就包括了英笔墨符的显现与打印撑持,可是为何Word还要别的设置呢?如所示:图中第一行英笔墨母的字体被设置为“TimesNewRoman”,第二行则被设置为“宋体”。
从中能够看出,被设置为宋体的英笔墨符显现效果对照靠近于简体中文的拼音字母,作为英文段落来说如许设置不太切合人们的浏览习气,以是Word中对中英笔墨体的分离设置并非画蛇添足。
在简体中文网页中,因为扫瞄器默许的大概由网页编写者指定的网页注释(<body>……</body>)的字体设置一样平常都是宋体,如许,中英文利用一样的字体设置就会使字体显现得到全体的美妙。
为懂得决这个成绩,我们能够对网页中呈现的一切英笔墨符分离举行字体作风设置,可是如许做不但会极年夜地减轻网页制造职员的事情量,使代码看上往啰嗦拖拉,还会年夜年夜增添网页代码的长度,形成页面下载迟缓。假如间接把全部页面的主体部分的字体设置为英笔墨体款式,如“TimesNewRoman”等,在这类情形下,固然扫瞄器在显现中笔墨符的时分会主动利用默许的中笔墨体设置,但统一个页面在分歧设置的扫瞄器的扫瞄下将会呈现不测的折行、段落凌乱等显现毛病。
编程完成
本文先容一种在ASP顶用服务器端JScript剧本完成的中英笔墨体的主动选择办法。使用该办法不但能够轻松到达Word中的效果,并且能使客户端输入的HTML源代码加倍松散简便。源代码及扼要申明以下:
<%@Language=JScript%>
<html>
<head>
<metahttp-equiv=“Content-Type”content=“text/html;charset=gb2312”>
<metaname=“Author”content=“contion”>
<title>主动选择字体剧本测试页</title>
<scriptlanguage=“JScript”runat=“Server”>/*假如要在客户端HTML(即一般HTML文件)中利用本函数,请将“language”设置为“JavaScript”,并将runat=“Server”往失落*/
//主动选择字体函数
functioncWrite(strPut)
{
varstrInput,intLength,blnTagClosed,blnHtmlTags,strWrite,chrAti,argv,argcstrClass;
strInput=‘’+strPut;
intLength=strInput.length;
blnTagClosed=true;
blnHtmlTags=false;
strWrite=‘’;
argv=cWrite.arguments;
argc=argv.length;
strClass=(argc>1)?argv[1]:‘en’;/*假如不带参数,那末默许的英文款式为本页CSS款式界说的en。CSS款式表的界说可参考下文的代码。*/
/*假如输出字符串为“空”则前往空值*/
if(strPut==null)returnstrWrite;
for(vari=0;i<intLength;i++)
{
chrAti=strInput.charAt(i);
if(strInput.charAt(i-1)==‘>’&&blnHtmlTags==true)blnHtmlTags=false;/*碰着“>”,则以为以后字符不是HTML标志。HTML标志也是英笔墨符,但对它们举行字体设置是没有任何意义的,由于HTML标志自己不会被显现。*/
/*碰着“<”,HTML标志入手下手*/
if(chrAti==‘<’)blnHtmlTags=true;
if(chrAti!=‘’)
{
//过滤空格
if(ifWesternChr(chrAti)&&!blnHtmlTags)
{
/*假如是英笔墨符而且不在HTML标志以内*/
if(blnTagClosed){/*只要在<font>……</font>标志已完全的情形下才干再增加<font>润色*/
strWrite+=‘<fontclass=“‘+str
Class+’”>’+chrAti;
blnTagClosed=false;
}
elseif(!blnTagClosed)strWrite+=chrAti;
}
else{
if(!blnTagClosed)
{
strWrite+=‘</font>’+chrAti;
//将<font>标志置为“已封闭”
blnTagClosed=true;
}
elseif(blnTagClosed)strWrite+=chrAti;
}
}
elsestrWrite+=chrAti;
}
if(!blnTagClosed)strWrite+=‘</font>’
//前往经由字体润色的HTML字符串
returnstrWrite;
}
/*判别以后字符是英笔墨符仍是中笔墨符*/
functionifWesternChr(chrInput)
{
varchrInput_e;
chrInput_e=escape(chrInput);
if(chrInput_e.length==(chrInput.length)*6||chrInput==‘’||chrInput==‘
’)returnfalse;/*只要非一般ASCII字符经由escape()函数编码以后的长度才会即是原长度的6倍,以是用这类办法能够避开内码间接判别以后字符是不是为中文。*/
elsereturntrue;
}
</script>
<style>
<!--以下CSS款式仅作参考。注重:en是程序默许的英笔墨体款式类,以是必定要界说。
body{color:#000080;
font-family:宋体;font-size:12pt}
.en{color:#ff0000;
font-family:“TimesNewRoman”;
font-weight:bold;
font-style:italic;
font-size:12pt}
-->
</style>
</head>
<bodybgcolor=“#FFFFFF”>
<%
/*上面是一个挪用例子,您能够参考上面的体例挪用上边编写的函数。在HTML文件中援用时要注重将本例中一切的ASP函数、工具交换为响应的客户端剧本的情势,如“Response.Write”应当交换为“document.write”*/
varstrWrite;
strWrite=‘在本测试页中,一切半角字符的字体都被设置为“TimesNewRoman”,并以白色粗斜体显现。’;
strWrite+=‘固然,这仅仅是为了测试便利和夺目,您应当本人界说符合的字体。’;
strWrite+=‘如:“Computer”、“WorldWideWeb”等等,“?”是英文问号,“,”是英文逗号,’;
strWrite+=‘“1234567890”为本字体的数字显现款式。如许看起来中文省略号“……”与英文省略号’;
strWrite+=‘“...”的确分歧。中:本测试准确吗?En:Isthistestcorrect?’;
Response.Write(‘<p>’+cWrite(strWrite,‘en’)+‘</p>’);
%>
</body>
</html>
</p>asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。 |
|