snowie2000 / mactype

Better font rendering for Windows.
https://mactype.net
GNU General Public License v3.0
10.16k stars 444 forks source link

2018.1 Beta 5 not working for UWP or DirectWrite #518

Open agentjsp opened 5 years ago

agentjsp commented 5 years ago

I have the latest 2018.1 Beta 5, DirectWrite is set to 1 in the ini file, and I'm using service mode. None of the Windows 10 UWP apps, or the Settings app, or any other app in the system (Firefox without the config tweak, etc) using DirectWrite seems to be rendered with MacType.

What am I missing?

sammilucia commented 5 years ago

Hi @agentjsp

DirectWrite renders differently than the rest of MacType - MacType replaces GDI fonts completely, whereas with DirectWrite it just allows you to configure most (all?) of the settings. So if all the config isn't done in the ini, it won't do a lot by just turning it on.

Try one of the new ini files (Clean Sharp, Clean Soft, extratype, mufunyo) in the base folder and you should see the full effect. I use Clean Sharp and to my eyes it's much nicer DirectWrite rendering.

Let us know how you go?

agentjsp commented 5 years ago

I tried all of those. Applications that use DirectWrite don't change at all.

sammilucia commented 5 years ago

Okay, thanks for trying, I'll have to leave it here for @snowie2000 to answer!

sammilucia commented 5 years ago

@snowie2000 bump?

wmjordan commented 5 years ago

I also ran into this problem. At a fresh reboot of my windows, those UWP apps could be rendered. After a hibernation and recovery those apps no longer got rendered.

Win10 latest version. Running beta 5 as a service.

ChicoThorn commented 5 years ago

I got DirectWrite to work for me! The results are startling good! Here's how I set it up: My display is an HP Pavilion 27xi 1920×1080. I'm running a Dell XPS i7 PC with a Nvidia GeForce GTX 745 graphics card. OS is Windows 10, Insiders Build 18912. I use a custom scaling factor of 115% (set up in Windows Settings > Display). I also use "Dark Mode" color scheme in Windows (Settings > Personalization > Colors) and in my browser. This has an effect on how the rendered type is perceived by our eyes... In dark mode (light text on a dark background) text & font glyphs appear slightly bolder than in light mode (dark text on a light background). My settings were made with dark mode in mind.

I like running MacType in Registry Mode. I found it behaves with more stability and is applied to most all text displayed anywhere in the UI. I began by opening the "extratype.ini" profile in MacType Tuner. After some trial and error I found the following settings produced text rendering that to my eyes looked best for text rendered with ClearType as well as text rendered with DirectWrite.

NORMAL TAB: Rendering core: FreeType Font linking: Use FreeType to connect Bold mode: New standard bold Gamma mode: Use custom value Kerning: Enable kerning Hint small fonts: Use hinting below 9pt

Anti-aliasing: Optimized for LCD(RGB) Hinting: Use fonts internal hinting LCD optimization: Optimization 2 Font replacement: Use secure replacement Sub-processes: Auto load into sub-processes DirectWrite: Enabled (experimental)

FONT FEATURES TAB Font Property — Normal = 13 — Bold = 2 — Italic = 0 Mapping Property — Weight = 1.1 — Gamma = 1.3 — Contrast = 1.1 Text tuning — R=1 — G=1 — B=1 Shadow — Offset = 1 — Transparency = 0

EXCEPTIONS TAB Font replacement — I have 4 rules defined here replacing the fonts Tahoma, Calibri, MS Sans Serif, and Arial all with Segoe UI (so my UI is uniform everywhere — this works really well!)

Save your settings and name your new profile something different than the default one you started with. Exit MacType Tuner.

Navigate to your "ini" folder (usually C:\Program Files\MacType\ini). Open with Notepad the .ini file of the profile you just created. Scroll down to the bottom of the file. There you will find some settings for DirectWrite. Make these changes to the values:

