Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 17 additions & 12 deletions devel/206_20.md
Original file line number Diff line number Diff line change
@@ -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字体效果
18 changes: 11 additions & 7 deletions src/Graphics/Fonts/poor_bold.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
}
}
Expand All @@ -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);
Expand Down Expand Up @@ -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;
}

Expand Down
Loading