0x3e8 (1000) 〜 0x898 (2200) まで 400 刻みでテスト。なお、初期値の 0x0 は 0x578 (1400) と同じとして扱われる。
等倍
部分拡大
macOS - テキストエディット
0x4b0 (1200) 相当くらいかな?🤔
その後
FT_LOAD_TARGET_XXXXX
とか弄ってみて macOS のアンチエイリアスに近くはなった(FT_LOAD_TARGET_XXXXX
が効いているかどうかはわからない)。次回のリリースに反映させる予定。
なお、Wine の FontSmoothingGamma に関するソースは 4.0.1 時点では下記の通り。
static struct font_gamma_ramp *get_font_gamma_ramp( void ) { static const WCHAR desktopW[] = { 'C','o','n','t','r','o','l',' ','P','a','n','e','l','\\', 'D','e','s','k','t','o','p',0 }; static const WCHAR smoothing_gamma[] = { 'F','o','n','t','S','m','o','o','t','h','i','n','g', 'G','a','m','m','a',0 }; const DWORD gamma_default = 1400; struct font_gamma_ramp *ramp; DWORD i, gamma; HKEY key; ramp = HeapAlloc( GetProcessHeap(), 0, sizeof(*ramp) ); if ( ramp == NULL) return NULL; gamma = gamma_default; if (RegOpenKeyW( HKEY_CURRENT_USER, desktopW, &key ) == ERROR_SUCCESS) { if (get_key_value( key, smoothing_gamma, &gamma ) || gamma == 0) gamma = gamma_default; RegCloseKey( key ); gamma = min( max( gamma, 1000 ), 2200 ); } /* Calibrating the difference between the registry value and the Wine gamma value. This looks roughly similar to Windows Native with the same registry value. MS GDI seems to be rasterizing the outline at a different rate than FreeType. */ gamma = 1000 * gamma / 1400; for (i = 0; i < 256; i++) { ramp->encode[i] = pow( i / 255., 1000. / gamma ) * 255. + .5; ramp->decode[i] = pow( i / 255., gamma / 1000. ) * 255. + .5; } ramp->gamma = gamma; TRACE("gamma %d\n", ramp->gamma); return ramp; }