RenderingMode=5 GammaValue=1.9 Contrast=0.6 ClearTypeLevel=0.6

Save and close your .ini file.

Launch MacTray. On the first screen select "Registry Mode" (if you already have it selected click [Next] ). Go to the next screen. This will open samples of all the profiles in your ini folder, including the profile you just created; Click on it. Click [Finish] which will apply your changes and exit the program.

Although MacType will update on the fly, I've had better overall results if I restart the computer after loading a new profile. — That's it! I hope this might be of help to some of you suffering like I was from blurry/fuzzy text rendering, especially in the new Modern UWP (DirectWrite) apps. And thank you so much to Snowie for developing such an amazing tool! :)

snowie2000 commented 5 years ago

Thank you for sharing your valuable experience! 👏🏻👏🏻

sammilucia commented 5 years ago

hi @ChicoThorn could you please post some screenshots of your results?

agentjsp commented 5 years ago

Doesn't appear to work for me on Windows 10 1903. Attempted multiple reboots.

wmjordan commented 5 years ago

It does not seen to work on my computer either, Win10 1809. However, I did not attempt to run MacType in the registry mode.

ChicoThorn commented 5 years ago

hi @ChicoThorn could you please post some screenshots of your results?

Hi! Sure, I'd be happy to post some screen shots... I've also fine-tuned some of the settings which has improved the results even more... First the new Settings:

I've changed the Settings > Display > Advanced scaling settings to 117% (I was using 115%) 117 seems to provide better overall character spacing and onscreen rendering.

2019 06 18· MacType Sampler Page

When viewed at 100% this screenshot shows the clarity of rendering I've achieved... However, as it displays by default in this thread, it doesn't look very clear... So, do this to see it properly: Click on the image (a new tab in your browser will open) Right-click the image > Select "Save image as" > Save to your Desktop. Open and view in MacPaint at 100%. Now you'll get a better idea of the rendering I've been able to achieve. 🙂.

And now the updated MacType Tuner settings:

Start by opening the "extratype.ini" profile in MacType Tuner. This profile is provided with MacType and its "ini" file has the necessary coding for DirectWrite.

In MacType Tuner ————————————————————— NORMAL TAB (The settings on this tab are the same as I posted before) Rendering core: FreeType Font linking: Use FreeType to connect Bold mode: New standard bold Gamma mode: Use custom value Kerning: Enable kerning Hint small fonts: Use hinting below 9pt

Anti-aliasing: Optimized for LCD(RGB) Hinting: Use fonts internal hinting LCD optimization: Optimization 2 Font replacement: Use secure replacement Sub-processes: Auto load into sub-processes DirectWrite: Enabled (experimental)

FONT FEATURES TAB (Settings that have changed are marked with a heart ♡ ) Font Property — Normal = 11♡ — Bold = 2 — Italic = 0 Mapping Property — Weight = 1.2♡ — Gamma = 1.3 — Contrast = 1.1 Text tuning — R=2♡ — G=2♡ — B=2♡ Shadow — Offset = 1 — Transparency = 0

EXCEPTIONS TAB (I added a couple more fonts to this list, marked with a heart ♡ ) Font replacement — I have 8 rules defined here. I replaced these fonts with Segoe UI: @Arial Unicode MS♡, Arial, Arial Unicode♡, Calibri, MS Sans Serif (micross), and Tahoma. I replaced Arial Black♡ with Segoe UI Black and Calibri Light♡ with Segoe UI Light. These changes make the text in my Windows UI uniform everywhere — Another reason I did the font replacement is for text quality: I've noticed that the kerning and glyph forms and how they display onscreen, especially Tahoma and Arial, is noticeably inferior to Segoe UI. Those two fonts were developed over 30 years ago well before today's hi-res displays and for whatever reason Microsoft has just left them as they were.

Save your settings and name your new profile something different than the default one you started with. Exit MacType Tuner.

