跳转到内容

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/

华夏公益教科书