思源黑体某些字显示成日式中文,太先进了(附解法)

由于字体版权问题,公司外发的材料一般都需要把字体换成“思源黑体”才可以。

很久以前下载过显示为“Noto Sans CJK”的思源黑,后来改成了“SourceHanSans”,一直以为自己的思源黑体是正常的。

然后问题来了:在替换ppt里的字体后例行检查,运维的“运”,显示成奇怪的两个点的走字底;路径的“径”,右边显示成圣;门的一点在框的上方中间... 大部分字正常,就一些比较怪。

网上搜了很多文章,说这样的问题跟系统语言相关(确实看到过英文系统发过来的文件里有这样的显示)。但我的win11都好好地在中国、中文语言。
又试了系统自带的画图程序,里面的字体就正常。难道office出了差错?

又继续搜,总算有点搞明白了:

思源黑体一共有多种版本,我下载的是五个语言一起封装的“SourceHanSans”,即自己判断怎么显示的。office哪里设置没有找到,后来终于找到一个下载全部思源黑体的链接,下载后用了里面的“SourceHanSansSC”(简体中文专用版),再配在我的office里,终于好了。

留个下载链接在这里,以免以后换了电脑找不着:全套思源黑体合集(含ttf/ttc版/行高修正版)下载

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flying Saucer 默认使用 AWT 体渲染文本,而 AWT 默认只支持 Latin 符集。如果您想要在 Flying Saucer 中呈现中文符,需要使用支持中文符集的体。 下面是添加自定义思源黑体文件的步骤: 1. 下载思源黑体体文件。 2. 将体文件放置在项目的资源文件夹中。 3. 使用 `ITextRenderer` 的 `getFontResolver()` 方法获取体解析器对象。 4. 使用体解析器的 `addFont()` 方法将体文件添加到体解析器中。 5. 使用 `ITextRenderer` 的 `setDocumentFromString()` 方法将 HTML 符串转换为 PDF。 6. 在 HTML 中使用思源黑体体。 下面是示例代码: ```java import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import com.lowagie.text.DocumentException; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; import org.xhtmlrenderer.pdf.ITextRenderer; public class FlyingSaucerExample { public static void main(String[] args) throws Exception { String html = "<html><head><style>@font-face { font-family: 'Source Han Sans CN'; src: url('SourceHanSansCN-Normal.ttf'); } body { font-family: 'Source Han Sans CN', sans-serif; }</style></head><body><h1>你好,世界!</h1></body></html>"; OutputStream os = new FileOutputStream(new File("example.pdf")); ITextRenderer renderer = new ITextRenderer(); // 获取体解析器对象 renderer.getFontResolver().addFont("SourceHanSansCN-Normal.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); renderer.setDocumentFromString(html); renderer.layout(); renderer.createPDF(os); os.close(); } } ``` 在 HTML 中,我们使用了 `@font-face` 规则来定义自定义体,并在 `body` 样式中使用该体。在体解析器中,我们使用 `addFont()` 方法将体文件添加到解析器中。 最终的 PDF 文件将包含中文符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值