Use Notepad to edit the ini file ————————————————————— Navigate to your "ini" folder (usually C:\Program Files\MacType\ini). Open with Notepad the .ini file of the profile you just created. Scroll down to the bottom of the file. There you will find some settings for DirectWrite. Make these changes to the values:

I have not changed these values since my last post.

RenderingMode=5 GammaValue=1.9 Contrast=0.6 ClearTypeLevel=0.6

Save and close your .ini file.

Launch MacTray. On the first screen select "Registry Mode" (if you already have it selected click [Next] ). Go to the next screen. This will open samples of all the profiles in your ini folder, including the profile you just created; Click on it. Click [Finish] which will apply your changes and exit the program.

Restart your computer

sammilucia commented 5 years ago

This looks really good @ChicoThorn.

If you'd like it included in the next beta release (beta6) with credits could you please provide your ini file and how you'd like to be credited (e.g. as ChicoThorn or something else?)

ChicoThorn commented 5 years ago

This looks really good @ChicoThorn.

If you'd like it included in the next beta release (beta6) with credits could you please provide your ini file and how you'd like to be credited (e.g. as ChicoThorn or something else?)

That'd be awesome! Thank you! I'll upload it here (see link below). You may use my Github username (ChicoThorn) for the credits. 😃 —— One of the things I'd like to mention to others trying to get this to work on their screens is to tinker with the settings. There are a lot of variables between different PCs and displays, so what might work well for me might not be so great for someone running a different configuration. That's why trial and error is so important. It can be a bit tedious, but in the long run it really pays off when you get your screen and text looking like they should! One of the things I do to help me keep track while I'm in this worker mode is to create a new filename for each attempt that basically lists the settings I'm trying. For example, my worker-filename for the settings seen in my screenshot posted here is: "Ft,sb,cg,k,h,LCD,H,op2,sr,al,dw· n11,b2,w1.2,g1.3,c1.1· RGB=2· fr8,cf0· DW=rm5,gv1.9,c0.6,ct0.6.ini" Each of the abreviations correspond to a particular setting (i.e., Ft = Freetype, sb=standard bold, cg=custom gamma, etc.) Of course you can make up your own cryptic method so long as it helps. For me it makes it easier to track my progress and avoid repeating myself. —— Thanks again for including my ini settings file in the next beta release! 😊

Here is the ini file I created, with a much friendlier name 😉:

ChicoThorn-1.zip

agentjsp commented 5 years ago

The ini doesn't work for me, and it may not even be working for him. He didn't post a before and after comparison so it's difficult to tell, but the comparisons I've done produce absolutely no change in how UWP/DirectWrite text is rendered.

snowie2000 commented 5 years ago

The ini doesn't work for me, and it may not even be working for him. He didn't post a before and after comparison so it's difficult to tell, but the comparisons I've done produce absolutely no change in how UWP/DirectWrite text is rendered.

Could open the wizard and post a full shot of all your process status?

sammilucia commented 5 years ago

@ChicoThorn thank you!

I've added a few missing settings (for those who want to continue to tweak), and enabled colour fonts. I also added a message to Text= that this is designed for 117% screen scaling. Everything else is unchanged and I'm getting a similar result as your display.

Here's the final, are you happy with this? ChicoThorn-1.zip

wmjordan commented 5 years ago

The above setting file did not work for me. UWP apps wouldn't yet get rendered with MacType after applying that setting file. And it looked bad on my computer, each glyph appeared to have some color spots around them.

However, while I reverted back to my own setting file and messed around with the PC Settings dialog, an amazing thing happened. The PC Settings, a UWP app and not being rendered by MacType, suddenly got rendered after I accessed the Personalization/Fonts section.

Before accessing the Fonts section: before

After accessing the Fonts section: after after2

ChicoThorn commented 5 years ago

ChicoThornTweak Screenshot

@ChicoThorn thank you!

I've added a few missing settings (for those who want to continue to tweak), and enabled colour fonts. I also added a message to Text= that this is designed for 117% screen scaling. Everything else is unchanged and I'm getting a similar result as your display.

