Font/FreeType
关于字体、字体引擎方面
柳鲲鹏
建立了编程学(编程基本功、平台化编程)、六石管理学等几个流派。
每涉及一个领域,都是顶级砖家。在这些领域中,如果遇到问题,最后肯定是搜索到本博客。
展开
-
gitlab提交MQ提示Pipeline failed的解决办法
一开始在.git中寻找,没找到。今天一看,就在源码目录下。赶紧修改,提交,重组。终于收到了pipline success的消息。硬着头皮看了一下,大意是说因为有人利用服务器挖矿,所以要进制限制,然后一通说法。第二次(还是第三次)提交了位图斜体代码,一起没有采纳。看了一下,提示失败:Pipleline failed。原创 2023-06-25 09:21:18 · 3268 阅读 · 3 评论 -
热烈祝贺提交的笔画粗细接口,被FreeType正式采纳
就是对于参数的具体含义是什么。我开始以为是要求我提供一个更好的参数,后来才明白对方问的是参数的具体意思?我就老老实实的回答:我无法回答这个问题,我的工作是建立在粗体基础上。意思是你要不问粗体去?哈哈,粗体现在各家各有做法,没有统一标准。有人奇怪了,大锅这作者不是你啊。因为这个功能进行了反复讨论,最后负责人也是忍无可忍,又重新开了个MQ。FreeType越来越强大完善了!原创 2023-03-17 09:05:02 · 214 阅读 · 0 评论 -
一个讨论字体粗细的网页
那么,是不是说,现在粗体还没有标准?原创 2023-02-23 09:20:22 · 122 阅读 · 1 评论 -
粗体效果对比:(Times New Roman自带) VS (FreeType粗体)
有的字体文件自带粗体部分。那么,与FreeType对比如何呢?这里选用(Times New Roman + 60)原创 2023-02-21 14:42:06 · 418 阅读 · 0 评论 -
FreeType笔画减细的效果测试
Order is:原创 2023-02-21 13:52:25 · 177 阅读 · 0 评论 -
FreeType笔画加粗的效果测试
Order is:原创 2023-02-21 11:38:57 · 316 阅读 · 0 评论 -
热烈祝贺FreeType 2.13.0发布!我司提交代码已正式启用!
看了一下,欣喜的发现我司提交的代码已正式启用!一方面是我司技术力量强大的体现,另外也是为开源贡献自己的力量。昨天无意中看到2.13.0正式发布,今天专门下载下来准备整合。原创 2023-02-20 14:06:33 · 244 阅读 · 0 评论 -
关于FreeType中units_per_EM的含义
具体什么用处目前没有研究清楚,从网上搜索了一些说法:units-per-em - SVG:可缩放矢量图形 | MDNThe attribute specifies the number of coordinate units on the "em square", an abstract square whose height is the intended distance between lines of type in the same type size. This is the size of原创 2023-02-26 08:16:23 · 279 阅读 · 1 评论 -
FreeType/FT_Size_Metrics/x_ppem /y_ppem 是如何计算的
x_scale和y_scale是26.6的浮点数。原创 2023-02-21 08:36:15 · 221 阅读 · 0 评论 -
FreeType中FT_Face.units_per_EM的值怎么来的
这个值不是算出来的,是直接从文件中读取的。在这里直接读入一段数据,转换为结构体。原创 2023-03-05 08:40:49 · 197 阅读 · 0 评论 -
关于FreeType的ppem含义
继上文吾做了一系列粗体研究之后,负责FreeType的老外看了觉得ppem更靠谱。可是ppem离WORD效果相差较大。吾表示不知道ppem的意思,建议使用72,即point转pixel的单位。第一句话的意思,用中文说,大约是你看看你一天天的……这部分我也确实没有仔细研究就是,不丢脸,哈哈。原创 2023-02-20 08:37:48 · 207 阅读 · 0 评论 -
FreeType粗体时是如何计算的
粗体是有代码的,就是这个计算加粗幅度(比例关系),对方也表示是个经验值,希望能知道原理。所以我先以矢量字体为例,研究一下FreeType是怎么加粗的。加粗与字号有关,这一点是毫无疑问的。对方提出:24是个经验值,能不能找到原因?这说明,关键在于FT_MulDiv。从代码也能看出,差异就在于中间的参数。查了一下FT_MulDiv(a, b, c),大意是a*b/c。提交了一个粗体代码,对方提出,粗体增加的程度是怎么算的。把x或y的if部分注释,都会导致没有画面。把else部分注释,没有影响。原创 2023-02-17 09:01:13 · 653 阅读 · 0 评论 -
FreeType粗体代码改动,对于效果的影响
96与WORD最相似,连其中的横线灰度都一样。VS2012和WORD是有差异的。VS2012和WORD是有差异的。总体来说,FreeType偏粗。原创 2023-02-16 17:14:01 · 196 阅读 · 0 评论 -
FreeType/FT_Size_Metrics/x_scale/y_scale是如何计算的
此处的char_height是定点数,6400=100*64(64是6bit的关系)具体函数是ftobj.c中的FT_Request_Metrics()此处有疑点:为什么认为256是定点数?原创 2023-03-02 08:54:17 · 196 阅读 · 0 评论 -
Windows/VS不同Weight的字体效果测试
按照weight的说法,应该是支持笔画变细、正常、粗三种方式。551-1000算粗体。难道是我代码写法不对?0-550是正常区。原创 2023-02-15 14:52:14 · 143 阅读 · 1 评论 -
字体实际效果,FreeType的字号,对应Windows字体的高度
宽高是完全一样的(有些细节是渲染算法不同导致)。原创 2023-02-15 13:56:03 · 323 阅读 · 0 评论 -
关于FreeType中文竖排斜体的接口的争论
如果x/y同时有值,就会发生旋转,如果不同可能很怪异,哈哈。单纯从斜体功能来说,显然是我提出的接口好。这次提交代码,就新增的接口,发生了争论。通过参数控制是左右倾斜还是上下倾斜。原创 2023-02-15 09:11:04 · 165 阅读 · 2 评论 -
微软关于笔画粗细的说明
我知道有这么个事,具体的说明,是这次向FreeType提交代码,对方提示的。原创 2023-02-14 16:40:18 · 115 阅读 · 0 评论 -
热烈庆贺FreeType正式支持中文竖排时的斜体功能
我以为250号提交被拒了。今天仔细研究了一番,发现是接受了,做了一定修改。接口跟我预计的不一样,这个对方要求,咱就接受了。原创 2023-02-09 10:08:49 · 240 阅读 · 0 评论 -
梦笔记0207:关于FreeType中文斜体特性的工作预言
梦笔记0207_柳鲲鹏的博客-CSDN博客Add a feature, slant outline glyph with direction l2r or t2b (!250) · Merge requests · FreeType / FreeType · GitLab原创 2023-02-08 14:16:37 · 137 阅读 · 1 评论 -
泰山OFFICE技术讲座:怪异的宋体6.5
我是没想明白为什么。原创 2023-02-18 08:30:05 · 137 阅读 · 0 评论 -
泰山OFFICE技术讲座:关于微软雅黑字体,渲染的差异
上面是WORD,下面是泰山OFFICE。高度都是13个像素。总体来说,泰山OFFICE字高一些。也有例外,如黑、字两个字是WORD高。对于英文、数字,泰山OFFICE的位置偏上,视觉效果上也确实偏上。原创 2023-02-07 11:15:14 · 248 阅读 · 1 评论 -
参与开源工作,提交代码很是麻烦
就是动不动就要求修改,这里不对那里不对。参与FreeType,有一次自己操作失误,一下子把自己库给删除了,MQ都没有了。最近提交斜体T2B,操作来操作去,十分的麻烦。要合并自己的代码到主分支上,实际上是一种草稿到正式版本的过程。人家也担心你代码进来,万一有问题搞得嗝屁了怎么办?于是耐心的回滚了代码,清理了分支,重新提交代码。原创 2023-01-29 09:32:34 · 113 阅读 · 0 评论 -
泰山OFFICE技术讲座:为字体调整字间距的研究,设置值何时生效
当值小于等于字体size的时候,kerning生效。当值大于字体size的时候,kerning无效。比如六号,size=7.5PT(10PX)。变化的原因,是kerning的布尔值。原创 2022-11-30 13:47:36 · 116 阅读 · 0 评论 -
泰山OFFICE技术讲座:Times New Roman的kerning研究
感觉有点明白,实际上一点也没头绪。原创 2022-11-29 14:13:46 · 162 阅读 · 0 评论 -
泰山OFFICE技术讲座:FreeType获取kerning函数FT_Get_Kerning研究
FT_Get_Kerning( FT_Face face, FT_UInt left_glyph, FT_UInt right_glyph, FT_UInt kern_mode, FT_Vector *akerning );结果保存在akerning中。有三种:FT_KERNING_DEFAULT = 0,FT_KERNING_U原创 2022-11-29 09:45:23 · 170 阅读 · 0 评论 -
泰山OFFICE技术讲座:宋体和Times New Roman字体的Tag表有哪些
ASCPBASEcmapCOLRCPALcvtDSIGEBDTEBLCFFTMfpgmgaspGDEFglyfGPOSGSUBhdmxheadhheahmtxJSTFkernlocaLTSHmaxpMERGmetamortnameOS/2PCLTpostprepSTATVDMXvheavmtxVORGavarBASEcmapcvtDSIG。原创 2022-11-29 09:20:45 · 174 阅读 · 0 评论 -
泰山OFFICE技术讲座:字体的kerning是什么意思
英文字体中(如Times New Roman),不同字母宽度不同,为了协调文章排版的疏密,做出适当调整。标点和字的kerning是存在的,又称标点压缩。在文字处理中,标点都是压缩一半宽度。汉字间没有kerning。拼音存在kerning。原创 2022-12-01 10:29:06 · 316 阅读 · 1 评论 -
泰山OFFICE技术讲座:验证字体的宽度计算
从上述表中可以看到,泰山计算的宽度,正好落在上限下限之间。原创 2022-11-28 15:16:22 · 112 阅读 · 0 评论 -
JDK:Font.canDisplay()是如何生效的
之前记得某些情况下,Font.canDisplay()有问题。今天试了一下Times New Roman字体对泰的结果,得到了false,说明正确工作了。如果index合法(落在startCount和endCount之间),就可以找到索引。missingGlyph初始化为-1,TrueTypeGlyphMapper()中初始化为0。如果返回的glyph与missingGlyph不同,就可以显示。这个函数中,charToGlyph()得到字符图像索引,如果是-1就是无法显示。原创 2022-11-25 11:01:40 · 374 阅读 · 0 评论 -
JDK本身是支持浮点字体的
某些场合下,需要浮点字体,而Font的构造器中,需要的是整数。是不是就没办法了呢?实际上JDK是支持浮点字体的。最后,可以通过Font.getSize2D()得到浮点字号。对变形器使用浮点操作就可以了。原创 2022-11-23 08:29:36 · 127 阅读 · 0 评论 -
JDK:字体大小是如何生效的
pointSize的命名,疑似不准确。或者是FreeType的磅?调用一个私有浮点构造器。从这里可以看到,JDK是支持浮点字体的。泰山JDK为此专门修改,开放并扩充了构造函数,允许传递浮点。这个函数需要的字号有6位定点小数,所以前面乘64。从传递的参数matrix中获取数组。传递字号,保存在size字段中。字号信息保存在matrix中。也就是构造了一个变形器。原创 2022-11-24 08:21:20 · 324 阅读 · 1 评论 -
泰山OFFICE技术讲座:逻辑字号、中文字号、保存字号、布局字号、绘制字号
就是用户看到的字号,也可以称之为用户字号。各位在编辑时看到的数字,如11.5、13等。一个字体,WORD保存时的字号。保存字号=(逻辑字号*2)应该是经历过一次定义,导致的系数差异。如五号对应的逻辑字号是10.5。保存字号=(逻辑字号*4/3)保存字号=四舍五入(布局字号)逻辑字号以0.5为步进。原创 2022-11-22 10:03:59 · 226 阅读 · 1 评论 -
泰山OFFICE技术讲座:字体删除线的研究
目前得到的数据如下:WORD字号WORD大小布局字体高度布局高度高度位置从上从上从下从下从下202026.6666730.4171334.5850634210.61764720.751041313.834020.38235319.519.52629.656733.7204334200.58823520.232261413.488170.411765小二182427.3754231.1265531190.612903。原创 2022-12-02 08:13:14 · 105 阅读 · 0 评论 -
java.awt.FontFormatException: Unsupported sfnt C:\Windows\Fonts\mstmc.ttf
【代码】java.awt.FontFormatException: Unsupported sfnt C:\Windows\Fonts\mstmc.ttf。原创 2022-11-21 14:18:04 · 704 阅读 · 1 评论 -
泰山OFFICE技术讲座:等线字体高度的深入研究
这个过于专业。序号字号剩余行数高度leadingascentdescent字体高度相差系数1六号96813.5441208.101002.3200010.421003.123121.346172小五45716.2456109.721202.7840012.505203.740411.343543五号14918.95918011.341403.2480014.589404.369781.345384小四2042。原创 2022-11-14 09:14:21 · 95 阅读 · 0 评论 -
JDK中字符的宽度计算流程
之后是本地函数getGlyphAdvanceNative()原创 2022-11-07 08:25:18 · 342 阅读 · 0 评论 -
JDK中字体的高度信息ascent/descent/leading是怎么计算的
getFontMetricsNative是本地函数,然后新建StrikeMetrics对象。FTScalerInfo.face中的值:ascender/descender/height。原创 2022-11-19 10:57:14 · 609 阅读 · 0 评论 -
VC/Windows字体度量测试代码
看了上一篇博文,也许有人想看看代码,自己调试一下。原创 2022-11-05 08:08:19 · 120 阅读 · 0 评论 -
VC/Windows字体度量参数研究及绘制效果
y+tmAscent+tmDescent(或者是y+tmHeight)昨天研究WINDOWS字体度量,经过反复研究,终于搞明白了关系。这个图看着就象那么回事了吧。原创 2022-11-01 09:08:20 · 107 阅读 · 0 评论