WPF不能使用专用字符的问题(VS2010、造字或专用字符编辑器)

xiaoboey 2013-07-17 04:08:21
目前这个项目是用VS2010做的基于WPF的简单排版系统,有使用专用字符的需求,就是XP上的造字程序或Win7的专用字符编辑器造的字。现在测试发现可以在记事本、Word等程序中显示的专用字,在WPF应用无法显示(显示为一个框或空白)。
进一步测试,发现VS2010创建的WindowsApplication在开发和运行时可以显示专用字符,而VS2010创建的WpfApplication却无法显示,在VS2010的代码编辑器中都无法显示专用字符,所以感觉是个硬伤,WPF和传统的Windows应用在字符处理有差别。
有办法解决吗?让WPF应用可以显示专用字符?
...全文
218 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ariesget 2013-07-18
  • 打赏
  • 举报
回复
引用 9 楼 xiaoboey 的回复:
找到一个解决办法: http://social.msdn.microsoft.com/Forums/vstudio/en-US/73b22408-c60f-44d5-81bc-73d08fd893c0/display-private-characters-in-datagrid-define-by-using-the-private-character-editor-system 需要修改的代码还是比较多,一个原因是c:\Windows这个路径应该结合Environment动态处理,不能固定为c盘,毕竟还是有将系统装其他盘上的情况;另一个原因是涉及专用字符的控件,如TextBox,由于字体可以由用户指定,所以没办法统一通过Style去指定FontFamily,有办法给应用中的所有TextBox指定一个候选FontFamily吗?
动态加载样式,写2个资源字典的XAML,比如font1.xaml里面对应你应用一个FontFamily的所有控件的所有样式,font2.xaml对应另一个。换字体的时候清除掉原来的资源然后加载对应的xaml即可。跟换肤一样。

Application.Current.Resources.MergedDictionaries.remove(currentFontResources);
Application.Current.Resources.MergedDictionaries.add(newFontResources);
currentFontResources = newFontResources;
xiaoboey 2013-07-17
  • 打赏
  • 举报
回复
找到一个解决办法: http://social.msdn.microsoft.com/Forums/vstudio/en-US/73b22408-c60f-44d5-81bc-73d08fd893c0/display-private-characters-in-datagrid-define-by-using-the-private-character-editor-system 需要修改的代码还是比较多,一个原因是c:\Windows这个路径应该结合Environment动态处理,不能固定为c盘,毕竟还是有将系统装其他盘上的情况;另一个原因是涉及专用字符的控件,如TextBox,由于字体可以由用户指定,所以没办法统一通过Style去指定FontFamily,有办法给应用中的所有TextBox指定一个候选FontFamily吗?
ariesget 2013-07-17
  • 打赏
  • 举报
回复
你试下用<Glyphs />来显示你的这个字体,不用TextBlock
xiaoboey 2013-07-17
  • 打赏
  • 举报
回复
引用 5 楼 ariesget 的回复:
http://social.msdn.microsoft.com/Forums/vstudio/en-US/bc7b64e4-df84-4ce6-ac28-9d283bd0ae07/true-type-font-not-recognized-by-wpf 看看是否有帮助
他提了一个应用自带字体的方法,但没有解决我的问题
xiaoboey 2013-07-17
  • 打赏
  • 举报
回复
引用 4 楼 coobai 的回复:
但是需要注意的是,自己造的字只能在当前使用的系统中使用,
呵呵,现在的问题是在当前使用的系统也无法用啊。。。其他系统要用的话,是可以把造字保存的那个文件复制过去的
ariesget 2013-07-17
  • 打赏
  • 举报
回复
http://social.msdn.microsoft.com/Forums/vstudio/en-US/bc7b64e4-df84-4ce6-ac28-9d283bd0ae07/true-type-font-not-recognized-by-wpf 看看是否有帮助
coobai 2013-07-17
  • 打赏
  • 举报
回复
但是需要注意的是,自己造的字只能在当前使用的系统中使用,
嘟嘟sun 2013-07-17
  • 打赏
  • 举报
回复
虽然不太明白,但是帮顶一下啦,希望懂的人快点作出解答。
xiaoboey 2013-07-17
  • 打赏
  • 举报
回复
这完全是个超出意料的问题,按以往VB、Delphi的项目经验,Windows的TTF字体,用造字程序造的字,各个应用都是可以直接使用的。所以选WPF来做的时候,这个问题完全没有考虑,直接认为是没问题的。内部测试的时候都没测过,现在是客户使用中才发现显示不出来。。。
coobai 2013-07-17
  • 打赏
  • 举报
回复

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