Here's the final, are you happy with this?

Hi! Yes, that's fantastic! — Thank you! I'm running it right now and it's even better! The lowercase "e" doesn't seem as blurry and the jumplists are sharper as well! I should have thought to include some before and after screenshots... I've posted a couple further on in this thread. This particular screenshot is the text rendering after I installed the version you tweaked (It's Awesome!) —— The tweaks you made really fine-tuned it! I notice it everywhere, but especially the text rendering on colored surfaces. It's so much better now (i.e., toast notifications, the Notification panel, and the Start Menu)! — Definitely a collaborative work! — Thanks again! 😃

ChicoThorn-1.zip

ChicoThornTweak Screenshot.zip

ChicoThorn commented 5 years ago

This is a compilation of some random screenshots I took of my screen prior to using MacType. It's just Windows 10 ClearType "vanilla." As you can see, there's a visual disparity between the almost-too-thin Sys32 text rendering and the wider DirectWrite (UWP Apps) text rendering. I think MacType does an amazing job unifying text rendering throughout the Windows UI. To my eye it's more uniform and pleasing and makes working with text on my PC actually pleasurable again! —— When using the Custom scaling feature in the Windows OS some of the icons here and there might appear fuzzy. From what I gather from the Insider blogs Microsoft is aware of these glitches and will eventually fix them (a good example of this is the expand and hide up and down circled arrows at the bottom of the Task Manager window and you may also find the icons in the Ribbon to be a bit blurry). But overall the UI is so greatly improved by what can be done with MacType (and these new improved settings!) that I think I can live with a few blurry icons. 🙂

Screenshot Prior to using MacType (this is Windows 10 ClearType)

Screenshot Prior to using MacType (this is Windows 10 ClearType).zip

ChicoThorn commented 5 years ago

The ini doesn't work for me, and it may not even be working for him. He didn't post a before and after comparison so it's difficult to tell, but the comparisons I've done produce absolutely no change in how UWP/DirectWrite text is rendered.

Could open the wizard and post a full shot of all your process status?

Hi! Sure... here are screenshots of the MacTray wizard Process Manager that I'm running.

Process Manager 1

Process Manager 2

snowie2000 commented 5 years ago

Nothing suspicious on your list.

However, turns out you have the hinting turned on? If you enable hinting for directwrite, I don't think there will be any major difference between the original and the "mactyped" result.

ChicoThorn commented 5 years ago

Nothing suspicious on your list.

However, turns out you have the hinting turned on? If you enable hinting for directwrite, I don't think there will be any major difference between the original and the "mactyped" result.

Hmmm... interesting... truth be told, I'm more of a designer than a coder (I know enough to get in trouble 😉) so I'll leave that up to you and the experts. Do you think it would be better if hinting were turned off? I'll give it a go and post the side by side comparisons.

snowie2000 commented 5 years ago

That depends. Hinting twists the font to make it snap to the pixel grid which makes texts cleaner, but since hinting basically removes all the alpha blend, stems of texts may be uneven and the rendering results will be away from what the font designed to be.

From the perspective of design, I think the hinting should better be off. Plus English alphabets are so simple that it is still very easy to read without grid fitting.

agentjsp commented 5 years ago

I think @snowie2000 was asking me to post it. I can post my process list later, but I do want to note that what @wmjordan suggested also works for me and the .ini file suggested by ChicoThorn doesn't.

If I open the settings dialogue and go to the fonts page, the entire settings dialogue will suddenly became MacType rendered even if I move away from that page. However, if I close the settings and dialogue and re-open it, it will go back to not rendering with MacType until I do it again. Though sometimes it seems to last longer than other times. I'm still trying to figure out if there's any consistency to it.

If I had to make a guess for why that works though, I'm guessing that the fact that the fonts page renders so many fonts as previews somehow forces MacType to activate even though it usually ignores UWP? Not particularly sure.

