作品展示:
背景需求
使用红豆空心黑体制作幼儿字帖(涂色版)
中4班孩子的83个字中有2个字没有显示为空心字
说明:红豆空心黑体不能把所有汉字转为空心字。
有那些汉字不能转成红豆空心黑体?
测试一:学生名单(2022年9月全园名单测试)
'''
查询红豆空心黑体无法识别那些汉字
作者:阿夏
时间:2024年01月30日
'''
from pandas import DataFrame, Series
import pandas as pd
import numpy as np
import xlrd
from xpinyin import Pinyin
print('----------第1步:读取EWXCEL里面的所有名字,变成单字,去除重复字-----------')
# 读取列
worksheet = xlrd.open_workbook(r'C:\Users\jg2yXRZ\OneDrive\桌面\红豆字体缺失\202309全部幼儿按学号639人.xls')
sheet_names= worksheet.sheet_names()
# print(sheet_names)
for sheet_name in sheet_names:
sheet = worksheet.sheet_by_name(sheet_name)
rows = sheet.nrows # 获取行数
cols = sheet.ncols # 获取列数,尽管没用到
all_content = []
cols = sheet.col_values(1) # 获取第二列内容: 姓名。数据格式为此数据的原有格式(原:字符串,读取:字符串; 原:浮点数, 读取:浮点数)
print(cols[1:])
print('多少人',len(cols[1:]))
# 多少人 639
# ['张三', '李四', '王五刘', '朝气吧'……]
# print(type(cols[1:])) #查看数据类型 <class 'list'>
# 读取名字里的每一个字,第一行不要
all=[]
for x in cols[1:]:
for y in x:
all.append(y)
print('去重前的单字数量',len(all))
# print(all)
# 去重前的单字数量 1872
all=set(list(all))
print('去重后的单字数量',len(all))
# print(len(all))
# 去重后的单字数量 548
#
print('----------第2步:把汉字写入word,20磅 红豆空心黑体-----------')
from docx import Document # 导入Document类,用于创建文档
from docx.shared import Pt, RGBColor # 导入Pt类和RGBColor类,用于设置字体大小和颜色
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 导入WD_PARAGRAPH_ALIGNMENT类,用于设置对齐方式
from docx.oxml.shared import OxmlElement # 导入OxmlElement类,用于修改文本样式
from docx.oxml.ns import qn # 导入qn类,用于中文字符集的设置
doc = Document() # 创建一个空白Word文档
# 设置默认字体、字号和中文字体
doc.styles['Normal'].font.size = Pt(60) # 设置默认字号为12号字体
doc.styles['Normal'].font.name = u'红豆空心黑体' # 设置默认字体为楷体
doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'红豆空心黑体') # 设置中文字体为宋体
# 添加第一个段落
paragraph1 = doc.add_paragraph() # 创建一个段落对象
paragraph1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 设置段落文字居中对齐
for k in all:
run1 = paragraph1.add_run(k)
# 设置英文字体
run1.font.name = '红豆空心黑体'
# 设置中文字体
run1._element.rPr.rFonts.set(qn('w:eastAsia'), u'红豆空心黑体')
# 设置字体大小
run1.font.size = Pt(60)
# 设置加粗
run1.font.bold = True
doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\红豆字体缺失\test.docx') #保存才能看到结果
from docx2pdf import convert
# docx 文件另存为PDF文件
inputFile = r'C:\Users\jg2yXRZ\OneDrive\桌面\红豆字体缺失\test.docx'# 要转换的文件:已存在
outputFile = r'C:\Users\jg2yXRZ\OneDrive\桌面\红豆字体缺失\test.pdf' # 要生成的文件:不存在
# 先创建 不存在的 文件
f1 = open(outputFile,'w')
f1.close()
# 再转换往PDF中写入内容
convert(inputFile, outputFile)
# time.sleep(2)
# https://www.cnblogs.com/fengfenggirl/p/python_worddb.html
结果展示——必须在word里才能看到
“红豆空心黑体”不能识别的汉字(黑心)很多
虽然黑心字体不是空心字,但word默认为“红豆空心黑体”,
所以无法通过识别字体名称来提取这些非空心的字体。只能手动选择这些字
玥、锜、玗、琇、祎、翾、淏、爀、浵、旸、晞、旻、珵、瑄、璟、晅、橒、喆、珺、珣、妘
548个汉字,一共21个无法空心显示的字 占比3.83%
测试二:常用汉字学生名单(2022年9月全园名单测试)
去掉括号里的拼音,去掉空格,去掉回车
3500常用字
只有一个字显示显示不出
扞
1个字无法显示
玥、锜、玗、琇、祎、翾、淏、爀、浵、旸、晞、旻、珵、瑄、璟、晅、橒、喆、珺、珣、妘、扞
目前搜索得知以上22个字无法用红豆空心黑体显示,需要改成文艺空心黑体。
有机会再扩大搜索量,1万字汉字进行批量