浏览器大全:是一个提供流行浏览器教程、在线学习分享的学习平台!

用ASP完成中英文字体的自动选择

周辉腾 (contion@263.net)  

在Windows系统中,每一种语言的字符的显示都有对应的默认字体,例如在大部分的应用程序中,简体中文(GB2312)字符默认的显示字体是“宋体”,英文字符则为“Arial”。使用这种默认字体不仅可以照顾到大多数的客户端系统不会出现缺少此类字体的尴尬局面,重要的是还能达到此类字符的显示与打印的最大限度上的工整与美观,与人们的阅读习惯保持一致。
提出问题
在Word 97/2000中,文档正文默认的字体样式是:中文字符的字体是宋体(简体中文,GB2312或GBK),英文字符的字体则是“Times New Roman”。其实在GB2312编码的宋体字库中本身就包含了英文字符的显示与打印支持,但是为什么Word还要另外设置呢?如图1所示:图中第一行英文字母的字体被设置为“Times New Roman”,第二行则被设置为“宋体”。

从图1中可以看出,被设置为宋体的英文字符显示效果比较接近于简体中文的拼音字母,作为英文段落来讲这样设置不太符合人们的阅读习惯,所以Word中对中英文字体的分别设置并不是多此一举。
在简体中文网页中,由于浏览器默认的或者由网页编写者指定的网页正文(<body>……</body>)的字体设置一般都是宋体,这样,中英文使用同样的字体设置就会使字体显示失去整体的美观。
为了解决这个问题,我们可以对网页中出现的所有英文字符分别进行字体风格设置,但是这样做不仅会极大地加重网页制作人员的工作量,使代码看上去烦琐拖沓,还会大大增加网页代码的长度,造成页面下载缓慢。如果直接把整个页面的主体部分的字体设置为英文字体样式,如“Times New Roman”等,在这种情况下,虽然浏览器在显示中文字符的时候会自动使用默认的中文字体设置,但同一个页面在不同设置的浏览器的浏览下将会出现意外的折行、段落混乱等显示错误。
编程实现
本文介绍一种在ASP中用服务器端JScript脚本实现的中英文字体的自动选择方法。利用该方法不仅可以轻松达到Word中的效果,而且能使客户端输出的HTML源代码更加紧凑简洁。源代码及简要说明如下:
<%@ Language=JScript %>
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=gb2312”>
<meta name=“Author” content=“contion”>
<title>自动选择字体脚本测试页</title>
<script language=“JScript” runat=“Server”> /*如果要在客户端HTML(即普通HTML文件)中使用本函数,请将“language”设置为“JavaScript”,并将runat=“Server”去掉*/
//自动选择字体函数
function cWrite(strPut)
{  
var strInput,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) return strWrite;  
for(var i=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+=‘<font class=“‘+str
Class+’”>’+chrAti;
blnTagClosed=false;
}
else if(!blnTagClosed) strWrite+=chrAti;
}
else{
if(!blnTagClosed)
{
strWrite+=‘</font>’+chrAti;
//将<font>标记置为“已关闭”
blnTagClosed=true;  
}
else if(blnTagClosed) strWrite+=chrAti;
}
}
else strWrite+=chrAti;
}
if(!blnTagClosed) strWrite+=‘</font>’
//返回经过字体修饰的HTML字符串
return strWrite;  
}
/*判断当前字符是英文字符还是中文字符*/
function ifWesternChr(chrInput)
{  
var chrInput_e;
chrInput_e=escape(chrInput);
if(chrInput_e.length==(chrInput.length)*6 chrInput==‘\r’ chrInput==‘\n’) return false; /*只有非普通ASCII字符经过escape()函数编码之后的长度才会等于原长度的6倍,所以用这种方法可以避开内码直接判断当前字符是否为中文。*/
else return true;
}
</script>
<style>
<!-- 以下CSS样式仅作参考。注意:en是程序默认的英文字体样式类,所以一定要定义。
body{ color: #000080;  
font-family: 宋体; font-size: 12pt }
.en { color: #ff0000;  
font-family: “Times New Roman”;  
font-weight: bold;  
font-style: italic;  
font-size: 12pt }
-->
</style>
</head>
<body bgcolor=“#FFFFFF”>
<%
/*下面是一个调用例子,您可以参考下面的方式调用上边编写的函数。在HTML文件中引用时要注意将本例中所有的ASP函数、对象替换为相应的客户端脚本的形式,如“Response.Write”应该替换为“document.write”*/
var strWrite;
strWrite=‘在本测试页中,所有半角字符的字体都被设置为“Times New Roman”,并以红色粗斜体显示。’;
strWrite+=‘当然,这仅仅是为了测试方便和醒目,您应该自己定义合适的字体。’;
strWrite+=‘如:“Computer”、“World Wide Web”等等,“?”是英文问号,“,”是英文逗号,’;
strWrite+=‘“1234567890”为本字体的数字显示样式。这样看起来中文省略号“……”与英文省略号’;
strWrite+=‘“...”确实不同。中:本测试正确吗?En:Is this test correct?’;
Response.Write(‘<p>’+cWrite(strWrite,‘en’)+‘</p>’);
%>
</body>
</html> 

相关软件

2345加速浏览器官方版

2345加速浏览器官方版 | 56.2MB

2345加速浏览器官方版

新一代2345加速浏览器采用Chromium和IE双内核,主打极速与安全特性。基于Chromium深度定制,引入网页智能预加载技术,访问网页更快速..

QQ浏览器官方正式版

QQ浏览器官方正式版 | 49.67MB

QQ浏览器官方正式版

QQ浏览器秉承TT浏览器1-4系列方便易用的特点,但技术架构不同,交互和视觉表现也重新设计,采用Chromium内核+IE双内核,让浏览快速稳定...

百度浏览器最新版下载

百度浏览器最新版下载 | 13.3MB

百度浏览器最新版下载

q百度浏览器,是一款简洁轻快、智能懂你的浏览器。依靠百度强大的搜索平台,在满足用户浏览网页的基础上,它整合百度体系业务优势,带给用户更方便的浏览方式功能...

UC浏览器官方正式版

UC浏览器官方正式版 | 44.2MB

UC浏览器官方正式版

UC浏览器(UC Browser)是UC Mobile Limited在2004年8月开发的一款软件,分uc手机浏览器和uc浏览器电脑版。UC浏览器是全球使用量最大的第三方手机浏览器...

猎豹浏览器2022最新版下载

猎豹浏览器2022下载 | 45MB

猎豹浏览器2022最新版下载

猎豹安全浏览器对Chrome的Webkit内核进行了超过100项的技术优化,访问网页速度更快。其具有首创的智能切换引擎,动态选择内核匹配不同网页...

360安全浏览器官方版下载

360安全浏览器下载 | 21.4MB

360安全浏览器官方版下载

360安全浏览器拥有全国最大的恶意网址库,采用恶意网址拦截技术,可自动拦截挂马、欺诈、网银仿冒等恶意网址。独创沙箱技术,在隔离模式即使访问****也不会感染...