跳转到内容

Oberon/ETH Oberon/Tutorial/FontEditor

来自维基教科书,开放世界中的开放书籍

这些教程页面由 André Fischer (afi) 编写,由 Hannes Marais 提供编辑协助,托管在 ETHZ,并根据 ETH 许可证 保留。相关内容可在系统中通过 Book.Tool 找到。扩展内容也可以在 纸质版 中找到。一些教程页面位于 WayBack 存档 中。

字体编辑器用户指南

学习如何使用专用编辑器和配套面板 FontEditor 创建和修改字体。这个简单实用的工具非常适合绘制自定义字体。字体编辑器是一个 Oberon 系统扩展,使用了 Rembrandt 工具提供的功能。

预计时间:30 分钟。

FontEditor 与 Oberon for Windows 一起提供,作为 存档应用程序,必须先安装。使用 System.Directory Win.FontTools* ~ 验证。

使用 FontEditor 面板

[编辑 | 编辑源代码]

一种 type-font(简称 font)是屏幕或打印机字符的集合,它们共享一个共同的 typeface。Oberon 附带了两个由 H. Meier 先生设计的自定义字体系列:“Syntax”和最近的“Oberon”。每个系列包含多个不同大小(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 点,普通样式。这是唯一可用的非比例字体。

请注意,除了这些字体系列外,Oberon for Windows 还可以使用已安装的 TrueType 字体 - 请参见 UserGuide.Text

通过执行以下命令打开 FontEditor 面板

Desktops.OpenDoc FontEditor.Panel

面板的顶部部分显示了一个包含 256 个按钮的表格,每个按钮对应 256 个 8 位组合中的一个。按钮用相应的可显示(或可打印)字符(如果适用)或相应的十六进制值(否则)进行标注。请注意,只有按钮 00 到 7F 是标准化的 ASCII 代码。按钮 80 到 96(特殊语言字符)的分配是 Oberon 的属性。

在表格下方文本字段小部件中输入 Oberon 字体名称之一,例如“Syntax12.Scn.Fnt”或“Oberon14.Pr3.Fnt”(用于 300 dpi 打印机字体),然后(中键)单击 [加载] 按钮。实现限制使无法使用此工具编辑 600 dpi 打印机字体。位图太大;与系统一起提供的 600 dpi 字体是用另一个工具构建的。

将鼠标焦点移到表格中的一个按钮上,然后按中键选择相应的字符,该字符随后将以原始大小显示在面板右下角的白色区域中。拖动该键,并观察各个字符如何在白色区域中预览。当鼠标焦点定位在要编辑的字符上时松开键。将打开一个图片查看器来 编辑 该字符。

面板下部的按钮具有以下含义

[加载] 加载文本字段中指定的字体。此字体将替换当前字体(如果已加载),现在可以对其进行检查和修改。

[存储] 将当前字体存储在文本字段中指定的文件中。字体文件名(必须)具有以下后缀

  • - .Scn.Fnt 用于显示(屏幕)字体
  • - .Pr2.Fnt 或 Pr3.Fnt 用于分别为 200 或 300 点每英寸的分辨率的打印机字体。

[存储字符 *] 将出现在标记的查看器中的字符存储在当前字体中。查看器的 NamePlate 必须包含字符本身或其十六进制值(对于可显示的字符)。对于不可显示的字符,它必须是其十六进制值。

[显示字符串] 打开一个未命名的图片查看器,显示之前在右侧文本字段中输入的字符串。它是一个预览,可以缩放并在一定程度上进行编辑(选择、移动和复制),但无法保存更改。这对于验证对当前加载字体的修改很有用。

新查看器:当此复选框选中时,下面描述的三种操作的任何结果都将显示在一个新的图片查看器中。如果没有选中,结果将显示在当前查看器中。

[水平翻转] 围绕中线翻转 选择

[垂直翻转] 围绕中线翻转 选择

[旋转 90 度] 逆时针旋转 选择 90 度。

使用编辑器

[编辑 | 编辑源代码]

使用 FontEditor 面板,您已经了解了如何通过单击字体表格中的一个按钮开始编辑字符。字符图片显示在一个图片查看器中,该查看器的属性与 Rembrandt 教程中描述的图片查看器非常相似。

字符以其最大尺寸显示,在一个带有网格的白色区域中。此区域不一定会覆盖整个查看器。每个方格对应于实际尺寸中的一个像素。鼠标焦点或光标是相交的水平和垂直线段形成的十字形。当鼠标焦点越过图片边界时,它就会出现。按左键可以让插入符号出现,它是一个旋转 45 度的十字形,它捕捉到网格上并标记插入点。在键上拖动,跟踪插入符号。也可以通过单击左键设置插入符号。

字符度量

[编辑 | 编辑源代码]

文件:OberonFontEditor1.png

字符的成像模型定义了字符包含在一个由度量数据 x、y、w、h 和 dx 定义的框中,这些数据位于由两条红色正交线表示的坐标系中。坐标系的原点称为参考点,X 轴称为基线。(x,y)是从当前参考点到框原点的向量。w 和 h 是框的宽度和高度,dx 是到同一基线上下一个字符的参考点的距离,即蓝色线的横坐标。

可以通过程序检索字符的度量,如下所示

PROCEDURE ShowC*;
  VAR
    dx, x, y, w, h: INTEGER;
    pat: LONGINT;
    ch: CHAR;
BEGIN
  ch := "g";
  Fonts.GetChar (Fonts.This("Syntax12.Scn.Fnt"),
  ch, dx, x, y, w, h, pat);
  Out.Int(x, 3), ....
  (* Visualizing the values produces,
     for the example letter in the example font,
     x = 1, y = -3, w = 5, h = 10 and dx = 6 *)
END ShowC;

字体度量

[编辑 | 编辑源代码]

Fonts 模块中定义的抽象数据类型 Font 代表一个字符集合。字体属性为

Fonts.height:行间距。修改垂直偏移时,此距离也会发生变化。

Fonts.minX、Fonts.maxX、Fonts.minY、Fonts.maxY:当所有字符的基点对齐在 (0, 0) 时,这些是包含所有字符的框的极值。

可以通过程序检索字体的度量,如下所示

PROCEDURE ShowF*;
  VAR
    F: Fonts.Font;
BEGIN
  F := Fonts.This("Syntax12.Scn.Fnt");
  Out.Int(F.height, 3); ...
  (* Visualizing the values produces, for the example font,
    F.height = 14, F.minX = 0, F.maxX = 13,
    F.minY = -4 and F.maxY = 10 *)
END ShowF;

垂直偏移

[编辑 | 编辑源代码]

当编辑文本时,字符通常将其基线对齐。但是,字符可能会在相邻字符的基线之上或之下偏移几个点,以使它们显示为上标或下标字符,例如:sin2 x + cos2 x = 1. 或 aij

这是通过使用 TextDocs.ChangeOffset 命令实现的。在这种情况下,与相邻行的距离不再等于 Fonts.height,而是增加了。

缩放图片

[编辑 | 编辑源代码]

除了标准按钮外,标题栏还包含两个用于缩放的额外按钮。

[+] 放大 选区,如果没有选区则放大整个图像。该按钮可以连续点击 5 次,以获得 16 倍的放大倍率。这使得以点为单位编辑字符图像变得非常容易。

[-] 缩小字符图像的大小。该按钮最多可以连续点击 5 次,直到恢复原始大小,并且不能超过 5 次。

使用鼠标进行编辑

[编辑 | 编辑源代码]

字符的编辑主要通过点击鼠标中键来完成。但是,系统的行为取决于选择的是“像素”还是“度量”两种模式。这两个按钮是单选按钮。

[像素] 当选择像素时,将鼠标焦点放在网格的一个方格上。如果方格是白色的,则单击鼠标中键时会变为黑色。如果它是黑色的,则会变为白色。您不必逐点编辑图案,而是可以使用鼠标中键进行拖动,以处理轨迹上的所有点。如果您从一个黑色方格开始,它和所有后续点都将变为白色,反之亦然。更改会立即反映在面板中的小型白色区域中。

有用提示:为了便于对字符进行修饰,请先复制查看器,然后根据需要放大两个视图中的任何一个。在缩放后的图片中修饰的内容将反映在原始图片中。

[度量] 当选择度量时,可以移动彩色的度量线。将鼠标光标放在要移动的线附近,按下鼠标中键,并沿线的方向拖动,直到线被“捕捉”。从那时起,可以将垂直线左右移动,或将水平线上下移动,以捕捉网格的离散间隔。当线被正确定位时,释放鼠标键。

鼠标命令通常符合 Oberon 标准。

左键 中键 右键
单独 (跟踪和)
设置光标
见上文 跟踪选择
+ 左 删除选择
+ 中 设置光标并复制
选择到光标
复制选择
到光标上

选择

单击鼠标右键(查看器中的任何位置)将选择整个图片。光标变为扁平的手形,整个白色区域被一个粗框包围。再次单击,将取消选择图片并恢复光标。

按下鼠标键并拖动,将跟踪由橡皮筋矩形界定的选择。释放鼠标键后,将绘制一个粗选择框。复制选择时,可以在与包含选择的查看器不同的查看器中设置光标。

移动图片

可以使用两种方法移动查看器中的白色区域。首先,使用鼠标右键选择整个区域,然后按下鼠标中键并拖动。其次,如果区域没有完全覆盖查看器,将鼠标焦点放在区域之外,按下鼠标中键(光标变为扁平的手形),并拖动。在这两种情况下,当白色区域被正确定位时,释放鼠标键。

完成编辑后,关闭图片查看器,并将字符存储在当前字体中。

打印字符图像

[编辑 | 编辑源代码]

要打印字符图像,请标记它,然后:
- 点击 Rembrandt 面板中的 [打印 *] 按钮,或
- 执行命令:Desktops.PrintDoc printDevice * ~

使用 Windows 字体资源工具

[编辑 | 编辑源代码]

如果您使用的是 Oberon for Windows,并且使用字体编辑器创建或修改了字体,则可以通过从 Oberon 光栅字体编译 Windows 字体资源来提高显示系统的性能。请注意,这适用于使用 FontEditor 工具开发或修改的自定义字体。所有与 Oberon for Windows 一起分发的字体都已作为 Windows 字体资源在 System 子目录中提供。Oberon for Windows 使用 Windows 字体进行打印。转换使用 FontRes 模块中的单个命令执行。

FontRes.Convert { OberonFontFile => [路径]WindowsFontFile} ~ | ^ 处理由“=>”分隔的名称对列表。Oberon 显示字体文件oberonFontFile将被转换为 Windows FON 资源。如果文件已存在,它将被覆盖。FON 文件的名称由四个部分组成:NNNNNSSF.FON,其中

  • NNNNN 字体族名称的前五个字母(例如,Synta 表示 Syntax,Math 表示 Math)
  • SS 字号的一或两位数字
  • F 面格样式的可选字符(b = 粗体,i = 斜体,m = 中等)
  • FON 标准名称扩展名

FontRes.Tool 包含所有必要的工具,以便在需要时转换整个 Syntax 字体族,并且可以修改此文本以转换其他字体。

注意:用于生成资源的 Windows .FON 文件格式在 Microsoft Windows 程序员参考,第 4 卷,第 4 章:字体文件格式中有所说明。

[ B | C | F | G | M | P | R | S | V | Z ]

B

基线

C

字符度量

F

水平翻转选择
垂直翻转选择
字体编辑器面板
字体编辑器
字体度量
字体资源 (Win)
FontEditor.Panel
字体
FontRes.Convert
FontRes.Tool

G

网格

M

移动图片

P

预览字符串
预览
打印字符图像

R

参考点
修饰字符图像
旋转选择

S

选择

V

垂直偏移

Z

缩放


1997 年 3 月 26 日修订
1997 年 5 月 30 日安装


华夏公益教科书