首页 > 其他分享 >脚本-字体woff做映射表

脚本-字体woff做映射表

时间:2024-07-29 16:41:41浏览次数:7  
标签:code 映射 img text woff cmap 字体 path font

from fontTools.ttLib import TTFont
import ddddocr
from io import BytesIO
from PIL import Image, ImageDraw, ImageFont


def convert_cmap_to_image(cmap_code, font_path):
    img_size = 1024
    img = Image.new("1", (img_size, img_size), 255)  # 创建一个黑白图像对象
    draw = ImageDraw.Draw(img)  # 创建图对象
    font = ImageFont.truetype(font_path, img_size)  # 加载字体文件
    character = chr(cmap_code)  # 将 cmap code转换为字符
    bbox = draw.textbbox((0, 0), character, font=font)  # 获取文本在图像中的边界框,bbox获取的是四个值
    width = bbox[2] - bbox[0]  # 文本宽度
    height = bbox[3] - bbox[1]  # 文本高度
    draw.text(((img_size - width) // 2, (img_size - height) // 2), character, font=font)  # 绘制文本,并中显示
    return img


def extract_text_from_font(font_path):
    font = TTFont(font_path)  # 加载字体文件
    # font.saveXML("font.xml")  # 保存XML文件(可以这么操作,但是这里我们不用)
    ocr = ddddocr.DdddOcr(beta=True, show_ad=False)  # 实例化
    font_map = {}
    for cmap_code, glyph in font['cmap'].getBestCmap().items():
        # 
        image = convert_cmap_to_image(cmap_code, font_path)
        bytes_io = BytesIO()
        image.save(bytes_io, format='PNG')
        # 识别图像
        text = ocr.classification(bytes_io.getvalue()) 
        # 生成对应名字的图片
        # image.save(f'{text}.png', format='PNG')
        # 最后生成映射表
        font_map[cmap_code] = text
    return font_map


font_file_path = "./font.woff"
print(extract_text_from_font(font_file_path))

标签:code,映射,img,text,woff,cmap,字体,path,font
From: https://www.cnblogs.com/a438842265/p/18330409

相关文章

  • 实战|Qt开发WordBN笔记软件#10 添加Font Awesome字体图标
    01背景【WordBN字远笔记】是天恩软件工作室开发的一款免费笔记软件;WordBN基于VS2019、Qt6.5开发,使用QtQuick(QML)开发语言。本课程将以【WordBN字远笔记】的界面为实战基础,详细介绍如何基于Qt/QML开发语言,从零开始开发一套真正的程序,包括国际化、版本发布、安装包制作等项目......
  • 【MathType】彻底解决公式大小与文章文字大小不统一(含字体的字号与磅(pt)和像素(px)之间
    在使用Mathtype的时候,有时候会出现公式大小不统一的情况,这时候手动去拖动大小的话非常不理想,并且使用格式化公式也没有效果。下面来具体分析一下导致的原因、字体的字号与磅(pt)和像素(px)之间的关系、彻底解决方法。下面图片是一个小示例(请忽略具体内容)1.大小不一致原因查看Mat......
  • C++字体库开发之go语言绑定六
    export.h#defineFONTVIEW_API__declspec(dllimport)typedefvoid*GoFontSetPtr;#ifdef__cplusplusextern"C"{#endifFONTVIEW_APIGoFontSetPtropenFontSet(constchar*stream,size_tsize);FONTVIEW_APIvoidfreeFontSet(GoFontSetPtrfontset);......
  • 【HTML+CSS】CSS字体美化:打造引人入胜的视觉盛宴
    目录一、选择合适的字体1.1Web安全字体1.2自定义字体二、字体样式调整2.1字体大小与行高2.2字体粗细与斜体2.3字体颜色三、文本装饰与布局3.1文本阴影3.2文本换行与对齐3.3文本装饰线四、字体美化实战案例 在网页设计中,字体不仅仅是文字信息的载体,更是......
  • imgui中文字体库导入乱码问题
    1.中文字体库导入乱码问题1.修改clion中的文件编码配置2.按住Ctrl+Shift+Alt+/,选中Registry…,然后取消run.processes.with.pty3.cmakelist.txt导入字体文件,注意不要加u8了,不然会乱码#字体文件include_directories(${PROJECT_SOURCE_DIR}/include/fonts)然后mai......
  • 获取手写字体的全部字形图片
    获取手写字体的全部字形图片本教程由做字体网(www.zuoziti.com)友情提供!本教程是制作手写字体系列教程,建议从序言部分开始阅读学习!如需交流,请加QQ924268440本节视频教程版权登记前的准备手写字体版权登记的类别属于美术作品类,有些登记网站会在美术类别下面细分为字体......
  • 如何出售手写字体
    如何出售手写字体本教程由做字体网(www.zuoziti.com)友情提供!本教程是制作手写字体系列教程,建议从序言部分开始阅读学习!如需交流,请加QQ924268440本节视频教程销售渠道有哪些目前允许以个人名义参与的字体销售平台有小米、字客网、找字网等等,其他的如华为、VIVO、OPPO......
  • 字体子集化
    字体子集化本教程由做字体网(www.zuoziti.com)友情提供!本教程是制作手写字体系列教程,建议从序言部分开始阅读学习!如需交流,请加QQ924268440什么是字体子集字体子集,就是从一个大字体中分离出的多个独立的子集字体。比如我们要简化一个别人的字体,从他的字体中分离自己想要......
  • 手写字体制作的相关软件
    手写字体制作的相关软件本教程由做字体网(www.zuoziti.com)友情提供!本教程是制作手写字体系列教程,建议从序言部分开始阅读学习!如需交流,请加QQ924268440本节视频教程1.FontCreator这是一款很好用的字体设计软件,小白很容易上手,网上也有一些零散的关于FontCreator的教......
  • 合并多个字体文件
    合并多个字体文件本教程由做字体网(www.zuoziti.com)友情提供!本教程是制作手写字体系列教程,建议从序言部分开始阅读学习!如需交流,请加QQ924268440本节视频教程合并多个字体文件前面我说过FontForge一次性导入太多的小图片会出现卡死的情况,我们最好是分批导入,这样就会......