当前位置:首页 > ASP.NET开发经验(1) — 解决ASP.NET与CSS中定义的中文字体名的冲突

ASP.NET开发经验(1) — 解决ASP.NET与CSS中定义的中文字体名的冲突

点击次数:1163  更新日期:2010-12-27
\n

最近做了一个 ASP.NET 的文档管理程序,有点类似于简化的 SharePoint Portal Server 2001,有兴趣的可以看看程序运行的截图 (多图)。
\n

在开发过程中,陆续碰到和解决了一些不常见的问题,我会慢慢把这些问题和解决的办法都写出来。代码目前还有点乱,过两天再整理一下,请 Ma QiJGTM’2004kaneboy 等几位高手帮我做一下 Code Review 或 Refactory。


\n

前两天,在修改 ASPX 页面时,发现一个奇怪的问题,链接的CSS 文件里指定的其它设置都管用,就是字体名称设置不管用,如果直接在 ASPX 页面中指定字体名称(Style=”font-family:宋体”)就是正常的。


\n

为了测试,我用 FrontPage 新建了一个 HTML 页面并链接了CSS 文件,页面显示正常,但当我把 HTM 后缀改成 ASPX 后,又失效了。


\n

难道是 ASPX 和 CSS 有冲突? 可这两个东西风马牛不相及呀,于是仔细对比 HTM 和 ASPX 页面的源码,没有发现任何不同的地方,真是百思不得其解。最后终于无意中发现,HTM 页面和 ASPX 页面的编码方式不一样,HTM 是 GB2312 ,ASPX 是 UTF-8(即使其中含有 的标记)。


\n

到此时我才明白,原来就是因为 ASPX 的输出编码为 Unicode,在处理 CSS 中的中文字体名(如“宋体”,“黑体”)时出错了错误,导致不能正确显示指定的字体。


\n

处理办法:


\n

1) 将 ASP.NET 的默认编码方式由 UTF-8 改为 GB2312 ;


\n

不过,现在都搞全环化、国际化,还是用 UTF-8 好。


\n

2) 将 CSS 文件中的中文字体名变为英文名称;


\n

如 “Font-Family: 宋体” 改为 “Font-Family: SimSun” ,其它字体的英文名称如:SimYou 幼圆; SimHei 黑体; SimKai 楷体; SimFang 仿宋; SimLi 隶书等。


\n

3) 将 CSS 文件中的中文字体名改为 Unicode 表示(\\u…)


\n

此种方法未试验,不知是否可行。


\n

至于为什么我一定要用中文字体呢,原因是中文字体是等宽的,在处理页面时,能很精确控制元素的宽度,这样有利于版面的设计,我对软件界面的要求是很高的 笑脸


\n

来源:moslem的blog

\n