Skip to content

fix(freetype): 补 ftsynth.c —— 合成粗体/斜体 - #311

Merged
Sunrisepeak merged 1 commit into
mainfrom
fix/freetype-ftsynth
Aug 30, 2026
Merged

fix(freetype): 补 ftsynth.c —— 合成粗体/斜体#311
Sunrisepeak merged 1 commit into
mainfrom
fix/freetype-ftsynth

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

上游把 ftsynth.c 编在 base 里,所有发行版都出;这里漏了。

这个缺口在有消费者调它之前完全看不见 —— freetype 自己不调它,所以 tests/examples/freetype 一直是绿的。

cairo 无条件调:

// cairo-ft-font.c:2443
if (scaled_font->ft_options.synth_flags & CAIRO_FT_SYNTHESIZE_BOLD)
    FT_GlyphSlot_Embolden (face->glyph);

没有任何 HAVE_ 守卫可以关掉 —— 这是字体没有所要字重时 cairo 合成一个的路径。所以拿这套 freetype 建 cairo 会在链接期得到 FT_GlyphSlot_EmboldenFT_GlyphSlot_Oblique 两个未定义引用。加 freedesktop.cairo 时实测撞到的。

同一类问题在 fontconfig 那边是反向的:那里我按上游默认声明了 HAVE_FT_GET_BDF_PROPERTY,而这套 freetype 不编 BDF 模块,于是八个未定义引用。两次都说明同一件事:一个 compat 包的源码列表就是它的 ABI 承诺,而承诺是被消费者发现的,不是被自己的测试发现的。

tests/examples/freetype 照常绿。只改了 pkgs/

上游把它编在 base 里,所有发行版都出;这里漏了,而这个缺口在有消费者调它之前
完全看不见——freetype 自己不调。

cairo 无条件调:cairo-ft-font.c:2443 在字体没有所要字重时调
FT_GlyphSlot_Embolden,没有任何 HAVE_ 守卫可关。所以拿这套 freetype 建 cairo
会在链接期得到两个未定义引用。加 freedesktop.cairo 时实测撞到的。

freetype 自己的测试成员照常绿。只改 pkgs/。
@Sunrisepeak
Sunrisepeak merged commit f25384a into main Aug 30, 2026
11 checks passed
@Sunrisepeak
Sunrisepeak deleted the fix/freetype-ftsynth branch August 30, 2026 15:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant