OxyPlot.SkiaSharp显示中文乱码的问题
oxyplot 图表控件功能强大,使用很广泛。最近考虑到性能使用OxyPlot.SkiaSharp替代OxyPlot.WPF,曲线图表初步测试,性能提升近10倍左右。基于SkiaSharp图形引擎的一些控件常遇见中文乱码的问题,所以改用OxyPlot.SkiaSharp时也有心里准备。默认情况下中文显示真成了乱码。如下图所示。

于是翻了遍OxyPlot.SkiaSharp源码,看到PlotModel中的DefaultFont属性默认值是“Segoe UI”,西文无衬线体。试着改为“微软雅黑”,中文显示正常了。如下图所示。

OxyPlot.WPF中为什么显示没问题,将WPF中TextBlock字体改为ALGERIAN后,只有英文应用了该字体,而中文则是以另外一种字体显示的。如下图所示。

我们知道WPF的默认字体也是“Segoe UI”,为什么显示不会有问题呢,这就要提到WPF应用字体的机制了。
WPF应用程序使用属性FontFamily、FontStyle、FontWeight、FontStretch和FontSize来指定它想要的字体。 在运行时,WPF会决定在应用程序运行的目标系统上使用准确的字体。这个决定是基于将前四个属性(暂时忽略FontSize)与该系统上安装的物理字体文件进行匹配。
WPF首先将提供的FontFamily与系统中找到的字体名称进行匹配。 然后,它试图找到一个与所请求的FontStretch、FontStyle和FontWeight属性值最接近的字体。 匹配FontStretch是最高优先级,其次是FontStyle,然后是FontWeight。
如果WPF找不到匹配的字体,它就会“退回”到与WPF一起安装的默认字体,即
C:\Windows\Fonts\GlobalUserInterface.CompositeFont
这是一种复合字体,它试图将单个字符映射到系统上可能存在的字体。也就是说中文和英文是分开映射到不同的字体上。
OxyPlot.SkiaSharp显示中文乱码的问题的更多相关文章
- JUCE 界面库显示中文乱码问题
JUCE 界面库显示中文乱码问题 环境: Windows7 64位 旗舰版 Visual Studio Ultimate 2012 JUCE 4.1 问题描述: 直接使用juce::String存储中 ...
- 转:jsp页面显示中文乱码解决方案
jsp页面显示中文乱码: jsp页面的编码方式有两个地方需要设置: <%@ page language="java" import="java.util.*&quo ...
- Phantomjs 在cmd命令行显示中文乱码
cmd命令行窗口显示中文乱码 cmd中文支持gbk编码 在js执行文件中加上(一般在最开始加) phantom.outputEncoding="gbk"; 这样乱码就正确了
- Win 7英文系统显示中文乱码的解决(转)
Win 7英文系统显示中文乱码的解决http://www.enet.com.cn/article/2011/0811/A20110811896633.shtml 请点击Startmenu并点击Cont ...
- XShell连接 Linux系统,显示中文乱码
摘要: Linux系统,中文显示乱码 XShell是一个强大的安全终端模拟软件,它支持SSH1, SSH2及 Microsoft Windows平台的Telnet NetSarang Xshell 4 ...
- SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题
一.SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 linux 设置系统语言 修改 /etc/sysconfig/i18n 文件,如 LANG="en_ ...
- 解决Linux文档显示中文乱码问题以及编码转换
解决Linux文档显示中文乱码问题以及编码转换 解决Linux文档显示中文乱码问题以及编码转换 使vi支持GBK编码 由于Windows下默认编码是GBK,而linux下的默认编码是UTF-8,所以打 ...
- 两种解决Qt5显示中文乱码的方法(使用QStringLiteral和#pragma execution_character_set("utf-8")两种方法)
升级到Qt5.X之后,原先解决的Qt显示中文乱码的方法突然不适用了,找了很多方式来解决这个问题第一种:在公司代码里看到的方法,先将对应的cpp文件用windows自带的记事本打开,另存为UTF-8格式 ...
- RoportNG报表显示中文乱码和TestNG显示中文乱码实力解决办法
最近在进军测试自动化框架学习阶段,但无意间总是会伴随小问题的困扰,比如中文乱码,而导致显示总是不舒服,个人觉得,就一定要解决,似乎有点点强迫症.所以遇到RoportNG报表显示中文乱码和TestNG显 ...
随机推荐
- Typescript & readonly property
Typescript & readonly property https://www.typescriptlang.org/docs/handbook/classes.html#readonl ...
- js jsonParse
mdn const rx_one = /^[\],:{}\s]*$/; const rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g; // 匹配 ...
- Union international INC评德意志联邦投入十亿欧元重启文化娱乐产业
当地时间6月4日,德国联邦政府宣布了一项名为"重启文化"(Neustart Kultur)的计划,将投入总计10亿欧元,用以支持德国文化及创意产业的恢复和重建. Union int ...
- RocketMq灰皮书(一)------选型&RocketMQ名词
RocketMq灰皮书(一)------选型&RocketMQ名词 一. MQ选型对比 目前业内常用的MQ框架有一下几种: Kafka RabbitMQ RocketMQ 除此之外,还有Act ...
- NLog整合Exceptionless
前言 在实际的.Net Core相关项目开发中,很多人都会把NLog作为日志框架的首选,主要是源于它的强大和它的扩展性.同时很多时候我们需要集中式的采集日志,这时候仅仅使用NLog是不够的,NLog主 ...
- java 判断是否存在路径,不存在自动创建(兼容 window 和 linux)
1 private void createPath(String path){ 2 String os = System.getProperty("os.name"); 3 Str ...
- EFCodeFirst 数据库连接
EFCodeFirst 数据库连接 EFCodeFirst 数据库连接 1.NuGet安装实体命令 PM> Install-Package EntityFramework 2.数据库连接字符串 ...
- LeetCode113. 路径总和 II
原题链接 1 class Solution: 2 def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]: 3 ans,tm ...
- Canvas 如何画一个四分之一圆
转: Canvas 如何画一个四分之一圆 HTML: Document JS: var c = document.getElementById('ctx') var ctx = c.getContex ...
- Nginx解析漏洞复现以及哥斯拉连接Webshell实践
Nginx解析漏洞复现以及哥斯拉连接Webshell实践 目录 1. 环境 2. 过程 2.1 vulhub镜像拉取 2.2 漏洞利用 2.3 webshell上传 2.4 哥斯拉Webshell连接 ...