积极答复者
关于WPF 中 UNICODE字符不能显示问题

问题
-
各位,我和朋友正在试着做一个WPF的project,需要让LISTBOX显示自定义的UNICODE字符,是我们自己画的.不在标准范围之内.是用WINDOWS 7自带的字符编辑器画出来的.现在出现一个问题,我们的自定义字符在listbox控件中不可以正确显示.但是奇怪的是,标准的字符,比如日文,韩文,中文都可以正确在listbox中显示.同时,如果不过WPF的listbox,利用winform的listbox,在WPF中就可以正确显示了..问题出在哪里呢?我们试着在XAML位置加了一行语句, 是MSDN 提供的UNICODE现实需要的语句,但是..没有起到作用不知道问题在哪里.语句如下:<?xml version="1.0" encoding="UTF-8"?>
答案
-
今天听搭档说WPF可以支持ttf格式的font..
找了一下,居然找到答案了!
因为开了这个问题..放上来给以后有需要的人看一下吧.
之前一直找错方向了.
参考文献为以下三个:
http://msdn.microsoft.com/en-us/library/cc295083.aspx
http://msdn.microsoft.com/en-us/library/cc294629.aspx
首先,要下载EXPRESSION BLEND 来改变WPF中 控件的样式
在EXPRESSION BLEND中有一个叫做font manager的东西.
选中你要改变font display的控件, 比如我在做的项目中,就是listbox需要改变,
从右边找到text属性,点选EMBEDDED,然后在embed fonts的对话框中找到 EUDC 这个字体.
这个应该就是对应EUDC.TTE的内容的font啦~
加入这个font之后记得text属性左上角的显示格式也改成EUDC
然后从新debug程序..就可以跑啦!
我们是在在C#中写的code 引用UNICODE的自定义部分, 代码样例如下:
TruthTable.Add("00000010000000000000000000", "\ue000");
请忽略其他东西..呵呵 关键在于 用 \UE000(16进制,PRIVATE CHARACTER EDITOR中提供的自定义位置) 这种格式就可以了.
查了一下被blend改完的xaml code,唯一的区别在于这里:
FontFamily="/Blink;component/Fonts/#EUDC"
如果已经有TTF文件的人就不用这么辛苦了.可以直接在project里面加..我们遇到的情况是没有办法造成TTF文件的
可以参考这个链接:
http://msdn.microsoft.com/en-us/library/cc295281.aspx
- 已标记为答案 孤单的树 2011年1月20日 14:31
-
你好,
虽然XAML本身是一个XML文件,但是需要通过XAML编译器来编译,并且还是要通过XAML的解释来转换成CLR的对象,所以在XAML标准中,并没有体现出 <?xml version="..." encoding="..."?> 等内容。具体XAML文档规范你可以从这里查看和下载:http://msdn.microsoft.com/en-us/library/ms788723.aspx#the_xaml_language_specification
对于在XAML中显示Unicode信息,我们可以直接在编码中写:
Sincerely<TextBlock Text=""/> <!-- 16进制形式 --> <TextBlock Text="〹"/> <!-- 10进制形式 -->
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 孤单的树 2011年1月20日 14:31
全部回复
-
各位,我和朋友正在试着做一个WPF的project,需要让LISTBOX显示自定义的UNICODE字符,是我们自己画的.不在标准范围之内.是用WINDOWS 7自带的字符编辑器画出来的.现在出现一个问题,我们的自定义字符在listbox控件中不可以正确显示.但是奇怪的是,标准的字符,比如日文,韩文,中文都可以正确在listbox中显示.同时,如果不过WPF的listbox,利用winform的listbox,在WPF中就可以正确显示了..问题出在哪里呢?我们试着在XAML位置加了一行语句, 是MSDN 提供的UNICODE现实需要的语句,但是..没有起到作用不知道问题在哪里.语句如下:<?xml version="1.0" encoding="UTF-8"?>
恩..不知道有没有人遇到过这个问题.我们该写什么东西declare使用UNICODE呢?
UTF-8是不是有问题? 我写的code是/UE000这样的,用hex编码的,是不是该用UTF-16呢?
不过UTF-16 compile的时候会出错..WPF中不支持吗?
-
你好,
虽然XAML本身是一个XML文件,但是需要通过XAML编译器来编译,并且还是要通过XAML的解释来转换成CLR的对象,所以在XAML标准中,并没有体现出 <?xml version="..." encoding="..."?> 等内容。具体XAML文档规范你可以从这里查看和下载:http://msdn.microsoft.com/en-us/library/ms788723.aspx#the_xaml_language_specification
对于在XAML中显示Unicode信息,我们可以直接在编码中写:
Sincerely<TextBlock Text=""/> <!-- 16进制形式 --> <TextBlock Text="〹"/> <!-- 10进制形式 -->
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 孤单的树 2011年1月20日 14:31
-
今天听搭档说WPF可以支持ttf格式的font..
找了一下,居然找到答案了!
因为开了这个问题..放上来给以后有需要的人看一下吧.
之前一直找错方向了.
参考文献为以下三个:
http://msdn.microsoft.com/en-us/library/cc295083.aspx
http://msdn.microsoft.com/en-us/library/cc294629.aspx
首先,要下载EXPRESSION BLEND 来改变WPF中 控件的样式
在EXPRESSION BLEND中有一个叫做font manager的东西.
选中你要改变font display的控件, 比如我在做的项目中,就是listbox需要改变,
从右边找到text属性,点选EMBEDDED,然后在embed fonts的对话框中找到 EUDC 这个字体.
这个应该就是对应EUDC.TTE的内容的font啦~
加入这个font之后记得text属性左上角的显示格式也改成EUDC
然后从新debug程序..就可以跑啦!
我们是在在C#中写的code 引用UNICODE的自定义部分, 代码样例如下:
TruthTable.Add("00000010000000000000000000", "\ue000");
请忽略其他东西..呵呵 关键在于 用 \UE000(16进制,PRIVATE CHARACTER EDITOR中提供的自定义位置) 这种格式就可以了.
查了一下被blend改完的xaml code,唯一的区别在于这里:
FontFamily="/Blink;component/Fonts/#EUDC"
如果已经有TTF文件的人就不用这么辛苦了.可以直接在project里面加..我们遇到的情况是没有办法造成TTF文件的
可以参考这个链接:
http://msdn.microsoft.com/en-us/library/cc295281.aspx
- 已标记为答案 孤单的树 2011年1月20日 14:31
-
你好,
对于自定义的Unicode, 他会有一个对应的字体;对于怎么在WPF里面显示,请参考英文论坛上的这个帖子:http://social.msdn.microsoft.com/Forums/en/wpf/thread/73b22408-c60f-44d5-81bc-73d08fd893c0
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
-
刚要回复,你就找到答案了,哈哈 很及时,祝贺你!
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.