國際語言環境指南

如何新增印表機內建字型

下列程序中的範例,將展示如何在配置檔中加入新的 PCF、TrueType 或 Type1 印表機內建字型。

請完成此程序,以更換目前所配置的字型。在頭兩個步驟中,用來顯示範圍 0x00000021 - 0x0000007f 中字元的 PCF 字型,由 TrueType 字型來取代。

  1. 在增加新的字型之前,請先在配置檔案中查看與目前配置的字型相對應的各種元件。

    FontNameAlias iso88591R  PCF  /usr/openwin/lib/X11/fonts/75dpi/courR18PCF.Z
    FontNameAlias iso88591B  PCF  /usr/openwin/lib/X11/fonts/75dpi/courB18PCF.Z
    .
    .
    .
    FontGroup       iso88591         PCF       iso88591R iso88591B
    .
    .
    .
    MapCode2Font    0x00000020      0x0000007f      iso88591
    .
    .
    .
    CnvCode2Font iso88591R _xuiso88591 /usr/lib/lp/locale/$LANG/mp/xuiso88591.so
    CnvCode2Font iso88591B _xuiso88591 /usr/lib/lp/locale/$LANG/mp/xuiso88591.so

    例如,您可以將 /usr/openwin/lib/locale/ja/X11/fonts/TT/HG-MinchoL.ttf 字型對映到 en_US.UTF-8 語言環境。由於 HG-MinchoL.ttf 是 Unicode TrueType 字型檔,因此使用 .so 模組對映功能即可直接傳回內送的 ucs-2 字碼點。

    unsigned short _ttfjis0201(unsigned short ucs2) {
                     return(ucs2);
             }
    1. 將此對映儲存到 ttfjis0201.c 檔案。

    2. 建立共用物件檔案。

      cc -G -Kpic -o ttfjis0201.so ttfjis0201.c
  2. 若要對映 PCF 檔案,例如 /usr/openwin/lib/locale/ja/X11/fonts/75dpi/gotmrk20.pcf.Z,請檢查 /usr/openwin/lib/locale/ja/X11/fonts/75dpi/fonts.dir 檔案中與 XLFD 相應的下列編碼:

    -sun-gothic-medium-r-normal--22-200-75-75-c-100-jisx0201.1976-0
    1. 若是 jisx0201 編碼方式,請準備好從 ucs-2 對映至 jisx0201 的共用物件。取得對映表,以建立 .so 模組。若是 Unicode 語言環境,請在 ftp.unicode.org/pub/MAPPINGS/ 目錄中尋找對映至 Unicode 的字元集。

    2. 使用這些對映來撰寫 xu2jis0201.c 檔案:

      unsigned short _xu2jis0201(unsigned short ucs2) {
                               if(ucs2 >= 0x20 && ucs2 <= 0x7d )
                                       return (ucs2);
                               if(ucs2==0x203e)
                                       return (0x7e);
                               if(ucs2 >= 0xff61 && ucs2 <= 0xff9f)
                                       return (ucs2 - 0xff60 + 0xa0);
                              return(0);
                       }
    3. 當您建立對映檔時,請包含所有 usc-2jisx0201 的實例。

      cc  -G -o xu2jis0201.so xu2jis0201.c