源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Python实现对比不同字体中的同一字符的显示效果

  • 时间:2021-09-30 02:30 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Python实现对比不同字体中的同一字符的显示效果
有人在 openSUSE 中文论坛询问他的输入法打出的「妩媚」的「妩」字为什么显示成「女」+「元」。怀疑是字体的问题,于是空闲时用好友写的 python-fontconfig 配合 Pillow (PIL 的一个 fork)写了个脚本,使用系统上所有包含这个「妩」字的字体来显示这个字,看看到底是哪些字体有问题。 (更新后的)脚本如下: Google Chrome / Chromium 用户请注意:如果复制得到的代码中含有不间断空格(0xa0),请手动替换下。 #!/usr/bin/env python3 # vim:fileencoding=utf-8 from PIL import Image, ImageDraw, ImageFont import fontconfig ch = '妩' def get_fonts():   ret = []   for f in fontconfig.query():     f = fontconfig.FcFont(f)     if f.has_char(ch):       ret.append((f.file, f.bestname))   return ret w, h = 800, 20000 image = Image.new('RGB', (w, h), 'white') draw = ImageDraw.Draw(image) pos = 0 w = 0 strs = ch for fontfile, fontname in get_fonts():   font = ImageFont.truetype(fontfile, 24)   s = '%s: %s' % (fontname, strs)   font_width, font_height = font.getsize(s)   w = max((font_width, w))   draw.text((10, pos), s, font=font, fill='black')   pos += font_height   h = pos image = image.crop((0, 0, w+10, h)) image.save('fonts.png') 寻找字体,然后渲染到当前目录下的fonts.png文件中。寻找字体的过程挺花时间的,要耐心等待。最后结果如下: [img]http://img.1sucai.cn/uploads/article/2018010709/20180107090127_0_60421.jpg[/img] 我这里,文泉驿微米黑、方正魏碑ref、某个 Droid Sans Fallback 字体中「妩」字的字形不对。(我这里有三个字体文件都叫「Droid Sans Fallback」……)>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部