wmjordan commented 5 years ago

If I open the settings dialogue and go to the fonts page, the entire settings dialogue will suddenly became MacType rendered even if I move away from that page.

On my computer, that dialog could be almost entirely rendered, except for the title bar.

snowie2000 commented 5 years ago

@agentjsp That means you UWP app didn't get hooked before it started. DirectWrite apps (UWP apps are generally speaking all dw apps) have to be hooked from its start or it will not get rendered until the application creates another DirectWrite engine instance. I think that's what happened when you opened the font dialog. Windows has to create another Directwrite instance to render all the fonts for you and that's the time mactype took it over.

wmjordan commented 5 years ago

That means you UWP app didn't get hooked before it started.

I examined the loaded DLL files with Process Explorer. The mactype DLLs were loaded, however, the PC Settings dialog was not rendered. before

snowie2000 commented 5 years ago

@wmjordan It doesn't work that way. You can't check the status of the process at the very first moment. MacType will capture it in less than a second but it is still too late.

To render a UWP app, its parent proc has to be hooked first so that all the child apps can be hooked before they start.

wmjordan commented 5 years ago

I saw the parent proc of the PC settings dialog process was svchost.exe. No mactype dlls were loaded there.

snowie2000 commented 5 years ago

I saw the parent proc of the PC settings dialog process was svchost.exe. No mactype dlls were loaded there.

That's where the problem is. Please check which service the svchost.exe belongs to.

snowie2000 commented 5 years ago

And you can force mactype to apply to that svchost.exe in the mactype process manager. And then restart the setting app and see if it works.

wmjordan commented 5 years ago

Please check which service the svchost.exe belongs to.

Please see whether this helps. That svchosts.exe belongs to the following services: services

snowie2000 commented 5 years ago

Looks like it belongs to the DCom which is expected to be recognized by mactype automatically.

Please check the status of that process id in mactype proc manager

wmjordan commented 5 years ago

Unfortunately it seemed to be inaccessible. services

snowie2000 commented 5 years ago

What loading mode are you using? service?

wmjordan commented 5 years ago

Yep, service mode. I also tried the Tray mode. But no luck either.

snowie2000 commented 5 years ago

So, you do run the mactray with admin privilege, don't you? In Windows 10, sometimes services have less privilege than regular apps.

wmjordan commented 5 years ago

Yes I had already tried that. However, that service was still inaccessible to MacType.

after

snowie2000 commented 5 years ago

Could you give a full list of the process status like ChicoThorn did there ?

wmjordan commented 5 years ago

Here's the list. Please take the trouble checking it out. 1.zip

wmjordan commented 5 years ago

The process numbered 5860 in the above list was svchost.exe, which belonged to service AppX Deployment Service (AppXSVC). MacTray even failed to obtain its process name.

arial commented 5 years ago

Sorry for disturbing and offtop but it was funny to be involved in this discussion just because of my nickname (arial) was mentioned as a fontname with @ symbol :)

ChicoThorn commented 5 years ago

Hi! I did some comparisons and here are screenshots for what I came up with. To my eye sammilucia's version of the ChicoThorn-1.ini file (with the edits and tweaks) is the best version. Curiously, I noticed that in MacType Tuner it shows hinting being on, but when I look at the .ini file in Notepad it shows "HintingMode=0" and "HintSmallFont=0" ... so that confuses me a bit... But regardless, sammilucia's version renders best on my display. If you look closely at the screenshots marked as "- hinting off" you'll see a halo of fuzziness around all the characters, whether they are UWP (DirectWrite) or Sys32 (ClearType)... the same is true when I turn off hinting in my original untweaked .ini file. To create each screenshot I first loaded the corresponding .ini file with MacTray (Registry mode for all), restarted my computer and reopened the same (or mostly the same) folders and files including a taskbar jumplist and the Notifications panel in each screenshot for a fair comparison.

ChicoThorn-1 untweaked

ChicoThorn-1s tweaked

