6.12. mingliu - 微軟細明體 TrueType 字型

Contributed by EricCheng

Last Update: 2003年 9月21日 周日 21時13分54秒 CST

mingliu 是微軟向華康購買的中文繁體字型, 也是 Windows 使用者最習慣的電腦字。

# cd /usr/ports/outta-port/mingliu
# make install clean

mingliu.ttc 有兩個 faces,第零個 face 是 細明體(MingLiU),英文字型是等寬的, 第一個是新細明體(PMingLiU),不等寬的英文字型, 預設會使用第零個,如果要使用新細明體的話,必須另外設定。

細明體在 11, 12, 13, 15, 16, 20 點的大小有特別做內嵌的點陣字, 換句話說,由於中文字的 hinting 不易,有時點陣字會比較有效。 又因為新細明體使用了 bytecode 來組合筆劃, 沒有編進 bytecode interpreter 的 freetype 版本在 render 的時候, 就會碎掉。 在目前 ports/print/freetype2 中,預設會利用 files/patch-include::freetype::config::ftoption.h 將 TT_CONFIG_OPTION_BYTECODE_INTERPRETER 打開。

設定讓細明體在這些大小時,顯示內建的點陣字而不要用 anti-aliased, 在 ~/.fonts.conf 加入:

    <match target="font">
        <test name="family"><string>MingLiU</string></test>
        <edit name="antialias"><bool>true</bool></edit>
        <edit name="hinting"><bool>true</bool></edit>
        <edit name="autohint"><bool>false</bool></edit>
    </match>
    <match target="font">
        <test name="family"><string>MingLiU</string></test>
        <test name="size" compare="less_eq"><int>12</int></test>
        <edit name="antialias" mode="assign"><bool>false</bool></edit>
        <edit name="hinting" mode="assign"><bool>true</bool></edit>
    </match>

因為 MingLiU 宣稱自己是 monospaced 字型, 但實際上它有兩種固定寬度:中文的全形以及英文的半形, 造成 freetype 誤判所有字都是跟中文的全形一樣寬, 使得英文字和中文字會等寬。

可以修改 freetype 的 globaladvance flag 或是 spacing, 0 是 proportional 的 spacing,100 是 mono,110 是 charcell:

    <match target="font">
        <test name="family"><string>MingLiU</string></test>
        <edit name="globaladvance"><bool>false</bool></edit>
    </match>
    <match target="font">
        <test name="family"><string>MingLiU</string></test>
        <edit name="spacing"><int>0</int></edit>
    </match>

Note: 記得在 ~/.fonts.conf 的頭尾加上

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
...
</fontconfig>

在 X11 Core Font 上,則是利用 xtt 的功能來選取 Face 1 的 PMingLiU 來顯示,也就是在最前面加上 fn=1,並檢查 Spacing 欄位是否為 p,MingLiU 的 Spacing 欄位是 m。 如果安裝 chinese/ttfm 會自動加入兩個 face。

mingliu.ttc -DynaLab-MingLiU-medium-r-normal--0-0-0-0-m-0-iso8859-1
fn=1:mingliu.ttc -DynaLab-PMingLiU-medium-r-normal--0-0-0-0-p-0-iso8859-1

Table 6-1. 細明體字體速查表

檔名 PostScript name Font Family Font Family
mingliu.ttc MingLiU MingLiU 細明體
mingliu.ttc PMingLiU PMingLiU 新細明體

WWW: EricCheng Fontconfig