- 博客(22)
- 收藏
- 关注
原创 使用程序绘制中文字体——中文字体的参数化设计方案初探
文章摘要: 作者从小对写字画画感兴趣,但因缺乏相关技能,转而探索通过编程实现参数化绘画。经过多次尝试,最终专注于中文字体设计的参数化方向,开发了字体设计工具《字玩》。该工具通过程序化绘制笔画,并允许用户通过调整参数将笔画组合成字形。文章详细介绍了设计思路,包括笔画骨架参数和风格参数的设计,以及如何通过关键点和基本参数生成笔画轮廓。作者以黑体为例,展示了如何通过程序绘制笔画并组合成字形,同时探讨了在参数化设计过程中遇到的问题和解决方案。
2025-05-09 18:27:24
942
原创 字玩FontPlayer开发笔记14 Vue3实现多边形工具
多变形工具允许用户创建自定义多边形形状,笔记记录了如何使用Vue3实现多边形工具
2025-02-14 13:44:59
1080
2
原创 字玩FontPlayer开发笔记13 Vue3实现钢笔工具
钢笔工具是设计工具很重要的一个功能。钢笔工具通过创建一组贝塞尔曲线,使得用户可以编辑创建任意不规则的曲线形状。钢笔工具使用三次贝塞尔曲线,每段贝塞尔曲线包含两个锚点定义起点和终点,两个控制点分别定义起始切线和收尾切线,通过特定算法形成曲线线段,基本可以拟合任意形状。
2025-02-13 13:59:28
1188
4
原创 字玩FontPlayer开发笔记12 Vue3撤销重做功能
撤销重做功能是设计工具必不可少的模块,以前尝试使用成熟的库实现撤销重做功能,但是细节问题有很多,就一直搁置了。这几天着手自己实现撤销重做模块,目前基本成形,虽然还有很多地方待完善,但还是先记录一下成果。
2025-01-21 16:57:40
1279
4
原创 字玩FontPlayer开发笔记9 Tauri2打包应用
最近开始着手替换成Tauri,前几天把基本功能迁移之后,今天开始打包测试,记录一下。
2025-01-08 14:05:03
638
2
原创 字玩FontPlayer开发笔记7 Tauri2动态切换菜单enbaled状态
前两天初步完成了Tauri配置和菜单设置,今天继续将原有Electron代码替换成Tauri。在字玩的设计中,菜单按钮的enbaled状态需要动态切换……
2025-01-05 21:12:30
918
原创 字玩FontPlayer开发笔记5 Tauri初体验
字玩目前是用Electron进行桌面端应用打包,但是性能体验不太好,一直想替换成Tauri。Tauri的功能和Electron类似,都可以把前端代码打包生成桌面端(比如Windows和Mac)应用……
2025-01-03 20:08:19
525
原创 OpenType字体规范解析(七)OS/2表、post表
我们在设计中经常需要使用字体文件,有时候会想一窥究竟字体文件到底是以怎样的格式存储的,OpenType就是定义字体文件存储格式的规范。这篇文章主要介绍了OS/2表和post表。
2025-01-02 12:51:46
1319
原创 OpenType字体规范解析(六)name表
我们在设计中经常需要使用字体文件,有时候会想一窥究竟字体文件到底是以怎样的格式存储的,OpenType就是定义字体文件存储格式的规范。这篇文章主要介绍了name表。name表定义了不同语言环境下,与字体相关的字符串信息。
2025-01-01 16:23:23
967
2
原创 字玩FontPlayer开发笔记3 性能优化 大量canvas渲染卡顿问题
在笔者的开源项目中,经常需要对大量canvas进行渲染,比如渲染字体预览列表,一个字库可能要包含上千上万个字符,这时候界面会卡住一段时间,体验非常不好。目前项目中主要采用了三个方法进行优化...
2025-01-01 16:18:04
1649
原创 OpenType字体规范解析(五)hhea表、hmtx表、mxap表
我们在设计中经常需要使用字体文件,有时候会想一窥究竟字体文件到底是以怎样的格式存储的,OpenType就是定义字体文件存储格式的规范。OpenType 是 Microsoft 和 Adobe 于 1996 年共同开发的字体标准,旨在统一 TrueType 和 PostScript 技术,其文件扩展名可以是 .ttf 或 .otf,取决于内部使用的字形数据格式。这篇文章主要介绍了hhea表、hmtx表、mxap表。
2024-12-31 16:10:36
1174
原创 字玩FontPlayer开发笔记1 路径去除重叠功能的添加
在中文字体设计中,笔者经常先设计笔画,然后再用几个笔画叠加在一起形成字形,最近发现这样直接导出,即使路径顺序都符合非零环绕规则,在部分软件中,还是会出现重叠部分镂空问题。参考了别的成熟软件,发现这个问题可以用合并路径的方式去除重叠。其中有一点令笔者不太满意,就是由于字玩自己的字形数据结构,和paper.js使用的数据结构差异较大,需要进行前后两次转换,耽误处理时间,这里以后看看要不要做优化。paper.js提供了强大的对贝塞尔路径的布尔操作,笔者借助了paper.js帮我解决了这个问题。
2024-12-30 02:32:43
417
原创 OpenType字体规范解析(四)CFF表
我们在设计中经常需要使用字体文件,有时候会想一窥究竟字体文件到底是以怎样的格式存储的,OpenType就是定义字体文件存储格式的规范。本文主要介绍了CFF表,即存储字体轮廓信息的表。
2024-12-30 01:15:35
1305
原创 OpenType字体规范解析(三)cmap表
我们在设计中经常需要使用字体文件,有时候会想一窥究竟字体文件到底是以怎样的格式存储的,OpenType就是定义字体文件存储格式的规范。这篇文章介绍了cmap表。cmap表定义了字符代码到字形索引的映射。字符代码如果没有对应任何字形,应映射到字形索引0,该位置上的字形必须是一个特殊的字形,表示缺失字符,通常称为 .notdef。每个子表有七种可能的格式之一,并以一个格式字段开始,指示所使用的格式。前四种格式——格式 0、2、4 和 6——最初是在 Unicode 2.0 之前定义的。
2024-12-29 21:23:06
1103
原创 OpenType字体规范解析(二)head表
我们在设计中经常需要使用字体文件,有时候会想一窥究竟字体文件到底是以怎样的格式存储的,OpenType就是定义字体文件存储格式的规范。这篇文章主要介绍了head表的格式规范。head 表主要包含字体的全局信息,是OpenType字体中的一个重要表。它包含了关于字体的基本信息和字体渲染所需的一些关键数据。head 表位于字体文件的开头部分,定义了字体的基本特性,帮助渲染引擎正确地加载和显示字体。
2024-12-29 18:31:10
1333
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