ChicoThorn-1h - no hinting

ChicoThorn-1hs - no hinting

I hope these are helpful... for me though, I'm thrilled! I've never seen my text look so consistently good! 😊

I put the four screenshots here in a .zip file for anyone who might want to download 'em to take a close look...

ChicoThorn-Hinting On-Off.zip

wmjordan commented 5 years ago

I had been using the CTP version (built in 2018 or earlier) with the Japanese patch. Things were going well.

After updating to beta 5, UWP apps could not be rendered. Days ago, I tried to use the Japanese patch with beta 5, after replacing the DLL files, nothing got rendered. Thus I reverted to beta 5.

Since I seldom work with UWP apps, this issue is minor to me.

ChicoThorn commented 5 years ago

I was curious about the Settings Fonts page so I checked it out... amazing! Even my old fonts I designed years ago with Fontographer render great with MacType and the ChicoThorn-1s.ini !

Older Thorn Fonts rendered with MacType   'ChicoThorn-1s ini'

Older Thorn Fonts rendered with MacType & 'ChicoThorn-1s.ini'.zip

snowie2000 commented 5 years ago

MacTray-dcom.zip @wmjordan try this one. It gives a popup of your dcom pid or the reason why it fails to get the pid.

sammilucia commented 5 years ago

@agentjsp @wmjordan please try the new beta6 here which fixes the UWP loading issue for all apps that weren't converted from 32-bit apps - https://github.com/snowie2000/mactype/releases/tag/2019.1-beta6. I will close this issue as we believe it's resolved however if you still have problems please let us know (respond to this thread).

Curiously, I noticed that in MacType Tuner it shows hinting being on

@ChicoThorn I think that's possibly a bug in MacType Tuner .... @snowie2000 I've noticed a few inconsistencies like this - do you think Tuner logic needs to be reworked / double check all new ini settings?

ChicoThorn commented 5 years ago

Hi. I just installed the beta6 version, loaded the ChicoThorn-1.ini and was a bit surprised and disappointed to see that the rendering had changed to a jagged edges here and there...

This screenshot comparing the same font samples viewed in Settings > Personalization > Fonts shows the difference pretty clearly, especially the lighter faces. I'm comparing the large font samples, but on closer inspection of the Segoe UI captions under the samples, I notice that the beta6 rendering (especially the color text) does seem clearer and brighter... So I'm stumped. The large samples are jagged, but the smaller text is better... Am I doing something wrong — is there a new setting maybe that I'm missing? Or should I just roll back to beta5 or ... ?

Older Thorn Fonts· Comparison of b5   b6 Rendering with ChicoThorn-1s

Older Thorn Fonts· Comparison of b5 & b6 Rendering with ChicoThorn-1s.zip

ChicoThorn commented 5 years ago

So I uninstalled β6 and reinstalled β5 just to see if I could get the same results I did originally before I installed β6, and was happy to see I did. In this screenshot you can see that the top and bottom samples are identical, both rendered with β5 and ChicoThorn-1.ini. The center samples are rendered with (β6) and ChicoThorn-1.ini. It's interesting that the larger sample fonts are clearer with β5, but the Segoe UI caption text is clearer with β6 — the color Segoe UI caption are also brighter with β6... Not sure where to go next to bring the best of both all together... ???

Older Thorn Fonts· Comparison of b5   b6 Rendering with ChicoThorn-1s

Older Thorn Fonts· Comparison of reinstalled b5 & b6 rendering with ChicoThorn-1.zip

wmjordan commented 5 years ago

try this one. It gives a popup of your dcom pid or the reason why it fails to get the pid.

It correctly displayed the PID of the service after stopping the running MacType service. shot

Since this build displays a modal dialog, it can no longer be started as a service any more. I got another pop up window when I exited this version which ran in tray mode and restarted it. shot

Meanwhile, it somehow popped up an error box after running for some time. shot

bugreport.txt

This file could not work either in tray mode or service mode.