字体表绘制的理解

下载字体到项目根目录下,我们通过一些在写预览本地字体的网站,简单看一下

通过图片不难看出阴书与原文的对应关系,接下来通过程序去完成这一过程,通过 fonttools
处理 ttf,然后获取字体和文字对应的 xml 文件

下面简单地说明一下这个  xml 文件,这个文件节点有很多,但是重点有两部分:

<GlyphOrder><!-- The 'id' attribute is only for humans; it is ignored when parsed. --><GlyphID id="0" name="glyph00000"/><GlyphID id="1" name="x"/><GlyphID id="2" name="unie31f"/><GlyphID id="3" name="unie4dd"/>...
</GlyphOrder>

GlyphOrder 节点下为该字体文件中所包含的文字

<TTGlyph name="unie01f" xMin="0" yMin="-98" xMax="961" yMax="818"><contour><pt x="260" y="417" on="1"/><pt x="296" y="365" on="0"/><pt x="349" y="278" on="1"/>...</contour><contour><pt x="364" y="301" on="1"/><pt x="391" y="265" on="1"/><pt x="555" y="328" on="0"/>...</contour>...
</TTGlyph>

TTGlyph 节点下,name为所绘制的文字,contour节点为字型信息,还有一些坐标,这些坐标意味着什么呢?看一下 1 对应的  name:

接下来让我们提取 「1」  在这个字体中对应的 name 的坐标

<TTGlyph name="unie31f" xMin="0" yMin="0" xMax="361" yMax="714"><contour><pt x="297" y="714" on="1"/><pt x="262" y="674" on="0"/><pt x="160" y="612" on="0"/><pt x="111" y="598" on="1"/><pt x="111" y="516" on="1"/><pt x="212" y="546" on="0"/><pt x="279" y="614" on="1"/><pt x="279" y="0" on="1"/><pt x="361" y="0" on="1"/><pt x="361" y="714" on="1"/></contour><instructions/></TTGlyph>

这里on表示控制端点是否在曲线上的命令,在字体绘制里面,只有贝塞尔曲线的控制点不在曲线上,如果on=0,说明点在不在曲线上,如果on=1,说明点在曲线上。因此这里(297,714)on=1,(262,674)on=0,(160,612)on=0,(111,598)on=1,说明(297,714)和(111,598)分别为起点和终点,(262,674)和(160,612)为控制点的三次贝塞尔曲线,然后(111, 516)on=1,表示绘制(111,598)到(111, 516)的直线。

接下来我们将这些坐标连线,用程序将它图形化:

其中红色的部分,是将对应的直线连接起来了,弧线就省略了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3280658.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Java并发(十五)Java并发工具类

CountDownLatch 字面意思为 递减计数锁。用于控制一个线程等待多个线程。 **CountDownLatch**** 维护一个计数器 count&#xff0c;表示需要等待的事件数量。**countDown 方法递减计数器&#xff0c;表示有一个事件已经发生。调用 await 方法的线程会一直阻塞直到计数器为零&a…

工作纪实54-git使用ssh方式

很多居家的小伙伴要重新clone项目&#xff0c;但是忘记了密码&#xff0c;最恶心的是idea还会自动帮你记录密码&#xff0c;如果输错了&#xff0c;会很恶心&#xff0c;使用ssh则不会&#xff1b;还有一个好处就是&#xff0c;集团的密码一般都是几个月更新一次&#xff0c;ss…

【IEEE出版】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024,9月20-22)

第五届大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024&#xff09;将于2024年09月20-22日在中国温州隆重举行。 会议主要围绕大数据、人工智能与软件工程等研究领域展开讨论。会议旨在为从事大数据、人工智能与软件工程研究的专家学者、工程技术人员、技术研发人…

人工智能学习笔记 - 初级篇Ⅱ - 图形可视化 - 第12节: 绘制带彩色标记的散点图

微信公众号&#xff1a;御风研墨 关注可了解更多。问题或建议&#xff0c;请公众号留言 文章目录 绘制带彩色标记的散点图应用背景准备工作操作步骤工作原理补充说明最后 绘制带彩色标记的散点图 应用背景 散点图是数据可视化中常用的图表类型之一&#xff0c;它可以用来展示…

IDEA某个项目被同事提交的代码导致不能进入Debug了,不是IDEA的问题。千万要避坑!

刚开始我发现突然不能进入debug了&#xff0c;打上去后就立马边灰了&#xff0c;我以为是我IDEA的问题&#xff0c;后来我换了其他项目都能正常进入debug. 而且后续&#xff0c;这个项目的其他同事也都不能进入debug了。 我就怀疑是项目中有人提交了代码导致的。 后来查…

【网络】网络AP热点:技术、应用与未来展望

引言 在数字化时代&#xff0c;无线网络已成为连接世界的重要基础设施。无线接入点&#xff08;Access Point&#xff0c;简称AP&#xff09;作为无线网络的核心组成部分&#xff0c;扮演着至关重要的角色。它们不仅提供了无线信号的覆盖&#xff0c;还通过桥接、中继等功能&a…

浅谈线程组插件之bzm - Arrivals Thread Group

