Oberon/ETH Oberon/字体
该文档最初托管在ETHZ。 它仍然在ETH 许可下,并且位于WayBack 档案中。
一种类型字体(或简称为字体)是屏幕或打印机字符的集合,它们共享一个共同的字体。 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 中
与其设计和制作新字体,不如利用OType.Text 中描述的当前 Oberon OpenType 实现。 虽然它只支持 OpenType 的 TrueType 部分,但它已经涵盖了大多数现有的 OpenType 字体。 有两种使用 OpenType 的方法。
- 使用命令OTFonts.Make 将 TTF 转换为 Oberon 光栅字体文件。 例如
OTFonts.Make Arial.TTF Arial 8 10 12 14 16 20 24 Scn Pr3 Pr6~ - 在需要时动态生成 Oberon 光栅字体文件。
因此生成的字体将映射 TTF 中表示的字符集到 Oberon 字符集。
在另一种方法中,可以设计一个程序将字体映射到 Oberon,我们建议重命名新字体以避免冲突。 有关字体文件格式,请参阅Fonts.Mod 中的Internalize 过程。
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/