0x3e8 (1000) 〜 0x898 (2200) まで 400 刻みでテスト。なお、初期値の 0x0 は 0x578 (1400) と同じとして扱われる。
等倍
部分拡大
macOS - テキストエディット
0x4b0 (1200) 相当くらいかな?🤔
FontSmoothingType の部分のソースは 4.0.1 時点では下記の通り。
staticstruct font_gamma_ramp *get_font_gamma_ramp( void ) { staticconst WCHAR desktopW[] = { 'C','o','n','t','r','o','l','','P','a','n','e','l','\\', 'D','e','s','k','t','o','p',0 }; staticconst 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) returnNULL; 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; }