跳轉到內容

Oberon/ETH Oberon/字型

來自華夏公益教科書,開放的書籍,為了開放的世界

該文件最初託管在ETHZ。 它仍然在ETH 許可下,並且位於WayBack 檔案中。

返回到:原生 Oberon 硬體相容性列表

字型支援
摘要

一種型別字型(或簡稱為字型)是螢幕或印表機字元的集合,它們共享一個共同的字型。 Oberon 附帶了由 H. Meier 先生設計的自定義字體系列“Oberon”,他建立了“Syntax”字型,這是 Oberon for Windows 的標準字型。 這兩個系列都包含多個不同大小(8、10、12、14、16、20 和 24 點 - 1 點 = 1/72 英寸)和樣式(普通、斜體、粗體 - “Syntax” 還包括中等粗體樣式)的集合。

Oberon 系統還提供其他字體系列

  • “Math” 尺寸為 10、12、14、16、20 和 24 點,普通樣式
  • “Greek” 尺寸為 10、12、14、16、20 和 24 點,普通樣式
  • “Courier” 尺寸為 8、10 和 12 點,普通樣式。 唯一提供的非等寬字型

螢幕字型和印表機字型分別儲存在副檔名為 .Scn.Fnt 和 .Prx.Fnt 的檔案中(x 指的是 x00dpi 印表機字型)。 要載入字型,必須指定完整字型名稱(如 Syntax12b.Scn.Fnt)。

預設字型、當前字型、當前顏色、當前偏移量

當原生 Oberon 啟動並且 Oberon.Text 處於其原始狀態時,GUI(或 TUI)文字將具有由多個全域性變數定義的屬性,這些變數被分配了預設值。

    Fonts.Default := Fonts.This("Oberon10.Scn.Fnt");  
    Oberon.CurFnt := Fonts.Default; 
    Oberon.CurCol := Display.FG; (* = 15 - black *) 
    Oberon.CurOff := 0;

Fonts.Default 是出現在 NamePlates、Buttons、GUI 標題中的文字的字型,並且將在指定無效字型名稱時用作預設字型; 即,不是有效字型檔案的名稱。
Oberon.CurFnt 決定在新的檢視器中輸入文字時使用的字型。
Oberon.CurColor 決定在新的檢視器中輸入文字時使用的顏色。
Oberon.CurOff 決定在新的檢視器中輸入文字時使用的垂直偏移量。

在 Oberon for Windows 中,預設字型是 Syntax10.Scn.Fnt。

透過命令/程式為當前字型分配新值
  • System.SetFont (fontName | ^): fontName 必須是有效的字型檔名。 字型檔案將被開啟,並且字型將被載入到快取中。 如果不是有效的字型,則為空。
  • PROCEDURE SetFont (Fonts.This(fontName: ARRAY OF CHAR)); 在 Oberon.Mod 中。 如果fontName 不是有效的字型檔名,則使用預設字型。
如何控制當前載入的字型
System.ShowLibraries
列出當前位於快取中的庫; 即,字型庫和其他庫(*.Lib)。 最近載入的庫顯示在頂部。
System.FreeLibraries ({ libraryname} | ^) ~
釋放指定的庫。

PROCEDURE This(fontName: ARRAY OF CHAR): Font; 在 Fonts.Mod 中

開啟字型檔案並將字型載入到快取中。 如果fontName 不是有效的字型檔名,則返回 NIL。

字型也可以在ASCIITab.Tool 的上下文中載入到快取中。

透過命令/程式為當前顏色分配新值
  • System.SetColor (color | ^) - 0 <= color <= 15
  • PROCEDURE SetColor (color: SHORTINT); 在 Oberon.Mod 中
透過命令/程式為當前偏移量分配新值
  • System.SetOffset (voff | ^) - voff 為正整數或負整數
  • PROCEDURE SetOffset (voff: SHORTINT); 在 Oberon.Mod 中
使用 OpenType 新增新字型

與其設計和製作新字型,不如利用OType.Text 中描述的當前 Oberon OpenType 實現。 雖然它只支援 OpenType 的 TrueType 部分,但它已經涵蓋了大多數現有的 OpenType 字型。 有兩種使用 OpenType 的方法。

  1. 使用命令OTFonts.Make 將 TTF 轉換為 Oberon 光柵字型檔案。 例如
    OTFonts.Make Arial.TTF Arial 8 10 12 14 16 20 24 Scn Pr3 Pr6~
  2. 在需要時動態生成 Oberon 光柵字型檔案。

因此生成的字型將對映 TTF 中表示的字元集到 Oberon 字元集。

在另一種方法中,可以設計一個程式將字型對映到 Oberon,我們建議重新命名新字型以避免衝突。 有關字型檔案格式,請參閱Fonts.Mod 中的Internalize 過程。

使用 Gfx 字型擴充套件新增新字型

Gfx:提供了一種外掛機制,用於新增除原生 Oberon 點陣圖和輪廓字型之外的其他字型格式。 目前,支援兩種擴充套件:TrueType 字型和 Metafont pk 點陣圖(用於 Kaspar Fischer 的 DVI 檔案檢視器)。 TrueType 支援需要已經安裝了 OType 包。 更多內容請參閱Gfx.Tool

定義

抽象資料型別 Font 在模組 Fonts 中有以下定義

 TYPE 
   FontDesc = RECORD ( Objects.LibDesc )  
     type: SHORTINT;  (* Substitute, font, or metric. *) 
     height, minX, maxX, minY, maxY: INTEGER 
       (* Font height, extremal values of characters in font. *) 
   END;

Font 是 Library 的擴充套件。 字型的每個字元都是一個(虛擬)物件,由字型庫中的 ASCII 碼索引。 抽象資料型別 Char 有以下定義

 TYPE 
   CharDesc* = RECORD (Objects.ObjDesc) 
   dx*, x*, y*, w*, h*: INTEGER; 
     (** Character width, pattern offset (x, y), pattern size (w, h). *) 
   pat*: Display.Pattern     (** Character raster data. *) 
   END;

[頂部]

2002 年 7 月 13 日 - 版權所有 © 2002 ETH Zürich。 保留所有權利。
電子郵件:oberon at lists.inf.ethz.ch
主頁:http://www.ethoberon.ethz.ch/

華夏公益教科書