浅谈线程组插件之bzm - Arrivals Thread Group bzm - Arrivals Thread Group 是 JMeter 中的一个高级插件&#xff0c;由 BlazeMeter 提供&#xff0c;旨在为性能测试提供更灵活、更贴近实际场景的负载生成方式。与传统的线程组不同&#xff0c;Arrivals Thread Group 通过控制…

【漏洞复现】360天擎 - 未授权与sql注入

漏洞描述 360天擎 - 未授权与sql注入 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息…

Matplotlib面积图绘制秘籍:让你的数据‘膨胀’起来,但不吹泡泡哦!

1. 引言 嘿&#xff0c;数据迷们&#xff01;想不想让你的数据‘活’起来&#xff0c;跳一曲色彩斑斓的面积舞&#xff1f;Matplotlib面积图&#xff0c;不只是数字的堆砌&#xff0c;它是故事的讲述者&#xff0c;让复杂数据变得一目了然&#xff0c;还带点小幽默。快来一探究…

NASA:水瓶座官方发布第 3 级辅助雷诺海面温度标准映射图像降序 7 天数据 V5.0

Aquarius Official Release Level 3 Ancillary Reynolds Sea Surface Temperature Standard Mapped Image 7-Day Data V5.0 水瓶座官方发布第 3 级辅助雷诺海面温度标准映射图像降序 7 天数据 V5.0 AQUARIUS_L3_ANCILLARY_SST_SMID_7DAY_V5 简介 水瓶座 3 级辅助海面温度 (…

网上租房系统2024

网上租房系统2024(代码论文ppt),编号:sp007 代码经过修正,确保可以运行,下载地址在文末 技术栈: springbottvuemysql 展示: 下载地址: CSDN现在上传有问题,有兴趣的朋友先收藏.正常了贴上下载地址 备注: 专业承接各种程序java,c,c,python,cuda,AI 运行有问题请私信我,私…

使用 WeNet 训练 AISHELL-1 模型,看这篇就够了!!!!!!新手少走一个月弯路。

使用 WeNet 训练 AISHELL-1 模型的详细入门指南 在这篇文章中&#xff0c;我们将通过 WeNet 框架详细介绍如何训练 AISHELL-1 数据集的语音识别模型。我们将逐步解释各个阶段的操作&#xff0c;适合初学者入门。 文章目录 使用 WeNet 训练 AISHELL-1 模型的详细入门指南1. 环…

SFP, SFP+,QSFP光模块封装类型学习

前言&#xff1a; 本文是自己对SFP, SFP,QSFP光模块封装类型的学习记录&#xff0c;所有的资料都搜集字引用链接里的博客内容&#xff0c;本文更多的是自己的学习笔记记录所以可能会有一些理解错误&#xff0c;请更多的参考引用链接里的信息来源。 引用&#xff1a; 认识SFP/SF…

学习c语言第十八天(指针笔试题)

一维数组 字符数组 char*p"abcdef" p里面放的是a元素的地址 二维数组 指针笔试题 第一题 2 5 第二题 第三题 第四题 第五题 第六题 10 5 第七题 at 第八题 POINT ER ST EW

HTTP协议详解(一)

协议 为了使数据在网络上从源头到达目的&#xff0c;网络通信的参与方必须遵循相同的规则&#xff0c;这套规则称为协议&#xff0c;它最终体现为在网络上传输的数据包的格式。 一、HTTP 协议介绍 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff1a; 全…

AlmaLinux9安装中文语言包_zabbix没有中文语言包

更新你的系统包&#xff0c;如果系统最新可以忽略&#xff1a; sudo dnf update安装中文简体语言包 sudo yum install langpacks-zh_CN安装繁体中文包 sudo dnf install kde-l10n-Chinese-traditional安装完成后重启系统&#xff0c;以确保语言设置生效 设置系统为简体中文&…

【JavaSE-线程安全问题-死锁详解】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 &#x1f308;…

HarmonyOs~应用程序框架进阶之 UIAbility组件间的交互

我们要知道一个概念 一个应用可以有多个模块 每个模块又可以有多个UIAbility 每个UIAbility又可以有多个页面 如何创建同模块的UIAbility 首先我们创建好项目之后 就是有一个UIAbility组件存在的 那么如果我想要在同模块创建一个UIAbility怎么创建 想要创建的模块-->&g…

IP地址https证书的优势与申请途径

一、IP地址SSL证书的优势 无需域名&#xff1a;对于一些内部系统或者专用设备而言&#xff0c;它们可能不具有域名&#xff0c;但仍需保障通信安全。IP地址SSL证书正好满足这一需求。简化管理&#xff1a;对于拥有大量设备的企业来说&#xff0c;维护每个设备的域名可能是一个…

快手文生图模型-Kolors快速上手

Kolors是什么 可图(Kolors)&#xff1a;用于真实感文本到图像合成的扩散模型的有效训练 可图&#xff0c;是快手开源的一个文生图模型&#xff0c;架构上使用了chatglm&#xff0c;比普通的sd模型在中文理解上要强大很多&#xff0c;以往sd模型的提示词理解能力往往只有两种 …