В Windows с прямой записью:
от 100 до 500 — тонкий
от 501 до 899 — толстый
от 900 — толще
В Linux с freetype и fontconfig:
от 100 до 549 — тонкий
от 550 до 899 толстый
по сравнению с 900 он толще
Как приложениям, зависящим от Skia, удается получить детализированную толщину шрифта?
Это пример, демонстрирующий проблему:
Код: Выделить всё
void draw(SkCanvas* canvas) {
skia::textlayout::ParagraphStyle paraStyle;
auto fontCollection = sk_make_sp();
fontCollection->setDefaultFontManager(fontMgr);
auto builder = skia::textlayout::ParagraphBuilder::make(paraStyle, fontCollection);
skia::textlayout::TextStyle textStyle;
textStyle.setFontSize(24);
textStyle.setColor(SK_ColorBLACK);
textStyle.setFontStyle(SkFontStyle{300, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant});
builder->pushStyle(textStyle);
builder->addText("line 1\n");
textStyle.setFontStyle(SkFontStyle{400, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant});
builder->pushStyle(textStyle);
builder->addText("line 2\n");
textStyle.setFontStyle(SkFontStyle{500, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant});
builder->pushStyle(textStyle);
builder->addText("line 3\n");
textStyle.setFontStyle(SkFontStyle{600, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant});
builder->pushStyle(textStyle);
builder->addText("line 4\n");
textStyle.setFontStyle(SkFontStyle{700, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant});
builder->pushStyle(textStyle);
builder->addText("line 5\n");
textStyle.setFontStyle(SkFontStyle{800, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant});
builder->pushStyle(textStyle);
builder->addText("line 6\n");
textStyle.setFontStyle(SkFontStyle{900, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant});
builder->pushStyle(textStyle);
builder->addText("line 7\n");
builder->pop();
builder->pop();
builder->pop();
builder->pop();
builder->pop();
builder->pop();
builder->pop();
auto paragraph = builder->Build();
paragraph->layout(200);
paragraph->paint(canvas, SkScalar(0), SkScalar(0));
}
https://fiddle.skia.org/c/b5b255306001f ... 3f3a51d799
Подробнее здесь: https://stackoverflow.com/questions/798 ... ont-weight
Мобильная версия