以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  [转帖]关于SVG的中文  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=14554)


--  作者:SCYANGYU
--  发布时间:2/18/2005 4:01:00 PM

--  [转帖]关于SVG的中文

关于SVG的中文

     随着svg标准的不断升级,关于SimpleSVG的应用开发也在不断升温,国际大公司、“民间团体”都在积极地在svg领域寻求着自己地生存空间,一时间,svg领域可谓热火朝天,暑气逼人:)
  可惜的是,这股热浪至今还未在咱们国内形成,国内除了方正画苑提供了输出svg的功能外,目前还没有任何一款软件能够支持svg,让人可叹。
  这种情况的直接后果之一,就是造成了中文字体在svg应用中名不正言不顺。目前在国外关于svg浏览器的开发已经形成规模,adobe,corel,ibm,sun等都推出了自己的浏览器,当然,做的较好的首推svg的强力推动者——adobe,他的svg viewer目前以成为应用最广,功能最强的svg浏览工具了,除掉这些国际知名公司之外,国外开发或正在进行开发svg浏览器“小“组织和团体则不及其数,看看W3C对svg浏览器的评测就可以知道,这种开发真的是“繁星流动,中文如梦”:)
  svgviewer号称支持中文,但我们在svg中的中文信息常常被替换成方框,郁闷。
  
  要在svgviewer中显示中文字体,需要将中文字体名称进行“国际化”,即将汉字字体名称改为英文名称,如将“宋体”改为“Simsun",“黑体”改为"Simhei"等,下面是部分字体对照列表:
  English Name Localized Name
  SimSun 宋体
  SimHei 黑体
  FangSong_GB2312 仿宋_GB2312
  KaiTi_GB2312 楷体_GB2312
  YouYuan 幼圆
  STSong 华文宋体
  STZhongsong 华文中宋
  STKaiti 华文楷体
  STFangsong 华文仿宋
  STXihei 华文细黑
  STLiti 华文隶书
  STXingkai 华文行楷
  STXinwei 华文新魏
  STHupo 华文琥珀
  STCaiyun 华文彩云
  FZYaoTi 方正姚体简体
  FZShuTi 方正舒体简体
  NSimSun 新宋体
  LiSu 隶书
  
  在SimpleSVG中,可以通过“全部替换”来进行此项操作。


--  作者:SCYANGYU
--  发布时间:2/18/2005 4:02:00 PM

--  
看看我的代码,这样生成的XML是UTF-8编码,中文问题自然就解决了,要知道XML一般是UTF-8或UTF-16编码的,很多SVG解析器只能正确处理这两种编码的文件,生成XML(文本)也是一个道理
<%@ Page ContentType="image/svg-xml" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Text" %>
<script language="C#" runat="server">
void Page_Load(object sender, EventArgs e)
{
// Create a new XmlTextWriter instance
XmlTextWriter writer = new
XmlTextWriter(Response.OutputStream, Encoding.UTF8);

// start writing!
writer.WriteStartDocument();
writer.WriteStartElement("svg");

writer.WriteStartElement("text");
writer.WriteAttributeString("x","10");
writer.WriteAttributeString("y","10");
writer.WriteString("中文aa");
writer.WriteEndElement();

writer.WriteStartElement("line");
writer.WriteAttributeString("x1","10");
writer.WriteAttributeString("y1","10");
writer.WriteAttributeString("x2","30");
writer.WriteAttributeString("y2","40");
writer.WriteEndElement();

writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
}
</script>


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
3,796.875ms