日语字符的平滑字体渲染

mis*_*tor 13 fonts windows-7 cleartype rendering font-smoothing

我正在使用 Windows 7 并将字体平滑设置为 ClearType。但是,在整个操作系统中,日语字符的显示非常粗略。我该怎么做才能像其他角色一样流畅地渲染它们?

以下是它们当前外观的示例:

截屏

phu*_*clv 5

问题在于,传统的日语字体(MS Gothic、MS PGothic、MS Mincho……)除了轮廓字体(通常用于 22pt 及以下的字符)外,还包括小尺寸的位图字体。这些位图不能应用任何类型的平滑,因此会导致非常丑陋的锯齿,伤害眼睛的外观。有几种解决方案:

  • Mactype是基于FreeType 的Windows 字体渲染器开源替代品(除其他外,但现在它是最新的)。它只会跳过那些位图并使用轮廓来输出平滑的字符。

    但目前Mactype无法模拟DirectDraw调用,所以一些使用DirectDraw/DirectWrite的程序(如MS office 2013、IE7+、Firefox...)仍然存在别名字体,但这种情况非常罕见。在 Google Chrome 上,您需要禁用 DirectWrite才能使其工作

    更新:最新的 Mactype 已经有更好的 DirectWrite 支持

    更多相关信息:如何使 Windows 字体看起来像 Mac 字体

    mactype

  • 更好的选择是根据本教程剥离所有这些位图。你需要一些日语能力才能阅读它,但你也可以阅读谷歌的粗略翻译。要做的步骤很长,所以请在最后找到它。结果是:

从字体中去除位图的步骤:

  • 复制字体文件,你需要带,例如msgothic.ttc中,从\Windows\Fonts到一个文件夹

  • 从 MS TrueType SDK下载BREAKTTC工具

  • 在您将字体复制到的文件夹中打开命令提示符并键入BREAKTTC msgothic.ttc. 之后可以看到ttc中所有的ttf文件都解压为FONT00.ttf ~ FONTxx.ttf

    断电

  • 现在您要从Microsoft Typography下载FontTools。之后提取删除EBDT(嵌入式位图数据表)所需的工具。命令语法如下SBIT32

    SBIT32 -d <original font file> <metric file> [output file]
    
    Run Code Online (Sandbox Code Playgroud)

    您需要为每个位图大小(通常为 7 到 22)运行此程序以删除所有位图,如果手动输入则相当笨拙。一个自动化脚本会有很大帮助。

    @echo off
    copy %1 %2 >nul
    for /l %%i in ( 7,1,22 ) do (
        echo PPEM %%i > mtemp.txt
        echo END >> mtemp.txt
        sbit32 -d %2 mtemp.txt ftemp.ttf  
        del %2
        ren ftemp.ttf %2
    )
    del mtemp.txt
    
    Run Code Online (Sandbox Code Playgroud)

    将上述内容另存为rmEBDT.bat并运行以下命令(MS Gothic 为 3,因为我们有 3 个提取的 ttf 文件)

    rmEBDT font00.ttf msgot2.ttf?
    rmEBDT font01.ttf msgotp2.ttf?
    rmEBDT font02.ttf msuigot2.ttf
    
    Run Code Online (Sandbox Code Playgroud)
  • 现在我们已经剥离了字体文件,我们可以重命名那些字体名称(独立于字体文件名),比如 MS Gothic NB - No Bitmap,与旧字体一起使用,或者只使用旧名称并替换原来的ttc 文件,这是一个小技巧。
    无论哪种方式,我们都需要将它们再次打包到 ttc 文件中,以便重新安装到 Windows。使用MAKETTC位于同一文件夹中的工具,BREAKTTC或者您也可以在此处找到它们。跑

    MAKETTC <TTC output file name> <TTF file 1> <TTF file 2> ...
    
    Run Code Online (Sandbox Code Playgroud)
  • 获取ttc文件后,如果更改了字体名称,则直接将它们复制到以\Windows\Fonts将其注册为新字体并将UI,应用程序中的默认字体更改为该字体。如果您想使用旧字体名称,您必须从其他操作系统(如 Linux live USB 或 Windows PE)启动,因为 Windows 总是在启动时加载 MS Gothic。


Juk*_*ela 2

这取决于字体。不同的字体具有不同的特征,包括字体平滑的不同行为。您可能使用的是 Mincho 组中的字体,因为它们通常用作默认字体,并且可能会出现这样的问题;哥特式字体在屏幕上可能效果更好。