Git Product home page Git Product logo

fontlink-gui's Introduction

FontLink Settings

It looks like this project is getting a bit attention. This revision should clear things up. Please do pull and read this update before messing with your computer using this program. It may or may not be something you want.

FontLink, Explained

FontLink is a series of Windows Registry keys controlling Font Linking, a technology that combines multiple typefaces (fonts) behind-the-scene to substitue missing glyphs (characters) in the currently selected/used typeface.

You can read the full documentation in the Font Linking section of Font Technology.

Notes on Terms

If you're reading a translation (non-English version) of this document, please skip this section as whatever I say here may not apply to other languages.

To be clear, for most people who are not in the design and print industry, the word font does not originally mean what we think it means. In typography, font is a combination of a typeface (e.g. Times New Roman), a size (e.g. 12 pt) and other attributes (such as weight). So "Times New Roman, 12 pt, bold" is a font; while "Times New Roman" is not a font, it's only a typeface. Similarly, "Segoe UI" is not a font, neither is "Arial" or "Microsoft JhengHei".

But in this article, (and many, many others on the Internet,) font is now a catch-all phrase used colloquially to mean: (1) a typeface (e.g. "Times New Roman"), or (2) a typeface with certain size and attributes (e.g. "Times New Roman, 12 pt, bold"), or rarely (3) just the size/attributes of an unspecified typeface (e.g. "any 12 pt font", "a bolder font"). Much like the widely misused term RJ45 (which is just a generic 8P8C connector).

Just so you know.

See It in Action

When you set your Windows display language to English (or many other languages that use Latin script), the default user interface font is Segoe UI ("see-go, U-I"). Segoe font family covers most glyphs used in languages that have European root.

When Windows encounters a glyph that cannot be found in Segoe family, for example the CJK-character "中", in order to render this glyph Windows searches typefaces defined in the FontLink Registry for Segoe UI (that is, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink\Segoe UI) for a substitute glyph. The first entry is Tahoma, not a font designed for CJK scripts; so continue on, the character "中" would be found in either Meiryo (for Japanese) or SimSun (for Chinese), depends on font availability.

Problem is, Microsoft did many redesigns of typefaces throughout releases of Windows. Neither Meiryo or SimSun is the recommended user interface font for CJK characters anymore. In Windows 10, the default font for CJK scripts are:

  • Microsoft YaHei UI for Chinese (Simplified)
  • Microsoft JhengHei UI for Chinese (Traditional)
  • Yu Gothic UI for Japanese
  • Malgun Gothic for Korean

That's why CJK characters in the following screenshot look so out of place when mixed with Latin characters:

File Explorer Screenshot with default Font Linking

Using this program, prioritizing any of the above font over Meiryo and SimSun as a substitute for Segoe UI produces the following screenshot (after a logout):

File Explorer Screenshot with tuned Font Linking

You can clearly see that the font for CJK characters is changed to a much more look-alike version, while the English text remains from Segoe UI.

Pros & Cons

Font Linking works great only when you're dealing with multiple languages that use different scripts with no intersecting Unicode codepoints. It doesn't solve all multilingual problems. And frankly, with the rise of Unicode, those problems remain unsolvable.

"Unihan" is one of those problems. When the same glyph/codepoint is used in different scripts and all of these scripts are mixed into one sentence. Windows lacks the necessary information to pick the best fallback for this glyph. For example, the character "中" is used in both modern day Simplified and Traditional Chinese, and Japanese. All three scripts have different typefaces to render "中" from, but in Font Linking, you can only pick one typeface (YaHei, JhengHei, or Yu Gothic) to render all "中"s. That means if you prioritized Microsoft YaHei in FontLink Registry, "中" will always to rendered using YaHei even when you're seeing Japanese file names, which should be rendered using Yu Gothic.

Font Linking also works across Windows. There is no fine-tune per app switch. Whenever an application (e.g. File Explorer, Notepad) requests a character from a font that has no such character, Windows uses FontLink Registry to do its magic. However, many apps supply typefaces internally or define their own fallback mechanism; these apps will not be affected by Font Linking initially.

How to Use

This example shows how to use this program to achieve the result in the screenshots.

  1. You need to identify the font currently being used/selected in an app. That is, the font that's missing glyphs. In this example, it's the default user interface font for English editions of Windows: Segoe UI.

  2. Launch the program (preferably with Administrator privilege). Find and select Segoe UI from top dropdown.

    2020-01-24_17-33-12
  3. The list below the dropdown shows the current Registry reading of FontLink fallback orders. Adjust the list by dragging and dropping entries around. Note that entries with the same name (usually one with and one without GDI attributes) must go together when reordering. Otherwise legacy apps using older technology may not observe new changes.

    These are the recommended preferences for mixing English and Simplified Chinese characters:

    FontLink Settings screenshot for mixing English with Simplified Chinese
  4. Finally, click Save Current Settings to Registry. You may be asked to review the raw Registry value, or to relaunch the program with Administrative privilege if not done so before.

  5. To see your changes, logout and log back in. Note that this may close all currently running programs, and you may lose unsaved work.


At step 3, if you frequently mix English with Traditional Chinese characters, you may want to use these preferences:

FontLink Settings screenshot for mixing English with Traditional Chinese

And this is for mixing English with Japanese characters:

FontLink Settings screenshot for mixing English with Japanese

fontlink-gui's People

Contributors

vasld avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.