diff --git a/devel/206_20.md b/devel/206_20.md index 14ed9b5426..c6507929e2 100644 --- a/devel/206_20.md +++ b/devel/206_20.md @@ -1,13 +1,18 @@ -# 206_20 优化伪粗体效果 - -## 如何测试 -- 打开测试文档:TeXmacs/tests/tmu/206_20.tmu -- 检查字体加粗后效果 -- 与 main 分支的进行对比 -- 与 WPS/Word 进行对比 - -## 2026/03/05 -### What -- 回退 https://gitee.com/MoganLab/mogan/pulls/1239/files 中的修改,让simsun的伪粗体走统一的 -poorbf 机制 -- 优化部分常用cjk字体的加粗效果 +# 206_20 优化伪粗体效果 + +## 如何测试 +- 打开测试文档:TeXmacs/tests/tmu/206_20.tmu +- 检查字体加粗后效果 +- 与 main 分支的进行对比 +- 与 WPS/Word 进行对比 + +## 2026/03/27 +### What +- 优化 kaiti_gb2312 的加粗效果 +- 优化导出pdf的伪粗体质量 + +## 2026/03/05 +### What +- 回退 https://gitee.com/MoganLab/mogan/pulls/1239/files 中的修改,让simsun的伪粗体走统一的 -poorbf 机制 +- 优化部分常用cjk字体的加粗效果 - 后续补充优化更多的cjk字体效果 \ No newline at end of file diff --git a/src/Graphics/Fonts/poor_bold.cpp b/src/Graphics/Fonts/poor_bold.cpp index c481b4b596..541fa85e66 100644 --- a/src/Graphics/Fonts/poor_bold.cpp +++ b/src/Graphics/Fonts/poor_bold.cpp @@ -183,7 +183,7 @@ poor_bold_font_rep::draw_fixed (renderer ren, string s, SI x, SI y, SI* xpos, int start= i; base->advance_glyph (s, i, ligf); string ss= s (start, i); - if (ren->is_screen) { + if (ren->is_screen || ren->is_printer ()) { font_metric fnm; font_glyphs fng; int c= index_glyph (ss, fnm, fng); @@ -193,8 +193,8 @@ poor_bold_font_rep::draw_fixed (renderer ren, string s, SI x, SI y, SI* xpos, SI dpen, dtot; fatten (ss, dpen, dtot); if (dpen == dtot) { - for (int k= 0; k <= 8; k++) { - SI dx= (k * dpen) / 8; + for (int k= 0; k <= 32; k++) { + SI dx= (k * dpen) / 32; base->draw (ren, ss, x + dx + (start == 0 ? 0 : xpos[start]), y); } } @@ -209,9 +209,9 @@ poor_bold_font_rep::draw_fixed (renderer ren, string s, SI x, SI y, SI* xpos, lambda = floor (100.0 * lambda + 0.5) / 100.0; // font mbase= base->magnify (lambda, 1.0); font mbase= poor_stretched_font (base, lambda, 1.0); - for (int k= 0; k <= 8; k++) { + for (int k= 0; k <= 32; k++) { double slope= -((double) vertical (dpen)) / ((double) dpen); - SI dx = (k * dpen2) / 8; + SI dx = (k * dpen2) / 32; SI dy = (SI) floor (slope * (dx - (dpen2 >> 1))); mbase->draw (ren, ss, x + dx + (start == 0 ? 0 : xpos[start]), y + dy); @@ -350,9 +350,13 @@ static double get_bold_factor (string font_name) { string lname= locase_all (font_name); if (occurs ("simsun", lname)) return 0.5; - if (occurs ("kaiti_gb2312", lname)) return 0.3; if (occurs ("simhei", lname)) return 0.5; - if (occurs ("fangsong_gb2312", lname)) return 0.3; + // Check all possible variations for KaiTi/SimKai + if (occurs ("kaiti_gb2312", lname)) return 0.5; + if (occurs ("simkai", lname)) return 0.5; + // Check all possible variations for FangSong/SimFang + if (occurs ("fangsong_gb2312", lname)) return 0.5; + if (occurs ("simfang", lname)) return 0.5; return 1.0; }